Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Jsem ohromen tím, jaké reakce na tento blog dostávám. Díky, lidi, že jste navštívili můj blog a motivovali mě, abych se s vámi podělil o své znalosti. Tentokrát představím návrh dalšího zajímavého modulu, který vidíme ve všech SOC - Interrupt Controller.
Navrhneme jednoduchý, ale výkonný programovatelný řadič přerušení. Jedná se o zcela konfigurovatelný a parametrizovaný design, který je přenosný napříč platformami. Navrhl jsem to poté, co jsem hodně četl na některých populárních architekturách řadičů přerušení, jako jsou NVIC, 8259a, RISC-V PLIC, Microblaze's INTC atd. Doufám, že vám tento blog pomůže, a pomůže vám získat představu o tom, jak přerušení řeší procesor pomocí ovladače přerušení.
Krok 1: Specifikace
Níže jsou uvedeny specifikace IP:
- Rozhraní AHB3-Lite.
-
Staticky konfigurovatelné parametry:
- Počet externích zdrojů přerušení; podporuje až 63 přerušení.
- Počet úrovní priority; podporuje až 63 úrovní.
- Počet úrovní vnoření; podporuje až 8 úrovní vnoření.
- Šířka autobusu; 32 nebo 64.
- Globálně a lokálně maskovatelná přerušení.
- Dynamicky konfigurovatelná úroveň priority pro každé přerušení.
- Dva režimy provozu - plně vnořený režim a režim stejné priority.
- Podporuje přerušení citlivá na aktivní úroveň.
Při návrhu je použit mechanismus rušení rušení inspirovaný specifikacemi RISC-V PLIC.
Prevence předčasného přerušení je inspirována číslem 8259a
Další čtení: Microblaze INTC, NVIC
Krok 2: Přehled PIC
Programovatelný řadič přerušení (PIC) přijímá více přerušení od externích periferií a sloučí je do jednoho výstupu přerušení do jádra cílového procesoru.
PIC je řízen prostřednictvím kontrolních a stavových registrů. Všechny registry PIC jsou mapovány do paměti a jsou přístupné prostřednictvím sběrnicového rozhraní AHB3-Lite.
Banka registrů se skládá z konfiguračního registru, aktivačních registrů, čekajících registrů, registrů v provozu, prioritních registrů a registru ID, které jsou typické pro řadiče přerušení.
Konfigurační registr slouží k nastavení režimu provozu PIC. Může pracovat buď v plně vnořeném režimu, nebo v režimu stejné priority.
Každému přerušení lze přiřadit priority a jednotlivě maskovat. Podporováno je také globální maskování všech přerušení.
Registrační banka spolupracuje s prioritním řešením a BTC (Binary-Tree-Comparator), aby vyřešila priority čekajících přerušení a odpovídajícím způsobem potvrdila přerušení procesoru. Registr ID obsahuje ID čekajícího přerušení s nejvyšší prioritou.
Krok 3: Návrh a implementace RTL
Návrhový důraz společnosti PIC na snížení latence řešení priorit, což je nejvíce kritická část návrhu. Vzhledem k tomu, že design řeší priority v jediném hodinovém cyklu, výkon klesá s nárůstem počtu zdrojů se složitostí Log2.
Návrh byl úspěšně implementován a načasování ověřeno až na následující frekvence na FPGA Artix-7.
- Až 15 zdrojů: 100 MHz
- Až 63 zdrojů: 50 MHz
Latence přerušení přidaná samotným PIC jsou 3 hodinové cykly (s výjimkou doby přepnutí kontextu procesoru a doby načítání první instrukce ISR).
Krok 4: Důležité poznámky a připojené soubory
Důležité poznámky:
- Pokud je rozhraní AHB3-Lite nežádoucí, můžete změnit horní modul a použít kostru PIC. Poskytovaná zkušební lavice je však pro IP s rozhraním AHB3-Lite.
- PIC IP v1.0 je zcela přenosný, holý RTL design.
- Funkčně ověřeno, aby fungovalo v obou režimech.
Přiložené soubory:
- Navrhněte kódy a testovací stůl ve VHDL.
- Úplná dokumentace IP.
Jedná se o open-source design … Neváhejte použít …
V případě jakýchkoli dotazů kdykoli:
Mitu Raj