打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
8位数据的奇偶校验verilog程序
利用Verilog语言实现对一个8位数据进行奇偶检验,具体方法如下,
实现奇偶检验的算法就是,如果是偶校验,只要将该8位数据第一位和第二位进行异或,然后将得到的结果和第三位异或,依次下去,直到和第七位异或,
这样得到的最后结果,就是偶校验位;如果是奇校验,将上面的偶校验位取反即可。下面的一段小程序就是实现该功能的代码。


module modelsim_test (even_bit,odd_bit,a);
 input[7:0] a;
 output even_bit,odd_bit;
 assign even_bit = ^a;
 assign odd_bit = ~even_bit;
endmodule


然后利用modelsim测试一下得到波形如下图。


可以看到实现了奇偶校验的效果。但是一直对,assign even_bit = ^a;这段不明白。
^是按位异或,是二目运算符,这里怎么只用一个操作数呢?

其实在verilog中,与,或,非,异或,同或,这5个运算符,除了非以外,其他4个都是二目运算符,也即是需要两个操作数,然后中间加上相应的运算符。

但是这里有一种称作,一元约减运算符,就是说,与,或,异或,同或,这4个运算符可以作为一元约减运算符,也即是只需要一个操作数,例如:even_bit = ^a;
不过运算的过程,和二目运算符不同了,
一元约减运算符的运算过程是:首先将操作数 的第一位和第二位进行与、或、非运算;然后再将运算结果和第三位进行与、或、非运算; 依次类推直至最后一位。
就是说,
assign even_bit = ^a;等效于 assign even_bit = a[0]^a[1]^a[2]^a[3]^a[4]^a[5]^a[6]^a[7];


最后提到一下C语言 &=^=|=运算符,例如:b^=a;等效于b=b^a;这个和上面提到的,不是同一个东西,注意不要混淆。我第一次看到那个语句的时候,就是利用C语言的方式来理解的,百思不得其解。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
格雷码与二进制的相互转换 Verilog实现
关于位运算有利于记忆的几点
Java 按位异或运算符一点小记
verilog中的位运算符,缩位运算符和逻辑运算符的说明(转载)
java学习——8运算符与表达式(三)
高效操作 | PMC功能指令详解(七)位操作指令
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服