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

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_技术分析_技术方案_仪商网

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

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

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

相关推荐
1560820721912 小时前
关于AGC性能测试
fpga开发
威嵌神州16 小时前
国产化加固计算机项目选型笔记|板卡、整机、平板与定制模块评估要点
笔记·fpga开发·电脑
泡泡糖的中文规格书18 小时前
HDLbits 1.2 学习笔记
fpga开发·学习笔记·verilog
樱木花道長18 小时前
AMD Ross 深度系列 5:实战演示 —— MATLAB 到 FPGA,edge-detection 边缘检测全流程
fpga开发
吉他英雄一里2 天前
FPGA--RAM
fpga开发
szxinmai主板定制专家2 天前
储能 EMS、微网控制器选型:RK3588、RK3576、RK3568+FPGA 怎么选?多网、多 CAN、EMC 设计权衡
人工智能·深度学习·机器学习·fpga开发·工业网关·rk3576·电力网关
XMAIPC_Robot2 天前
ARM+FPGA+AI船舶/工业自动化控制器EMC测试等级解析(IEC60533/IEC60945)
arm开发·人工智能·fpga开发·zynq·arm+fpga·rk3588+fpga
ALINX技术博客2 天前
ALINX 亮相 2026 工博会,聚焦 FPGA 行业应用场景
ai·fpga开发·射频工程
星夜离尘562 天前
FPGA 复位回归实验:双时钟停钟、释放中重入与消费端首拍自检
fpga开发
szxinmai主板定制专家2 天前
ZYNQ 数据采集方案踩坑总结:电力强电磁干扰、工业现场多协议适配优化
运维·人工智能·fpga开发·机器人·zynq