用于总线反转编码的Verilog代码

时间:2015-11-27 05:52:39

标签: verilog

我试图在两个二进制序列中执行总线反转编码,比如像 00011011&的8位序列。 10110011

根据执行反转编码的方法,首先计算汉明距离(在两个序列之间执行XOR运算)。

两个序列的异或操作给出10101000。

汉明距离表示XOR运算结果中的1的数量。

这里的汉明距离是3。

根据总线反转编码的一般规则,如果汉明距离更大,则序列将被反转(0&#39; s为1&#39; s&amp; 1&#39; s为0&#39; s)比特序列长度的一半。在序列的开头添加附加1 。如果汉明距离 小于比特序列长度的一半,则序列将不会被反转,并且在序列的开头添加 0 < / strong>即可。

1 个答案:

答案 0 :(得分:0)

~是一个按位反转(补码) -是数值反转(二进制补码)。

~00011011 => 11100100
-00011011 => 11100101 

在verilog中^是按位XOR,例如:

00011011 ^ 10110011 => 10101000

SystemVerilog具有$countones()功能,虽然您的工具可能无法合成,但在one example之前已经问过这部分问题。

我很欣赏在学习语言时,参考手册看起来令人生畏,但它对于查找操作和功能非常有用:

SystemVerilog IEEE 1800-2012 Standard