Design av en programmerbar avbryterkontroller i VHDL: 4 trinn
Design av en programmerbar avbryterkontroller i VHDL: 4 trinn
Anonim
Design av en programmerbar avbryterkontroller i VHDL
Design av en programmerbar avbryterkontroller i VHDL

Jeg er overveldet over hva slags svar jeg får i denne bloggen. Takk gutter for at du besøkte bloggen min og motiverte meg til å dele min kunnskap med deg. Denne gangen skal jeg presentere designet til en annen interessant modul vi ser i alle SOC -er - Interrupt Controller.

Vi skal designe en enkel, men kraftig programmerbar avbryterkontroller. Det er en helt konfigurerbar og parameterisert design som er bærbar på tvers av plattformer. Jeg designet dette etter å ha lest mye om noen populære interrupt controller-arkitekturer der ute som NVIC, 8259a, RISC-V PLIC, Microblaze's INTC etc. ved hjelp av en Interrupt Controller.

Trinn 1: Spesifikasjoner

Følgende er spesifikasjonene til IP:

  • AHB3-Lite-grensesnitt.
  • Statisk konfigurerbare parametere:

    • Antall eksterne avbruddskilder; støtter opptil 63 avbrudd.
    • Antall prioriterte nivåer; støtter opptil 63 nivåer.
    • Antall hekkingsnivåer; støtter opptil 8 hekkingsnivåer. 
    • Bussbredde; 32 eller 64.
  • Globalt og lokalt maskerbare avbrudd.
  • Dynamisk konfigurerbart prioritetsnivå for hvert avbrudd.
  • To driftsmåter - Fullt nestet modus og lik prioritetsmodus.
  • Støtter aktive avanserte avbrudd på høyt nivå.

RISC-V PLIC-spesifikasjoner inspirert avbruddshåndryksmekanisme brukes i designet.

Interrupt pre-emption er inspirert av 8259a

Andre leser: Microblaze INTC, NVIC

Trinn 2: Oversikt over PIC

Oversikt over PIC
Oversikt over PIC

Programmable Interrupt Controller (PIC) mottar flere avbrudd fra eksterne periferiutstyr og slår dem sammen til en enkelt interrupt -utgang til en målprosessorkjerne.

PIC kontrolleres gjennom kontroll- og statusregistre. Alle PIC-registre blir minnekartet og tilgjengelig via AHB3-Lite bussgrensesnitt.

Registerbanken består av konfigurasjonsregister, aktiveringsregistre, ventende registre, driftsregistre, prioritetsregistre og ID-register, som er typiske for Avbrytkontrollere.

Konfigurasjonsregister brukes til å angi driftsmåten for PIC. Det kan fungere i enten fullt nestet modus eller lik prioritetsmodus.

Hvert avbrudd kan tildeles prioriteter og maskeres individuelt. Global maskering av alle avbrudd støttes også.

Registerbanken samhandler med Priority Resolver og BTC (Binary-Tree-Comparator) for å løse prioriteringer for ventende avbrudd og hevde avbrudd for prosessoren tilsvarende. ID -registeret inneholder ID -en til den høyest prioriterte ventende avbruddet.

Trinn 3: RTL Design og implementering

RTL Design og implementering
RTL Design og implementering

PICs design legger vekt på å redusere forsinkelsen til å løse prioriteringer, som er den mest kritiske delen av designet. Siden designet løser prioriteringer i en enkelt klokkesyklus, forringes ytelsen med økningen i antall kilder med en Log2 -kompleksitet.

Designet ble vellykket implementert og timingen bekreftet opp til følgende frekvenser på Artix-7 FPGAer.

  • Opptil 15 kilder: 100 MHz
  • Opptil 63 kilder: 50 MHz

Interrupt Latency lagt til av PIC alene er 3 klokkesykluser (Ekskludert kontekstbrytertiden til prosessoren og den første ISR -instruksjonens hentetid).

Trinn 4: Viktige notater og vedlagte filer

Viktige notater:

  • Hvis AHB3-Lite-grensesnittet er uønsket, kan du endre toppmodulen og bruke skjelettdesignet til PIC. Imidlertid er testbenken som er gitt for IP med AHB3-Lite-grensesnitt.
  • PIC IP v1.0 er en helt bærbar, ren RTL -design.
  • Funksjonelt verifisert for å fungere på begge moduser.

Vedlagte filer:

  • Design koder og testbenk i VHDL.
  • Full IP -dokumentasjon.

Det er en åpen kildekode-design … Bruk gjerne …

For spørsmål, når som helst:

Mitu Raj

Anbefalt: