Académique Documents
Professionnel Documents
Culture Documents
1
Université de Tebessa Département de Génie Electrique
Module : DSP et FPGA Niveau : Master 1 Télécommunication & Réseaux
processeur (traite) l'interruption dès la fin de l'instruction qu'il était en train d'exécuter. Le
traitement de l'interruption consiste soit :
Le principe d’interruption matérielle est :
Figure 2. Principe d'interruption matérielle
2
Université de Tebessa Département de Génie Electrique
Module : DSP et FPGA Niveau : Master 1 Télécommunication & Réseaux
On peut imaginer que, lorsqu'un périphérique demande une interruption au microprocesseur, il
lui envoie simultanément l'adresse à laquelle son programme spécifique est logé. La table s'appelle
la table des vecteurs d'interruptions. Dans les PC, elle est systématiquement et obligatoirement
logée à partir de l'adresse 00000 de la mémoire centrale. En pratique, 1 Ko (soit 1024 octets) sont
réservés pour cette table, laquelle s'étend ainsi de 00000 à 003FF en hexadécimal. Sachant que 4
octets sont réservés pour une adresse d'interruption, cette table peut en contenir 256 adresses.
3
Université de Tebessa Département de Génie Electrique
Module : DSP et FPGA Niveau : Master 1 Télécommunication & Réseaux
Il existe trois types d'interruptions sur les CPU des DSP TMS320Cx :
- RESET (Réinitialiser)
- Masquable ((INT4−INT15))
- Non masquable (NMI)
IV. Les priorités et sources d'interruption du processeur DSP.
Le DSP TMS320C67x possède un contrôleur d'interruption à priorité vectorielle qui gère 16
interruptions CPU différentes. L'interruption la plus prioritaire est qui ne peut pas
être masquée. L'interruption prioritaire suivante est l'interruption non masquable (NMI) qui
est utilisée pour alerter le DSP d’un grave problème matériel.
Il y a deux interruptions réservées et 12 interruptions CPU masquables supplémentaires. Les
périphériques, tels que les timers, les ports série McBSP et McASP, le contrôleur EDMA et les
broches d'interruption externes provenant du module GPIO présentent un ensemble de
nombreuses sources d'interruption.
Les 16 interruptions CPU et leurs sources par défaut sont présentées dans le tableau suivant.
INT 00 a la priorité la plus élevée et INT 15 la plus faible.
Une interruption peut être émise en interne ou en externe. Une interruption arrête le
processus CPU en cours afin qu'il puisse effectuer une tâche requise lancée par l'interruption. Le flux
du programme est redirigé vers un ISR. En cas d'interruption, les conditions du processus en cours
doivent être enregistrées afin de pouvoir être restaurées après l'exécution de la tâche d'interruption.
En cas d'interruption, les registres sont enregistrés et le traitement se poursuit vers un ISR. Ensuite,
les registres sont restaurés. Il y a 16 sources d'interruption. Ils comprennent :
4
Université de Tebessa Département de Génie Electrique
Module : DSP et FPGA Niveau : Master 1 Télécommunication & Réseaux
Les signaux IACK et INUMn alertent le matériel externe au C6000 qu'une interruption s'est produite et est en
cours de traitement. Le signal IACK indique que la CPU a commencé à traiter une interruption. Le signal
INUMn (INUM3-INUM0) indique le numéro de l'interruption (position de bit dans l'IFR) en cours de
traitement. Par exemple :
INUM3 = 0 (MSB)
INUM2 = 1
INUM1 = 1
INUM0 = 1 (LSB)
Ensemble, ces signaux fournissent la valeur à 4 bits 0111, indiquant que INT7 est en cours de traitement.
1. CSR (control status register : registre d'état de contrôle): contient le bit d'activation
d'interruption globale (GIE) et d'autres bits de contrôle / état
2. IER (interrupt enable register : registre d'activation d'interruption): active / désactive les
interruptions individuelles
3. IFR (interrupt flag register : registre drapeau des interruptions): affiche l'état des interruptions
4. ISR (interruption set register): définit les interruptions en attente
5. ICR (interruption clear register): efface les interruptions en attente
6. ISTP (pointeur de table de service d'interruption): localise un ISR
7. IRP (interrupt return pointer : pointeur de retour d'interruption)
8. NRP (pointeur de retour d'interruption non masquable)
Les interruptions sont à niveau de priorité, la réinitialisation (RESET) a la priorité la plus
élevée. L'interruption RESET et l'interruption non masquable (NMI) sont des broches externes
qui ont respectivement la 1ère et 2ème priorité.
Le registre d'activation d'interruption (IER) est utilisé pour définir une interruption spécifique
et peut vérifier si elle s'est produite à partir du registre de drapeau d'interruption (IFR). NMI
est non masquable, avec Reset. NMI peut être masqué (désactivé) en effaçant le bit
d'activation d'interruption non masquable (NMIE) dans CSR. Il est mis à zéro uniquement lors
d'une réinitialisation ou lors d'une interruption non masquable.
Si NMIE est défini sur zéro, toutes les interruptions INT4 à INT15 sont désactivées. Le signal
de RESET est un signal actif-bas utilisé pour arrêter le CPU, et le signal NMI alerte le CPU d'un
problème matériel potentiel.
Douze interruptions CPU avec des priorités inférieures sont disponibles, correspondant aux
signaux masquables INT4 à INT15. Les priorités de ces interruptions sont: INT4, INT5,. . . ,
INT15. INT4 ayant la priorité la plus élevée et INT15 la priorité la plus faible. Pour qu'un NMI
se produise, le bit NMIE doit être 1 (actif haut). Lors de la réinitialisation (ou après une NMI
précédemment définie), le bit NMIE est remis à zéro afin qu'une interruption de
réinitialisation puisse se produire.
Pour traiter une interruption masquable, le bit GIE dans le registre d'état de contrôle (CSR) et
le bit NMIE dans l'IER sont définis sur 1. GIE est défini sur 1 avec le bit 0 de CSR défini sur 1, et
NMIE est défini sur 1 avec bit 1 de IER mis à 1. Le bit d'activation d'interruption (IE)
5
Université de Tebessa Département de Génie Electrique
Module : DSP et FPGA Niveau : Master 1 Télécommunication & Réseaux
correspondant à l'interruption masquable souhaitée est également défini sur 1. Lorsque
l'interruption se produit, le bit IFR correspondant est défini sur 1 pour afficher l'état
d'interruption.
Le tableau suivant contient 16 FP, chacun avec huit instructions. Les adresses du côté droit
correspondent à un décalage associé à chaque interruption spécifique. Par exemple, le FP
pour l'interruption INT11 est à une adresse de base plus un décalage de 160 H. Étant donné
que chaque FP contient huit instructions 32 bits (256 bits) ou 32 octets, chaque adresse de
décalage dans le tableau est incrémentée de 20 H = 32.
Types d'instructions
Ce qui suit illustre une partie de la syntaxe du code assembleur.
Add/Subtract/Multiply
a) L'instruction ADD .L1 A3, A7, A7;
Ajouter A3 + A7 → A7 (accumuler dans A7) ajoute les valeurs dans les registres A3 et A7 et place le
résultat dans le registre A7. L'unité .L1 est facultative. Si la destination ou le résultat est en B7, l'unité
serait .L2.
b) L'instruction SUB .S1 A1,1, A1; soustraire 1 de A1
Soustrait 1 de A1 pour le décrémenter en utilisant l'unité .S.
c) Les instructions parallèles MPY .M2 A7, B7, B6
|| MPYH .M1 A7, B7, A6
; multiplier 16 LSB de A7, B7 → B6
; multiplier 16 MSB de A7, B7 → A6
Load / Store
a) L'instruction
LDH .D2 * B2 ++, B7; charge (B2) → B7, incrément B2
|| LDH .D1 * A2 ++, A7; charge (A2) → A7, incrément A2
Charge dans B7 le demi-mot (16 bits) dont l'adresse en mémoire est spécifiée / pointée par
B2. Ensuite, le registre B2 est incrémenté (post-incrémenté) pour pointer vers l'adresse de mémoire
immédiatement supérieure. En parallèle se trouve une autre instruction du mode d'adressage
indirect pour charger dans A7 le contenu en mémoire dont l'adresse est spécifiée par A2. Ensuite, A2
est incrémenté pour pointer vers l'adresse de mémoire immédiatement supérieure.
L'instruction LDW charge un mot de 32 bits. Deux chemins utilisant .D1 et .D2 permettent le
7
Université de Tebessa Département de Génie Electrique
Module : DSP et FPGA Niveau : Master 1 Télécommunication & Réseaux
chargement des données de la mémoire vers les registres A et B en utilisant l'instruction LDW.
L'instruction LDDW à virgule flottante de chargement de deux mots du C6713 peut charger
simultanément deux registres 32 bits dans le côté A et deux registres 32 bits dans le côté B.
b) L'instruction
STW .D2 A1, * + A4 [20]; store A1 → (A4) offset by 20 stocke le mot de 32 bits A1 en mémoire
dont l'adresse est spécifiée par A4 offset de 20 mots (32 bits) ou 80 octets. Le registre d'adresse A4
est pré-incrémenté avec décalage, mais il n'est pas modifié (deux signes plus sont utilisés si A4 doit
être modifié).
; décrémente A1
; Branche à Loop si A1! = 0
; Cinq instructions de non-fonctionnement
; stocker A3 dans (A7)
La première instruction déplace les 16 bit inférieurs (LSB) de l'adresse x dans le registre A4. La
deuxième instruction déplace les 16 bit supérieurs (MSB) de l'adresse x vers A4, qui contient
désormais l'adresse complète de 32 bits de x. Il faut utiliser les instructions MVKL / MVKH pour
obtenir une constante 32 bits dans un registre. Le registre A1 est utilisé comme compteur de boucle.
Après avoir été décrémenté avec l'instruction SUB, il est testé pour une branche conditionnelle.
L'exécution se branche sur l'étiquette ou l'adresse Loop si A1 n'est pas nul. Si A1 = 0, l'exécution
continue et les données du registre A3 sont stockées dans la mémoire dont l'adresse est spécifiée
(pointée vers) par A7.
Remarque : Les unités exécutent des instructions logiques, de décalage (Shifting), des multiplications et des
opérations sur les adresses de données. Tous les transferts de données entre la file de registre et la mémoire
se font exclusivement par les unités. Les deux files de registre (A et B), les huit unités (.L1, .L2, .M1, .M2, .S1,
.S2, .D1 et .D2), les deux voies de chargement depuis la mémoire LD1 et LD2 (LD=Load), les deux voies de
stockage vers la mémoire ST1 et ST2 (ST=Store), deux croisements (registre file cross path) entre les files de
registre 1X et 2X et deux chemins d’adresse de données (data address paths) DA1 et DA2.