Table des matières:

Conception d'un contrôleur d'interruption programmable en VHDL : 4 étapes
Conception d'un contrôleur d'interruption programmable en VHDL : 4 étapes

Vidéo: Conception d'un contrôleur d'interruption programmable en VHDL : 4 étapes

Vidéo: Conception d'un contrôleur d'interruption programmable en VHDL : 4 étapes
Vidéo: Micro-contrôleurs STM32 (3/3) - Priorités des interruptions, timers 2024, Novembre
Anonim
Conception d'un contrôleur d'interruption programmable en VHDL
Conception d'un contrôleur d'interruption programmable en VHDL

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

Présentation du PIC
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

Conception et mise en œuvre de RTL
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é: