描述
WHE N使用JESD V5.0和更早,生产复位GTP和GTH DRP序列可以在需要重新配置,以恢复挂起状态结束 (Xilinx答案60489) 。
只有在 正在进行复位序列的 同时向内核发出第二次复位时才会出现故障 。
复位序列在配置后自动启动,因此如果在配置器件后不久切换主核复位,则可能会发生这种情况。
由于DRP寄存器设置卡在16位Rx数据宽度而不是所需的20位数据宽度,故障发生。
JESD204在正常操作期间使用20位数据宽度,但DRP逻辑在复位序列期间将数据宽度设置为16位,以避免生产复位问题(有关所需复位逻辑的更多信息,请参阅“GT收发器用户指南”)。
仅在先前的复位序列正在进行时向核心发出第二次复位时才会出现故障。
解
要解决此问题,可以更改第二个DRP写入以确保数据宽度设置回20而不是依赖于最初读取的值,如果在DRP序列期间发出复位,则该值可能会卡在16。
DRP更新应该发送到<core_name> _ * _ gtrxreset_seq.v / vhd
(如果使用也更改<core_name> _ * _ gtrxrate_seq.v / vhd和<core_name> _ * _ gtrxpmarst_seq.v / vhd )。
对于VHDL,请更改以下内容:
– 写入20位模式当wr_20 =>时….drpdi_o <= rd_data(15 downto 0); – 每个上一个读取的恢复用户设置
至:
– 写入20位模式当wr_20 =>时…drpdi_o <= rd_data(15 downto 12)&’1’&rd_data(10 downto 0); –restore 20位模式
对于Verilog,请更改以下内容:
//写入20位模式wr_20:开始….drpdi_o = rd_data [15:0]; //恢复每个上一次阅读的用户设置结束
至:
//写入20位模式wr_20:开始….drpdi_o = {rd_data [15:12],1’b1,rd_data [10:0]}; //恢复20位结束
没有回复内容