关键问题
执行 英特尔® ARRIA® 10 中实施的 JESD204B IP RTL 状态机控制设计示例的多个重置时, Stratix® V、Arria® V 或 Cyclone® V 设备,您可能会观察因错误而表明的中断引脚(jesd204_tx_int和/或jesd204_rx_int),该错误可从 tx_err (0x60) 中读取rx_err0 (0x60) 和 rx_err1 (0x64) 寄存器。
英特尔 Arria 10 设备,请使用Nios® II 处理器设计示例。
对于 Stratix V、Arria V 或 Cyclone V 设备,对 RTL 执行以下修改:
- 在 jesd204b_ed.sv 文件中修改顶级模块jesd204b_ed。
定义 有源高重置线:
电线tx_link_rst_sync;
电线tx_frame_rst_sync;
电线rx_link_rst_sync;
电线rx_frame_rst_sync;
电线global_rst_sync;
修改 以下有线分配中重置的极性:
将内核保留在复位模式,直至收发器就绪
分配global_rst_n_sync = ~global_rst_sync;添加global_rst_n_sync分配
分配tx_avs_rst_n = avs_rst_n;
分配 rx_avs_rst_n = avs_rst_n;
分配tx_frame_rst_n = ~tx_frame_rst_sync;
分配rx_frame_rst_n = ~rx_frame_rst_sync;
分配tx_link_rst_n = ~tx_link_rst_sync;
分配 rx_link_rst_n = ~rx_link_rst_sync;
altera_reset_controller是一种主动高重置同步器。相应地修改重置同步器实例的输入和输出,以反映正确的极性:
//
适用于全局重置的重置同步器(mgmt 时钟域)
//
altera_reset_controller #(
.NUM_RESET_INPUTS (1),
.OUTPUT_RESET_SYNC_EDGES (“deassert”),
.SYNC_DEPTH (2)
) u_avs_rst_sync (
.reset_in0 (~global_rst_n),
.clk (mgmt_clk),
.reset_out (global_rst_sync)
);
在 wire_tx_ready 和 wire_rx_ready(即总线信号)上进行位和顺时运行。
//
用于传输层重置的重置同步器(帧时钟域)
//
altera_reset_controller #(
.NUM_RESET_INPUTS (1),
.OUTPUT_RESET_SYNC_EDGES (“deassert”),
.SYNC_DEPTH (2)
) u_tx_frame_rst_sync (
.reset_in0(~(wire_frame_rst_n和wire_tx_ready))
.clk (frame_clk),
.reset_out (tx_frame_rst_n_sync)
);
altera_reset_controller #(
.NUM_RESET_INPUTS (1),
.OUTPUT_RESET_SYNC_EDGES (“deassert”),
.SYNC_DEPTH (2)
) u_rx_frame_rst_sync (
.reset_in0(~(wire_frame_rst_n和wire_rx_ready))
.clk (frame_clk),
.reset_out (rx_frame_rst_n_sync)
);
//
用于基本内核重置的重置同步器(链路时钟域)
//
altera_reset_controller #(
.NUM_RESET_INPUTS (1),
.OUTPUT_RESET_SYNC_EDGES (“deassert”),
.SYNC_DEPTH (2)
) u_tx_link_rst_sync (
.reset_in0(~(wire_link_rst_n和wire_tx_ready))
.clk (link_clk),
.reset_out (tx_link_rst_n_sync)
);
altera_reset_controller #(
.NUM_RESET_INPUTS (1),
.OUTPUT_RESET_SYNC_EDGES (“deassert”),
.SYNC_DEPTH (2)
) u_rx_link_rst_sync (
.reset_in0(~(wire_link_rst_n和wire_rx_ready))
.clk (link_clk),
.reset_out (rx_link_rst_n_sync)
);
----------------------------------------
2. 在模块control_unit (control_unit.sv) 中, 更改 frame_rst、link_rst、avs_rst的重置值 > xcvr_rst。
//
用于基本内核收发器重置的输出寄存器
//
始终 @ (假如 clk 或 negedge rst_n)
开始
如果 (~rst_n) 开始
frame_rst
link_rst
avs_rst
xcvr_rst
结束其他开始
对于此问题,没有计划解决。