중요 문제
인텔® Arria® 10, Stratix® V, Arria® V 또는 Cyclone® V 장치에서 구현된 JESD204B IP RTL 상태 기계 제어 설계 예의 여러 리셋을 수행할 때, 오류로 인해 인터럽트 핀(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 clock Domain)
//
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
끝 다른 시작
이 문제에 대한 계획된 수정 사항은 없습니다.