Spisu treści:

Projekt programowalnego kontrolera przerwań w VHDL: 4 kroki
Projekt programowalnego kontrolera przerwań w VHDL: 4 kroki

Wideo: Projekt programowalnego kontrolera przerwań w VHDL: 4 kroki

Wideo: Projekt programowalnego kontrolera przerwań w VHDL: 4 kroki
Wideo: Łączymy liczniki - VHDL na Rysino #03 [PL] 2024, Listopad
Anonim
Projekt programowalnego kontrolera przerwań w VHDL
Projekt programowalnego kontrolera przerwań w VHDL

Jestem przytłoczony odpowiedziami, jakie otrzymuję na tym blogu. Dziękuję chłopakom za odwiedzenie mojego bloga i zmotywowanie mnie do dzielenia się z wami moją wiedzą. Tym razem przedstawię projekt kolejnego interesującego modułu, który widzimy we wszystkich SOC-ach - Interrupt Controller.

Będziemy projektować prosty, ale potężny programowalny kontroler przerwań. Jest to w pełni konfigurowalny i sparametryzowany projekt, który można przenosić na różne platformy. Zaprojektowałem to po przeczytaniu wielu popularnych architektur kontrolerów przerwań, takich jak NVIC, 8259a, RISC-V PLIC, Microblaze's INTC itp. Mam nadzieję, że ten blog okaże się pomocny i pomoże ci poznać sposób obsługi przerwań przez procesor za pomocą kontrolera przerwań.

Krok 1: Specyfikacje

Poniżej znajdują się specyfikacje IP:

  • Interfejs AHB3-Lite.
  • Parametry konfigurowalne statycznie:

    • Liczba zewnętrznych źródeł przerwań; obsługuje do 63 przerwań.
    • liczba poziomów priorytetowych; obsługuje do 63 poziomów.
    • Liczba poziomów zagnieżdżenia; obsługuje do 8 poziomów zagnieżdżania. 
    • Szerokość busa; 32 lub 64.
  • Przerwania maskowalne globalnie i lokalnie.
  • Dynamicznie konfigurowalny poziom priorytetu dla każdego przerwania.
  • Dwa tryby pracy – tryb w pełni zagnieżdżony i tryb z równym priorytetem.
  • Obsługuje aktywne przerwania wrażliwe na wysoki poziom.

W projekcie zastosowano mechanizm uzgadniania przerwań inspirowany specyfikacją RISC-V PLIC.

Wywłaszczanie przerwań inspirowane jest 8259a

Inne czyta: Microblaze INTC, NVIC

Krok 2: Przegląd PIC

Przegląd PIC
Przegląd PIC

Programowalny kontroler przerwań (PIC) odbiera wiele przerwań z zewnętrznych urządzeń peryferyjnych i łączy je w jedno wyjście przerwania do rdzenia procesora docelowego.

PIC jest kontrolowany przez rejestry kontrolne i statusowe. Wszystkie rejestry PIC są mapowane w pamięci i dostępne przez interfejs magistrali AHB3-Lite.

Bank rejestrów składa się z rejestrów konfiguracyjnych, rejestrów załączających, rejestrów oczekujących, rejestrów eksploatacji, rejestrów priorytetowych oraz rejestrów ID, które są typowe dla kontrolerów przerwań.

Rejestr konfiguracji służy do ustawienia trybu pracy PIC. Może pracować w trybie w pełni zagnieżdżonym lub w trybie równego priorytetu.

Każdemu przerwaniu można przypisać priorytety i indywidualnie maskować. Obsługiwane jest również globalne maskowanie wszystkich przerwań.

Bank rejestrów wchodzi w interakcję z Priority Resolver i BTC (Binary-Tree-Comparator), aby rozwiązać priorytety oczekujących przerwań i odpowiednio dostarczyć przerwanie do procesora. Rejestr ID zawiera ID oczekującego przerwania o najwyższym priorytecie.

Krok 3: Projekt i wdrożenie RTL

Projekt i wdrożenie RTL
Projekt i wdrożenie RTL

Projekt PIC kładzie nacisk na zmniejszenie opóźnień w rozwiązywaniu priorytetów, co jest najbardziej krytyczną czasowo częścią projektu. Ponieważ projekt rozwiązuje priorytety w jednym cyklu zegara, wydajność spada wraz ze wzrostem liczby źródeł o złożoności Log2.

Projekt został pomyślnie wdrożony i zweryfikowany taktowanie do następujących częstotliwości w FPGA Artix-7.

  • Do 15 źródeł: 100 MHz
  • Do 63 źródeł: 50 MHz

Opóźnienie przerwania dodane przez sam PIC to 3 cykle zegara (z wyłączeniem czasu przełączania kontekstu procesora i czasu pobrania pierwszej instrukcji ISR).

Krok 4: Ważne uwagi i załączone pliki

Ważne notatki:

  • Jeśli interfejs AHB3-Lite jest niepożądany, możesz zmienić górny moduł i użyć szkieletowej konstrukcji PIC. Jednak dostarczone stanowisko testowe jest przeznaczone dla IP z interfejsem AHB3-Lite.
  • PIC IP v1.0 to całkowicie przenośny, czysty projekt RTL.
  • Sprawdzony funkcjonalnie do pracy w obu trybach.

Załączone pliki:

  • Kody projektowe i testbench w VHDL.
  • Pełna dokumentacja IP.

Jest to projekt open-source… Zapraszam do korzystania…

W przypadku jakichkolwiek pytań, w dowolnym momencie:

Mitu Raj

Zalecana: