circuits combinatoires - mouridsmida.files.wordpress.com · -voh (voltage output high) : c'est...

8
10 v. Bus Dans un système électronique et microinformatique, nous trouverons tout ou partie des sous- ensembles : - Le circuit microcontrôleur, cœur du système. - Un clavier, un afficheur, des convertisseurs Analogique-numérique et D-A, des ports d'entrées sorties, des mémoires, etc. Ces composants étant parfois situés sur des cartes séparées, il est hors de question de relier chacun par des nappes de dizaines de fils véhiculant des données en parallèle. C'est ici qu'intervient la notion de bus, pour sérialiser les données et permettre les échanges. Tous ces composants vont dialoguer avec 2 ou trois fils ce qui va beaucoup simplifier la réalisation. Définir un bus consiste donc à fixer les points clefs : - Combien de signaux seront véhiculés (nombre de fils) - Tensions des niveaux logiques et type des fils et connecteurs (séparés, torsadés, coaxial...) - Vitesse des échanges (horloge) - Format de la trame et codage des informations - Normalisation des adresses des périphériques - Gestion des conflits de bus et dispositions anti-collisions vi. Ports d’entrées/sortie Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output ou encore E/S pour Entrées/Sorties. Les périphériques sont reliés au reste du système par des circuits appelés ports d'entrées et ports de sortie (certains ports peuvent combiner les deux fonctions). b. Circuits numériques i. Circuits logiques standards L'ordinateur est un dispositif électronique sophistiqué qui traite l'information mise sous forme d'impulsions électriques traduisant les chaînes binaires utilisées pour représenter les symboles qu’on y introduit codés sous forme d’une suite bits. Rappelons qu’un ordinateur ne comprend que les impulsions électriques. Les traitements, pour leur part, sont essentiellement réalisés à l'aide d'opérations telles l'addition, la soustraction, la multiplication, la division, la comparaison. Plus fondamentalement, les opérations sont composées d'opérations logiques qui sont effectuées par des circuits logiques de base appelés portes. Une porte est en fait un circuit combinatoire à une ou plusieurs entrées et à au moins une sortie. Les conditions aux entrées d'une porte déterminent l'état des sorties. Il existe trois portes de base correspondant aux trois opérations logiques: OU, ET, NON. 11 Par ailleurs, les circuits logiques d’un ordinateur sont divisés en deux catégories suivant leur structure fonctionnelles : les circuits combinatoires et les circuits séquentiels. Circuits combinatoires : Un circuit est dit combinatoire si les sorties ne dépendent que des valeurs assignées aux valeurs d’entrée au moment considéré. Autrement dit, dans un tel circuit, le comportement des sorties peut toujours être exprimé par des fonctions logiques. Circuits séquentiels : Un circuit est dit séquentiel si les sorties le comportement des sorties dépend des valeurs assignées aux variables ‘entrée et selon son histoire. De tels circuits contiennent une mémoire à côté d’une partie combinatoire. Cette mémoire a pour rôle de conserver l’histoire du circuit, histoire qui peut influencer les sorties pour une nouvelles combinaison de valeurs assignées aux entrées. L’information qui se trouve en mémoire à un moment donné définit l’état du circuit séquentiel. L’état suivant et le comportement des sorties sont déterminés par l’état actuel et la combinaison des valeurs données aux entrées. Par conséquent, un circuit séquentiel se caractérise par une séquence de signaux aux entrées et une séquence d’états pour chaque séquence de signaux appliquées aux entrées. Exemples de circuits logiques : - Le semi-additionneur Il s'agit de réaliser un circuit permettant d'additionner 2 bits d'entrée, et d'obtenir comme sortie le résultat de l'addition et la retenue:

Upload: vuongminh

Post on 13-Sep-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

10

v. Bus Dans un système électronique et microinformatique, nous trouverons tout ou partie des sous-ensembles :

- Le circuit microcontrôleur, cœur du système. - Un clavier, un afficheur, des convertisseurs Analogique-numérique et D-A, des ports

d'entrées sorties, des mémoires, etc. Ces composants étant parfois situés sur des cartes séparées, il est hors de question de relier chacun par des nappes de dizaines de fils véhiculant des données en parallèle. C'est ici qu'intervient la notion de bus, pour sérialiser les données et permettre les échanges. Tous ces composants vont dialoguer avec 2 ou trois fils ce qui va beaucoup simplifier la réalisation. Définir un bus consiste donc à fixer les points clefs :

- Combien de signaux seront véhiculés (nombre de fils) - Tensions des niveaux logiques et type des fils et connecteurs (séparés, torsadés, coaxial...) - Vitesse des échanges (horloge) - Format de la trame et codage des informations - Normalisation des adresses des périphériques - Gestion des conflits de bus et dispositions anti-collisions

vi. Ports d’entrées/sortie

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output ou encore E/S pour Entrées/Sorties. Les périphériques sont reliés au reste du système par des circuits appelés ports d'entrées et ports de sortie (certains ports peuvent combiner les deux fonctions).

b. Circuits numériques

i. Circuits logiques standards L'ordinateur est un dispositif électronique sophistiqué qui traite l'information mise sous forme d'impulsions électriques traduisant les chaînes binaires utilisées pour représenter les symboles qu’on y introduit codés sous forme d’une suite bits. Rappelons qu’un ordinateur ne comprend que les impulsions électriques. Les traitements, pour leur part, sont essentiellement réalisés à l'aide d'opérations telles l'addition, la soustraction, la multiplication, la division, la comparaison. Plus fondamentalement, les opérations sont composées d'opérations logiques qui sont effectuées par des circuits logiques de base appelés portes. Une porte est en fait un circuit combinatoire à une ou plusieurs entrées et à au moins une sortie. Les conditions aux entrées d'une porte déterminent l'état des sorties. Il existe trois portes de base correspondant aux trois opérations logiques: OU, ET, NON.

11

Par ailleurs, les circuits logiques d’un ordinateur sont divisés en deux catégories suivant leur structure fonctionnelles : les circuits combinatoires et les circuits séquentiels. Circuits combinatoires : Un circuit est dit combinatoire si les sorties ne dépendent que des valeurs assignées aux valeurs d’entrée au moment considéré. Autrement dit, dans un tel circuit, le comportement des sorties peut toujours être exprimé par des fonctions logiques.

Circuits séquentiels : Un circuit est dit séquentiel si les sorties le comportement des sorties dépend des valeurs assignées aux variables ‘entrée et selon son histoire. De tels circuits contiennent une mémoire à côté d’une partie combinatoire. Cette mémoire a pour rôle de conserver l’histoire du circuit, histoire qui peut influencer les sorties pour une nouvelles combinaison de valeurs assignées aux entrées. L’information qui se trouve en mémoire à un moment donné définit l’état du circuit séquentiel. L’état suivant et le comportement des sorties sont déterminés par l’état actuel et la combinaison des valeurs données aux entrées. Par conséquent, un circuit séquentiel se caractérise par une séquence de signaux aux entrées et une séquence d’états pour chaque séquence de signaux appliquées aux entrées.

Exemples de circuits logiques :

- Le semi-additionneur Il s'agit de réaliser un circuit permettant d'additionner 2 bits d'entrée, et d'obtenir comme sortie le résultat de l'addition et la retenue:

12

- L’additionneur Le semi-additionneur permet d'additionner deux bits, et de donner la somme et la retenue. L'additionneur complet tient compte non seulement des deux entrées, mais aussi de la retenue obtenue lors de l'addition des deux valeurs de la position précédente. On a alors, pour l'addition des deux valeurs de position n, les entrées suivantes: xn, yn et Rn-1 (la retenue de l'addition des deux valeurs de la position n-1).

13

Ceci nous donne le circuit logique suivant :

- Le décodeur Un décodeur k bits possède k entrées et 2k sorties. La sortie dont le numéro est donné par les entrées est active (valeur 1) alors que toutes les autres sorties sont inactives (valeur 0).

14

- Le multiplexeur Un multiplexeur k bits permet de sélectionner une entrée parmi 2k disponibles. Un multiplexeur k bits a k + 2k entrées et une seule sortie. Les k premières entrées A0,…,Ak-1 sont appelées bits d'adresses car elles donnent le numéro de l'entrée à sélectionner parmi les entrées B0,…,B2

k-1. La sortie S est alors égale à cette entrée sélectionnée.

Par exemple, le multiplexeur 2 bit a donc 6 entrées A0, A1, B0, B1, B2 et B3 et une seule sortie S. La formule donnant la sortie S en fonction des entrées est la suivante.

S = (A1 . A0 . B3) + (A1 . ¬A0 . B2) + (¬A1 . A0 . B1) + (¬A1 . ¬A0 . B0)

Caractéristiques en tension : Les entrées et les sorties d’un circuit logique sont représentée sous forme de tension. Ci-dessous quelques caractéristiques d’un circuit logique en tension :

- Vih (Voltage Input High) : Il s'agit de la tension (voltage) d'entrée (Input) à partir de laquelle le circuit logique considère qu'un niveau logique "1" (High) lui est appliqué

- Vil (Voltage Input Low) : C'est la tension d'entrée limite jusque laquelle le circuit considère qu'un niveau logique "0" (Low) lui est appliqué

- Voh (Voltage Output High) : C'est la tension de sortie (Output) du circuit logique, à partir de laquelle on considère qu'un niveau logique "1" est délivré.

- Vol (Voltage Output Low) : c'est la tension de sortie limite en dessous de laquelle on considère qu'un niveau logique "0" est délivré.

- Immunité au bruit ou marge de bruit : C'est une marge de protection qui évite qu'une perturbation (un parasite par exemple) ne change le niveau de sortie de la porte logique. Elle correspond à la différence entre Voh et Vil d'une part et entre Vih et Vil

15

d'autre part. Plus cette marge est importante, et plus le circuit peut être utilisé dans un milieu parasité.

- Tension de déchet : C'est la différence de tension entre la tension théorique correspondant respectivement au niveau logique "1" ou au niveau logique "0" et la tension réelle.

Technologiquement, il existe actuellement deux familles prépondérantes de circuits de logique qui correspondent à deux techniques différentes de réalisation sous forme intégrée. Ces deux technologies sont la famille des circuits logiques TTL (Transistor-Transistor Logic) et la famille des circuits logiques CMOS (Complementary Metal Oxide Semi-conductor). Parmi les avantages de ces deux familles, nous retiendrons la faible consommation statique et la grande impédance d'entrée (~109) des CMOS, ainsi que la rapidité de la famille TTL. Transistor-Transistor Logic ou TTL est une famille de circuits logiques utilisée en électronique inventée dans les années 1960. Cette famille est réalisée avec la technologie du transistor bipolaire et tend à disparaître du fait de sa consommation énergétique élevée (comparativement aux circuits CMOS). La technologie TTL est normalisée pour une tension d'alimentation de 5 V. Un signal TTL est défini comme niveau logique bas entre 0 et 0,5 V, et comme niveau logique haut entre 2,4 V et 5 V (ces niveaux varient légèrement entre les différentes séries). L'alimentation des circuits TTL doit être précise : +5 V +-5 %, en comparaison aux circuits CMOS qui ont, eux, une plage de tension d'alimentation bien plus vaste (de +3 à +18 V). La technologie CMOS, ou Complementary Metal Oxide Semiconductor, est une technologie de fabrication de composants électroniques et, par extension, l'ensemble des composants fabriqués selon cette technologie. À l'instar de la famille Transistor-Transistor logic (TTL), ces composants sont en majeure partie des portes logiques (NAND, NOR, etc.) mais peuvent être aussi utilisés comme résistance variable.

ii. Circuits programmables

o Microcontrôleur Un microcontrôleur (en notation abrégée µc, ou uc ou encore MCU en Anglais) est un circuit intégré qui rassemble les éléments essentiels d'un ordinateur : processeur, mémoires (mémoire morte pour le programme, mémoire vive pour les données), unités périphériques et interfaces d'entrées-sorties. Les microcontrôleurs se caractérisent par un plus haut degré d'intégration, une plus faible consommation électrique, une vitesse de fonctionnement plus faible (de quelques mégahertz jusqu'à plus d'un gigahertz)

16

et un coût réduit par rapport aux microprocesseurs polyvalents utilisés dans les ordinateurs personnels. Par rapport à des systèmes électroniques à base de microprocesseurs et autres composants séparés, les microcontrôleurs permettent de diminuer la taille, la consommation électrique et le coût des produits. Ils ont ainsi permis de démocratiser l'utilisation de l'informatique dans un grand nombre de produits et de procédés. Les microcontrôleurs sont fréquemment utilisés dans les systèmes embarqués, comme les contrôleurs des moteurs automobiles, les télécommandes, les appareils de bureau, l'électroménager, les jouets, la téléphonie mobile, etc.

Le processeur est l'élément central d'un système informatique : il interprète les instructions et traite les données d'un programme. Il a besoin de certains éléments externes pour fonctionner :

- une horloge pour le cadencer - de la mémoire pour stocker les variables durant l’exécution du programme (mémoire

vive RAM) et le programme d’une mise sous tension (mémoire morte ROM). - des périphériques (pour interagir avec le monde extérieur).

Ces éléments sont reliés par 3 bus :

- le bus d'adresse qui permet au microprocesseur de sélectionner la case mémoire ou le périphérique auquel il veut accéder pour lire ou écrire une information (instruction ou donnée) ;

- le bus de données qui permet le transfert des informations entre les différents éléments ; ces informations seront soit des instructions, soit des données en provenance ou à destination de la mémoire ou des périphériques ;

- le bus de contrôle qui indique si l'opération en cours est une lecture ou une écriture, si un périphérique demande une interruption pour faire remonter une information au processeur, etc.

17

Traditionnellement, ces composants sont intégrés dans des circuits distincts. Le développement d'un tel système à base de microprocesseur se trouve donc pénalisé par :

- la nécessité de prévoir l'interconnexion de ces composants (bus, câblage, nappes de connexion) ;

- la place occupée physiquement par les composants et les moyens d'interconnexion ; - la consommation énergétique ; - la chaleur dégagée ; - le coût financier.

Les microcontrôleurs améliorent l'intégration et le coût (lié à la conception et à la réalisation) d'un système à base de microprocesseur en rassemblant ces éléments essentiels dans un seul circuit intégré. Un microcontrôleur est donc un composant autonome, capable d'exécuter le programme contenu dans sa mémoire morte dès qu'il est mis sous tension. Selon les modèles et les conditions de fonctionnement, les microcontrôleurs peuvent avoir besoin de quelques composants externes (quartz, quelques condensateurs, parfois une ROM), mais ceci reste très limité. Un microcontrôleur intègre sur un unique circuit intégré :

- un processeur (CPU), avec une largeur du chemin de données allant de 4 bits pour les modèles les plus basiques à 32 ou 64 bits pour les modèles les plus évolués ;

- de la mémoire vive (RAM) pour stocker les données et variables ; - de la mémoire morte (ROM) pour stocker le programme. Différentes technologies

peuvent être employées : EPROM, EEPROM, mémoire flash (la plus récente) ; - souvent un oscillateur pour le cadencement. Il peut être réalisé avec un quartz, ou

un circuit RC ; - des périphériques, capables d'effectuer des tâches spécifiques. On peut mentionner

entre autres : o les convertisseurs analogiques-numériques (CAN) o les convertisseurs numériques-analogiques (CNA) o les générateurs de signaux à modulation de largeur d'impulsion (MLI, ou en

anglais, PWM pour Pulse Width Modulation), o les timers/compteurs (compteurs d'impulsions d'horloge interne ou

d'événements externes), o les chiens de garde (watchdog), (pour s'assurer qu'un automate ou

un ordinateur ne reste pas bloqué à une étape particulière du traitement qu'il effectue. C'est une protection destinée généralement à redémarrer le système, si une action définie n'est pas exécutée dans un délai imparti.)

o les comparateurs (comparent deux tensions électriques), o les contrôleurs de bus de communication.

Le fonctionnement des périphériques peut être paramétré et commandé par le programme et/ou les entrées-sorties. Les périphériques peuvent générer une interruption qui contraint le processeur à quitter le programme en cours pour effectuer une routine de traitement de l’interruption, lorsque l’événement qui la déclenche survient. Les microcontrôleurs peuvent généralement se placer dans un état de sommeil, dans lequel ils présentent une très faible consommation électrique. Un signal envoyé par l'un de leurs périphériques (timer, broche d'entrée-sortie, watchdog, etc.) permet de les faire sortir de cet état de sommeil.

18

Certains microcontrôleurs ont un nombre très restreint de broches, si bien qu'une broche donnée peut correspondre à plusieurs périphériques internes. La fonction choisie doit alors être sélectionnée par logiciel. Le choix des périphériques à intégrer dans un microcontrôleur est délicat. Les fabricants doivent réaliser un compromis entre des besoins contradictoires : utiliser des fréquences élevées, réduire la taille du circuit, apporter des fonctionnalités nombreuses, élaborer une architecture flexible, assurer des coûts modérés, etc. Un microcontrôleur peut effectuer la plupart des instructions machine habituelles, avec certaines restrictions liées à son caractère embarqué (taille restreinte des mots machine, petite taille disponible, etc.). On note cependant quelques particularités. Les capacités mathématiques sont en général particulièrement limitées, réduites à des additions, soustractions et décalages sur des octets pour les plus simples d'entre eux. Les calculs mathématiques évolués doivent donc être ramenés à une succession d'opérations simples portant seulement sur des octets. Des routines mathématiques (petits programmes permettant de réaliser les calculs complexes) ont été développées pour la plupart des microcontrôleurs populaires. Les instructions d'entrée-sortie sont bien développées, de façon à pouvoir :

- lire l'état d'un port d'entrée ; - écrire une information dans le registre d'un port de sortie, qui maintient l'information à

la disposition des circuits extérieurs. Les microcontrôleurs disposent généralement de nombreuses instructions destinées aux opérations sur les bits, de façon à rendre les programmes plus compacts, notamment lorsqu'ils agissent sur une entrée-sortie donnée. Ainsi, un processeur généraliste peut avoir besoin de plusieurs instructions pour tester la valeur d'un bit d'un registre et effectuer un saut si le bit vaut vrai. Cette fonction courante est assurée par une seule instruction dans certains microcontrôleurs. Les modes d'adressage utilisables sont en général semblables à ceux des autres processeurs. De façon générale, les instructions et modes d'adressage disponibles varient fort selon les familles de microcontrôleurs. Les microcontrôleurs représentent la plus grosse partie des ventes dans le marché des microprocesseurs. En effet, un foyer moyen d'un pays développé est susceptible d'être équipé de seulement un ou deux microprocesseurs généralistes (ordinateurs), mais d'une ou deux douzaines de microcontrôleurs (appareils électroménagers). Une automobile de milieu de gamme est équipée d'au moins 50 microcontrôleurs Le programme d'un microcontrôleur est généralement appelé micrologiciel ou microprogramme. À l'origine, les microcontrôleurs se programmaient en assembleur. Fortement bas niveau (et donc, intrinsèquement optimisé), l'assembleur posa et pose toujours d'énormes problèmes pour la maintenance et l'évolution des logiciels embarqués. Désormais, on utilise de plus en plus des langages de haut niveau, notamment le langage C Des simulateurs sont disponibles pour certains microcontrôleurs, comme l'environnement MPLAB de Microchip. Les développeurs peuvent ainsi analyser le comportement du microcontrôleur et du programme, comme s'il s'agissait du composant réel. Une fois le programme compilé, le fichier binaire doit être envoyé au microcontrôleur. On utilise soit :

19

- un programmateur, pour microcontrôleurs et souvent également d’EEPROM. On parle alors de programmateur universel.

- un programmateur ISP qui a l'avantage de ne pas nécessiter de sortir le microcontrôleur du système électronique complet. Ce type de programmation pourra se faire via le bus de communication standard JTAG ou un autre bus, souvent propriétaire (Microchip par ex. avec sa série PIC16F) et, malheureusement, inadapté au test des cartes lors de la phase de production.

o DSP Un DSP (de l'anglais « Digital Signal Processor », qu'on pourrait traduire par « processeur de signal numérique » ou « traitement numérique de signal ») est un microprocesseur optimisé pour exécuter des applications de traitement numérique du signal (filtrage, extraction de signaux, etc.) le plus rapidement possible . Les DSP sont utilisés dans la plupart des applications du traitement numérique du signal en temps réel. On les trouve dans les modems (modem RTC, modem ADSL), les téléphones mobiles, les appareils multimédia (lecteur MP3), les récepteurs GPS... Ils sont également utilisés dans des systèmes vidéo, les chaînes de traitement de son, partout où l'on reçoit un signal complexe que l'on doit modifier à l'aide du filtrage. Un DSP fournit des instructions usuelles comme la multiplication, l'addition, la soustraction, etc. Mais le jeu d'instruction d'un DSP est aussi optimisé de façon à exécuter des opérations très courantes dans les algorithmes de traitement de signal les plus usuels. Les DSP sont aussi fortement optimisés pour exécuter des boucles le plus rapidement possible. En effet, il n'est pas rare que les programmes de traitement du signal utilisent des boucles, notamment pour parcourir des tableaux. Accélérer ces boucles est donc un enjeu majeur de la conception des DSP. Les DSP sont capables de gérer des boucles FOR en un seul cycle d'horloge. Les DSP supportent souvent des modes d'adressages assez particuliers, qu'on ne retrouve pas sur les autres jeux d'instructions.

20

L'accès à la mémoire est aussi particulièrement optimisé sur les DSP. Nos DSP sont en effet capables d'effectuer plusieurs accès mémoires simultanés. Ils peuvent ainsi effectuer plusieurs lectures ou écritures en parallèle. Pour gérer ces accès mémoires simultanés, un DSP est souvent relié à plusieurs mémoires, ou à des mémoires multiports. Un DSP est un processeur dont l'architecture est optimisée pour effectuer des calculs complexes en un cycle d'horloge, mais aussi pour accéder très facilement à un grand nombre d'entrées-sorties (numériques ou analogiques). Il possède aussi quelques caractéristiques assez spécialisées :

- Seulement des processus parallèles, pas de multitâche. Des contraintes sont imposées car les DSP n'ont qu'une gestion rudimentaire des interruptions quand ils en ont une.

- La possibilité d'être utilisé comme un périphérique accédant directement à la mémoire dans un environnement hôte.

- Peut acquérir les données numériques d'un convertisseur analogique-numérique (CAN ou ADC), appliquer un traitement à ces données et les restituer au monde extérieur grâce à un convertisseur numérique-analogique (CNA ou DAC).

- Pas de mémoire virtuelle, pour diminuer les couts de fabrication et la latence des accès mémoires.

Les DSP peuvent être combinés avec d'autres composants dans le même boîtier. Par exemple, un ou plusieurs DSP peuvent être combinés avec un microprocesseur classique et des convertisseurs ADC et DAC. Ce type d'assemblage (circuits intégrés dédiés) permet de réduire les coûts dans des fabrications de grande série. Dans un appareil équipé de DSP, la vitesse d'exécution des calculs dans le DSP est généralement la partie déterminante de la vitesse d'exécution du travail effectué par la machine. Il s'agit souvent de programmes très courts, de quelques centaines de lignes au maximum dont certaines parties (boucles) doivent être optimisées au maximum. C'est pourquoi beaucoup de programmeurs de DSP utilisent l'assembleur et analysent en détail le schéma d'exécution du code par la machine. Cependant, certains DSP ont une architecture tellement complexe qu'il devient long et difficile pour le programmeur d'optimiser manuellement l'exécution. Il peut alors écrire son programme en C et laisser au compilateur le soin de réaliser l'optimisation du code. S'il le souhaite, le programmeur pourra alors analyser le code généré par le compilateur et y apporter les dernières retouches permettant d'obtenir du DSP la meilleure performance possible. Le choix entre ces deux langages se fera donc en fonction de la complexité du programme, de la vitesse de traitement souhaitée, du nombre de programmeurs qui travailleront sur le projet et du coût du produit. D'autres facteurs comme l'expérience personnelle et les outils que propose le constructeur doivent aussi être considérés.

21

o FPGA 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 et bascules logiques librement connectables (c'est justement la reconfiguration, ou programmation, du composant qui définit les connexions faites entre portes logiques). Les FPGA (Field Programmable Gate Arrays ou "réseaux logiques programmables") sont des composants VLSI (Very Large Scale Integration: circuits intégrés à très haut niveau d'intégration) entièrement reconfigurables ce qui permet de les reprogrammer à volonté afin d'accélérer notablement certaines phases de calculs. L'avantage de ce genre de circuit est sa grande souplesse qui permet de les réutiliser à volonté dans des algorithmes différents en un temps très court. Le progrès de ces technologies permet de faire des composants toujours plus rapides et à plus haute intégration, ce qui permet de programmer des applications importantes. Les circuits FPGA sont constitués d'une matrice de blocs logiques programmables entourés de blocs d'entrée sortie programmable. L'ensemble est relié par un réseau d'interconnexions programmable. Les FPGA sont bien distincts des autres familles de circuits programmables tout en offrant le plus haut niveau d'intégration logique. L'avantage des FPGA est de pouvoir être configuré sur place, sans envoi du circuit chez le fabricant, ce qui permet de les utiliser quelques minutes après leur conceptions. Les FPGA les plus récents sont configurables en une centaine de millisecondes. La plupart des grands FPGA modernes sont fondés sur des cellules SRAM aussi bien pour le routage du circuit que pour les blocs logiques à interconnecter. Un bloc logique est de manière générale constitué d'une table de correspondance (LUT ou Look-Up-Table) et d'une bascule (Flip-Flop en anglais). La LUT sert à implémenter des équations logiques ayant généralement 4 à 6 entrées et une sortie. Elle peut toutefois être considérée comme une petite mémoire, un multiplexeur ou un registre à décalage. Le registre permet de mémoriser un état (machine séquentielle) ou de synchroniser un signal (pipeline). Les blocs logiques, présents en grand nombre sur la puce (de quelques milliers à quelques millions en 2007) sont connectés entre eux par une matrice de routage configurable. Ceci permet la reconfiguration à volonté du composant, mais occupe une place importante sur le silicium et justifie le coût élevé des composants FPGA. Afin de pouvoir finaliser un FPGA, il est nécessaire d'utiliser un langage de description matériel ou bien un outil de saisie graphique. Après compilation de cette description, on obtient un fichier de configuration pour le FPGA choisi. VHDL et Verilog sont les deux langages de description les plus répandus.

22

o CPLD Les CPLD (Complex Programmable Logic Device), de conception plus ancienne, utilisent des « macrocellules » logiques, composées d'un réseau combinatoire de portes ET et OU afin d'implémenter des équations logiques. Des bascules sont disponibles seulement dans les blocs d'entrée-sortie. Un composant contient de quelques dizaines à quelques centaines de macrocellules. Comme le routage est fixe, les temps de propagations sont bornés et permettent une fréquence de fonctionnement élevée et indépendante du design. Par contre, l'utilisation des ressources n'est pas optimale (tout terme non utilisé dans une équation logique équivaut à des portes perdues), avec des taux d'utilisation d'environ 25 %. Comparés aux FPGA, les PLD contiennent un nombre relativement petit de portes logiques et les fonctions implémentables sont plus petites et plus simples

o ASIC Un ASIC (acronyme de l'anglais Application-Specific Integrated Circuit, littéralement « circuit intégré propre à une application », ou bien circuit intégré développé pour un client) est un circuit intégré spécialisé. En général, il regroupe un grand nombre de fonctionnalités uniques ou sur mesure. Les circuits ASIC regroupent tous les circuits dont la fonction peut être personnalisée d'une manière ou d'une autre en vue d'une application spécifique, par opposition aux circuits standards dont la fonction est définie et parfaitement décrite dans le catalogue de composants. Les ASIC sont conçus pour une tâche bien précise et cela leur permet d'être plus petits, moins chers, plus rapide et de consommer moins de puissance. D'une manière générale l'utilisation d'un ASIC conduit à de nombreux avantages provenant essentiellement de la réduction de la taille des systèmes. Il en ressort :

• Réduction du nombre de composants sur le circuit imprimé. La consommation et l'encombrement s'en trouvent considérablement réduits.

• Le concept ASIC par définition assure une optimisation maximale du circuit à réaliser. Nous disposons alors d'un circuit intégré correspondant réellement à nos propres besoins.

• La personnalisation du circuit donne une confidentialité au concepteur et une protection industrielle.

• Enfin, ce type de composant augmente la complexité du circuit, sa vitesse de fonctionnement et sa fiabilité.

Dans l'approche des circuits personnalisés, l'inconvénient majeur réside dans le fait du passage obligatoire chez le fondeur ce qui implique des frais de développement élevés du circuit.

iii. Mémoires : SRAM, DRAM, FLASH EPROM, …. Une mémoire est un élément de stockage d'information. Les bits stockés sont organisés en forme de matrice: la dimension de la mémoire est donnée par le nombre de lignes fois la largeur de la ligne. Chaque ligne de la mémoire est appelée un mot. Elle est identifiée par une adresse (numéro de la ligne). Le nombre de lignes est toujours une puissance de deux. Deux opérations sont possibles, toujours sur un mot complet: la lecture (read) et l'écriture (write).

23

Il existe deux grands types de mémoire: - RAM (random-access memory): mémoire volatile

o Statique (SRAM): l'information est conservée tant que la tension d'alimentation est présente

o Dynamique (DRAM): il faut recharger (rafraîchir) périodiquement les cellules de mémoire pour conserver les données

- ROM (read-only memory): mémoire non volatile o mask: le contenu est initialisé au moment de la fabrication et ne peut plus être

modifié o PROM (programmable ROM) ou OTP ROM (one-time programmable): le

contenu peut être modifié une fois par l'utilisateur, à l'aide d'un équipement spécialisé

o EPROM (erasable PROM): le contenu peut être effacé et modifié plusieurs fois

o UV EPROM: le contenu est effacé par des rayons ultra-violets (plusieurs minutes)

o EEPROM (electrically EPROM) ou E2PROM: le contenu est effacé électriquement (quelques millisecondes)

o Flash: le contenu est effacé électriquement et plus rapidement que sur les EEPROM

iv. Système sur puce (SoC)

Un système sur une puce, également souvent désigné dans la littérature scientifique par le terme anglais system on a chip ou son abréviation SoC, est un système complet embarqué sur une seule puce, pouvant comprendre de la mémoire, un ou plusieurs microprocesseurs, des périphériques d'interface, ou tout autre composant nécessaire à la réalisation de la fonction attendue. On peut intégrer de la logique, de la mémoire (statique, dynamique, flash, ROM, PROM, EPROM, EEPROM), des dispositifs mécaniques (capteurs), électroniques, chimiques ou biologiques ou des circuits radio. Ils permettent une réduction des coûts, une adaptation fine des composants et une réduction de la consommation. Ils nécessitent la cohabitation de technologies incompatibles et la collaboration de compétences variées.

24

3. Composants logiciels

a. Système d’exploitation

b. Langage de développement i. Assembleur

ii. Langages séquentiels (C, C++, Fortran, VHDL…)

iii. Langages concurrents de haut niveau (java, ada,

C#,…)

c. Outils et environnements de développements

d. Outils de simulation

4. Lien entre le matériel et le logiciel (le Codesign)