
สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12

ฉันรู้สึกท่วมท้นกับคำตอบที่ได้รับในบล็อกนี้ ขอบคุณสำหรับการเยี่ยมชมบล็อกของฉันและกระตุ้นให้ฉันแบ่งปันความรู้ของฉันกับคุณ ครั้งนี้ ฉันจะนำเสนอการออกแบบโมดูลที่น่าสนใจอีกอันที่เราเห็นใน SOC ทั้งหมด -- Interrupt Controller
เราจะออกแบบ Programmable Interrupt Controller ที่เรียบง่ายแต่ทรงพลัง เป็นการออกแบบที่กำหนดค่าได้อย่างสมบูรณ์และกำหนดพารามิเตอร์ได้ซึ่งสามารถเคลื่อนย้ายข้ามแพลตฟอร์มได้ ฉันออกแบบสิ่งนี้หลังจากอ่านมามากเกี่ยวกับสถาปัตยกรรมตัวควบคุมอินเตอร์รัปต์ยอดนิยมบางตัวเช่น NVIC, 8259a, RISC-V PLIC, INTC ของ Microblaze เป็นต้น หวังว่าพวกคุณจะพบว่าบล็อกนี้มีประโยชน์และช่วยให้คุณเข้าใจวิธีจัดการกับการขัดจังหวะโดยโปรเซสเซอร์ ด้วยความช่วยเหลือของตัวควบคุมการขัดจังหวะ
ขั้นตอนที่ 1: ข้อมูลจำเพาะ
ต่อไปนี้เป็นข้อกำหนดของ IP:
- อินเทอร์เฟซ AHB3-Lite
-
พารามิเตอร์ที่กำหนดแบบคงที่:
- จำนวนแหล่งอินเตอร์รัปต์ภายนอก รองรับได้ถึง 63 ขัดจังหวะ
- จำนวนระดับความสำคัญ; รองรับได้ถึง 63 ระดับ
- จำนวนระดับการซ้อน; รองรับการทำรังได้ถึง 8 ระดับ
- ความกว้างของบัส; 32 หรือ 64
- การขัดจังหวะที่ปิดบังได้ทั่วโลกและในเครื่อง
- ระดับความสำคัญที่กำหนดค่าได้แบบไดนามิกสำหรับการขัดจังหวะแต่ละครั้ง
- โหมดการทำงานสองโหมด – โหมดซ้อนอย่างเต็มที่และโหมดลำดับความสำคัญเท่ากัน
- รองรับการขัดจังหวะที่ละเอียดอ่อนระดับสูงที่ใช้งาน
RISC-V PLIC ได้แรงบันดาลใจจากกลไกการจับมือแบบขัดจังหวะในการออกแบบ
Interrupt pre-emption ได้แรงบันดาลใจจาก 8259a
อ่านอื่น ๆ: Microblaze INTC, NVIC
ขั้นตอนที่ 2: ภาพรวมของ PIC

Programmable Interrupt Controller (PIC) รับอินเตอร์รัปต์หลายรายการจากอุปกรณ์ต่อพ่วงภายนอก และรวมเข้าเป็นเอาต์พุตอินเทอร์รัปต์เดียวไปยังแกนประมวลผลเป้าหมาย
PIC ถูกควบคุมผ่านการควบคุมและการลงทะเบียนสถานะ การลงทะเบียน PIC ทั้งหมดถูกแมปหน่วยความจำ และเข้าถึงได้ผ่านอินเทอร์เฟซบัส AHB3-Lite
ธนาคารการลงทะเบียนประกอบด้วยการลงทะเบียนการกำหนดค่า เปิดใช้งานการลงทะเบียน การลงทะเบียนที่รอดำเนินการ การลงทะเบียนในบริการ การลงทะเบียนลำดับความสำคัญ และการลงทะเบียน ID ซึ่งเป็นเรื่องปกติในตัวควบคุมการขัดจังหวะ
การลงทะเบียนการกำหนดค่าใช้เพื่อกำหนดโหมดการทำงานของ PIC สามารถทำงานได้ทั้งในโหมดซ้อนอย่างสมบูรณ์หรือโหมดความสำคัญเท่าเทียมกัน
แต่ละอินเตอร์รัปต์สามารถกำหนดลำดับความสำคัญและปิดบังแยกกันได้ รองรับการปิดบังส่วนกลางของการขัดจังหวะทั้งหมด
ธนาคารลงทะเบียนโต้ตอบกับ Priority Resolver และ BTC (Binary-Tree-Comparator) เพื่อแก้ไขลำดับความสำคัญของการขัดจังหวะที่ค้างอยู่และยืนยันการขัดจังหวะกับโปรเซสเซอร์ตามลำดับ การลงทะเบียน ID มี ID ของการขัดจังหวะที่รอดำเนินการที่มีลำดับความสำคัญสูงสุด
ขั้นตอนที่ 3: การออกแบบและการใช้งาน RTL

การออกแบบของ PIC เน้นที่การลดเวลาแฝงของการแก้ไขลำดับความสำคัญ ซึ่งเป็นส่วนที่สำคัญที่สุดของการออกแบบ เนื่องจากการออกแบบแก้ไขลำดับความสำคัญในวงจรสัญญาณนาฬิกาเดียว ประสิทธิภาพจะลดลงตามจำนวนแหล่งที่มาที่เพิ่มขึ้นด้วยความซับซ้อนของ Log2
การออกแบบถูกนำไปใช้อย่างประสบความสำเร็จและกำหนดเวลาตรวจสอบได้ถึงความถี่ที่ตามมาบน Artix-7 FPGA
- สูงสุด 15 แหล่ง: 100 MHz
- สูงสุด 63 แหล่ง: 50 MHz
Interrupt Latency ที่เพิ่มโดย PIC เพียงอย่างเดียวคือ 3 รอบสัญญาณนาฬิกา (ไม่รวมเวลาการสลับบริบทของตัวประมวลผลและเวลาในการดึงคำสั่ง ISR ครั้งแรก)
ขั้นตอนที่ 4: หมายเหตุสำคัญและไฟล์แนบ
หมายเหตุสำคัญ:
- หากไม่ต้องการอินเทอร์เฟซ AHB3-Lite คุณสามารถเปลี่ยนโมดูลด้านบนและใช้การออกแบบโครงกระดูกของ PIC อย่างไรก็ตาม ม้านั่งทดสอบที่มีให้นั้นมีไว้สำหรับ IP ที่มีอินเทอร์เฟซ AHB3-Lite
- PIC IP v1.0 เป็นการออกแบบ RTL แบบเปลือยแบบพกพาอย่างสมบูรณ์
- ตรวจสอบการทำงานเพื่อใช้งานได้ทั้งสองโหมด
ไฟล์ที่แนบมาด้วย:
- ออกแบบโค้ดและชุดทดสอบใน VHDL
- เอกสาร IP แบบเต็ม
เป็นการออกแบบโอเพ่นซอร์ส … ใช้ได้ฟรี …
สำหรับข้อสงสัยใด ๆ ได้ตลอดเวลา:
มิตู ราจ
แนะนำ:
ระบบตรวจสอบด้วยภาพที่ใช้ LoRa เพื่อการเกษตร Iot - การออกแบบ Fronted Application โดยใช้ Firebase & Angular: 10 ขั้นตอน

ระบบตรวจสอบด้วยภาพที่ใช้ LoRa เพื่อการเกษตร Iot | การออกแบบ Fronted Application โดยใช้ Firebase & Angular: ในบทที่แล้ว เราพูดถึงวิธีที่เซ็นเซอร์ทำงานกับโมดูล loRa เพื่อเติมฐานข้อมูล firebase Realtime และเราเห็นไดอะแกรมระดับสูงมากว่าโปรเจ็กต์ทั้งหมดทำงานอย่างไร ในบทนี้เราจะพูดถึงวิธีที่เราสามารถ
การออกแบบ Mail Bot UX: 6 ขั้นตอน

การออกแบบ Mail Bot UX: นี่คือหุ่นยนต์ที่กรีดร้องเมื่อคุณมีจดหมาย คุณต้องใช้กาวและเทป
การออกแบบ I2C Master ใน VHDL: 5 ขั้นตอน

การออกแบบ I2C Master ใน VHDL: ในคำแนะนำนี้จะกล่าวถึงการออกแบบต้นแบบ I2C อย่างง่ายใน VHDL หมายเหตุ: คลิกที่แต่ละภาพเพื่อดูภาพเต็ม
การออกแบบ SPI Master ใน VHDL: 6 ขั้นตอน

การออกแบบ SPI Master ใน VHDL: ในคำแนะนำนี้ เราจะออกแบบ SPI Bus Master ตั้งแต่เริ่มต้นใน VHDL
การออกแบบ UART ใน VHDL: 5 ขั้นตอน

การออกแบบ UART ใน VHDL: UART ย่อมาจาก Universal Asynchronous Receiver Transmitter เป็นโปรโตคอลการสื่อสารแบบอนุกรมที่ได้รับความนิยมและง่ายที่สุด ในคำแนะนำนี้ คุณจะได้เรียนรู้วิธีออกแบบโมดูล UART ใน VHDL