是否有一个Verilog代码示例可用以说明如何使用SerDe/PCS设备中的逗号边界来纠正FPGA接口RX数据中的16/20字节移位?

有关16/20位模式字节移位的更多背景,请参阅常见问题解答355.

16/20位模式下的字节移位原理适用于16/20位数据模式中的LATICESC、LATECIECP3和LATECIECP2M PCS块。下面的Verilog通用代码说明了如何在16位通用8B10模式下对LATECIECPEM PC上的FPGA接口RX数据字节移位进行校正。在这段代码中,一个逗号(K23.5)字符将显示在一个16位字的高位字节中。如果在下字节中出现逗号,则逻辑校正字节移位:

线[15:0] FFYRXDATAHCH0;
线[1:0]·FFXRXK-KYCNTLLCH0;μ//电流PCS RX控制

Reg [15:0] FFYRXDATAXCH0YRG;
Reg [1:0] FFRXXKKCNTLLCH00ReG;/ /以前PCS RX控件


ReG[15:0] RXDATA;α-x,β,α,α,α,α,α,α,α,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,β,
Reg [1:0]ΩRXC;

Reg移位;

总是@(PasFeFrxRxCalkkgCH0或NeDeLeSeReGyn)开始
(如果)!重新设置)
一开始
FuxRDATAZCH00Regα=16'H000;
FurxRxkkncTrllxCH0ZeRg & lt;=2'B00;
α,α,α,α,β,α,β,α,α,β,α,β,α,β;
α,α,α,β,β;
α,α,α,β,α,α,α,α,α,α,β,α,β,β,β,β,β,β,α,α,β,α,β,α,β,β,α,β,β,α,β,α,β,β,β,α,β,β,α,β,β,α,β,β,α,β,β,α,β,α,β,
γ-端
否则
一开始
寄存器,数据/控制
FurxRdDaAtH00Regγ& lt=FFHRXDATAZCH0;
FuxrxkxCnTrllxC00Reg & lt;

上字节的K2*5
如果K23.5是高位字节,则不移位数据。
(i fx rxDATAXCH0[15:8]=8’HBC)和(FFH-RXYKKCNTLLCH0(1)=1’B1)
α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,β,
如果K285处于较低字节,则将出现移位数据。
(0)(FFHRXDATAZCH0[7:0]=8'HBC)和(FFHRXKK-CNTrLLCH0([1]=1'B1))
α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,α,β,
另一个
移位、移位、移位;

α(α=0)/No移位
一开始
α,α,α,β,α,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,β;
α,α,β,α,α,β,α,β,β;
第二、第二、第二、第二阶段
α,β,β/秒
一开始
用前循环MSB代替当前的LSB
α,β,α,α,α,α,β,α,β,β;
α,α,α,α,α,α,α,α,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,β0;
具有电流循环LSB的电流互感器
α,β,α,α,α,α,α,β,α,α,β,α,β,α,β,α,β,β,β;
α,α,α,α,α,α,α,α,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,α,β,β1;
一个又一个!如果(移位=0)
最后,还有:如果(!)重新设置)
结束/ /始终@(PaseFFRxRxCulkKyCH0或NeDeLeSeReTyn)

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-27 12:04:47 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它