Problema crítico
Al realizar varios restablecimientos del ejemplo de diseño de control del equipo de estado de RTL de la PI de JESD204B implementado en Intel® Arria® 10, Stratix® V, Arria® V o Cyclone® dispositivos V, es posible que observe la afirmación de pines de interrupción (jesd204_tx_int o jesd204_rx_int) debido a errores, que se pueden leer en el tx_err (0x60),rx_err0 (0x60), y rx_err1 (0x64) registros.
Para Intel Arria 10 dispositivos, utilice en cambio el ejemplo de diseño del procesador Nios® II.
Para los dispositivos Stratix V, Arria V o Cyclone V, realice las siguientes modificaciones en el RTL:
- Modifique la jesd204b_ed de módulos de nivel superior en el archivo jesd204b_ed.sv.
Define los cables activos de restablecimiento alto:
cable tx_link_rst_sync;
cable tx_frame_rst_sync;
cable rx_link_rst_sync;
cable rx_frame_rst_sync;
global_rst_sync por cable;
Modifique la polaridad del reinicio en las siguientes asignaciones de cables:
Mantenga el núcleo en modo de reinicio hasta que el transceptor esté listo
asigne global_rst_n_sync = ~global_rst_sync; Agregar asignación global_rst_n_sync
assign tx_avs_rst_n = avs_rst_n;
assign rx_avs_rst_n = avs_rst_n;
asignar tx_frame_rst_n = ~tx_frame_rst_sync;
asignar rx_frame_rst_n = ~rx_frame_rst_sync;
asigne tx_link_rst_n = ~tx_link_rst_sync;
asignar rx_link_rst_n = ~rx_link_rst_sync;
altera_reset_controller es un sincronizador activo de restablecimiento alto. Modifique la entrada y salida de la creación de instancias del sincronizador de restablecimiento en consecuencia para reflejar la polaridad correcta:
//
Sincronizadores de reinicio para el restablecimiento global (dominio de reloj mgmt)
//
n.º de altera_reset_controller
. NUM_RESET_INPUTS (1),
. OUTPUT_RESET_SYNC_EDGES ("des OUTPUT_RESET_SYNC_EDGES"),
. SYNC_DEPTH (2)
) u_avs_rst_sync (
.reset_in0 (~global_rst_n),
.clk (mgmt_clk),
.reset_out (global_rst_sync)
);
Realice de forma orientado a bits en wire_tx_ready y wire_rx_ready, que son las señales de bus.
//
Sincronizadores de reinicio para el restablecimiento de la capa de transporte (dominio de reloj de fotogramas)
//
n.º de altera_reset_controller
. NUM_RESET_INPUTS (1),
. OUTPUT_RESET_SYNC_EDGES ("des OUTPUT_RESET_SYNC_EDGES"),
. 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)
);
n.º de altera_reset_controller
. NUM_RESET_INPUTS (1),
. OUTPUT_RESET_SYNC_EDGES ("des OUTPUT_RESET_SYNC_EDGES"),
. 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)
);
//
Sincronizadores de reinicio para el restablecimiento del núcleo base (dominio de reloj de enlace)
//
n.º de altera_reset_controller
. NUM_RESET_INPUTS (1),
. OUTPUT_RESET_SYNC_EDGES ("des OUTPUT_RESET_SYNC_EDGES"),
. 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)
);
n.º de altera_reset_controller
. NUM_RESET_INPUTS (1),
. OUTPUT_RESET_SYNC_EDGES ("des OUTPUT_RESET_SYNC_EDGES"),
. 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. En el módulo control_unit (control_unit.sv), cambie el valor de restablecimiento de frame_rst, link_rst, avs_rst y xcvr_rst.
//
Registro de salida para restablecimientos de transceptores de núcleo base
//
always @ (100 000 000 100 0 rst_n 00 500 000 000 100 000 000
Comenzar
si (~rst_n) comience
frame_rst
link_rst
avs_rst
xcvr_rst
fin de lo demás comenzar
No hay ninguna corrección planeada para este problema.