之前的一些学习,一点点的记录一下吧!
目录
定义理解
什么是奇偶校验,奇偶校验_百度百科;问问度娘吧!
在这里说说自己的理解:数据在各个模块之间的传输是必不可少的,那么数据传输的正确与否,我们作为一个有思想且掌控欲强的人类肯定想知道,校验就是验证前面接收到的数据对与不对。奇偶校验就是校验中的一种简单的方法。
一、奇偶校验的深度解析
奇校验就是前面一系列bit数+校验位一共有奇数个1;同理,偶校验就是。。。(自己想);
那么如何得知这一连串数据1的个数是奇数个还是偶数个呐?这就请出我们的位运算符异或大将军(^);对于异或我们都不陌生,相同为0,不同为1;
异或位操作符在此也给出吧!以后自己别懵逼忘了!
例如:A = 4'b1000;那么B = ^A = A[3]^A[2]^A[1]^A[0]; A中只有个1,与0异或都是1,所以有奇数个1时,最后的异或结果即为1;
同理,有偶数个1的话,最后异或的结果是多少呐?对的,是0;
二、代码
关键代码如下(示例):
assign reg_check = ^data_in;
reg_check即为输入数据1的个数的反映,若reg_check为1,则说明data_in中有奇数个1;
若
reg_check为0,则说明data_in中有偶数个1。
总结
奇偶校验是最简单的一种校验方式,只能检查出错误,不能校正,所以这玩意不能叫奇偶校验,应该叫奇偶检查。还有其他的校验方法,如CRC校验,咦~貌似就想起来这一个,还有什么呐