Sự cố quan trọng
port_ok trạng thái trong bit-0, Lỗi và Trạng thái Cổng 0 (0x158) có thể ở mức THẤP sau khi khởi tạo lại liên kết. Khởi tạo lại liên kết được thực hiện bằng cách kích hoạt bit-23 PORT_DIS trong Port 0 Control CSR (0x15C) hoặc khi đối tác liên kết đang thực hiện đặt lại. Điều này có thể gây ra lỗi chết người trong quá trình hoạt động bình thường,
Sự cố này xảy ra do các lý do sau:
- Lõi RapidIO có thể hết thiết lập lại trước khi bộ thu phát hết cài đặt lại. Điều này khiến lõi RapidIO bắt đầu hoạt động trong khi bộ thu phát vẫn đang được đặt lại.
- Quy trình căn chỉnh lại từ bị giới hạn ở làn 0 và sẽ chỉ kích hoạt một lần trong quá trình khởi tạo lại liên kết.
Vấn đề này ảnh hưởng đến các biến thể RapidIO I sau:
- Arria® V/Cyclone® V với chế độ x2.
- Arria V/Cyclone V ở tốc độ baud 5000 Mbaud.
- Arria V với chế độ x4 ở tốc độ baud 3125 Mbaud.
Để đảm bảo rằng bộ thu phát đã hết thời gian đặt lại và sẵn sàng bắt đầu bất kỳ hoạt động nào trước lõi RapidIO, hãy đặt lại lõi RapidIO đủ điều kiện với các tín hiệu trạng thái sẵn sàng của bộ thu phát trong trình điều khiển _riophy_reset:
TX_SIDE
luôn @(tạo dáng tx_clk phủ định reset_n)
Bắt đầu
nếu (!reset_n) bắt đầu
tx_ready_s0 <= 1'b0;
tx_ready_s1 <= 1'b0;
đầu còn lại bắt đầu
tx_ready_s0 <= tx_ready;
tx_ready_s1 <= tx_ready_s0;
Cuối
Cuối
luôn @ (đặt tx_clk phủ định hoặc phủ reset_n) bắt đầu
if(!reset_n)bắt đầu
txreset_n_p2 <= 1'b0;
txreset_n_p1 <= 1'b0;
txreset_n <= 1'b0;
đầu còn lại bắt đầu
nếu (!gxbpll_locked_tx_clk_d2 ||!tx_ready_s1) bắt đầu
txreset_n_p2 <= 1'b0;
txreset_n_p1 <= 1'b0;
txreset_n <= 1'b0;
đầu còn lại bắt đầu
txreset_n_p2 <= 1'b1;
txreset_n_p1 <= txreset_n_p2;
txreset_n <= txreset_n_p1;
Cuối
Cuối
Cuối
RX_SIDE
always @(posedge rx_clk negedge reset_n)
Bắt đầu
nếu (!reset_n) bắt đầu
rx_ready_s0 <= 1'b0;
rx_ready_s1 <= 1'b0;
đầu còn lại bắt đầu
rx_ready_s0 <= rx_ready;
rx_ready_s1 <= rx_ready_s0;
Cuối
Cuối
luôn @ (đặt rx_clk phủ định hoặc phủ reset_n) bắt đầu
if(!reset_n)bắt đầu
rxreset_n_p2 <= 1'b0;
rxreset_n_p1 <= 1'b0;
rxreset_n <= 1'b0;
đầu còn lại bắt đầu
nếu (!rx_ready_s1) bắt đầu
rxreset_n_p2<=1'b0;
rxreset_n_p1<=1'b0;
rxreset_n<=1'b0;
đầu còn lại bắt đầu
rxreset_n_p2 <= 1'b1;
rxreset_n_p1 <= rxreset_n_p2;
rxreset_n <= rxreset_n_p1;
Cuối
Cuối
Cuối
Để kích hoạt quá trình căn chỉnh lại từ theo cách thủ công, thực hiện các bước sau thông qua giao diện bộ thu phát Avalon-MM phy_mgmt của bộ thu phát:
(1) Hiển thị phy_mgmt_write=1'b1 để xác định thao tác ghi.
(2) Ghi dữ liệu phy_mgmt_writedata=32'b0 vào địa chỉ phy_mgmt_address=9'h80 để nhắm mục tiêu làn 0.
(3) Ghi dữ liệu phy_mgmt_writedata=32'b1 vào địa chỉ phy_mgmt_address=9'h85 để quyết định rx_enapatternalign điều này sẽ kích hoạt hoạt động căn chỉnh từ cho làn 0.
(4) Ghi dữ liệu phy_mgmt_writedata=32'b0 vào địa chỉ phy_mgmt_address=9'h85 để rx_enapatternalign.
Lặp lại các bước trên cho tất cả các làn khác: làn 1 (0x80=32'b1), làn 2 (0x80=32'b2) và làn 3 (0x80=32'b3).