Innehållsförteckning:
- Steg 1: Specifikationer
- Steg 2: Översikt över PIC
- Steg 3: RTL -design och implementering
- Steg 4: Viktiga anteckningar och bifogade filer
Video: Design av en programmerbar avbrottsstyrenhet i VHDL: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
Jag är överväldigad av den typ av svar jag får i den här bloggen. Tack killar för att du besökte min blogg och motiverade mig att dela min kunskap med dig. Den här gången kommer jag att presentera designen av en annan intressant modul som vi ser i alla SOC: er - Interrupt Controller.
Vi kommer att designa en enkel men kraftfull programmerbar avbrottsstyrenhet. Det är en helt konfigurerbar och parametrerad design som är bärbar över plattformar. Jag konstruerade detta efter att ha läst mycket om några populära avbrottskontrollarkitekturer där ute som NVIC, 8259a, RISC-V PLIC, Microblaze's INTC etc. Hoppas att ni tycker att den här bloggen är till hjälp och hjälper er att få en smak på hur avbrott hanteras av en processor med hjälp av en Interrupt Controller.
Steg 1: Specifikationer
Följande är specifikationerna för IP:
- AHB3-Lite-gränssnitt.
-
Statiskt konfigurerbara parametrar:
- Antal externa avbrottskällor; stöder upp till 63 avbrott.
- Antal prioritetsnivåer; stöder upp till 63 nivåer.
- Antal häckningsnivåer; stöder upp till 8 häckningsnivåer.
- Bussbredd; 32 eller 64.
- Globalt och lokalt maskerbara avbrott.
- Dynamiskt konfigurerbar prioritetsnivå för varje avbrott.
- Två driftsätt - Fullt kapslat läge och lika prioritetsläge.
- Stöder aktiva och höga känsliga avbrott.
RISC-V PLIC-specifikationer inspirerade interrupt handskakningsmekanism används i designen.
Interrupt pre-emption är inspirerad av 8259a
Andra läser: Microblaze INTC, NVIC
Steg 2: Översikt över PIC
Programmerbar Interrupt Controller (PIC) tar emot flera avbrott från externa kringutrustning och slår samman dem till en enda avbrottsutgång till en målprocessorkärna.
PIC styrs genom kontroll- och statusregister. Alla PIC-register är minnesmappade och åtkomliga via AHB3-Lite-bussgränssnittet.
Registerbanken består av konfigurationsregister, aktiveringsregister, väntande register, in-service-register, prioritetsregister och ID-register, som är typiska för Interrupt Controllers.
Konfigurationsregistret används för att ställa in driftläget för PIC. Det kan fungera i antingen helt kapslat läge eller lika prioritetsläge.
Varje avbrott kan tilldelas prioriteringar och maskeras individuellt. Global maskering av alla avbrott stöds också.
Registerbanken interagerar med Priority Resolver och BTC (Binary-Tree-Comparator) för att lösa prioriteringar för väntande avbrott och hävda avbrott för processorn i enlighet därmed. ID -register innehåller ID för högsta prioritet väntande avbrott.
Steg 3: RTL -design och implementering
PIC: s design stressar på att minska latensen för att lösa prioriteringar, vilket är den mest tidskritiska delen av designen. Eftersom designen löser prioriteringar i en enda klockcykel försämras prestandan med ökningen av antalet källor med en Log2 -komplexitet.
Designen implementerades framgångsrikt och timing verifierades upp till följande frekvenser på Artix-7 FPGA.
- Upp till 15 källor: 100 MHz
- Upp till 63 källor: 50 MHz
Interrupt Latency som läggs till av PIC enbart är 3 klockcykler (Exklusive kontextväxlingstiden för processorn och den första ISR -instruktionens hämtningstid).
Steg 4: Viktiga anteckningar och bifogade filer
Viktiga anteckningar:
- Om AHB3-Lite-gränssnittet är oönskat kan du ändra toppmodulen och använda skelettdesignen för PIC. Testbänken som tillhandahålls är dock för IP med AHB3-Lite-gränssnitt.
- PIC IP v1.0 är en helt bärbar, ren RTL -design.
- Funktionellt verifierad för att fungera på båda lägena.
Bifogade filer:
- Designkoder och testbänk i VHDL.
- Fullständig IP -dokumentation.
Det är en design med öppen källkod … Använd gärna …
För frågor, när som helst:
Mitu Raj
Rekommenderad:
Design av en enkel fyrvägsuppsättning associerad cachekontroller i VHDL: 4 steg
Utformning av en enkel fyrvägsuppsättning associerad cachekontroller i VHDL: I min tidigare instruerbarhet såg vi hur man utformar en enkel direktkartad cachekontroller. Den här gången går vi ett steg framåt. Vi kommer att utforma en enkel fyrvägsuppsättning associerad cache-kontroller. Fördel? Mindre missfrekvens, men på bekostnad av perfo
Design av en enkel cachekontroller i VHDL: 4 steg
Design av en enkel cachekontroller i VHDL: Jag skriver detta instruerbart, eftersom jag tyckte att det var lite svårt att få lite referens -VHDL -kod att lära sig och börja designa en cachekontroller. Så jag designade själv en cachekontroller från början och testade den framgångsrikt på FPGA. Jag har p
Design av I2C Master i VHDL: 5 steg
Design av I2C Master i VHDL: I den här instruktionsboken diskuteras att designa en enkel I2C -master i VHDL. OBS: klicka på varje bild för att se hela bilden
Design av en enkel VGA -kontroller i VHDL och Verilog: 5 steg
Design av en enkel VGA -styrenhet i VHDL och Verilog: I den här instruktören ska vi designa en enkel VGA -styrenhet i RTL. VGA Controller är den digitala kretsen som är utformad för att driva VGA -skärmar. Den läser från Frame Buffer (VGA Memory) som representerar ramen som ska visas, och genererar nece
Design av SPI Master i VHDL: 6 steg
Design av SPI Master i VHDL: I denna instruktiva kommer vi att designa en SPI Bus Master från grunden i VHDL