1. Introduction
Nous avions terminé le cours sur la logique séquentielle en comparant deux grandes solutions pour réaliser un système numérique.
-
L’architecture spécifique.
-
L’architecture existante.
Nous allons dans ce module de formation porter notre attention sur les systèmes numériques utilisant une architecture existante non dédiée à un projet en particulier.
2. Architectures existantes généralistes.
On trouve cette organisation matérielle principalement dans les ordinateurs (de bureau, de jeux, portables…). Elle est basée sur l’utilisation d’une carte mére embarquant de nombreux composants dont le microprocesseur et différents types de mémoires avec au moins une mémoire ROM et une mémoire RAM.
Nous trouvons à cette étape deux architectures:
-
Von Neumann
-
Harvard
La principale différence entre ces deux architectures et la façon d’accéder à la mémoire ROM et RAM.
2.1. Architecture Von Neuman
Avec l’architecture Von Neumann, tout se passe comme si les deux mémoires étaient fusionnées en une seule mémoire. Une adresse bien précise va ainsi correspondre soit à la mémoire RAM, soit à la mémoire ROM, mais pas aux deux.
Quand une adresse est envoyée sur le bus, les deux mémoires vont la recevoir mais une seule va répondre.
Il faut deux instructions différentes pour accéder à la mémoire programme et à la mémoire de données |
2.2. Architecture Harvard
Si ces deux mémoires sont reliées au processeur par deux bus d’adresses séparés, on a une architecture Harvard.
L’avantage de cette architecture est qu’elle permet de charger une instruction et une donnée simultanément :
-
une instruction chargée sur le bus relié à la mémoire programme
-
une donnée chargée sur le bus relié à la mémoire de données.
Sur ces architectures, une adresse peut correspondre soit à la ROM, soit à la RAM : le processeur voit bien deux mémoires séparées.
On accéde à la mémoire programme et à la mémoire de données avec une seule instruction. |
2.3. Complément sur les mémoires.
Une mémoire idéale serait une mémoire de grande capacité, capable de stocker un maximum d’informations et possédant un temps d’accès très faible afin de pouvoir travailler rapidement sur ces informations. Mais il se trouve que les mémoires de grande capacité sont souvent très lente et que les mémoire rapides sont très chères. Et pourtant, la vitesse d’accès à la mémoire conditionne dans une large mesure les performances d’un système.
Afin d’obtenir le meilleur compromis coût-performance, on définie donc une hiérarchie mémoire. On utilise des mémoires de faible capacité mais très rapide pour stocker les informations dont le microprocesseur se sert le plus et on utilise des mémoires de capacité importante mais beaucoup plus lente pour stocker les informations dont le microprocesseur se sert le moins.
Ainsi, plus on s’éloigne du microprocesseur et plus la capacité et le temps d’accès des mémoire vont augmenter.
2.4. Le microprocesseur.
Un microprocesseur est un circuit intégré complexe. Il résulte de l’intégration sur une puce de fonctions logiques combinatoires (logiques et/ou arithmétique) et séquentielles (registres, compteur, etc…). Il est capable d’interpréter et d’exécuter les instructions d’un programme. Son domaine d’utilisation est donc presque illimité.
En 1971, Intel sorti le premier microprocesseur, le 4004, qui était une unité de calcul 4 bits fonctionnant à 108 kHz. Il résultait de l’intégration d’environ 2300 transistors.
2.4.1. Vu de l’éxterieur.
Pour traiter une information, un microprocesseur seul ne suffit pas, il faut l’insérer au sein d’une architecture minimum comme nous l’avons décrit précédemment.
Vu de l’extérieur un microprocesseur peut être modélisé par le schéma ci-dessous.
le microprocesseur est chargé d’interpréter et d’exécuter les instructions d’un programme, de lire ou de sauvegarder les résultats dans la mémoire et de communiquer avec les unités d’échange. Toutes les activités du microprocesseur sont cadencées par une horloge.
On caractérise le microprocesseur par :
-
Sa fréquence d’horloge : GHz
-
Le nombre d’instructions par secondes qu’il est capable d’exécuter : en MIPS
-
La taille des données qu’il est capable de traiter : en bits
2.4.2. Vu de l’intérieur.
Dans un microprocesseur, on trouve au moins les fonctions du schéma ci-dessous.
-
L’horloge : fixe la vitesse de travail. Elle peut être configurée par des registres.
-
Le compteur de programme (PC) constitué par un registre dont le contenu est initialisé avec l’adresse de la première instruction du programme. Il contient toujours l’adresse de l’instruction à exécuter.
-
Le registre d’instruction et le décodeur d’instruction : chacune des instructions à exécuter est rangée dans le registre instruction puis est décodée par le décodeur d’instruction.
-
L’Unité Arithmétique et Logique (UAL) est un circuit complexe qui assure les fonctions logiques (ET, OU, Comparaison, Décalage , etc…) ou arithmétique (Addition, soustraction).
-
Les accumulateurs sont des registres de travail qui servent à stocker une opérande au début d’une opération arithmétique et le résultat à la fin de l’opération.
2.4.3. Pause vidéo.
2.4.4. Travail à faire : Utilisation de l’UAL
L’unité arithmétique et logique (UAL) effectue l’opération sélectionnée sur les données présentes dans le registre accumulateur A et le registre accumulateur B.
Voici dans la table de fonctionnement ci-dessous un extrait des fonctions de UAL et de ses codes de sélections.
- 01100111
- 01101011
- 00000100
- 00000100
- 01101011
- 01100111
2.4.5. Travail à faire : Assembleur 6809
- $2000
- 2000
- 86
- 8 bits
- 12 bits
- 16 bits
- ET
- Soustraction
- Addition
- 25
- $25
- $15
- 5
- $5
- $3A
- $2000
- $2005
- $A000
2.4.6. Travail à faire : Programmation assembleur
Nous allons utiliser un simulateur développé par Peter Higginson. Ce simulateur est basé sur une architecture de von Neumann et dispose de :
-
une RAM
-
un CPU
-
une interface d’entrée
-
une interface de sortie
-
un jeu d’instructions assembleur
Instructions | Description |
---|---|
|
Load the value stored in the memory location specified by |
|
Store the value that is in register |
|
Add the value specified in |
|
Subtract the value specified by |
|
Copy the value specified by |
|
Compare the value stored in register |
|
Always branch to the instruction at position |
|
Conditionally branch to the instruction at position |
|
Perform a bitwise logical |
|
Perform a bitwise logical |
|
Perform a bitwise logical exclusive or ( |
|
Perform a bitwise logical |
|
Logically shift left the value stored in register |
|
Logically shift right the value stored in register |
|
Stop the execution of the program. |
-
<operand2> can be #nnn or Rm to use either a constant or the contents of register Rm.
-
Registers are R0 to R12.
-
Que fais le programme ci-dessous ?
MOV R0,#10
MOV R1,#2
ADD R0,R1,R2
HALT
-
Simuler le fonctionnement du programme et vérifier hypothèse
Correction
|
-
Que fais le programme ci-dessous ?
MOV R0,#10
LSL R0,R0,#1
HALT
-
Simuler le fonctionnement du programme et vérifier hypothèse
Correction
|
-
Que fais le programme ci-dessous ?
MOV R0,#10
LSR R0,R0,#1
HALT
-
Simuler le fonctionnement du programme et vérifier hypothèse
Correction
|
-
Que fais le programme ci-dessous ?
MOV R0,#124
MOV R1,#0
loop:
LSR R0,R0,#1
ADD R1,R1,#1
CMP R1,#3
BLT loop
HALT
-
Simuler le fonctionnement du programme et vérifier hypothèse
Correction
|
-
Que fais le programme ci-dessous ?
MOV R2,#65
MOV R1,#0
LOOP:
ADD R2,R2,#1
ADD R1,R1,#1
OUT R2,7
CMP R1,#3
BLT LOOP
HALT
-
Simuler le fonctionnement du programme et vérifier hypothèse
Correction
|
-
Coder et simuler un programme qui affiche
Hello !
Correction
|
-
Coder et simuler un programme qui effectue le calcul suivant : \( 4 \times x + 4 \) avec \( x \) un nombre entier fourni par l’utilsateur. Utiliser pour àa l’instruction
INP
-
Sortir le résultat sur l’afficheur.
Correction
|
Le bouton SELECT permet de choisir l’un des quelques exemples de programmes à assembler.
-
Tester ces programmes et les modifier à volonté et sans modération.
2.5. Le décodage d’adresse.
A notre système minimum nous devons ajouter une fonction indispensable le décodage d’adresse.
La multiplication des périphériques autour du microprocesseur oblige la présence d’un décodeur d’adresse chargé d’aiguiller les données présentes sur le bus de données.
En effet, le microprocesseur peut communiquer avec les différentes mémoires et les différents boîtier d’interface. Ceux-ci sont tous reliés sur le même bus de données et afin d’éviter des conflits, un seul composant doit être sélectionné à la fois.
Lorsqu’on réalise un système microprogrammé, on attribue donc à chaque périphérique une zone d’adresse et une fonction « décodage d’adresse » est donc nécessaire afin de fournir les signaux de sélection de chacun des composants.
Lorsqu’un composant n’est pas sélectionné, ses sorties sont mises à l’état haute impédance (noté Z) « afin de ne pas perturber les données circulant sur le bus. ( elle présente une impédance de sortie très élevée = circuit ouvert ). On parle également de sortie à logique 3 états. |
Le décodage d’adresses permet d’allouer à chaque périphérique une zone de l’espace adressable.
2.5.1. Comment ?
Nous allons utiliser un décodeur (138) qui sera chargé de valider le bon périphérique avec les signaux de sélection CE ou CS.
Nous pouvons également utiliser un PLD pour réaliser cette fonction décodage. Dans le schéma suivant un PAL 16L8.
2.5.2. Travail à faire : Solutions de décodage d’adresses
-
Répondre aux questions suivantes sur le circuit mémoire ci-dessous :
- /CE,/OE
- /CE,/OE,/PGM
- /CE
- Mémoire RAM, car une entrée d'écriture.
- Mémoire EPROM, une entrée d'écriture et pas d'entrée de programmation.
- ROM
- 16ko
- 32kbits
- 256kbits
- /CE,/OE
- /CE,/OE,/PGM
- /CE,/OE,/WE
- 64000
- 64
- 65536
- 8bits
- 16bits
- 24bits
- 256
- 255
- 65535
- 11
- 10
- 9
- 1024 octets
- 1ko
- 1024 bits
- 4kbits
- 4Ko
- 32kbits
3. Architectures existantes dédiées.
3.1. Le microcontrôleur.
Ce sont des processeurs moins puissants que les microprocesseurs, mais dont les capacités de calcul peuvent être relativement très élevées au regard des besoins.
Le microcontrôleur rassemble en un seul circuit les composants d’une carte mère d’un petit ordinateur (processeur, mémoire, périphériques…) auquel on ajoute un nombre important d’entrée-sorties.
ARM se place très bien sur ce secteur, il ne fabrique pas de circuits. Il ne fait (et c’est déjà pas mal) que les concevoir pour vendre par la suite les licences liées à cette conception. STMicro et NXP sont de grands utilisateurs des architectures ARM. En dehors d’ARM, Microchip avec ses PIC et Atmel avec ses AVR (arduino) sont des acteurs bien présents sur le marché.
les microcontrôleurs sont LES processeurs utilisés dans le monde de l’embarqué. Ils sont conçus pour consommer le moins de courant possible, ce qui en fait leur force pour ce secteur d’activité. Une des explications du succès d’ARM (dont les processeurs équipent près de 90% des smartphones) réside dans sa capacité à minimiser cette consommation, ce qui de facto augmente l’autonomie du système embarqué.
3.2. Le DSP(Data system Processing).
Comme leur nom l’indique ces processeurs ont des architectures qui leur permettent de traiter du signal rapidement et efficacement.
C’est un microcontrôleur optimisé pour le calcul numérique.
Ce qui le caractérise par rapport au microcontrôleur c’est une instruction particulière appelée MA*C : "*M*ultiply and *AC*cumulate" qui est réalisée en *un cycle instruction. Cette instruction permet de faire une addition et une multiplication en même temps, le résultat est stocké sur 40 bits.
Ils possèdent également des périphériques d’entrées/sorties analogiques précis et rapides qui répondent aux besoins spécifiques des applications pour traiter des signaux (son, image,voix …).
Parmi les grands noms de l’industrie du semi-conducteur qui développe et commercialise des DSP, Texas Instrument est sans doute le plus connu.
3.3. SoC (System on Chip)
L’objectif est de diminuer au minimum le nombre de composants sur une carte électronique pour mettre tout sur une seule puce.
On peut intégrer de la logique, de la mémoire (statique, dynamique, flash, ROM, PROM, EPROM, EEPROM), des dispositifs (capteurs) mécaniques, opto-électroniques, chimiques ou biologiques, des DSP, des circuits radio (Wifi,bluetooth)…
L'esp32 de chez espressif en est un exemple particulièrement représentatif de SoC . 32bits pour moins de 10€ l’unité.