差错检测和循环冗余检验crc

差错检测在数据传输中至关重要,以确保数据的可靠性。循环冗余检验CRC是数据链路层常用于检错的技术。通过将数据与生成多项式进行模2运算,计算出冗余码并附加到数据后,接收端通过相同方式计算余数,对比是否为0以判断帧是否有误。CRC能有效检测比特差错,但无法定位具体错误位置,且不能完全消除误码,需要配合确认和重传机制实现可靠传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

差错检测

传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。

在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER(Bit Error Rate)。

误码率与信噪比有很大的关系。

为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。


循环冗余检验 CRC

在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC 的检错技术。
在发送端,先把数据划分为组。假定每组 k 个比特。 
假设待传送的一组数据 M = 101001(现在 k = 6)。我们在 M 的后面再添加供差错检测用的 n 位冗余码一起发送。
冗余码的计算
用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0。
得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商是 Q 而余数是 R,余数 R 比除数 P 少1 位,即 R 是 n 位。

### 循环冗余校验(CRC)概念 循环冗余校验(Cyclic Redundancy Check, CRC)是一种用于检测数据传输或存储过程中可能发生的错误的技术[^2]。它通过产生简短固定位数的校验码来验证数据完整性。 ### CRC的工作原理 CRC基于多项式除法操作,具体过程如下: - **多项式表示**:将待处理的数据序列看作是一个二进制系数的多项式表达形式。 - **生成多项式**:选定一个特定长度的标准生成多项式G(x),该多项式的最高次幂决定了最终产生的校验码的位宽。 - **编码阶段**:发送端先将消息M右移若干位(通常等于生成多项式的度减一),然后用这个扩展后的消息去模2除以生成多项式得到余数R作为附加到原消息后面的校验字节。 - **解码阶段**:接收端收到整个报文后同样按照上述方式进行一次完整的CRC计算,如果结果为全零则认为无误;否则说明存在差错并触发相应的纠错机制。 #### 多项式除法规则 在执行CRC算法时采用的是特殊的模2算术运算规则,在这种体系下加减法都相当于异或(XOR)逻辑运算而不存在借位现象。因此当遇到相同位置上的两个'1',它们相消抵触变为0;反之亦然。 ### Verilog实现方式 以下是简单的Verilog代码片段展示如何构建基本的CRC模块: ```verilog module crc_generator ( input wire clk, input wire rst_n, input wire start, input wire [7:0] data_in, output reg [15:0] crc_out ); // ...省略部分初始化配置... always @(posedge clk or negedge rst_n) begin : proc_crc_calculation if (!rst_n) crc_reg <= 16'b0; else if (start && !busy_flag) begin busy_flag <= 1'b1; // 开始新的CRC计算周期... for(int i=0;i<8;i=i+1)begin xor_bit = crc_reg[15]^data_in[i]; crc_reg[{crc_reg[14:0],xor_bit}]; if(xor_bit==1'b1) crc_reg ^= POLYNOMIAL_VALUE;//POLYNOMIAL_VALUE应替换为你所使用的标准CRC多项式对应的数值 end crc_out <= crc_reg; busy_flag<=1'b0; end end ``` 此段程序定义了一个名为`crc_generator`的功能单元,其接受输入信号完成指定宽度CRC值的计算工作,并输出给定参数下的相应结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值