ID บทความ: 000078174 ประเภทข้อมูล: การแก้ไขปัญหา การตรวจสอบครั้งล่าสุด: 13/10/2014

ทําไมการเชื่อมต่อนาฬิกาต่อพ่วง HPS กับพินภายนอกผ่านลอจิก FPGA จึงก่อให้เกิดข้อผิดพลาด Fitter ของ Quartus®

สิ่งแวดล้อม

  • Intel® Quartus® II Subscription Edition
  • นาฬิกา
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    คำอธิบาย

    นาฬิกาต่อพ่วง HPS ต่อไปนี้สามารถกําหนดเส้นทางไปยังลอจิก 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

    เนื่องจากปัญหาในซอฟต์แวร์ Quartus® II เวอร์ชัน 13.0 ขึ้นไป ความพอดีของ Quartus® อาจสร้างข้อความแสดงข้อผิดพลาดหากนาฬิกาเหล่านี้เชื่อมต่อโดยตรงกับพิน FPGA ภายนอก ต่อไปนี้เป็นตัวอย่างของสัญญาณ spim1_sclk_out ที่เชื่อมต่อกับพินภายนอก:

    ข้อผิดพลาด (14566): ไม่สามารถวางส่วนประกอบต่อพ่วง 1 รายการไม่ได้ เนื่องจากความขัดแย้งกับข้อจํากัดที่มีอยู่ (1 ไดรเวอร์นาฬิกาที่โปรโมทอัตโนมัติ)

    ข้อผิดพลาด (175020): ข้อจํากัดที่ผิดกฎหมายของไดรเวอร์นาฬิกาที่โปรโมทอัตโนมัติซึ่งเป็นส่วนหนึ่งของ Arria V/Cyclone V Hard Processor System ghrd_hps_0 ไปยังภูมิภาค (92, 67) เป็น (183, 137): ไม่มีตําแหน่งที่ถูกต้องในภูมิภาค

    ข้อมูล (14596): ข้อมูลเกี่ยวกับส่วนประกอบที่ล้มเหลว:

    ข้อมูล (175028): ชื่อไดรเวอร์นาฬิกาที่โปรโมทอัตโนมัติ: ghrd:soc_inst|ghrd_hps_0:hps_0|ghrd_hps_0_fpga_interfaces:fpga_interfaces|spim1_sclk_out[0]~CLKENA

    ข้อมูลเพิ่มเติมเกี่ยวกับนาฬิกาเหล่านี้สามารถพบได้ในหัวข้อ "Peripheral FPGA Clocks" ของคู่มืออุปกรณ์ Cyclone® V หรือ Arria® V, โวลุ่ม 3: คู่มืออ้างอิงทางเทคนิคของระบบโปรเซสเซอร์แบบฮาร์ด (http://www.altera.com/literature/hb/cyclone-v/cv_5v4.pdf, หน้า 27-12)

    ความละเอียด

    เพื่อหลีกเลี่ยงข้อความแสดงข้อผิดพลาดเหล่านี้ จะต้องกําหนดเส้นทางสัญญาณนาฬิกาผ่าน LUT ก่อน สิ่งนี้สามารถทําได้โดยการสร้างอินสแตนซ์ lcell_comb ความเหมาะสมสําหรับตระกูลอุปกรณ์ของคุณ ต่อไปนี้แสดงตัวอย่างของการสร้างอินสแตนซ์ Verilog lcell_comb สําหรับ Arria® V SoC spim1_sclk_out นาฬิกา:

    arriav_lcell_comb wirelut ( .dataa(spim1_sclk_from_hps), .combout (spim1_sclk_to_pin) );
    defparam wirelut.lut_mask = 64\'hAAAAAAAAAAAAAAAA;
    wirelut.dont_touch defparam = "on";

    ในตัวอย่างข้างต้น สัญญาณ spim1_sclk_from_hps จะเชื่อมต่อกับพอร์ตเอาต์พุต spim1_sclk_out จากอินสแตนซ์ HPS สัญญาณ spim1_sclk_to_pin สามารถเชื่อมต่อกับพอร์ตเอาต์พุตระดับบนสุดและกําหนดให้กับพิน FPGA ได้

    การใช้ lcell_comb primitive จะลดทรัพยากร การใช้ฟังก์ชันการรวมกันของ Boolean ที่อนุมานเล็กน้อยจะช่วยหลีกเลี่ยงข้อผิดพลาดนี้ได้ การใช้ฟังก์ชัน Boolean จะช่วยหลีกเลี่ยงการสร้างอินสแตนซ์สําหรับสารตัวแสบ แต่อาจส่งผลให้ใช้ทรัพยากรได้สูงขึ้นเล็กน้อย

    ต่อไปนี้เป็นตัวอย่างรหัส Verilog ที่แสดง Boolean ที่อนุมานที่เลี่ยงข้อผิดพลาดโดย ANDing นาฬิกาที่มีสัญญาณการรีเซ็ตต่ําที่ทํางานอยู่ (ทําให้เกิดอินสแตนซ์ LUT ที่อนุมาน):

    กําหนด spim1_sclk_to_pin = spim1_sclk_from_hps & ตั้งค่าใหม่

    ปัญหานี้ได้รับการแก้ไขโดยเริ่มตั้งแต่เวอร์ชัน 15.1 ของซอฟต์แวร์ Quartus® II

    ผลิตภัณฑ์ที่เกี่ยวข้อง

    บทความนี้จะนำไปใช้กับ 5 ผลิตภัณฑ์

    Arria® V ST SoC FPGA
    Arria® V SX SoC FPGA
    Cyclone® V SE SoC FPGA
    Cyclone® V ST SoC FPGA
    Cyclone® V SX SoC FPGA

    เนื้อหาในหน้านี้เป็นการผสมผสานระหว่างการแปลเนื้อหาต้นฉบับภาษาอังกฤษโดยมนุษย์และคอมพิวเตอร์ เนื้อหานี้จัดทำขึ้นเพื่อความสะดวกของคุณและเพื่อเป็นข้อมูลทั่วไปเท่านั้นและไม่ควรอ้างอิงว่าสมบูรณ์หรือถูกต้อง หากมีความขัดแย้งใด ๆ ระหว่างเวอร์ชันภาษาอังกฤษของหน้านี้กับคำแปล เวอร์ชันภาษาอังกฤษจะมีผลเหนือกว่าและควบคุม ดูเวอร์ชันภาษาอังกฤษของหน้านี้