Verilog数字系统基础设计-奇偶校验 奇偶校验是一种简单、实现代价小的检错方式,常用在数据传输过程中。对于一组并行传输的数据(通常为8比特),可以计算岀它们的奇偶校验位并与其一起传输。 奇偶校验的应用 在具体应用奇偶校验时,在发送端,奇偶校验电路计算每一组发送数据的奇偶校验位,将其与数据一起发送;在接收端,奇偶校验电路重新计算所接收数据的奇偶校验值,并将其与收到的校验值进行比较,如果二者相同 需要说明的是,如果错误比特数为偶数(2,4,6等),那么奇偶校验是无法发现这类错误的。例如,发送的数据为8’bl010_1011此时计算出的偶校验值是1。 如果在传输中比特3和比特2的值从10跳变为01,那么此时接收到的数据为8’bl0100111,接收的偶饺验值仍然为1。 奇偶校验常常用在芯片内部数据传输或者外部数据总线上的数据传输中,如传统的PCI总线中就使用了奇偶校验。
在奇偶校验算法中,假设每个字节由8个比特(位)组成。奇偶校验位的值取决于数据字节中的1的个数。如果数据字节中1的个数是偶数个,奇偶校验位被设置为0;如果1的个数是奇数个,奇偶校验位被设置为1。 (2)接收端:在接收数据字节后,再次统计接收到的数据字节中1的个数,与接收到的奇偶校验位进行比较。如果两者不一致,说明数据传输中发生了位错误。 (2)存储介质:在一些存储介质上,如磁盘驱动器或闪存存储器,奇偶校验算法可以用于检测数据读取或写入过程中发生的位错误。 ,如果1的个数是偶数,则校验位为0,否则为1 unsigned char parity_bit = (count % 2 == 0) ? 1的个数是否一致 unsigned char expected_parity_bit = (count % 2 == 0) ?
奇偶校验位介绍 奇偶校验位是一种用于检测和纠正数据传输中出现的错误的机制。在数据传输过程中,数据被分割为固定大小的块,一般为一字节(8 位)。 每个字节都会附加上一个奇偶校验位,用于表示该字节中 1 的个数是奇数还是偶数。 在奇偶校验位中,如果数据字节中 1 的个数是奇数,则校验位被设置为 1;如果是偶数,则校验位被设置为 0。 奇偶校验位只能检测错误,没有纠正错误的能力。在简单的通信环境中,如串口通信,奇偶校验位可以提供一定程度的错误检测功能。 #define P2(n) n, n^1, n^1, n #define P4(n) P2(n), P2(n^1), P2(n^1), P2(n) #define P6(n) P4(n), P4(n^1 奇偶校验能够检测到单个位的错误,但无法纠正错误,只能检测错误的存在。如果出现错误,通常需要重新传输或采取其他纠错措施。
快速导航链接如下: 个人主页链接 1.数字分频器设计 2.序列检测器设计 3.序列发生器设计 4.序列模三检测器设计 5.奇偶校验器设计 6.自然二进制数与格雷码转换 7.线性反馈移位寄存器LFSR 8 .四类九种移位寄存器总结 9.串并转换 --- --- 一、前言 奇偶校验是一种简单、实现代价小的检错方式,常用在数据传输过程中。 对于一组并行传输的数据(通常为8比特),可以计算岀它们的奇偶校验位并与其一起传输。 图片 简单理解奇偶校验: 奇校验:原始码流+校验位 总共有奇数个1 偶校验:原始码流+校验位 总共有偶数个1 二、XOR法 2.1 XOR法 题目:采用XOR法试写一个发送端奇偶校验器,在发送端会输入一段 output reg even_bit, //偶数校验码 output reg odd_bit //奇数校验码 ); //定义一个三位宽的计数器 reg [2:
在这个视频中,我们先探讨最简单的奇偶校验码。我们会首先介绍奇偶校验的这种校验原理,如何检测出比特错误,紧接着,我们会为跨考的同学补充异或运算的一个规则。 接下来看奇偶校验码的校验原理,奇偶校验具体来说可以分为两种,一种就是奇校验,另一种是偶校验。二者的原理类似。 我们简单介绍一下异或运算的规则,异或运算又称为模2加运算,如果两个比特进行异或运算,那么当且仅当两个比特都相异不同的时候,运算的结果才等于1。 需要注意的是,这种奇偶校验码只能检测出奇数位的错误,如果刚好有偶数个比特发生了这种比特跳变,奇偶校验码是没办法检测出这种错误的。同时,奇偶校验码只能检错,不能纠错。 在这个视频中,我们也为跨考的同学补充了异或运算,又叫模2加运算的运算规则。
※【奇偶校验原理与规则】 规则总结: 利用奇/偶校验,保证数据中1的个数为奇/偶; 8位数据+1位校验位校验位 偶校验:保证数据个数为偶数,检验位补0/1 奇校验:保证数据个数为奇数,检验位补0/1 例如 :奇校验,数据中有2个1,2是偶数,校验位补1,保证它是奇数个1 计算接收到的数据中,1的奇/偶和我们采用的奇/偶校验方式是否一致,来保证数据接受正确与否 举例演示 我们需要的数据排列是:0000 0011 利用奇校验 我们给他补上一个校验位(8->9位),我们原来的数据中有2(偶数)个1,所以补上1,保证数据为奇数;最终数据为0000 0011 1,现在我们数据中有奇数个1 串口接收到数据后,数据为0000
在大多数实际应用中,需要检测奇偶校验才能报告奇偶校验。如果任何字符串中存在偶数个1,则奇偶校验被视为偶数奇偶校验;如果字符串中存在奇数个1,则奇偶校验将被视为奇数奇偶校验。 接下来重点介绍奇偶校验生成器和校验器。 奇偶校验生成器 示例7.8中描述了高效的Verilog RTL。如RTL中所述,偶数或奇数奇偶校验在输出“q_out”处生成。 偶数奇偶校验由逻辑“0”表示,奇数奇偶校验由逻辑“1”表示。 示例7.8奇偶校验生成器的Verilog RTL 图7.9奇偶校验生成器的综合逻辑 综合结果如图7.9所示,在触发器的数据输入端具有组合逻辑的寄存器逻辑。 奇偶校验生成器用于为数据输入字符串生成偶数或奇数奇偶校验。 桶形移位器是一种组合移位器,采用基于mux的逻辑设计。
2、奇偶校验 定义: 奇偶校验是最常用的检错方法,能检出一位(甚至奇数个位)错位。 原理: 在7位ASCII码后增加一位,使码字中1的个数成奇数(奇校验)或偶数(偶校验)。 (错误,奇偶校验无法纠正错误) C. 若有奇数个数据位出错,则可以检测出该错误。(正确,奇偶校验可以检测出奇数个数据位出错) D. 若有偶数个数据位出错,则可以检测出该错误并加以纠正。 (错误,奇偶校验无法检测偶数个数据位出错,更无法纠正) 答案: C 易错点: 需要注意奇偶校验只能检测错误,不能纠正错误,且只能检测出奇数个数据位出错。 奇偶校验 常用的减错方法,能检出奇数位错,不能检出偶数位错。 奇偶校验的原理与限制。 奇偶校验原理 在七位ASCII码后增加一位,形成八位,确保1的个数为奇数(奇校验)或偶数(偶校验)。 奇偶校验举例 奇校验:确保整个码字中1的个数为奇数;偶校验:确保1的个数为偶数。 如何根据数据计算校验位。
在RAID 5中,数据条带跨多个具有分布式奇偶校验的驱动器。 具有分布式奇偶校验的条带化意味着它将在多个磁盘上分割奇偶校验信息和条带数据,这将具有良好的数据冗余。 什么是奇偶校验? 奇偶是在数据存储检测错误一个最简单的常用方法。 奇偶性在每个磁盘中存储信息,假设我们有4个磁盘,在4个磁盘中,一个磁盘空间将被分割到所有磁盘以存储奇偶校验信息。 将丢失单个磁盘容量以使用奇偶校验信息。 如果单个磁盘失败,则不会丢失数据。 我们可以在更换故障磁盘后从奇偶校验重建。 适合面向事务的环境作为读取将更快。 由于奇偶校验开销,写入将会很慢。 Final IP Address : 192.168.0.227 Hostname : rd5.howtoinglocal.com Disk 1 [20GB] : /dev/sdb Disk 2 第2步:为RAID分区磁盘 5.首先,我们必须进行分区( 的/ dev / sdb的 中,/ dev / SD c和的/ dev / SDD)添加到一个RAID,那么让我们定义使用“FDISK”命令分区
再来聊聊Modbus协议的地址模型 一起了解下Modbus协议的数据模型 详解Modbus协议功能码 这期重点针对三种错误检测方法进行说明:奇偶校验、CRC和LRC。 奇偶校验 针对Modbus RTU和ASCII码两种方式,一般物理层采用的是串行接口,最后的数据传输方式还是会一个Bit的传输(串行通信)。 关于奇偶校验的详细说明可参考: 串行通信的四大规则(Rules),你知道吗? 如果指定了偶校验或奇校验,将计算每个字符的数据部分中1位的数量。 当然,模式不同,数据位也不同: ASCII模式下为七个数据位: 而RTU模式下为八个数据位: 相当于如果不要奇偶校验,那么就用Stop停止位进行替代。 , 0X2A80, 0XEA41, 0XEE01, 0X2EC0, 0X2F80, 0XEF41, 0X2D00, 0XEDC1, 0XEC81, 0X2C40, 0XE401, 0X24C0
---- 10 = 2^3 + 2^1 9 = 2^3 + 2^0 8 = 2^3 (校验位 3) 7 = 2^2 + 2^1 + 2^0 6 = 2^2 + 2^1 5 = 2^2 + 2^0 4 = 2^2(校验位 2) 3 = 2^1 + 2^0 2 = 2^1(校验位 1) 1 = 2^0(校验位 0) ---- 整理发现,包含 2 的 3 次方的非校验位数字有 10、9。 包含 2 的 2 次方的非校验位数字有 7、6、5。 包含 2 的 1 次方的非校验位数字有 10、7、6、3。 包含 2 的 0 次方的非校验位数字有 9、7、5、3。 提示:下标 3 的计算方式:2^1 + 2^0 = 3,1 和 0 代表 R1 和 R0。 ---- 四、奇偶校验码 奇偶校验码可分为奇校验码和偶校验码。 ---- 五、总结 本文学习了计算机数据校验的流程,学习了常见的校验方法,比如海明校验码、循环校验码、奇偶校验码,其中海明校验码不但可以检错,还可以纠错,另外两种只能检错不能纠错。
文章目录 一、 奇偶校验码 二、 奇偶校验码 特点 三、 奇偶校验码 示例 四、 CRC 循环冗余码 ( 原理说明 ) 五、 CRC 循环冗余码 计算示例 六、 CRC 循环冗余码 生成多项式 一、 奇偶校验码 ④ 偶校验码 : 1 的个数为偶数 ; 冗余位 0 ; 二、 奇偶校验码 特点 ---- 奇偶校验码 特点 : 该编码方法 , 只能检查 奇数个 比特错误 , 如果有 偶数个比特错误 , 无法检查出来 , 检错率是 50\% ; 三、 奇偶校验码 示例 ---- 奇偶校验码 示例 : 传输 字符 ‘S’ 的 ASCII 码 1100101 , 使用 奇校验码 , 在 数据前 添加 1 位 ; ③ 计算冗余码 : 使用 \cfrac{要传输的数据}{生成多项式} = \cfrac{5}{2} , 商是 2 , 余数是 1 ; ④ 冗余码 : 余数 1 就是 FCS 帧检验序列 ; x 的 1 次幂系数为 0 , 对应第 1 位 为 0 ; x 的 2 次幂系数为 1 , 对应第 2 位 为 1 ; x 的 3 次幂系数为 1
简单的测试7bit数据+1bit校验的串口回环(RX和TX短接)奇校验效果: 发送hex数值11 ,22, 33, 44后,反馈的数据把校验位也给读出来了91, A2,B2,C4,即bit7都是1。
目录 1、UART简介 2、UART特性 3、UART协议帧 3.1、起始位 3.2、数据位 3.3、奇偶校验位 3.4、停止位 4、UART通信步骤 ---- 1、UART简介 UART(Universal 典型的串口通信使用3根线完成,分别是:发送线(TX)、接收线(RX)和地线(GND),通信时必须将双方的TX和RX交叉连接并且GND相连才可正常通信,如下图所示: 2、UART特性 UART 接口不使用时钟信号来同步发送器和接收器设备 如果奇偶校验位为0 (偶数奇偶校验),则数据帧中的1或逻辑高位总计应为偶数。如果奇偶校验位为 1 (奇数奇偶校验),则数据帧中的1 或逻辑高位总计应为奇数。 3.4、停止位 为了表示数据包结束,发送 UART 将数据传输线从低电压驱动到高电压并保持1 到 2 位时间。 4、UART通信步骤 第1步:数据从数据总线到发送器。 第2步:发送 UART 将起始位、奇偶校验位和停止位添加到数据帧。 第3步:从起始位到结束位,整个数据包以串行方式从发送器送至接收 器 。
常见的检错编码有 奇偶校验码 和 循环冗余码。 下面我们就来了解一下奇偶校验码; 二、奇偶检验码 2.1 定义 奇偶校验码 是 奇校验码 与 偶校验码 的统称,是一种最基本的检错码。 中,检验位 可以放在不同的位置,构成不同的 校验码: 检验位 放在 信息位 的前面,那么构成的 奇偶校验码 为:检验位 + 信息位; 检验位 放在 信息位 的后面,那么构成的 奇偶校验码 为:信息位 通过 奇偶校验码 无法检测出 比特差错 这两个问题也很好理解: 奇偶校验码 判断是否发生 比特差错 的原理是通过比较 校验码 最终的 异或值 ,而对于 校验码 中间的比特值并不关心,因此该 检错编码 因此,奇偶校验码更像是一位忠诚但能力有限的哨兵,适合在对可靠性要求并非极致的场景下站岗。 我们将一起探索 CRC 是如何通过一种名为 生成多项式 的“精密模具”和 模2除法 的数学运算,以极小的冗余开销,实现远超奇偶校验码的、接近决定性的检错可靠性。
50% RAID 3 使用字节级条带,且有一个专门的磁盘存储奇偶校验信息。 可以提供数据保护,但由于所有的写入操作都需要访问奇偶校验磁盘,性能受限。不常用。 (N-1)/N RAID 6 与RAID 5类似,但使用两个奇偶校验块,允许两个磁盘同时故障。 提供更高的数据保护。适合高可用性要求的环境。 (N-2)/N 其中,N表示磁盘的总数。 只使用奇偶校验 D. A和B都不对 RAID 5为什么能平衡速度和数据保护? A. 使用一个专门的磁盘存储奇偶校验信息 B. 在每个磁盘上交替存储数据和奇偶校验信息 C. RAID 6 (2)答案和解析 D. 无 RAID 0提供最高的速度,但不提供数据安全性。 D. 在每个磁盘上交替存储数据和奇偶校验信息 RAID 5通过在每个磁 盘上交替存储数据和奇偶校验信息的方式,实现了速度和数据保护的良好平衡。 C.
RAID 5 也称为带分布式奇偶校验的条带化: 优点 具有分布式奇偶校验的块级剥离 奇偶校验分布在阵列中的磁盘上 高性能 成本效益 至少需要 3 个驱动器 缺点 在磁盘故障的情况下,恢复可能需要更长的时间 RAID 6 也称为 带双分布式奇偶校验的条带化: 优点 具有 DUAL 分布式奇偶校验的块级剥离 创建了 2 个奇偶校验块 可以在阵列中同时发生 2 个驱动器故障 额外的容错和冗余 至少需要 4 个驱动器 优点 无奇偶代 执行 RAID 0 剥离数据和 RAID 1 镜像 剥离在镜像之前执行 可用容量为 n/2 * 磁盘大小(n = 磁盘数量) 所需的驱动器应该是 2 的倍数 剥离数据时的高性能 缺点 成本高 3个 4个 4个 6个 8个 最大驱动器 32 2个 32 32 16 192 192 对驱动器故障的容忍度 没有任何 1 个驱动器 1 个驱动器 2个驱动器 每个跨度 1 个驱动器 每个跨度 1 个驱动器 好的 好的 阵列性能下降 没有任何 非常好 满意的 满意的 非常好 好的 好的 容量开销 没有任何 一半 1 个驱动器 2个驱动器 一半 每个跨度 1 个驱动器 每个跨度 2 个驱动器 上表左右滑动可以看的全面
至少2磁盘。 高效的性能(因为块是条带的)。 没有冗余(没有镜像,没有奇偶校验)。 不要在任何生产环境系统中使用这个。 RAID 1 以下是RAID 1的一些关键特点。 至少2磁盘。 性能好(不分条带,没有奇偶校验)。 优秀的冗余(因为块是镜像的)。 RAID 2 以下是RAID 2的关键特点。 使用位级条带。也就是说,它不是在磁盘上划分块,而是在磁盘上划分位。 在上图中B1, B2, B3都是字节。p1 p2 p3是奇偶校验。 使用多个数据磁盘和一个专用磁盘存储奇偶校验。 磁盘必须同步才能获取数据。 顺序读写具有良好的性能。 随机读写性能最差。 在上图中B1 B2 B3是块。p1 p2 p3是奇偶校验。 使用多个数据磁盘和一个专用磁盘存储奇偶校验。 至少3块硬盘(2块用于数据盘,1块用于校验盘) 很好的随机读取,因为数据块是条带的。 然而,它使用双重奇偶校验。 在上图中,A, B, C是块。p1 p2 p3是奇偶校验。 这会为每个数据块创建两个奇偶校验块。 可以处理两个磁盘故障。
RAID 5:利用奇偶校验块做数据存储,数据还是和RAID 0一样分散存放,保证性能,利用奇偶校验块去除数据冗余、恢复备份。 奇偶校验块这里需要说明一下,从图可以看出以上有4个磁盘,奇偶校验块寸存放在磁盘1,那么奇偶校验块则是DP = DISK1 XOR DISK2 XOR DISK3 XOR DISK4。 倘若磁盘1坏了,我们可以利用奇偶校验块立马恢复:DISK1 = DISK2 XOR DISK3 XOR DISK4 XOR DP。你会想,奇偶校验块所在的盘DISK1损坏,还能用这个公式吗?可以! XOR 1 = 0,依此类推)所以还是可以用DISK1 = DISK2 XOR DISK3 XOR DISK4 XOR DP。 如果RAID 5你能理解,那么RAID 6你理解起来就更简单的,因为它是双奇偶校验,也就是~ RAID 6是双奇偶校验,其中奇偶校验信息被分布式存储在不同的驱动器上,并通过双重奇偶校验提供更高的数据冗余性
RAID 5 也称为带分布式奇偶校验的条带化: 优点 具有分布式奇偶校验的块级剥离 奇偶校验分布在阵列中的磁盘上 高性能 成本效益 至少需要 3 个驱动器 缺点 在磁盘故障的情况下,恢复可能需要更长的时间 RAID 6 也称为 带双分布式奇偶校验的条带化: 优点 具有 DUAL 分布式奇偶校验的块级剥离 创建了 2 个奇偶校验块 可以在阵列中同时发生 2 个驱动器故障 额外的容错和冗余 至少需要 4 个驱动器 优点 无奇偶代 执行 RAID 0 剥离数据和 RAID 1 镜像 剥离在镜像之前执行 可用容量为 n/2 * 磁盘大小(n = 磁盘数量) 所需的驱动器应该是 2 的倍数 剥离数据时的高性能 缺点 成本高 3个 4个 4个 6个 8个 最大驱动器 32 2个 32 32 16 192 192 对驱动器故障的容忍度 没有任何 1 个驱动器 1 个驱动器 2个驱动器 每个跨度 1 个驱动器 每个跨度 1 个驱动器 好的 好的 阵列性能下降 没有任何 非常好 满意的 满意的 非常好 好的 好的 容量开销 没有任何 一半 1 个驱动器 2个驱动器 一半 每个跨度 1 个驱动器 每个跨度 2 个驱动器 上表左右滑动可以看的全面