Obsah:

Návrh programovatelného řadiče přerušení ve VHDL: 4 kroky
Návrh programovatelného řadiče přerušení ve VHDL: 4 kroky

Video: Návrh programovatelného řadiče přerušení ve VHDL: 4 kroky

Video: Návrh programovatelného řadiče přerušení ve VHDL: 4 kroky
Video: Cvičení číslicové techniky a hardware 2024, Smět
Anonim
Návrh programovatelného řadiče přerušení ve VHDL
Návrh programovatelného řadiče přerušení ve VHDL

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

Přehled PIC
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ávrh a implementace RTL
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

Doporučuje: