Cours
Cours
Les
●
Les circuits spécialisés ou ASIC (Application Specific Integrated Circuit) :
Les circuits spécialisés sont des circuits spécialisés dès leur conception pour une application
donnée.
Avantages : Inconvénients :
●
Très rapide ●
Faible modularité
●
Consommation moindre ●
Possibilité d'évolution limité
●
Optimisé pour une application ●
Coût
Les différents systèmes programmables
Les systèmes en logique programmée et/ou en logique programmable sont connus sous la
désignation de PLD (programmable logic device, circuit logique programmable)
●
FPGA (field-programmable gate array, réseau de portes programmables in-situ),
●
PAL (programmable array logic, réseau logique programmable),
●
...
« Un circuit logique programmable, ou réseau logique programmable, est un circuit intégré logique qui
peut être reprogrammé après sa fabrication. Il est composé de nombreuses cellules logiques
élémentaires pouvant être librement assemblé.» (Wikipédia)
Avantages : Inconvénients :
●
Forte modularité ●
Mise en oeuvre plus complexe
●
Rapidité ●
Coûts de développement élevé
Les différents systèmes programmables
●
Les systèmes micro-programmés :
Micro-contrôleur Microchip
PIC16F690 en boîtier DIL20
Un micro-contrôleur est un :
Avantages : Inconvénients :
●
Mise en oeuvre simple ●
Plus lent
●
Coûts de développement réduits ●
Utilisation sous optimale
Deux types de processeurs
●
CISC : Complex Instruction Set Computer
●
RISC : Reduced Instruction Set Computer
Source : Intel
« The wall » :
limite industrielle et physique,
20 nm
Intel Pentium 4 Northwood C (2002)
architecture interne 32 bits performance / Watt consommé
fréquence d’horloge 2,4/3,4 Ghz
Fréquence de bus: 0,2 GHz
plus de 42 millions de transistors, gravés en 0,13 µm
450 MIPS
Les structures des systèmes micro-programmés
●
Les différents bus d'un système micro-programmés
●
Unidirectionnel
●
Bidirectionnel
●
Bus de données : permet de transférer entre composants des données,
ex. : résultat d'une opération, valeur d'une variable, etc.
●
Bus d'adresses : permet de transférer entre composants des adresses,
ex. : adresse d'une case mémoire, etc.
●
Bus de contrôle : permet l'échange entre les composants d'informations de
contrôle [bus rarement représenté sur les schémas].
ex. : périphérique prêt/occupé, erreur/exécution réussie, etc.
Définition : Une adresse est un nombre binaire qui indique un emplacement dans
une zone mémoire
Structures des systèmes micro-programmés
●
Structure de Von Neumann
●
Structure de Harvard
EEPROM
●
Registre(case mémoire)
●
ALU
●
Multiplexeur
●
Décodeur d’instructions
●
horloge
●
Stack (pile)
LIFO (Last In First Out)
FIFO (First In First Out)
●
Registre (case mémoire)
●
ALU
●
PC (Program Counter)
●
Multiplexeur
●
Décodeur d’instructions
●
horloge
●
Stack (pile)
Issu de la documentation
technique du PIC16F628
●
Ports d’entrées/sorties
●
USART
(Universal Synchronous Asynch.
ReceiverTransmitter)
interface de communication série,
●
CCP (Capture/Compare/PWM)
Modulation en largeur d'impulsions
●
Timer
●
Comparateur
●
CAN/CNA
●
Référence de tension
●
Module HF
●
Liaison USB, ...
Les éléments de choix
Caractéristiques électriques :
Architecture : ●
Fréquence d’horloge
●
ALU (8, 16, 32, 64 bits) ●
Tensions d’alimentation
●
Structure du processeur (Harvard, Von Neumann) ●
Consommation d’énergie, modes faible
●
Type de processeur (RISC, CISC) consommation d’énergie, ...
●
Taille des mémoires programme et donnée
●
Nombre de ports d’entrée/sortie Caractéristiques physiques :
●
Type de boîtier : DIL, PLCC, ...
Fonctionnalités :
●
Fonctions analogiques : CAN, CNA, Comparateur, ...
●
Fonctions de timing : Timer, Watchdog, ...
●
Fonctions de communication : UART (Communication
série), USB, I2C, ...
●
Facilité de programmation : In-Circuit Serial
Programming, Self Programming, ...
28
Source : Microchip
Instructions
Temps
1 2 3
1 2 3
1 2 3
Création d’un pipeline => permet une exécution plus rapide des instructions
Temps
1 2 3
1 2 3
1 2 3
Les différents modes d'adressage
La nature et le nombre d’opérandes qui constituent une instruction déterminent le mode
d’adressage de l’instruction. On distingue 4 modes d’adressage principaux.
'
Les différents modes d'adressage
La nature et le nombre d’opérandes qui constituent une instruction détermine le mode
d’adressage de l’instruction. On distingue 4 modes d’adressage principaux.
ex : MOVLW 5Ah ;
ex : ADDWF 000Fh,
●
l’adressage indirect (indexé) : l’opérande est l’adresse d’un registre qui contient l’adresse de la
donnée.
●
En mode indirect indexé, on ajoute un décalage par rapport à l’adresse.
NOTE : Il existe de nombreux autres modes d’adressage (ex. implicite, inhérent, relatif) : leur nombre
varie en fonction du constructeur et du micro-contrôleur !
Structures des ports d’entrées/sorties
De fait, il est donc nécessaire de configurer la direction du port (in ou out). Dans le
microcontrôleur, des registres spécifiques sont dédiés à la gestion de ces ports...
Le registre W (accumulateur)
ATTENTION : tous les registres du microcontrôleur ne sont pas représentés sur le schéma...
Par exemple : le registre d'état
Le registre d'état (Status Register) contient des bits d'informations sur les opérations arithmétiques
menées par l'ALU (ex., le dépassement de format après avoir demandé l'addition de deux valeurs 8
bits).
Phase de démarrage du micro-contrôleur
Suite à une opération de remise à zéro (RESET), le micro-contrôleur effectue une phase de
démarrage :
1/ RESET : il peut être déclenché par la mise sous tension du micro-contrôleur, la réception d’un
signal sur la broche RESET du micro-contrôleur, une instruction de RESET, ...
Pile (Stack)
une pile pour gérer les appels
programmes et les interruptions
Vecteur Reset
pointeur vers l’adresse mémoire du
début du programme principal
Vecteurs d'interruption
pointeur vers l’adresse mémoire du
programme à exécuter en cas
d’interruptions
Mémoire programme
zone mémoire réservée au stockage des
programmes écrits par l’utilisateur
Adressage immédiat
L’instruction comporte une opérande et agit
explicitement sur un registre
Déroulement:
(1) Le compteur programme indique l’adresse
de l’instruction suivante dans la mémoire
programme. (2) L’instruction est lue et stockée
dans le registre d’instruction. (3) Puis elle est
décodée par le module de décodage et de
contrôle des instructions. (4) Finalement elle est
exécutée.
Exécution d’une
instruction
Adressage direct (étendu)
Déroulement:
(1) Lecture de l’instruction dans la mémoire
programme à l'adresse pointée par le compteur
programme. (2) Lecture de l’instruction et
décodage. (3) Pour l’adressage direct, l’opérande
constitue la partie basse de l’adresse mémoire sur
laquelle s’effectue l’opération, la partie haute est
complétée avec le registre BSR. (3') Pour
l’adressage étendu, l’opérande est l’adresse
complète de la case mémoire sur laquelle
s’effectue l’opération. (4) Finalement l’instruction
est exécutée sur la case mémoire pointée.
Organisation de la mémoire données
Access Bank
Dans le cas d’une instruction avec adressage direct, on transmet seulement la partie basse
de l’adresse. Le micro-contrôleur utilise le registre BSR pour compléter l’adresse.
Attention !! En adressage
direct, on doit s’assurer que
l’on travaille dans la bonne
page mémoire.
67
Exécution d’une
instruction
Adressage direct (étendu)
Déroulement:
(1) Lecture de l’instruction dans la mémoire
programme à l'adresse pointée par le compteur
programme. (2) Lecture de l’instruction et
décodage. (3) Pour l’adressage direct, l’opérande
constitue la partie basse de l’adresse mémoire
sur laquelle s’effectue l’opération, la partie haute
est complétée avec le registre BSR. (3') Pour
l’adressage étendu, l’opérande est l’adresse
complète de la case mémoire sur laquelle
s’effectue l’opération. (4) Finalement
l’instruction est exécutée sur la case mémoire
pointée.
Exécution d’une
instruction
Déroulement:
(1) Lecture de l’instruction dans la mémoire
programme à l'adresse pointée par le compteur
programme. (2) Lecture de l’instruction et
décodage. (3) La valeur de l’opérande indique
le pointeur à utiliser. (4) La valeur pointée est
lue (avec un éventuel décalage en mémoire). (5)
Finalement l’instruction est exécutée sur la
valeur pointée.
Conception d'un système embarqué
Formellement, la conception d'un système embarqué basé sur un microcontrôleur peut être
décomposée en 3 étapes distinctes.
(1) Le développement matériel s'appuie sur un cahier des charges, c.à.d. la définition des
fonctionnalités et des performances du système. Cette étape doit permettre de spécifier les
caractéristiques du microcontrôleur, de ses périphériques et de l'électronique associée.
(2) Le développement logiciel s'appuie sur l'étape précédente pour construire un algorigramme,
puis le code qui va être testé. Cette étape requiert que vous choisissiez le langage (assembleur
et/ou évolué) que vous utiliserez sur des bases objectives, par exemple de manière à optimiser
le temps de développement, la facilité de maintenance, le nombre d'opérations, etc.
(3) La phase de test doit être menée pour vérifier que le cahier des charges initial est bien rempli.
Cette phase de test « finale » n'empêche pas d'avoir mené des tests séparés lors des phases de
développement matériel et logiciel.
Chacune de ces trois étapes précédente peut être relativement complexe et mobiliser des moyens
financiers et humains conséquents. Par ailleurs, le test à une étape peut remettre en cause les choix fait
à une étape précédente : en pratique, on est donc plutôt confronté à un cycle de conception plutôt qu'à
un enchaînement parfaitement séquentiel !
Développement matériel
Développement logiciel
La construction d'un code machine exécutable s'appuie sur un certain nombre de composantes
(fichiers sources, librairies) qui suivent le diagramme organisationnel ci-dessous.
Le langage Assembleur (abrégé ASM) est un langage de programmation de bas-niveau, qui fait la
correspondance entre des instructions en langage machine (mots binaires) et des symboles appelés
mnémoniques plus simples à utiliser.
Source : Microchip
1. L’utilisateur écrit son programme en langage Assembleur. Ce fichier est assemblé pour traduire le
programme en langage machine (avec éventuellement des améliorations).
2. Le programme en langage machine est alors utilisé pour programmer le micro-contrôleur, c.à.d.
qu'il est transféré dans la mémoire (programme) pour être exécuté.
Les types d’instructions en Assembleur
●
Les instructions de transfert : movlw, movf, ...
●
Les instructions arithmétiques : decf, addwf, ...
●
Les instructions logiques : xorlw, andlw, ...
●
Les instructions de branchement : bz (branch if zero), bra (branch always), ...
●
les instructions de contrôle : org = début du programme, end = fin du programme, etc. ;
●
les instructions conditionnelles : if, else, endif, etc. ;
●
les instructions relatives aux données : res = réservation d’espace mémoire, etc. ;
●
les instructions pour les macros
Algorigrammes
Début, Fin,
Sous-programme
Interruption
Initialisation
Test d'une condition Faux
Instruction Vrai
Premier programme
en assembleur
Début
Broche 1
du PORTB
à l'état haut ?
;
; Filename : premier_programme.asm
;
; Description :Recopie de l'état de la broche 1 du PORTB
; sur la broche 2 du PORTB
;
list p=18f4520
; Définition du micro-contrôleur utilisé
#include <[Link]>
Début ; Définitions des emplacements mémoires des registres
; Filename : premier_programme.asm
;
; Description : Recopie de l'état de la broche 1 du PORTB
; sur la broche 2 du PORTB
;
#include <[Link]>
; Définitions des emplacements mémoires des registres
; et configurations matérielles par défaut
#include <MA_CONFIG.inc>
; Modification des configurations matérielles par défaut
La déclaration du micro-contrôleur permet au compilateur de générer un code machine qui soit
compréhensible pour le microcontrôleur que vous souhaitez programmer.
;
; Filename : premier_programme.asm
;
; Description : Recopie de l'état de la broche 1 du PORTB
; sur la broche 2 du PORTB
;
list p=18f4520
Début ; Définition du micro-contrôleur utilisé
#include <[Link]>
; Définitions des emplacements mémoires des registres
; et configurations matérielles par défaut
#include <MA_CONFIG.inc>
; Modification des configurations matérielles par défaut
Une directive au pré-processeur demande l'inclusion d'un fichier de définition spécifique au
microcontrôleur qui définit certaines configurations matérielles par défaut et permet de simplifier
l'écriture des programmes,
; Filename : premier_programme.asm
; Description : Recopie de l'état de la broche 1 du PORTB
; sur la broche 2 du PORTB
list p=18f4520
Début ; Définition du micro-contrôleur utilisé
#include <[Link]>
; Définitions des emplacements mémoires des registres
; et configurations matérielles par défaut
#include <MA_CONFIG.inc>
; Modification des configurations matérielles par défaut
Extrait du fichier [Link] de défin propre au micro-contrôleur
;----- Register Files
PORTA EQU H'0F80'
PORTB EQU H'0F81'
PORTC EQU H'0F82'
PORTD EQU H'0F83'
PORTE EQU H'0F84'
LATA EQU H'0F89'
LATB EQU H'0F8A'
LATC EQU H'0F8B'
LATD EQU H'0F8C'
LATE EQU H'0F8D'
Une directive au pré-processeur supplémentaire peut être spécifiée de manière à modifier la
configuration par défaut établie dans [Link].
Note : pour savoir comment modifier ces configurations, il faut aller voir le fichier [Link].
; Filename : premier_programme.asm
;
; Description :Recopie de l'état de la broche 1 du PORTB
; sur la broche 2 du PORTB
;
list p=18f4520
Début ; Définition du micro-contrôleur utilisé
#include <[Link]>
; Définitions des emplacements mémoires des registres
; et configurations matérielles par défaut
; #include <MA_CONFIG.inc>
; Modification des configurations matérielles par défaut
La première opération consiste systématiquement à initialiser le vecteur RESET. Notez que cette
étape n'a pas été notée dans l'algorigramme (ce qui pourrait être considéré comme une lacune...).
Les microcontrôleurs intégrent des fonctionnalités qu'il est souvent utile de connaître
pour gagner du temps de développement. Par exemple, le PIC18F4520 intègre les
« modules » suivants :
●
Les compteurs ................................................................... Timer
●
Les modules « Capture Compare PWM » ............................. CCP
●
Les comparateurs ................................................................. Comparator
●
Les modules de conversion analogique/numérique .............. CAN/CNA
●
Les chiens-de-garde ........................................................ Watchdog
●
Les différents modes de gestion de l'alimentation
La fonctionnalité « Timer »
Les timers sont des registres incrémentés à chaque réalisation d’un événement, la
valeur de ces registres pouvant être pré-positionnée à une valeur initiale.
●
Utilisation « timer » : permet de fournir une référence temporelle à partir de l’horloge du
micro-contrôleur, notamment dans le cadre d’applications temps réel.
●
Utilisation « counter » : sert à compter un nombre d’événements asynchrones sur une
broche d’entrée du micro-contrôleur.
Illustration par un exemple simple...
106
Extrait du data-sheet du PIC18F4520, p. 123-125
Capture, Compare, PWM
●
capture
Le mode capture déclenche une action si un événement pré-déterminé apparaît (ex :
changement d’état sur une broche). Utilisé avec les timers, ce module peut compter
les temps d'arrivées.
●
compare
Le mode compare effectue une comparaison permanente entre le contenu d’un timer
et une valeur donnée pour déclencher une action si ces contenus sont égaux.
●
Pulse width modulation (PWM)
Le mode PWM génère un signal rectangulaire de fréquence et de rapport cyclique
choisis par l’utilisateur.
Illustration par un exemple simple...
Questions :
(1) Expliquez comment les modules CCP1 et TIMER2 fonctionnent ensemble pour
produire un signal rectangulaire de période et de rapport cyclique donné.
●
soit un signal analogique dont on fait l'acquisition sur une
autre broche du micro-contrôleur (convertisseur analogique -
numérique),
●
soit une tension de référence générée en interne par le micro-
contrôleur à l’aide du module de génération de tension de
référence.
Ce principe de fonctionnement décrit ci-contre permet typiquement d'effectuer une
commande de type tout-ou-rien (TOR).
Illustration par un exemple simple...
Questions :
(1) On utilise une référence interne de tension pour générer la valeur de VDD/2.
Expliquez comment le module de tension de référence peut être configuré pour cela.
Expliquez ensuite comment le module de comparaison peut être utilisé pour
réaliser le cahier des charges.
●
la pleine échelle du module de conversion A/N
Indique la plage de tension admissible en entrée du module.
●
la dynamique
Indique le nombre de bits utilisés pour coder une valeur
analogique en numérique.
●
la fréquence d’échantillonnage
Notes : (1) la pleine échelle et la dynamique permettent de calculer la résolution en tension du module
de conversion A/N ; (2) la fréquence d'échantillonnage doit respecter le (fameux) « théorème de
Shannon » ; cf cours de traitement du signal.
Illustration par un exemple simple...
Questions :
Questions :
Une watchdog (WDT) est un dispositif de protection pour éviter que le micro-
contrôleur ne se bloque. Une watchdog effectue un redémarrage du système (RESET) si
une action définie n’est pas effectuée dans un délai donné.
En plus du mode de fonctionnement par défaut (Primary Run Mode), les micro-
contrôleurs possèdent de nombreux autres modes de fonctionnement. L'existence de ces
modes vise principalement à réduire la consommation d'énergie qui est une contrainte
forte pour les systèmes embarqués.
●
run mode --- mode de fonctionnement par défaut du micro-contrôleur, toutes les
fonctions sont activées, la consommation d'énergie est maximale.
●
sleep mode --- le micro-contrôleur est placé en mode sommeil, la consommation
d'énergie est minimale, le micro-contrôleur peut-être réveillé par une interruption,
●
IDLE mode --- le processeur du micro-contrôleur est arrêté, plus aucune instruction
n'est exécutée, l'utilisateur peut choisir de désactiver des fonctions du micro-contrôleur
afin de diminuer la consommation d'énergie. Les fonctions activées restantes fonctionnent
normalement et peuvent réveiller le micro-contrôleur par une interruption.