ID bài viết: 000085194 Loại nội dung: Xử lý sự cố Lần duyệt cuối: 12/06/2013

Tại sao đầu ra bộ điều khiển reconfig_busy cấu hình lại của Bộ thu phát bị kẹt cao sau khi đặt lại?

Môi Trường

  • Phiên bản đăng ký Intel®Intel® Quartus® II
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Mô tả

    Cổng đầu ra \'reconfig_busy\' cấu hình lại bộ thu phát có thể bị kẹt, hiển thị cao sau khi xác nhận đặt lại.  Các kênh thu phát được kết nối với bộ điều khiển định cấu hình lại bị ảnh hưởng cũng có thể bị kẹt trong cài đặt lại.  Cổng đầu ra \'reconfig_busy\' vẫn bị kẹt ngay cả sau khi đặt lại bộ điều khiển định cấu hình lại; chỉ lập trình lại thiết bị mới có thể giải quyết vấn đề.

    Lỗi này có thể được gây ra bởi cấu trúc đặt lại bên trong của bộ điều khiển Định cấu hình lại Bộ thu phát.  Một quyết định đặt lại không đồng bộ với logic điều khiển bus địa chỉ của RAM M20K có thể gây ra sự lan truyền logic không đồng bộ.  Điều này có thể khiến nhiều dòng địa chỉ vào M20K bị hiển thị đồng thời, có thể gây ra việc chia sẻ sạc giữa các ô bit, làm hỏng nội dung của M20K.

    Lỗi này ảnh hưởng đến Bộ điều khiển cấu hình lại thiết bị Stratix® V và Arria® V GZ vì nó chứa bộ xử lý Nios® II được sử dụng để hiệu chỉnh PMA, và mã chương trình của bộ xử lý được lưu trữ trong RAM M20K.  Nếu sự cố xảy ra trong bộ nhớ chương trình Nios® II, điều này có thể khiến bộ xử lý khóa chặt, dẫn đến cổng đầu ra reconfig_busy bị kẹt cao.  Phục hồi từ tình huống này chỉ có thể bằng cách lập trình lại thiết bị, vì nội dung M20K chỉ được tải trong quá trình lập trình thiết bị.

    Độ phân giải

    Việc khắc phục sự cố này sẽ thay đổi bộ điều khiển đặt lại nội bộ và cấu trúc đặt lại của Bộ điều khiển Định cấu hình lại Bộ thu phát để sử dụng các thiết lập lại đồng bộ cũng như giải phóng trước cổng M20K clock_enable trong điều kiện đặt lại.

    Bản sửa lỗi sẽ có sẵn trong phiên bản phần mềm Quartus® II trong tương lai.  Một bản vá có thể được cung cấp cho các phiên bản trước đó của phần mềm Quartus II bằng cách gửi yêu cầu dịch vụ trong mySupport.  Nếu giải pháp được yêu cầu ngay lập tức, việc sửa chữa có thể được áp dụng thủ công bằng cách sử dụng các hướng dẫn sau.

    Có 9 tệp cần thêm hoặc sửa đổi:

    • altera_reset_controller_early_ce_mod.v (thêm)
    • altera_reset_synchronizer_early_ce_mod.v (thêm)
    • Tệp QIP được liên kết với Bộ điều khiển Định cấu hình lại Bộ thu phát (sửa đổi)
    • alt_xcvr_reconfig.sv (sửa đổi)
    • alt_xcvr_reconfig_soc.sv (sửa đổi)
    • alt_xcvr_reconfig_cpu.v (sửa đổi)
    • alt_xcvr_reconfig_cpu_ram.sv (sửa đổi)
    • sv_xrbasic_lif_csr.sv (sửa đổi)
    • sv_xcvr_reconfig_mif_avmm.sv (sửa đổi)

    9 tệp này nên được đặt trong thư mục tạo ra Bộ điều khiển Định cấu hình lại Bộ thu phát.


    Tải xuống altera_reset_controller_early_ce_mod.v và đặt nó trong thư mục lưu giữ các tệp Cấu hình lại Bộ thu phát:

    Tải về altera_reset_synchronizer_early_ce_mod.v và đặt nó trong thư mục lưu giữ các tệp Định cấu hình lại Bộ thu phát:

    Để thêm hai tệp này vào thiết kế của bạn, hãy xác định vị trí và sửa đổi tệp .qip được liên kết với phiên bản Bộ điều khiển Cấu hình lại Bộ thu phát và thêm hai dòng sau vào tệp:
    set_global_assignment -library "LIBRARY_NAME" -name VERILOG_FILE [file join $::quartus(qip_path) "LIBRARY_PATH/altera_reset_controller_early_ce_mod.v"]
    set_global_assignment -library "LIBRARY_NAME" -name VERILOG_FILE [file join $::quartus(qip_path) "LIBRARY_PATH/altera_reset_synchronizer_early_ce_mod.v"]

    Trong hai dòng trên, sửa LIBRARY_NAME và LIBRARY_PATH khớp với tệp .qip của Bộ điều khiển Định cấu hình lại bộ thu phát.

    Đối với alt_xcvr_reconfig.sv, thực hiện các sửa đổi sau:

    • Xác định vị trí alt_xcvr_resync khởi tạo mô-đun mới và đảo ngược các kết nối giữa các cổng 'd' và 'đặt lại'.  Sau khi được sửa đổi, việc tạo tức thì sẽ trông như sau:

    alt_xcvr_resync #(
    . INIT_VALUE (1)
    ) Inst_reconfig_reset_sync (
    .clk (mgmt_clk_clk),
    .d (mgmt_rst_reset),
    .reset (1\'b0 ),
    .q (r_mgmt_rst_reset)
    );

    Đối với alt_xcvr_reconfig_soc.sv, thực hiện các sửa đổi sau:

    Thêm định nghĩa dây sau ở gần đầu mô-đun:

    thiết bị cpu_reset_req dây;

    Xác định vị trí lập tức của mô-alt_xcvr_reconfig_cpu máy chủ và thêm cổng sau:

    .ram_ce (cpu_reset_req),

    Xác định vị trí lập tức của mô alt_xcvr_reconfig_cpu_ram máy chủ và thêm cổng sau:

    .ram_ce (cpu_reset_req),

    Đối với alt_xcvr_reconfig_cpu.v, thực hiện các sửa đổi sau:

    • Thêm cổng sau lên cấp cao nhất:

    đầu ra dây ram_ce,

    • Thêm mã sau vào mô-đun:

    thiết bị m20k_gate dây;
    thiết bị altera_ram_clock_enable dây;
    chỉ định altera_ram_clock_enable = ~ m20k_gate;
    chuyển ram_ce = altera_ram_clock_enable;

    • Tìm sự tức thì của altera_reset_controller đổi này thành tức thì của altera_reset_controller_early_ce_mod.  Thêm cổng m20k_gate mềm vào sự tức thì này và kết nối nó với tín m20k_gate của bạn.  Sau khi thực hiện những sửa đổi này, việc khởi tạo nên trông giống như sau:

    altera_reset_controller_early_ce_mod #(
    . NUM_RESET_INPUTS (1),
    . OUTPUT_RESET_SYNC_EDGES ("deassert"),
    . SYNC_DEPTH (2)
    ) Rst_controller (
    .reset_in0 (~reset_reset_n), // reset_in0.reset
    .clk (clk_clk), // clk.clk
    .reset_out (reconfig_ctrl_reset_reset), // reset_out.reset
    .m20k_gate (m20k_gate),
    .reset_in1 (1\'b0), // (bị chấm dứt)
    .reset_in2 (1\'b0), // (bị chấm dứt)
    .reset_in3 (1\'b0), // (bị chấm dứt)
    .reset_in4 (1\'b0), // (bị chấm dứt)
    .reset_in5 (1\'b0), // (bị chấm dứt)
    .reset_in6 (1\'b0), // (bị chấm dứt)
    .reset_in7 (1\'b0), // (bị chấm dứt)
    .reset_in8 (1\'b0), // (bị chấm dứt)
    .reset_in9 (1\'b0), // (bị chấm dứt)
    .reset_in10 (1\'b0), // (bị chấm dứt)
    .reset_in11 (1\'b0), // (bị chấm dứt)
    .reset_in12 (1\'b0), // (bị chấm dứt)
    .reset_in13 (1\'b0), // (bị chấm dứt)
    .reset_in14 (1\'b0), // (bị chấm dứt)
    .reset_in15 (1\'b0) // (bị chấm dứt)
    );

    Đối với tệp alt_xcvr_reconfig_cpu_ram.sv , thực hiện các sửa đổi sau:

    • Thêm cổng đầu vào sau:

    thông tin ram_ce đầu vào,

    • Tìm tính năng bắt đầu từ altsyncram và sửa đổi cổng clocken0 để kết nối nó với cổng đầu vào ram_ce mới:

    .clocken0 (ram_ce),

    • Sửa đổi định nghĩa clock_enable_input/output_a/b như sau:

    altsyncram_component.clock_enable_input_a = "NORMAL",
    altsyncram_component.clock_enable_input_b = "NORMAL",
    altsyncram_component.clock_enable_output_a = "NORMAL",
    altsyncram_component.clock_enable_output_b = "NORMAL",

    Đối với tệp sv_xrbasic_lif_csr.sv , thực hiện các sửa đổi sau:

    • Xác định vị trí khối tuần tự luôn kiểm soát địa chỉ kênh logic.  Có thể xác định khối luôn này bằng nhận xét "// đăng ký kênh logic" phía trên.  Xóa điều kiện đặt lại khỏi danh sách nhạy cảm.  Sau khi được sửa đổi, việc bắt đầu khối luôn phải trông như sau:

    đăng ký kênh logic
    always @(posedge reconfig_clk) bắt đầu
    nếu (đặt lại == 1) bắt đầu
    ...

    • Xác định vị trí khối tuần tự luôn kiểm soát thanh ghi địa chỉ cấu hình lại gốc.  Có thể xác định khối luôn này bằng nhận xét "// thanh ghi địa chỉ cấu hình lại gốc, có thể được hiểu là địa chỉ offset kênh hoặc địa chỉ vật lý" phía trên.  Xóa điều kiện đặt lại khỏi danh sách nhạy cảm.  Sau khi được sửa đổi, việc bắt đầu khối luôn phải trông như sau:

    đăng ký địa chỉ cấu hình lại gốc, có thể được hiểu là địa chỉ offset kênh hoặc địa chỉ vật lý
    always @(posedge reconfig_clk) bắt đầu
    nếu (đặt lại == 1) bắt đầu
    ...

    Đối với tệp sv_xcvr_reconfig_mif_avmm.sv , sự thay đổi này chỉ cần thiết nếu kênh hoặc PLL cấu hình lại được kích hoạt trong GUI Megawizard Bộ điều khiển Định cấu hình lại Bộ thu phát.  Thực hiện các sửa đổi sau:

    • Xác định vị trí khối tuần tự luôn có chú thích "// Avalon đầu ra và bộ lưu trữ nội bộ" ở trên và xóa điều kiện đặt lại khỏi danh sách nhạy cảm.  Sau khi được sửa đổi, việc bắt đầu khối luôn phải trông như sau:

    Avalon đầu ra và bộ lưu trữ bên trong
    always @(posedge clk)
    Bắt đầu
    nếu (đặt lại) bắt đầu
    ...

    Sau khi thực hiện tất cả những thay đổi này, thiết kế của bạn sẽ cần được biên dịch lại.

    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 Stratix® V GX
    FPGA Arria® V GZ

    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.