Systèmes électroniques
Fermer ×

Présentation

Introduction

Les architectures programmables, présentées ici regroupent deux grandes catégories de circuits intégrés numériques qui seront étudiés dans les chapitres suivants.

  1. Les systèmes programmables qui comprennet tous les systèmes à base de processeur qui exécutent un programme. Dans cette famille on trouve les systèmes complets sur un même circuit intégré : les microcontrôleurs ou encore les unités d'exécution des programmes seuls que l'on appelle les microprocesseurs. Dans ce cas l'application est représentée par un programme informatique, ce qui fait que ce type de composant peut être programmé en fonction de l'application.
  2. Les circuits intégrés numériques dédiés à une application spécifique (ASIC) et construit uniquement pour cette application. Ces circuits intègrent généralement des fonctions combinatoires et séquentielles sous la forme de machine à état. Quelques fois on trouve des coeurs de microprocesseurs (les unités de calculs et séquenceur). Ce type de circuit ne peut êter affecté à une seule application, dans ce cas on a un circuit intégré par application.

Les microcontrôleurs

Structure générale

La structure générale d'un microcontrôleur est définie par les différentes fonctionnalités :

  • La mémoire qui contient les codes des programmes ainsi que les données utilisées par le programme
  • l'unité de calcul qui est une fonctionnalité du processeur, elle contient l'UAL ainsi que les registres nécessaires à la mémorisation des données des calculs
  • Le séquenceur qui assure le cadencement des traitemenst et calcul, c'est également une fonctionnalité du processeur.
  • Les circuits périphériques qui assurent la communication avec les composants externes au microcontrôleur, ces composants externes peuvent être des capteurs, des circuits de puissance pour commander des systèmes mécaniques, des circuits de communication réseau, ...

Ces principaux blocs fonctionnels communiquent par d'intermédiaire du bus d'interconnexion qui contient les données ainsi que les contrôles et sélection des autres circuits. Il permet de synchroniser tous les signaux échangés.

L'horloge Clk qui cadence le rythme de calcul et d'échange des données. Cette horloge n'est, en général, pas connectées aux mémoires dont le temps de propagation entre adresse et donnée est inférieur à la période de l'horloge. Certains périphériques génèrent des signaux séquentiels, ce qui justifie la présence de l'horloge sur le bloc de circuits périphériques. La ligne Reset permet d'initialiser le processeur ainsi que les circuits périphériques au démarrage, comme cela a été justifié dans le chapitre sur la logique séquentielle. Le signal AS (Address Strobe) est un signal de synchronisation qui indique que l'adresse présente sur le bus d'adresse est stable.

La mémoire est en général composée de deux composants mémoires :

  • La mémoire de programme qui contient les codes du programme du processeur. Elle est en lecture seule, le processeur lit séquentiellement les codes des instructions qu'il doit exécuter.
  • La mémoire de données qui contient les valeurs des données traitées par le programme. Elle en lecture ou écriture, c'est à dire que le processeur peut soit lire les données à traiter soit y écrire les résultats des traitements.

Le bus d'interconnexion se décompose en trois bus :

  • Le bus d'adresses unidirectionnel et exprimé sur n bits, il est piloté par le processeur. La valeur de l'adresse permet l'échange des données avec une donnée d'un autre composant. n donne la capacité d'adressage du processeur, n=16 donne une capacité de 65536 emplacements à partager entre tous les composants mémoires et circuits périphériques.
  • Le bus de données bidirectionnel, exprimé sur m bits, sert à l'échange des données entre le processeur et les autres composants.
  • Le bus de contrôle également piloté par le processeur, il permet de synchroniser les échanges de données ainsi que le sens de cet échange.

Organisation mémoire

Le codage hexadécimal est très utilisé pour représenter des valeurs en mémoire. Il s'agit du codage des octets en base 16 où les valeurs de 10 à 15 sont représentées par les lettres A à F (ou bien a à f).

décimal0123456789101112131415
hexadécimal0123456789ABCDEF
La conversion de la base 16 vers la base 10 se fait avec la relation :
N 10 = k = 0 n - 1 a k 16 k
en remplaçant les lettres A à F par les valeurs décimales équivalentes.

La conversion de la base 10 vers la base 16 se fait avec une suite de division par 16 et en remplaçant les restes compris entre 10 et 15 par la lettre correspondante.

Selon les langages, l'indication d'un code exprimé en hexadécimal est le préfixe "$" ou bien "0x".

Exemples de nombres non signés :

Voir la table de codage Hexadécimal
0123456789ABCDEF
00123456789101112131415
116171819202122232425262728293031
232333435363738394041424344454647
348495051525354555657585960616263
464656667686970717273747576777879
580818283848586878889909192939495
696979899100101102103104105106107108109110111
7112113114115116117118119120121122123124125126127
8128129130131132133134135136137138139140141142143
9144145146147148149150151152153154155156157158159
A160161162163164165166167168169170171172173174175
B176177178179180181182183184185186187188189190191
C192193194195196197198199200201202203204205206207
D208209210211212213214215216217218219220221222223
E224225226227228229230231232233234235236237238239
F240241242243244245246247248249250251252253254255

Pour convertir une valeur décimale en hexadécimal, il faut chercher la valeur dans la table, la valeur hexadécimale correspond à la valeur hexadécimale de la ligne suivie de la valeur hexadécimale de la colonnne. Exemple : 167 correspond à la ligne A et la colonne 7 ce qui donne 167=0xA7 (ce qui peut se vérifier avec le calcul 16×10+7 en appliquant la formule de conversion

Les plages des adresses mémoires des différents composants s'appelle le plan mémoire. Un exemple est présenté sur le schéma pour une capacité d'adressage de 16 bits (n=16).

Certains bits mémoires sont connectés aux circuits périphériques, d'autres à la logique de décodage. Ce composant permet d'activer un signal de sélection de circuit en fonction de l'adresse de façon à éviter le conflit des données sur le bus de données. En effet un seul circuit doit échanger des données à chaque instant. Pour ce faire, il faut donc activer le circuit concerné et désactiver les autres, c'est le rôle de la logique de décodage et des signaux CSx.

La logique de décodage est un circuit combinatoire qui active une des sorties CSx en fonction de la valeur de l'adresse. Cette technique s'appelle le décodage d'adresse.

Le plan mémoire présenté ici respecte le tableau suivant :

Circuit activéAdresse basseAdresse hauteA15...A10CS1CS2CS3
mémoire de programme (k=14)$0000$3FFF00XXXX100
mémoire de données (l=11)$4000$47FF01000X010
circuits périphériques (p=10)$4800$4BFF010010001
non utilisé$4C00$FFFFXXXXXX000

Afin que la logique de décodage respecte ce tableau, elle doit traiter les lignes d'adresses de A15 à A10 ce qui donne q=10

L'espace d'adressage occupé réellement dépend du microcontrôleur.

Exemple de circuit

On retrouve cette structure générale sur le microcontrôleur atmega 8 de la famille des processeur atmel avr.

  • La partie processeur qui correspond au bloc nommé "AVR CPU"
    • L'unité arithmétique et logique nommée "ALU"
    • Les registres pour les calculs nommés "General Purpose Registers"
    • Le registre d'instruction nommé "instruction register"
    • Le décodeur d'instruction nommé "instruction decoder"
    • Le registre de statut nommé "status register" qui contient les résultats de calcul.
    • Le compteur de programmme nommé "program counter"
    • Le registre pointeur de pile nommé "stack pointer"
  • La mémoire de programme, nommée "program flash" de 16k mot de programme
  • La mémoire de données, nommée "SRAM" de 1k octets et une mémoire pour les données constantes de 512 octets qui est nommée EEPROM
  • Les circuits périphériques :
    • Les périphériques parallèles nommés "port digital interface"
    • Les périphériques séries nommés "UART" et "SPI"
    • Les périphériques analogiques nommés "ADC"
    • Les périphériques de comptages nommés "timer" et "watchdog"

Les différentes composantes de ce processeur seront étudiés dans les chapitre suivants : les mémoires , les périphériques et le processeur.