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