ID bài viết: 000078174 Loại nội dung: Xử lý sự cố Lần duyệt cuối: 13/10/2014

Tại sao việc kết nối xung nhịp ngoại vi HPS với các chân bên ngoài thông qua logic FPGA lại gây ra lỗi lắp Quartus®?

Môi Trường

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

    Các Đồng hồ ngoại vi HPS sau đây có thể được định tuyến theo logic FPGA:

    • emac0_md_clk
    • emac0_gtx_clk
    • emac1_md_clk
    • emac1_gtx_clk
    • qspi_sclk_out
    • spim0_sclk_out
    • spim1_sclk_out
    • i2c0_clk
    • i2c1_clk
    • i2c2_clk
    • i2c3_clk

    Do sự cố trong phiên bản phần mềm Quartus II 13.0 trở lên, Quartus® fit có thể tạo ra thông báo lỗi nếu các đồng hồ này được kết nối trực tiếp với chân FPGA bên ngoài. Sau đây là ví dụ về tín hiệu spim1_sclk_out được kết nối với chân ngoài:

    Lỗi (14566): Không thể đặt 1 thành phần ngoại vi do xung đột với các ràng buộc hiện có (1 trình điều khiển đồng hồ tự động thăng cấp)

    Lỗi (175020): Ràng buộc bất hợp pháp của trình điều khiển đồng hồ tự động được quảng cáo là một phần của Hệ thống bộ xử lý cứng Arria V/Cyclone V ghrd_hps_0 khu vực (92, 67) đến (183, 137): không có vị trí hợp lệ trong khu vực

    Thông tin (14596): Thông tin về thành phần bị lỗi:

    Thông tin (175028): Tên trình điều khiển đồng hồ tự động quảng cáo: ghrd:soc_inst|ghrd_hps_0:hps_0|ghrd_hps_0_fpga_interfaces:fpga_interfaces|spim1_sclk_out[0]~CLKENA

    Bạn có thể tìm thêm thông tin về các đồng hồ này trong phần "Đồng hồ FPGA ngoại vi" của Sổ tay thiết bị Cyclone® V hoặc Arria® V, Tập 3: Hướng dẫn Tham khảo Kỹ thuật Hệ thống Bộ xử lý Cứng (http://www.altera.com/literature/hb/cyclone-v/cv_5v4.pdf, trang 27-12).

    Độ phân giải

    Để tránh những thông báo lỗi này, trước tiên tín hiệu đồng hồ phải được định tuyến qua LUT. Điều này có thể đạt được bằng cách khởi tạo một lcell_comb nguyên thủy phù hợp với dòng thiết bị của bạn. Phần sau đây cho thấy ví dụ về khởi tạo Verilog lcell_comb cho đồng hồ spim1_sclk_out SoC Arria® V:

    arriav_lcell_comb wirelut(.dataa(spim1_sclk_from_hps), .combout(spim1_sclk_to_pin);
    defparam wirelut.lut_mask = 64\'hAAAAAAAAAAAAAAA ;
    defparam wirelut.dont_touch = "bật";

    Trong ví dụ trên, tín hiệu spim1_sclk_from_hps được kết nối với cổng đầu ra spim1_sclk_out từ phiên bản HPS. Tín hiệu spim1_sclk_to_pin có thể được kết nối với cổng đầu ra cấp cao nhất và được gán cho một chân FPGA.

    Việc sử dụng một lcell_comb nguyên thủy sẽ giảm thiểu tài nguyên. Sử dụng một hàm kết hợp Boolean suy luận nhỏ cũng sẽ tránh được lỗi này. Sử dụng hàm Boolean sẽ tránh phải khởi tạo một hàm nguyên thủy, nhưng có thể dẫn đến việc sử dụng tài nguyên cao hơn một chút.

    Sau đây là mã Verilog ví dụ hiển thị Boolean suy luận cũng tránh được lỗi bằng cách ANDing đồng hồ với tín hiệu đặt lại thấp đang hoạt động (gây ra phiên bản LUT suy luận):

    gán spim1_sclk_to_pin = spim1_sclk_from_hps & đặt lại;

    Sự cố này được khắc phục bắt đầu với bản phát hành 15.1 của phần mềm Quartus® II.

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

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

    Hiện tất cả

    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.