Table des matières:
- Étape 1: Spécifications
- Étape 2: Présentation du PIC
- Étape 3: Conception et mise en œuvre de RTL
- Étape 4: Notes importantes et fichiers joints
Vidéo: Conception d'un contrôleur d'interruption programmable en VHDL : 4 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Je suis submergé par le genre de réponses que je reçois dans ce blog. Merci les gars de visiter mon blog et de me motiver à partager mes connaissances avec vous. Cette fois, je vais présenter la conception d'un autre module intéressant que nous voyons dans tous les SOC -- Interrupt Controller.
Nous allons concevoir un contrôleur d'interruption programmable simple mais puissant. Il s'agit d'une conception entièrement configurable et paramétrée qui est portable sur toutes les plates-formes. J'ai conçu ceci après avoir lu beaucoup sur certaines architectures de contrôleur d'interruption populaires comme NVIC, 8259a, RISC-V PLIC, INTC de Microblaze, etc. J'espère que vous trouverez ce blog utile et vous aidera à avoir une idée de la façon dont les interruptions sont gérées par un processeur à l'aide d'un contrôleur d'interruption.
Étape 1: Spécifications
Voici les spécifications de l'IP:
- Interface AHB3-Lite.
-
Paramètres configurables statiquement:
- Nombre de sources d'interruption externes; prend en charge jusqu'à 63 interruptions.
- Nombre de niveaux de priorité; prend en charge jusqu'à 63 niveaux.
- Nombre de niveaux de nidification; prend en charge jusqu'à 8 niveaux d'imbrication.
- Largeur de l'autobus; 32 ou 64.
- Interruptions masquables globalement et localement.
- Niveau de priorité configurable dynamiquement pour chaque interruption.
- Deux modes de fonctionnement: mode entièrement imbriqué et mode de priorité égale.
- Prend en charge les interruptions sensibles de haut niveau actif.
Le mécanisme de prise de contact d'interruption inspiré des spécifications RISC-V PLIC est utilisé dans la conception.
La préemption d'interruption est inspirée de 8259a
Autres lectures: Microblaze INTC, NVIC
Étape 2: Présentation du PIC
Le contrôleur d'interruption programmable (PIC) reçoit plusieurs interruptions de périphériques externes et les fusionne en une seule sortie d'interruption vers un cœur de processeur cible.
Le PIC est contrôlé par des registres de contrôle et d'état. Tous les registres PIC sont mappés en mémoire et accessibles via l'interface de bus AHB3-Lite.
La banque de registres comprend un registre de configuration, des registres d'activation, des registres en attente, des registres en service, des registres de priorité et un registre d'identification, qui sont typiques des contrôleurs d'interruption.
Le registre de configuration est utilisé pour définir le mode de fonctionnement du PIC. Il peut fonctionner en mode entièrement imbriqué ou en mode de priorité égale.
Chaque interruption peut se voir attribuer des priorités et être masquée individuellement. Le masquage global de toutes les interruptions est également pris en charge.
La banque de registres interagit avec Priority Resolver et BTC (Binary-Tree-Comparator) pour résoudre les priorités des interruptions en attente et affirmer l'interruption au processeur en conséquence. Le registre ID contient l'ID de l'interruption en attente de priorité la plus élevée.
Étape 3: Conception et mise en œuvre de RTL
La conception de PIC met l'accent sur la réduction de la latence de résolution des priorités, qui est la partie la plus critique du temps de la conception. Étant donné que la conception résout les priorités en un seul cycle d'horloge, les performances se dégradent avec l'augmentation du nombre de sources avec une complexité Log2.
La conception a été implémentée avec succès et la synchronisation vérifiée jusqu'aux fréquences suivantes sur les FPGA Artix-7.
- Jusqu'à 15 sources: 100 MHz
- Jusqu'à 63 sources: 50 MHz
La latence d'interruption ajoutée par le PIC seul est de 3 cycles d'horloge (à l'exclusion du temps de changement de contexte du processeur et du temps d'extraction de la première instruction ISR).
Étape 4: Notes importantes et fichiers joints
Notes IMPORTANTES:
- Si l'interface AHB3-Lite n'est pas souhaitée, vous pouvez changer le module supérieur et utiliser la conception squelette de PIC. Cependant le banc de test fourni est pour IP avec interface AHB3-Lite.
- PIC IP v1.0 est une conception RTL nue et entièrement portable.
- Fonctionnellement vérifié pour fonctionner sur les deux modes.
Fichiers joints:
- Codes de conception et banc d'essai en VHDL.
- Documentation IP complète.
C'est une conception open-source… N'hésitez pas à utiliser…
Pour toute question, à tout moment:
Mitu Raj
Conseillé:
Conception d'un contrôleur de cache associatif simple à quatre voies en VHDL : 4 étapes
Conception d'un contrôleur de cache associatif simple à quatre voies en VHDL : dans mon précédent instructable, nous avons vu comment concevoir un contrôleur de cache mappé direct simple. Cette fois, nous avançons d'un pas. Nous allons concevoir un simple contrôleur de cache associatif à quatre voies. Avantage ? Moins de ratés, mais au prix de perfo
Conception d'un contrôleur de cache simple en VHDL : 4 étapes
Conception d'un contrôleur de cache simple en VHDL : j'écris cette instructable, car j'ai trouvé un peu difficile d'obtenir du code VHDL de référence pour apprendre et commencer à concevoir un contrôleur de cache. J'ai donc conçu moi-même un contrôleur de cache à partir de zéro et l'ai testé avec succès sur FPGA. J'ai p
Conception du Master I2C en VHDL : 5 étapes
Conception du maître I2C en VHDL : dans cette instructable, la conception d'un simple maître I2C en VHDL est discutée. REMARQUE : cliquez sur chaque image pour voir l'image complète
Conception d'un contrôleur VGA simple en VHDL et Verilog : 5 étapes
Conception d'un contrôleur VGA simple en VHDL et Verilog : dans cette instructable, nous allons concevoir un contrôleur VGA simple en RTL. Le contrôleur VGA est le circuit numérique conçu pour piloter les écrans VGA. Il lit à partir de Frame Buffer (VGA Memory) qui représente la trame à afficher, et génère nece
Conception de SPI Master en VHDL : 6 étapes
Conception de SPI Master en VHDL : dans cette instructable, nous allons concevoir un SPI Bus Master à partir de zéro en VHDL