Masalah Kritis
Saat melakukan beberapa reset pada contoh desain kontrol mesin status JESD204B IP RTL yang diimplementasikan pada Intel® Arria® 10, Stratix® V, Arria® V, atau perangkat V Cyclone®, Anda mungkin mengamati pin (jesd204_tx_int, dan/atau jesd204_rx_int) yang ditegaskan karena kesalahan, yang dapat dibaca dari tx_err (0x60), rx_err0 (0x60), dan register rx_err1 (0x64).
Untuk Intel Arria 10 perangkat, gunakan contoh desain prosesor Nios® II saja.
Untuk perangkat V Stratix, Arria V, atau Cyclone V, lakukan modifikasi berikut untuk RTL:
- Modifikasi jesd204b_ed modul tingkat atas dalam file jesd204b_ed.sv.
Definisikan kabel pengaturan ulang tinggi yang aktif:
tx_link_rst_sync kabel;
tx_frame_rst_sync kawat;
rx_link_rst_sync kawat;
rx_frame_rst_sync kawat;
global_rst_sync kawat;
Modifikasi polaritas reset dalam tugas kawat berikut:
Tahan inti dalam mode reset hingga transiver siap
menetapkan global_rst_n_sync = ~global_rst_sync; Tambahkan penetapan global_rst_n_sync
menetapkan tx_avs_rst_n = avs_rst_n;
menetapkan rx_avs_rst_n = avs_rst_n;
menetapkan tx_frame_rst_n = ~tx_frame_rst_sync;
menetapkan rx_frame_rst_n = ~rx_frame_rst_sync;
menetapkan tx_link_rst_n = ~tx_link_rst_sync;
menetapkan rx_link_rst_n = ~rx_link_rst_sync;
altera_reset_controller adalah sinkronisasi pengaturan ulang tinggi aktif. Modifikasi input dan keluaran dari instantiations synchronizer reset untuk mencerminkan polaritas yang benar:
//
Reset synchronizers untuk reset global (domain clock mgmt)
//
altera_reset_controller #(
. NUM_RESET_INPUTS (1),
. OUTPUT_RESET_SYNC_EDGES ("penahan"),
. SYNC_DEPTH (2)
) u_avs_rst_sync (
.reset_in0 (~global_rst_n),
.clk (mgmt_clk),
.reset_out (global_rst_sync)
);
Lakukan AND bitwise pada wire_tx_ready &wire_rx_ready, yang merupakan sinyal bus.
//
Reset synchronizers untuk transport layer reset (domain clock frame)
//
altera_reset_controller #(
. NUM_RESET_INPUTS (1),
. OUTPUT_RESET_SYNC_EDGES ("penahan"),
. 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 ("penahan"),
. 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)
);
//
Reset synchronizers untuk reset inti dasar (link clock domain)
//
altera_reset_controller #(
. NUM_RESET_INPUTS (1),
. OUTPUT_RESET_SYNC_EDGES ("penahan"),
. 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 ("penahan"),
. 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. Dalam control_unit modul (control_unit.sv), ubah nilai reset untuk frame_rst, link_rst, avs_rst & xcvr_rst.
//
Register output untuk reset transiver inti dasar
//
selalu @ (poedge clk atau rst_n terlantar)
Mulai
jika (~rst_n) dimulai
frame_rst
link_rst
avs_rst
xcvr_rst
akhiri yang lain mulai
Tidak ada perbaikan yang direncanakan untuk masalah ini.