INSFP SBA MICROPROCESSUER MOTOROLA 6809 ARCHITECTURE DU MICROPROCESSEUR 6809 DE MOTOROLA Définition: Le microprocesseur noté aussi M.P.U. (Microprocessor unit) ou encore C.P.U. (Central I. Processing Unit) est un circuit intègre complexe caractérisé par une très grande intégration, c’est un circuit LSI (Large Scale Integration) large échelle d’intégration de plusieurs milliers de transistors sur un carrée de quelques millimètres de coté appelé « puce », il est doté de facultés fonctionnelles d’interprétation et d’exécutions d’un programme. FIG 01 : Exemples de Microprocesseurs II. Rôle du microprocesseur : Le microprocesseur remplit deux fonctions essentielles : le traitement des données : On parle d'unité de traitement. Cette fonction est dédiée à l'U.A.L (Unité Arithmétique et Logique). Elle concerne la manipulation des données sous formes de transfert, opérations arithmétiques, opérations logiques.... le contrôle du système : Cette fonction se traduit par des opérations de décodage et d'exécution des ordres exprimés sous forme d'instruction. III. Puissance d’un microprocesseur : La notion de puissance est la capacité de traiter un grand nombre d'opérations par seconde sur de grands nombres et en grande quantité. Intrinsèquement la puissance se joue donc sur les trois critères suivants: La longueur des mots : données et instructions (on parle de largeur du bus des données). Le nombre d'octets que le microprocesseur peut adressé (on parle de largeur du bus des adresses). La vitesse d'exécution des instructions liée à la fréquence de fonctionnement de l'horloge de synchronisation exprimée en MHZ. MR : HALAILI MED Page 1 INSFP SBA IV. MICROPROCESSUER MOTOROLA 6809 Présentation du processeur 6809 Le microprocesseur 6809 de chez Motorola est un microprocesseur 8 bits grand successeur du 6800 dont l'organisation interne est orientée 16 bits. Il possède 59 instructions (plus de 1460 instructions avec toutes les combinaisons) et il comprend: Un bus Data (de données) sur 8 bits; Un bus d'adresse sur 16 bits permettant un adressage mémoire de 64 KiloOctets; Deux accumulateurs de 8 bits "A" et "B" transformables en 1 accumulateur de 16 bits "D". Deux registres d'index de 16 bits "X" et "Y" pour la gestion des piles utilisateur et système. Deux registres pointeur de pile de 16 bits "U" et "S"; Un pointeur de page "DP" de 8 bits servant à l'adressage direct de la mémoire. Un registre d'état "CC" sur 8 bits; Le compteur de programme sur 16 bits "PC" pointant toujours sur l'adresse que le microprocesseur doit exécuter. Il existe deux versions de ce processeur, le 6809 et le 6809E. Leur brochage diffère ainsi que leurs signaux mais leur jeu d'instruction est identique. 1. Le 6809 possède une horloge interne. 2. Le 6809E à besoin d'une horloge externe. Le 6809 de Motorola fut au départ produit en versions 1 MHz et 2 MHz, mais des versions plus rapides furent produites par la suite. Le 6809 possède 9 modes d'adressage: L'adressage inhérent L'adressage immédiat L'adressage direct L'adressage étendu L'adressage étendu indirect L'adressage relatif court L'adressage relatif long L'adressage indexé L'adressage indexé indirect MR : HALAILI MED Page 2 INSFP SBA V. MICROPROCESSUER MOTOROLA 6809 Architecture interne du 6809 de Motorola : Voir Figure 02 Le 6809 de Motorola comprend essentiellement : 1. Unité Arithmétique et Logique (UAL) : C’est un circuit complexe qui assure les fonctions : Arithmétique (addition et soustraction) Logiques (AND, OR ….) Comparaison, décalage a droite ou a gauche, incrémentation, décrémentation, mise à 1 ou a 0 d’un bit, test de bit ….. 2. Unité de commande (UC) : Elle va chercher dans la mémoire RAM chaque instruction a exécuté, la décode et généré en conséquence tous les signaux nécessaire pour l’exécution correcte de l’instruction. 3. Les Registre : Ils sont souvent utilisés pour les stockages provisoires des données, certains ont une tâche bien précise. Nous n’étudierons que les registres accessibles à l’utilisateur par la programmation. A B D 7 0 Accumulateur A et B de 8 bits, ou accumulateur D de 16 bits 15 x 0 Registre d’index X 15 Y 0 Registre d’index Y 15 U 0 Pointeur de pile utilisateur U 15 S 0 Pointeur de pile système S 0 Registre d’adressage de page DP 0 Compteur ordinal PC 0 Registre de code condition CCR 7 15 0 0 7 15 DP PC 7 CCR FIG 03 : Les registres du 6809 de Motorola MR : HALAILI MED Page 3 Registre Pointeur INSFP SBA MICROPROCESSUER MOTOROLA 6809 A. L’accumulateur : Deux accumulateurs de 8 bits A et B transformables en 1 accumulateur de 16 bits, D. Ils sont utilisés pour les instructions arithmétiques, logiques et de chargement de données 8 bits (ou 16 bits) en mémoire. Ils sont pour cela entièrement identiques. L'accumulateur D est en fait la concaténation de A et B, le registre A représentant les poids forts (bits 8 à 15) et B les poids faibles (bits 0 à 7). L’accumulateur : Servira pour toutes les opérations arithmétiques et la plupart des opérations logiques, il contiendra une opérande au début de l’opération puis le résultat a la fin de cette dernière. Recevra les données en prévenance de l’extérieure, ces données étant ensuite reprise de l’accumulateur pour être rangées en mémoire Recevra les données en prévenance de la RAM et destinées a être dirigé vers un périphérique D’une manière générale toute opération ou tout transfert d’E/S nécessité un passage par l’accumulateur B. Registres d’index X, Y : Ces deux pointeurs de 16 bits chacun d’utilisation parfaitement identique sont utilisés dans les modes d’adressage indexé, le contenu de ces registres permet de pointer des données, il est modifiable par addition d’une constante optionnelle ou d’un déplacement codé sur 8 ou 16bits. C. Registre de Page DP : Un registre de "page mémoire" DP (Direct Page), sur 8 bits, est utilisé pour adresser des pages en mémoire. Une page est un bloc de 256 mots. Aussi les emplacements mémoire 0 à 255 forment la page 0 de la mémoire. Le 6809 possède un bus d'adresse de 16 bits, cela donne 256 pages. Le registre DP spécifie le numéro de page, c'est à dire les 8 bits de poids fort d'une adresse (A8-A15). Les 8 autres bits sont indiqués par l'instruction à exécuter. Le registre DP permet une exécution plus rapide des programmes. Il est automatiquement remis à 00 par un RESET. D. Registre compteur programme PC : Le contenue de ce registre (16bits) détermine l’adresse de l’instruction que doit exécuter le processeur, il pointe en permanence l’adresse de la prochaine instruction a exécuter. L’exécution d’une instruction incrémente automatiquement le compteur programme PC, toute fois il peut être chargé par une adresse afin d’allé cherché directement une opérande ou faire un saut vert un sous programme E. Registres auxiliaires : Ils permettent de limiter les accès à la mémoire, ce qui accélère l’exécution d’un programme .ils peuvent conserver des informations utilisées fréquemment, des résultats intermédiaires, ils sont accessibles au programmeur. MR : HALAILI MED Page 4 INSFP SBA MICROPROCESSUER MOTOROLA 6809 F. Registres d’instruction RI : C’est le registre de destination dans le quel le µP transfert l’instruction a exécuté a partir de la mémoire, et qui sera ensuite décodé. Le décodage permettra de reconnaître l’opération a exécuté et des signaux de commande seront envoyer on conséquence pour permettre l’exécution de l’instruction. G. Registres pointeurs de pile U, S : Le 6809 possède 2 pointeurs de pile (16bits). Le pointeur de pile S (système) est utilisé pour les opérations de sauvegarde en cas d'interruption ou de saut à un sous-programme (Adresse de retour). La pile est un emplacement ou le microprocesseur sauvegarde le contenu de ses registres internes pendant un certain temps. Elles opèrent en mode dernier entré-premier sorti (LIFO : Last In - First Out). Le pointeur de pile pointe vers la dernière entée effective de la pile. Le pointeur de pile U (User : utilisateur) est utilisé uniquement par le programmeur pour réaliser des passages d’arguments de ou vers des sous-programmes. La figure3 nous montre le travail du pointeur S, dans le cas d’une sauvegarde des Registres internes du µP dans la pile système MR : HALAILI MED Page 5 INSFP SBA MICROPROCESSUER MOTOROLA 6809 H. Registre de codes condition CCR : Ce registre (8bits) définit à tout instant des indicateurs du µP. les bits de ce registre sont : 7 6 5 4 3 2 1 0 CCR E F H I N Z V C FIG 05 : Registre de codes condition CCR Ces indicateurs peuvent se diviser en deux parties indépendantes : d’une part les bits 0, 1, 2,3 et 5 positionnés en fonction du résultat des instructions qui manipulent les données. Et d’autre part les bits 4 ,6 et 7 dont le rôle est lié au fonctionnement en interruptions. H-1/ Rôle des interruptions arithmétiques : H-1-1/ Rôle du bit C (b0) : Carry ou Retenue : Ce bit indicateur de retenue est positionné lors d’une opération arithmétique, les manipulations de données et opérations logiques n’affectent pas C, suivant les opérations effectuées : C peut jouer différents rôles. Exemple 1 : ADCA # $2C 1 (Addition avec retenue du contenu de l’accumulateur A et de la valeur Hexadécimale 2C) « A= $2C » 1110 0010 +0010 1100 0000 1110 C= 1 et H=0 N=0 Z=0 V=0 C indique ici un débordement non signé. Exemple 2 : SUBA # $22 (Soustraction de la valeur $ 22 au contenu de l’accumulateur A.) « A= $C3» Complément à deux de $22 1 1100 0011 +1101 1110 1010 0001 C= 0 et H N Z V non défini =0 =0 =0 Dans le cas d’une soustraction (CMP.NEG.SUB.SBC) l’indicateur Carry est le complément de la retenue de l’opération effectuée. MR : HALAILI MED Page 6 INSFP SBA MICROPROCESSUER MOTOROLA 6809 Exemple 3 : MUL (Multiplication du contenu de l’Acc A par celui de l’Acc. B. le résultat est dans D) « A= $C1»………………………………………………….. 1 1 0 0 « B= $45» ………………………………………………….. 0 1 0 0 1100 11 0000 0011 0000 01 0 0 11 0100 0000 Résultat «A= $34» «B= $05» C=0 et 0001 0101 0001 01 0101 H non défini N non défini Z =0 V non défini Le bit C représente ici le bit 7 du résultat. Il est utile lorsque l’utilisation n e veut prendre en compte que les poids forts (Acc A), on peut de cette façon arrondir le résultat. H-1-2/ Rôle du bit V (b1)- Overflow : Débordement en complément à deux : Ce bit est l’indicateur de débordement. Il est à mis à un si le résultat (en complément à deux) d’une opération arithmétique déborde. Les instructions de chargements, stockages, et opération logique positionnent V à zéro. Les opérations arithmétiques positionnent V dans l’état approprié. Exemple 1 : LDA # $12 (Chargement de l’Acc A avec valeur $ 12) $ 12 A V= 0 Ici V est forcé à 0 MR : HALAILI MED Page 7 et H non défini N=0 Z =0 C non défini INSFP SBA MICROPROCESSUER MOTOROLA 6809 Exemple 2 : ADDA # $ A0 (adition du contenu du registre A et de la valeur $ A0.) « A= $ 9E» 1001 1110 + 1010 0000 1 0011 1110 1 - 98 - 96 débordement 0 Les retenues entre b6-b7 et au –delà de b7 sont Différentes il y a débordement V = 1 H=0 N=0 Z=0 C=1 et Exemple 3: ADDA # $ 96 (adition du contenu du registre A et de la valeur $ 96.) « A= $ 82» + 1 0 1000 0010 0110 0000 1110 0010 - 126 + 96 - 30 Pas de débordement 0 Les retenues entre b6-b7 et au –delà de b7 sont Identiques (il n’y a pas débordement) V= 0 et MR : HALAILI MED Page 8 H=0 N=0 Z=0 C=1 INSFP SBA MICROPROCESSUER MOTOROLA 6809 H-1-3/ Rôle de Z(b2)- Zéro (résultat nul ): Le bit n° 2 est l’indicateur de 0, il est mis à un si le résultat de l’opération précédente est nul. Les instructions de chargements. De stockages, les opérations logiques est arithmétique positionnent Z dans l’état approprié. Exemple 1: ANDA # $ C4 « et logique » (entre le contenu de l’Acc. A et la valeur Hexadécimale C4. Le « A= $ 3 B» résultat est dans A.) 0 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 Z = 1 et H = non défini N=0 Z=0 C = non défini Exemple 2: ANDA # $ C3 « et logique » (entre A et C3. Le résultat est dans A.) « A= $ 3B» MR : HALAILI MED 0 0 1 1 1 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 Page 9 Z = 0 et H = non défini N=0 Z=0 C = non défini INSFP SBA MICROPROCESSUER MOTOROLA 6809 H-1-4/ Rôle de N(b3) - Négative (résultat négatif) : Le bit n° 3indique un résultat négatif. Il contient exactement le bit de poids fort de l’octet résultat de l’opération précédente. Un résultat négatif pour une opération en complément à deux positionne N à un. Les instructions de chargements, stockages, les opérations arithmétiques et logiques positionnent toutes N à l’état approprié. Exemple : LDA # $ C1 (Chargement de l’accumulateur A avec la valeur hexadécimal $C1) 1100 0001 A b7 =1 N=1 et H = non défini Z=0 V=0 C = non défini H-1-5/ Rôle de H (b5)- Half –Carry (demi retenue) : Le bit 5 est le bit de demi-retenue. Il est utilisé dans l’ALU comme indicateur de retenu du bit 3 pour l’addition 8 bits seulement. Dans l’opération d’ajustement décimal. L’instruction DAA utilise le bit indicateur de demi retenue pour les instructions de soustraction ou équivalentes. Les instructions du microprocesseur 6809 s’exécutent en fonction de ces indicateurs, et les positionnent. Certaines instructions de branchement (en complément à deux) utilisent deux indicateurs (N et V) pour s’assurer de la validité des résultats. En effet, en complément à deux, le bit N pourra être incorrect. Si l’opération a engendré un déroulement (V = 1). MR : HALAILI MED Page 10 INSFP SBA MICROPROCESSUER MOTOROLA 6809 ADDA # $ 19 C’est-à-dire que l’opération est une opération en Binaire 27 + 19 46 0001 1011 + 0001 0011 0010 1110 ADDA # $ 19 DAA (Ajustement décimal) c'est-à-dire que l’opération précédente est une opération en DCB 27 + 19 46 0010 0111 + 0001 1001 0100 0000 DAA (Ajustement décimal) 0010 0111 + 0001 1001 0100 0000 + 0110 0 1 0 0 0 1 1 0 = 46 H-2/ Rôle des indicateur d’interruption : Il existe dans le 6809 trois types d’interruptions matérielles H-2-1/ Rôle du bit I (b4) ( interrupt mask : masque d’interruption) : Ce bit lorsqu’il est mis à un masque les interruptions IRQ, seules les interruptions les plus prioritaires seront alors prises en compte. H-2-2/ Rôle du bit F (b6) (Fast Interrupt mask : masque d’interruption rapide) : Ce bit lorsqu’il est à un masque les interruptions FIRQ, seules les interruptions les plus prioritaires seront alors prises en compte. H-2-3/ Rôle du bit E (b7) (sauvegarde des registre dans la pile) : Le bit 7 est l’indicateur de sauvegarde des registres dans la pile. Si E est à un, tout le contexte du processeur est sauvegarde dans la pile. Si E est à zéro une partie des registres internes est sauvegardée (PC et CCR). MR : HALAILI MED Page 11 INSFP SBA VI. MICROPROCESSUER MOTOROLA 6809 Architecture externe du 6809 de Motorola : Voir Figure 06 Le microprocesseur 6809 est un processeur 8 bits dont l'organisation interne est orientée 16 bits. Il se présente sous la forme d'un boîtier DIP (Dual Inline Package : double rangés de lignes) de 40 broches. Il est mono tension (5V). Figure 06 : Brochage du MC 6809 VI.1/ Présentation du brochage : 1. L’alimentation (Vss ,Vcc) : Le microprocesseur est alimenté en 5V uniquement. (Broche Vss c'est le GND soit 0V, Vcc c'est le 5V) 2. Le bus des données 8 bits (Do à D7) : Ces huit broches sont bidirectionnelles. Elles permettent la communication avec le bus des données interne du microprocesseur. Bus en logique 3 états. 3. Le bus des adresses 16 bits (A0 à A15) : Ces broches unidirectionnelles transfèrent l'adresse 16 bits fournie par le microprocesseur au bus d'adresse du système. Bus en logique 3 états. Remarque : les adresses sont validées sur le front montant de Q. MR : HALAILI MED Page 12 INSFP SBA MICROPROCESSUER MOTOROLA 6809 4. Le bus de contrôle : La broche Read/Write : Cette broche indique le sens de transfert des données sur le bus des données. Ligne à logique 3 états. R/W = 1 lecture en cours (D0 - D7 sont des entrées) R/W = 0 écriture en cours (D0 - D7 sont des sorties) Remarque : cette ligne est validée sur le front montant de Q 5. Les lignes d'état du bus : Les lignes d'état du bus BA (Bus Available : disponible) et BS (Bus State) renseignent les périphériques du 6809 sur la disponibilité des bus de données et d'adresse. BA = BS = 0 : les bus de données et d'adresse sont disponible BA = 0, BS = 1 : le 6809 vient de recevoir une interruption. BA = 1, BS = 0 : Ce signal apparaît lorsque le microprocesseur rencontre l'instruction de synchronisation externe (niveau bas sur SYNC). Il attend alors cette synchronisation sur une des lignes d'interruption. Les bus sont en haute impédance pendant ce temps. BA = BS = 1 : Signal HALT sur 6809 => Les bus sont à haute impédance. Le microprocesseur laisse la gestion des bus des données et des adresses à un circuit annexe (contrôleur de DMA). Les bus sont en haute impédance. La ligne BA au niveau haut indique que les bus sont en haute impédance. 6. Broche d'initialisation RESET : Un niveau bas sur cette broche entraîne une réinitialisation complète du circuit. Conséquences : l'instruction en cours est arrêtée le registre de pagination (DP) est mis à zéro les interruptions IRQ et FIRQ sont masquées l'interruption non masquable NMI est désarmée Pour être active cette ligne doit être maintenue à un niveau bas durant un temps suffisamment long (plusieurs cycles d'horloge). Figure 07 : Initialisation RESET MC 6809 MR : HALAILI MED Page 13 INSFP SBA MICROPROCESSUER MOTOROLA 6809 7. La broche : HALT (Arrêt du microprocesseur). Un niveau bas sur cette broche provoque l'arrêt du microprocesseur (mais à la fin de l'exécution de l'instruction en cours). Il n'y a pas perte des données. (BA = BS = 1). Le déroulement reprend dès que la broche HALT est à 1. 8. La ligne NMI (Non Masquable Interrupt) : est une ligne d'interruption non masquable. Elle permet d'exécuter une routine d'interruption dont l'adresse est contenue dans le vecteur FFFC-FFFD. Le contenu de la totalité des registres du 6809 est sauvegardé dans la pile système. 9. La ligne FIRQ ( Fast Interrupt Request :demande d’interruption rapide) : à son vecteur situé en FFFA-FFFB, elle est masquée ou non suivant l'état du bit F du registre CC. Les registres du 6809 ne sont sauvegardés que partiellement (PCL, PCH, CCR). 10. La ligne IRQ (Interrupt Request : demande d’interruption) a son vecteur en FFF8-FFF9. Elle est conditionnée par le bit I de CC et tous les registres sont sauvegardés. Le déroulement de la routine peut être interrompu par FIRQ ou NMI. 11. Les sorties E et Q sont des horloges destinées aux périphériques du processeur. Elles sont en quadrature de phase. Figure 08 : Signal en quadrature de phase 12. Entrées d'horloge XTAL et EXTAL : La fréquence du quartz (horloge) est quatre fois la fréquence du microprocesseur. Figure 09 : Entrées d'horloge 13. L’entrée MRDY (Memory ready) : Cette broche de commande permet d'allonger la durée de Eout pour utiliser des mémoires à temps d'accès long. Active sur un niveau bas. 14. L'entrée accès direct mémoire DMA / BREQ suspend le fonctionnement du 6809, permettant ainsi la libération des bus pour des périphériques intelligents ou un rafraîchissement de mémoires dynamiques MR : HALAILI MED Page 14