De nos jours , un microcontrôleur genre PIC permet de réaliser des instructions de programme,avec une vitesse d'horloge relativement lente (l'horloge est divisé par 4 a l'intérieur du Pic) , ce qui est finalement assez peu rapide pour des applications vidéo notamment. Quant on vaut faire du multitâches (opération a exécuter en parallèle) l'horloge d'un système a microcontrôleur est ralentit considérablement,d'ou l'idée d'utiliser des circuits puissants , dans lesquels s'amassent des portes logiques (des milliers , voire des millions !) repartit en deux familles : CPLD (Complex Programmable Logic Device ) & FPGA (Field Programmable Gate Array).
Un système a microcontrôleur exécute son programme , ligne après ligne , avec des CPLDs-FPGAs il faut considérer que ce sont des éléments logiques (entity) qui s'interconnectent entre eux et qui fonctionnement en même temps (concurrent)!
Un CPLD maintient sa configuration de portes dans le composant lui même (eeprom )
Un FPGA maintient sa configuration de porte dans une mémoire externe ,car chaque cellule d'un FPGA est une cellule SRAM ,cette mémoire externe est assez spécifique pour chaque constructeur.On peut également en phase de développement se passer de cette mémoire et faire tourner l'application en RAM (volatile) .
Avantages des CPLD-FPGA:
Une
rapidité redoutable , pas de division d'horloge notamment
, un petit CLPD d'ALTERA de la série MAX7000 permet des vitesse
supérieure a 150Mhz !
Une exécution
de multitude de taches a exécuter en Même temps , c'est
a mon sens le plus gros avantage , un CPLD est rythmé par
une seule horloge en général , qui est 'distribué' a chaque élément
a exécuter !
Inconveniants des CPLD-FPGA
Peu de
ressources internes , Ram notamments (un FPGA peut en avoir), un
CPLD étant un jeu de portes logiques de base par essence même (un
jeu de NAND et NOR permet de refaire n'importe quel systèmes numérique
de calcul , et Même un uc : de la RAM peut s'envisager par un
jeu de bascules)
Les gros
CPLDs se présentent souvent en boîtier CMS très petit ,
l'espacement entre les pattes devient un problème d'avenir pour
nous les Amateurs , ceci dit il existe des petit CPLD qui se présente
en boîtier PLCC , donc très bien pour nous.
La
distribution dans le milieu Grand public , tout le monde n'est
pas du métier (comme moi d'ailleurs), voir chez les
distributeurs sérieux (RS,FARNELL etc...)
Par rapport
a un microcontrôleur , peu de ressources disponibles (exemple
convertisseur A/D ) , néanmoins des ressources peuvent s'implémenter
(port série , spi , etc...)
Comment on cause a ces composants ?

comme tout composants qui se programme , il faut un langage de programmation , le VHDL est le langage qui permet de décrire le comportement du CPLD-FPGA .comme tout programme , il faut le compiler , éventuellement le simuler , le résultat d'une compilation est un fichier qui est la configuration des portes du CPLD-FPGA. il faut ensuite un programmateur de composants.ca c'est l'aspect général , personnellement je travaille sur les circuits intégrés d'ALTERA , des CPLDs de la série MAX7000S (5V en boîtier PLCC).Ces composants se programme IN-SITU (sur la carte définitive) , via une interface standardisé (JTAG ) sur connecteur 10 points , une petite interface décrite par ALTERA (appelé le BYTEBLASTER) permet de relier un port imprimante d'un Pc au JTAG.ALTERA fourni un programme de développement complet , éditeur VHDL, compilateur, simulateur ,Programmateur etc...., appelé MAX PLUS II ou plus récent le logiciel QUARTUS II télechargeable sur le site ALTERA , et tout ca gratuitement svp...
L'interface JTAG(Joint Test Action Group)
c'est par la qu'on accède au CPLD d'ALTERA.Sur le circuit imprimé , physiquement elle se présente sous la forme d'un connecteur de 2 rangées de 5 contact mâle au pas de 2.54mm ,(genre HE10 10 points).par ce connecteur on amène la tension qui va a l'interface Byteblaster , et les signaux du Jtag lui même. Tck est l'horloge ,Tdi est les datas in , Tdo sont les datas Out, Tms est le sélecteur de registres.ci dessous le brochage du connecteur JTAG,au niveau du circuit imprimé sur lequel réside un CPLD-FPGA

Jtag est normalisé par l'IEEE (1149.1)
L'interface parallèle JTAG(BYTEBLASTER)
L'interface Byteblaster , le schéma est décrit sur le site d'ALTERA, et même a été repris dans la revue ELEKTOR (no 291 septembre 2002) , ou on peut se procurer le circuit imprimé , c'est ce que j'ai fait.Le circuit est très simple et fait appel a 1 seul composant actif (74HCT244) (photo & shéma attention gros fichier image)

Le langage VHDL
VHDL signifie :VHSIC (very high speed integrated circuit ) HARDWARE DEVELOPPEMENT LANGAGE. ( IEEE 1076 1087 1093 ) Je ne décrirai pas sur mon site le fonctionnement du VHDL, en cherchant sur le net , il y a tout ce qu'il faut . Personnellement , je me sert de bouquins universitaire .En gros ,on réalise des composants ( entity ) ,on définit son fonctionnement ( architecture ) , selon 3 méthodes (comportementale , flot de donnée , structurelle ).ces composants peuvent a leur tour être réutilisé dans d'autres composant , et ainsi de suite , de manière hiérarchisé.
Un point fort du VHDL est la portabilité du code ,on peut faire abstraction de la technologie .a noter que l'on se servir de composants déjà écrit par d'autres , c'est très tendance en ces temps de programmation orienté objet .on trouve des éléments a profusion sur le net , certain sont en 'open source' , pour certains on peut les reexploiter librement .
Un composant est décrit dans un fichier VHDL (extension .VHD) , lequel décrit le fonctionnement du composant, par exemple, ceci est un générateur de ligne TV 64us , (top ligne=4.7us,horloge 16 Mhz)

Un premier Prototype qui fonctionne

Une application est dispo ICI