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

การหมดเวลาของ Poll(ขัดจังหวะ)

สิ่งแวดล้อม

  • Intel® Quartus® Prime Pro Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    คำอธิบาย

    เมื่อมีการเปิด DMA หลายตัวพร้อมกันด้วยภาพโรงงานของการ์ดเร่งความเร็ว Intel® FPGA ตั้งโปรแกรมได้ N3000 คุณอาจได้รับข้อผิดพลาดการหมดเวลาของ Poll(ขัดจังหวะ)

    ข้อผิดพลาดการหมดเวลาเกิดจากการออกแบบภาพจากโรงงานโดยมีบล็อก DMA สี่บล็อกที่แชร์การขัดจังหวะ

    ความละเอียด

    หากแอปพลิเคชันของคุณต้องมีการจัดการ DMA แบบเปิดหลายรายการ ให้ปรับแต่งการออกแบบ AFU RTL และรหัสซอฟต์แวร์ตามที่ระบุไว้ด้านล่าง:

    1.การออกแบบ RTL:

    ในไฟล์ afu.sv ตั้งต้น บรรทัดที่ 257 dma_irq จะถูกส่งไปยังโมดูล avmm_ccip_host_wr irq[0]

    .irq({3'b000, dma_irq})

    ปรับแต่งการออกแบบของคุณเพื่อแมป irq แต่ละตัวจากบล็อก DMA ไปยังบิตที่ต่างกัน

    2. รหัสซอฟต์แวร์:

    ในไฟล์ fpga_dma.c, line 701 ~702, ฟังก์ชัน fpgaRegisterEvent ใช้ 0 เป็นรหัสเวกเตอร์แบบคงที่

    res = fpgaRegisterEvent(dma_h->fpga_h, FPGA_EVENT_INTERRUPT, dma_h->eh, 0 /*vector id */);

    ลงทะเบียน ID ที่แตกต่างกันสําหรับหมายเลขอ้างอิง DMA ของคุณ ซึ่งแมปกับบิต irq ในการออกแบบ RTL

    ตัวอย่างเช่น ในการเข้าถึง DDRA และ DDRB ที่มีสอง dma ที่จับร่วมกัน คุณสามารถปรับแต่งโค้ด RTL ของคุณเพื่อแมป dma_irq กับ irq[0] ใน afu_dma_0_inst สําหรับ DDRA และแมป dma_irq กับ irq[1] ใน afu_dma_1_inst สําหรับ DDRB ในรหัสซอฟต์แวร์ ให้ใช้ Vector ID 0 สําหรับ DMA handle 0 เพื่อเข้าถึง DDRA ใช้ Vector ID 1 สําหรับ dma handle 1 เพื่อเข้าถึง DDRB ในฟังก์ชัน fpgaRegisterEvent

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

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

    Intel® Arria® 10 FPGA และ SoC FPGA
    เอฟพีจีเอ Intel® PAC N3000

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