建网站怎么上线,新网站建设需要什么,昆山城乡建设局网站,做生物学的网站文章目录 奇偶校验单目运算符#xff08;|,^,#xff09;verilog codeverilog codetestbench code 问题总结 奇偶校验
现在需要对输入的32位数据进行奇偶校验,根据sel输出校验结果。
实际上这里做的是奇偶检测#xff0c;如果是奇数个 1 则结果为 1#xff0c;使用… 文章目录 奇偶校验单目运算符|,^,verilog codeverilog codetestbench code 问题总结 奇偶校验
现在需要对输入的32位数据进行奇偶校验,根据sel输出校验结果。
实际上这里做的是奇偶检测如果是奇数个 1 则结果为 1使用单目运算符 ^ 即可。
输入描述
输入信号 data_in sel类型 wire
输出描述
输出信号 q类型 wire
单目运算符|,^,
假设 d 3b100则
e d d[2] d[1] d[0]; 1b0; f ^ d d[2] ^ d[1] ^ d[0]; 1b1所以:
e d ---- 可以用于检测是否为全1是否含0f ^ d ----- 奇偶校验g | d ----- 检测是否全为0
verilog code
在Verilog中^运算符作为单目运算符时的功能是按位异或作为双目运算符时的功能是异或。当data_in是一个8 bit,的数据时 ^data_in data_in[0] ^ data_in[1] ^ data_in[2] ^ data_in[3] ^ data_in[4] ^ data_in[5] ^ data_in[6] ^ data_in[7]
简言之就是^bus就是检查bus中1的个数是否是成对的如果成队那就是为0也就是偶校验所以奇校验刚好取反。
此外还会根据 sel 的值来选择 校验结果是正常输出还是取反输出。
verilog code testbench code 问题总结
在使用VCS 仿真是一开始出现了如下面问题 从波形上可以看到数据总线上是没有数据输入的导致了 out 信号输出的问题所以在复位以后就需要将数据总线赋值这里在 testbench 中是将 数据总线在复位后赋值为0最后结果如下图
在 sel 1b1
当有奇数个1 时校验结果为 1 例如当 data 为 7e, 1 时(校验结果在时钟上升沿时变化)当有偶数个1 时校验结果为 0 例如当 data 为 06 时
在 sel 1b0 时输出结果正好相反。