Sommario:

Progettazione di un controller di interrupt programmabile in VHDL: 4 passaggi
Progettazione di un controller di interrupt programmabile in VHDL: 4 passaggi

Video: Progettazione di un controller di interrupt programmabile in VHDL: 4 passaggi

Video: Progettazione di un controller di interrupt programmabile in VHDL: 4 passaggi
Video: Partial Reconfiguration in Altera Cyclone V - Part 1 - Section 1 2024, Novembre
Anonim
Progettazione di un controller di interrupt programmabile in VHDL
Progettazione di un controller di interrupt programmabile in VHDL

Sono sopraffatto dal tipo di risposte che ricevo in questo blog. Grazie ragazzi per aver visitato il mio blog e avermi motivato a condividere le mie conoscenze con voi. Questa volta presenterò il design di un altro modulo interessante che vediamo in tutti i SOC: Interrupt Controller.

Progetteremo un controller di interrupt programmabile semplice ma potente. È un design completamente configurabile e parametrizzato che è portabile su più piattaforme. L'ho progettato dopo aver letto molto su alcune architetture di controller di interrupt popolari là fuori come NVIC, 8259a, RISC-V PLIC, INTC di Microblaze ecc. Spero che voi ragazzi troviate questo blog utile e vi aiuti a capire come gli interrupt sono gestiti da un processore con l'aiuto di un Interrupt Controller.

Passaggio 1: specifiche

Di seguito le specifiche dell'IP:

  • Interfaccia AHB3-Lite.
  • Parametri staticamente configurabili:

    • N. di sorgenti di interrupt esterne; supporta fino a 63 interrupt.
    • N. di livelli di priorità; supporta fino a 63 livelli.
    • N. di livelli di nidificazione; supporta fino a 8 livelli di nidificazione. 
    • Larghezza del bus; 32 o 64.
  • Interrupt mascherabili a livello globale e locale.
  • Livello di priorità configurabile dinamicamente per ogni interrupt.
  • Due modalità di funzionamento: modalità completamente annidata e modalità a priorità uguale.
  • Supporta interrupt sensibili attivi di alto livello.

Nella progettazione viene utilizzato un meccanismo di handshake di interruzione ispirato alle specifiche RISC-V PLIC.

La prelazione di interruzione si ispira a 8259a

Altre letture: Microblaze INTC, NVIC

Passaggio 2: panoramica di PIC

Panoramica di PIC
Panoramica di PIC

Programmable Interrupt Controller (PIC) riceve più interrupt da periferiche esterne e li unisce in un unico output di interrupt a un core del processore di destinazione.

Il PIC è controllato tramite registri di controllo e di stato. Tutti i registri PIC sono mappati in memoria e vi si accede tramite l'interfaccia bus AHB3-Lite.

Il banco di registri è costituito da registro di configurazione, registri di abilitazione, registri in sospeso, registri in servizio, registri di priorità e registro ID, che sono tipici nei controller di interrupt.

Il registro di configurazione viene utilizzato per impostare la modalità di funzionamento del PIC. Può funzionare sia in modalità completamente annidata che in modalità priorità uguale.

Ad ogni interrupt possono essere assegnate priorità e mascherate individualmente. È supportato anche il mascheramento globale di tutti gli interrupt.

La banca del registro interagisce con Priority Resolver e BTC (Binary-Tree-Comparator) per risolvere le priorità degli interrupt in sospeso e asserire l'interruzione al processore di conseguenza. Il registro ID contiene l'ID dell'interruzione in sospeso con la priorità più alta.

Passaggio 3: progettazione e implementazione RTL

Progettazione e implementazione RTL
Progettazione e implementazione RTL

Lo sforzo di progettazione di PIC sulla riduzione della latenza della risoluzione delle priorità, che è la parte più critica in termini di tempo del progetto. Poiché il design risolve le priorità in un singolo ciclo di clock, le prestazioni peggiorano con l'aumento del numero di sorgenti con complessità Log2.

Il progetto è stato implementato con successo e la tempistica è stata verificata fino alle seguenti frequenze sugli FPGA Artix-7.

  • Fino a 15 sorgenti: 100 MHz
  • Fino a 63 sorgenti: 50 MHz

La latenza di interrupt aggiunta dal solo PIC è di 3 cicli di clock (escludendo il tempo di commutazione del contesto del processore e il tempo di recupero della prima istruzione ISR).

Passaggio 4: note importanti e file allegati

Note importanti:

  • Se l'interfaccia AHB3-Lite non è desiderata, è possibile modificare il modulo superiore e utilizzare il design dello scheletro di PIC. Tuttavia il banco di prova fornito è per IP con interfaccia AHB3-Lite.
  • PIC IP v1.0 è un design RTL nudo e completamente portatile.
  • Funzionalmente verificato per funzionare su entrambe le modalità.

Files allegati:

  • Codici di progettazione e banco di prova in VHDL.
  • Documentazione IP completa.

È un design open source … Sentiti libero di usare …

Per qualsiasi domanda, in qualsiasi momento:

Mitu Raj

Consigliato: