CRC ,8b/10b,64b/66b,扰码,时钟恢复CDR

文章介绍了基于FPGA的CRC校验码生成器的Verilog实现,以及8b/10b编码用于负载均衡的技术。此外,还探讨了64b/66b编码中采用扰码实现负载均衡的方式。时钟数据恢复(CDR)的概念被提出,强调了DC平衡在时钟恢复中的作用以及PLL和CDR电路的特点。
摘要由CSDN通过智能技术生成

crc 参考:

基于FPGA的CRC校验码生成器_fpga crc 8bit校验_limanjihe的博客-CSDN博客

FPGA产生基于LFSR的伪随机数 - BitArt - 博客园

总结: 有效数据的位宽 是 代码中的 i ,crc校验码宽度是 crc_temp 的位宽,生成多项式(反馈点)为公式中的 异或

module CRC5_GEN(
    input           rst,
    input           clk,
    input     [3:0] data_in,
    input           d_valid, 
    output reg[4:0] crc
);

integer i;
reg feedback;
reg [4:0] crc_tmp;
always @(posedge clk or negedge rst)
begin
    if(!rst) 
        crc <= 5'b0;         
    else if(d_valid==1'b0)
        crc <= 5'b0;
    else
        crc <= crc_tmp;
end


always@( data_in or crc)
begin
    crc_tmp = crc;
    for(i=3; i>=0; i=i-1)
    begin
        feedback    = crc_tmp[4] ^ data_in[i];
        crc_tmp[4]  = crc_tmp[3];
        crc_tmp[3]  = crc_tmp[2];
        crc_tmp[2]  = crc_tmp[1] ^ feedback;
        crc_tmp[1]  = crc_tmp[0];
        crc_tmp[0]  = feedback;
    end
    
end

endmodule

8b/10b 编码: 

        目的是负载均衡 ,使每一个 8bit 数据都映射成一个 5bit 0 + 5 bit 1 的数据,8bit 有256种数据,而 10bit中5bit0/5bit1 一共可以表示 C(10,5) = 10! / 5!   / 5! =252 种数据, 基本可以完全映射

64b/66b 编码 + 扰码:

64B/66B编码技术_任成风的博客-CSDN博客

Verilog数字系统基础设计-扰码与解扰 - 码农教程

        64b/66b 中多的 2bit 是无法像 8b/10b 一样 ,用 33bit 0 + 33bit 1的组合来表示2^64种情况,一一映射没有足够数量的组合形式。即无法用 2bit 的组合来均衡64bit的数据。

        64b/66b 中多的 2bit 只是用来区分数据头,用的扰码的方法来实现了负载均衡,即用类似crc 的多项式将原始数据随机化 ,随机的数据理论上就是均衡的。随机化之后相同的原始数据在不同的时间得到的结果可能是不同的,结果与原始数据不是一一映射的关系,

        解扰码只需要根据 一个逻辑运算表达式(如果A^B=C,那么C^B=A,此处A为原始数据,B为扰码器的输出,C为扰码后的数据) ,逆向用相同的多项式和种子值依次解开即可 

时钟数据恢复 CDR : 

        深入浅出聊聊时钟恢复CDR_技术分析_技术方案_仪商网

       Serdes串行发送和接收的具体实现

        时钟恢复就像 pll锁相一样,但是数据会有连0连1的现象,不像 clk 是周期性的,导致反馈不是稳定的,不能在较短时间内锁住

        时钟恢复的基础是有足够多的数据,然后 DC平衡,才能在数据连0导致反馈频率下降和数据连1导致反馈频率上升之间找到最终的平均值,即实际的时钟, 这里的DC平衡就用8b/10b ,64b/66bit 实现

        pll 或者 cdr 电路因为有低通滤波器的存在,低频的抖动是可以通过的,高频的抖动会被滤掉,所以会在 pll 的输出clk观察到低频时钟抖动,在 cdr 的数据采集时采集准确度不受低频抖动干扰(数据和恢复的时钟一起抖,所以能采准) 

详细讨论SERDES用到的各种关键技术-电子发烧友网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值