ID bài viết: 000076355 Loại nội dung: Xử lý sự cố Lần duyệt cuối: 24/05/2017

Tại sao tôi có thể port_ok rapidIO mà không hiển thị tín hiệu trạng thái sau khi khởi tạo lại liên kết?

Môi Trường

    Intel® Quartus® Prime Phiên bản Pro
    IP FPGA Intel® RapidIO (IDLE1 lên đến 5.0 Gbaud)
BUILT IN - ARTICLE INTRO SECOND COMPONENT

Sự cố quan trọng

Mô tả

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.
Độ phân giải

Để đả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).

Các sản phẩm liên quan

Bài viết này áp dụng cho 2 sản phẩm

FPGA Arria® V và FPGA SoC
FPGA Cyclone® V và FPGA SoC

1

Nội dung gốc bằng tiếng Anh trên trang này vừa do con người vừa do máy dịch. Nội dung này chỉ để cung cấp thông tin chung và giúp quý vị thuận tiện. Quý vị không nên tin đây là thông tin hoàn chỉnh hoặc chính xác. Nếu có bất kỳ mâu thuẫn nào giữa bản tiếng Anh và bản dịch của trang này, thì bản tiếng Anh sẽ chi phối và kiểm soát. Xem phiên bản tiếng Anh của trang này.