SSI SCIENCES DE V Chassilian FICHE DE Systemes cours microprogrammEs L’INGENIEUR St Jo Avignon 1. Mise en situation : Les systèmes à microprocesseurs ou microcontrôleurs sont omniprésents dans les systèmes complexes (ordinateurs individuels, consoles de jeu,…) comme dans les systèmes simples (machine à laver, pompe à essence, store automatique, ...) où leur grande souplesse d’implantation et de programmation est appréciée. On trouvera sur les ORGANISATION D'UNen SYSTEM E Ade M ICROCONTROLEUR" systèmes embarqués essentiellement desFONCTIONNELLE microcontrôleurs raison leur faible encombrement. Unité de traitement électronique A CTIONNEUR Interfaçage d'entrée CAP TEURS Unité centrale de traitement Interfaçage de sortie OPERATEUR S ignaux analogique, numérique et/ou logique Signaux numériques à traiter Signaux numériques traités S ignaux analogique, num érique et/ou logique 2. Le microprocesseur : Description et structure interne Un microprocesseur, nommé MPU (Micro Processing Unit) ou CPU (Central Processing Unit) est un circuit intégré complexe permettant d’effectuer séquentiellement et automatiquement des suites d’opérations élémentaires. Il est fabriqué à l’aide d’un morceau de silicium dopé, formant ainsi un ensemble de millions de transistors. Sa structure interne est la suivante : Unité de traitement Unité de commande L’unité de commande : PC : Compteur Programme : C’est un registre comprenant l’adresse de l’instruction qui va être exécutée. Registre d’instruction : C’est un registre qui contient l’instruction à exécuter, cette instruction sera décodée par le décodeur d’instruction. Bloc logique de commande : Organise l’exécution des instructions au rythme d’une horloge. Il synchronise les signaux dans le microprocesseur. Page 1/6 L’unité de traitement : UAL : Unité Arithmétique et Logique qui effectue les opérations arithmétiques (+,x,/,…) et logiques (ET, OU, NAND,…). A cette UAL a été associé 2 autres unités : L’Unité de calcul en virgule flottante, capable de réaliser les opérations de calcul pour les réels ainsi que les calculs mathématiques et scientifiques complexes ainsi que l’Unité multimédia, chargée d’accélérer l’exécution des programmes multimédia comportant des vidéos, du son, graphisme en 3D, etc… Cette unité porte le nom de MMX, SSE ou 3DNOW. Accumulateurs : Ce sont des registres de travail qui stockent les données pendant l’opération ainsi que le résultat de l’opération. Registre d’état : Aussi appelé indicateur d’état ou flag en anglais, ils indiquent l’état du résultat de l’opération (opération avec ou sans retenue, résultat nul, signe du résultat, résultat pair ou impair,…). Les registres Un registre est une mémoire rapide, permettant la manipulation de données à vitesse élevée. Un registre ne peut mémoriser qu’un mot de n bits, il permet la sauvegarde d’informations et de résultats intermédiaires, évitant ainsi des accès à la mémoire donc accélère les accès à la mémoire. Le registre d’adresse est un registre qui contient l’adresse du mot à accéder en mémoire centrale. Il a la taille d’une adresse qui est la même que celle du bus d’adresses ce qui permet de déterminer le nombre de mots mémoires adressables et l’espace mémoire adressable. Le registre de données contient le mot mémoire faisant l’objet d’une opération de lecture ou d’écriture dans la mémoire centrale. Ce registre a la taille d’un mot mémoire qui est la même que celle des registres de travail et l’accumulateur qui est égale à la taille du bus de données. Les mémoires Un microprocesseur contient de la mémoire cache, c’est une mémoire d’une capacité d’environ 2048 kbits qui stocke les données temporaires issues de la mémoire centrale afin d’améliorer le temps de traitement de l’information. L’horloge L’horloge assure le cadencement du microprocesseur. La vitesse d’un processeur dépend de sa fréquence d’horloge. La fréquence de l'horloge interne est obtenue en divisant par 4 la fréquence de l'horloge externe (ex : pour un quartz à 4 MHz, la fréquence interne est donc de 1 MHz et la durée d'un cycle est de 1 µs). La vitesse de traitement des instructions dépend de la période d’horloge interne : selon le type et la complexité de l’instruction, son temps de réalisation pourra prendre 1 ou plusieurs périodes d’horloge. L’horloge est majoritairement réalisée à l’aide d’un quartz, la fréquence d’horloge dépend de la fréquence du Quartz. On peut aussi utiliser un résonateur externe, moins coûteux. Selon le structure de l’horloge du processeur, on utilise aussi des circuits RC. Page 2/6 Architecture des micro-processeurs Il existe 2 catégories de microprocesseur : - CISC (Complex Instruction Set Computer) : Ce microprocesseur possède un nombre important d’instructions. Chacune d’elles s’exécute en plusieurs périodes d’horloges. - RISC (Reduced Instruction Set Computer) : Ce microprocesseur possède un nombre réduit d’instructions. Chacune d’elles s’exécute en une période d’horloge. Exemple d’exécution d’une instruction : Phase 2 Phase 1 Phase 3 3. Organisation fonctionnelle autour du microprocesseur Un microprocesseur seul ne peut pas traiter l’information, il a besoin de fonctions supplémentaires telles que les mémoires, les compteurs,… Il existe 2 types d’architectures pour la communication des données du processeur vers ou depuis ses mémoires : Page 3/6 4. Le microcontrôleur : Description et structure interne Le microcontrôleur intègre sur la même surface qu’un microprocesseur un microprocesseur et tous les périphériques nécessaires à son fonctionnement. Cette intégration de plusieurs fonctions sur un même boitier présente un ensemble non négligeable d’avantages : coût et encombrement très réduits, facilité de mise en œuvre et faible consommation. Les microcontrôleurs de la marque Microchip sont nommés des « PIC ». La structure interne d'un microcontrôleur comporte typiquement : Une unité de calcul et de commande (CPU) Mémoire ROM Mémoire RAM Un contrôleur d’interruption Un compteur/temporisateur (timer) Des entrées/sorties parallèles (ports) Un UART (port série) Il peut aussi posséder : Un Watchdog : (surveillance du programme) Une sortie PWM (modulation d’impulsion) Un CAN/CNA (Convertisseur analogique numérique) Une interface I²C, CAN… Exemple d’organisation interne du PIC 16F877 : Page 4/6 Rôle des différents éléments du microcontrôleur : Les bus : Les bus sont des liaisons permettant de relier entre eux les différents organes du système. Concrètement, ce sont des ensembles de fils électriques qui permettent de transmettre les signaux aux composants du système. On distingue trois sortes de bus : Le bus de données : il est bidirectionnel et permet de transférer les données entre le processeur et les mémoires. Ces données sont de type binaire. Le Bus d’adresse : il est unidirectionnel, du processeur vers les mémoires ou un composant. Il va transporter l’adresse (code numérique binaire) à laquelle on va lire ou écrire une information. Le Bus de contrôle : Il permet au processeur de donner des ordres de lecture ou d’écriture aux mémoires. Son rôle est aussi d’informer le microprocesseur sur l’état du système et de le prévenir en cas de dysfonctionnement. Les mémoires : Les mémoires de données : Ce dispositif permet de mémoriser temporairement les données générées par le microprocesseur pendant les différentes phases du traitement numérique (résultats d’opérations, états des capteurs...). Ces mémoires sont accessibles en écriture et en lecture. On en trouve 2 types : De la mémoire vive (RAM-Random Access Memory) : elle est volatile (données perdues en cas de coupure de l’alimentation) et à accès aléatoire (temps de lecture et écriture assez court (quelques ns)), De la mémoire vive (SFR-Special Function Register) : c’est une RAM dont le rôle de chaque case mémoire a été défini par le fabriquant. Elle est adaptée au matériel utilisé dans le microcontrôleur (CAN, adaptateurs,…) De la mémoire morte (EEPROM) : elle est non-volatile (données conservées en cas de coupure de l’alimentation) mais son temps d’écriture est assez élevé (qqs ms) par rapport au temps de lecture qui est assez faible (qqs ns). Les mémoires programmes : Ce dispositif contient les instructions du programme que doit exécuter le microprocesseur. Ce type de mémoire (appelée mémoire morte), est uniquement accessible en lecture. Sa programmation nécessite une procédure particulière et un matériel adéquat. Il en existe différents types selon leur mode de programmation : De la ROM (Read Only memory) dont le contenu est programmé lors de sa fabrication, De la PROM (Programmable Read Only Memory) programmable électriquement une seule fois par le constructeur, De la EPROM (Erasable & Programmable Read Only Memory) programmable électriquement et effaçable aux U-V (appelée aussi UVPROM), De la EEPROM (Electrically Erasable & Programmable Read Only Memory) programmable et effaçable électriquement in situ. Capacités d’une mémoire : 1 Octet = 8 bits = 1 Byte 1 KOctet = 2 Octets = 1024 Octets et 1Moctet = 210 * 210 Octets = 220 Octets 10 Page 5/6 La capacité totale d’une mémoire représente le nombre de bits total qu’elle peut mémoriser, le AKxB nombre de mots et la longueur de chacun n’est pas mis en évidence. C’est pourquoi, sur la plupart AMxB des boîtiers mémoire on trouvera le détail présenté selon le format ci-contre où A est le nombre de AGxB mots et B la longueur du mot (en bit). Les Ports : Ce sont des périphériques d’entrées/sorties : - parallèles (Parallel Input/Output) ou - séries (USART : Universal Synchronous Asynchronous Receiver Transmitter, broches nommées Rx ou Tx). Ils permettent de lire des données venant de l’extérieur ou de piloter des actionneurs. Un port peut être préconfiguré en entrée ou en sortie ou être bidirectionnel, dans ce cas, il faudra configurer chacune de ses broches en entrée ou en sortie à l’aide du registre TRIS. Les ports sont nommés PA à PE, chaque broche est numérotée (PA0 à PA7 par exemple pour un port parallèle A de 8 bits). Chaque port sera associé à un registre PORTA à PORTE. Ces ports sont souvent associés à des interfaces permettant l’adaptation des signaux entre le processeur et les composants auxquels il est connecté. Les timers : C’est un élément qui permet de faire des mesures de temps, du comptage d’impulsion ou de générer un signal de fréquence ou rapport cyclique réglable. Pour le programmer, il faudra regarder la documentation du microcontrôleur utilisé. 5- Description et programmation de la tâche à accomplir Un cahier des charges va décrire l’enchainement séquentiel des actions que devra réaliser le microcontrôleur. On traduira le cycle de fonctionnement à l’aide d’un algorithme ou d’un algorigramme qui nous amènera à écrire le programme associé en utilisant un langage. Le langage assembleur, est le plus proche du langage machine mais n’est quasiment plus utilisé. On utilisera de préférence un langage évolué (C, C++, …) qui sera compilé (traduit) en code machine par un logiciel adapté à la cible utilisée. Page 6/6