程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 (三)奇偶校验

balukai 2024-12-30 01:54:48 文章精选 7 ℃

继续整理牛客网经典Verilog习题讲解,牛客网里除了最新的Verilog题库还有其它领域的经典笔试、面试题,大家快和我一起刷起来吧(「链接」)。

题目

需要对输入的32位数据进行奇偶校验,根据sel输出校验结果(1输出奇校验,0输出偶校验):


分析

很多朋友刚拿到此题的时候,可能根据波形连需求都看不明白,这点也是牛客的缺点,题干写的过于简单!!

  • 首先需要明白什么是奇偶校验,其实这是来判断数据总线上有奇数个‘1’,还是偶数个‘1’
  • 通常奇偶校验会用在环境简单的传输通道,检验数据是否在传输过程中发生错误

??明白何为奇偶校验后,还需要注意题目中有sel信号,如题所述,该信号为‘1’时,需要输出奇校验,为‘0’时,需要输出偶校验

题解

在完成该题时,可以用到按位计算的操作(操作符在前,变量在后),比如 |a(按位或)&a (按位与)^a (按位异或)
??本题在计算奇校验时用到了按位异或,因为
异或的特点就是偶数个‘1’时输出0,奇数个‘1’时输出‘1’。(具体可以通过枚举法感受一下)
??而偶校验只需对奇校验取反即可,在下面的题解中,我用到的
是“~”,是位取反的功能,在单比特情况下, ‘~’和‘!’是相同功能的。但是多比特时,‘!’是逻辑取反,只会输出‘0’或‘1‘


Tags:

最近发表
标签列表