龙空技术网

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

IC墨鱼仔 83

前言:

现在各位老铁们对“奇偶校验算法c”大约比较珍视,大家都需要分析一些“奇偶校验算法c”的相关知识。那么小编也在网络上网罗了一些对于“奇偶校验算法c””的相关内容,希望朋友们能喜欢,看官们快快来学习一下吧!

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

题目

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

分析

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

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

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

题解

在完成该题时,可以用到按位计算的操作(操作符在前,变量在后),比如 |a(按位或)&a (按位与)^a (按位异或)

  本题在计算奇校验时用到了按位异或,因为异或的特点就是偶数个‘1’时输出0,奇数个‘1’时输出‘1’。(具体可以通过枚举法感受一下)

  而偶校验只需对奇校验取反即可,在下面的题解中,我用到的是“~”,是位取反的功能,在单比特情况下, ‘~’和‘!’是相同功能的。但是多比特时,‘!’是逻辑取反,只会输出‘0’或‘1‘

标签: #奇偶校验算法c