Dans les systèmes intégrés, il est nécessaire de conserver en permanence des informations telles que du code de programmation et des données d’étalonnage afin qu'elles restent disponibles une fois le système hors tension. Pour cela, de nombreux dispositifs et technologies de mémoire (PROM, EPROM, EEPROM et mémoire flash, par exemple) peuvent être utilisés. Lorsque le dispositif de mémoire sort de l'usine de fabrication, il est vierge et doit donc être programmé avant que le système dans lequel il est installé puisse être utilisé.
Même si les microcontrôleurs de la génération actuelle intègrent généralement une mémoire flash et ont la capacité de reprogrammer de petits blocs de mémoire une fois leur code principal installé, un programmeur externe reste nécessaire pour programmer les dispositifs « vierges ».
D'autres circuits intégrés, dénommés par leur acronyme comme PAL, PLA, PLD, CPLD, GAL et FPGA, sont des appareils logiques programmables dans lesquels les données à stocker définissent un circuit logique combinatoire plutôt que des instructions logicielles ; ces appareils doivent également être programmés avant de pouvoir être utilisés. L'équipement nécessaire comporte différentes dénominations comme « programmeur d'appareil », « programmeur à puce », « programmeur pour circuit », « programmeur de CI » ou « graveur EPROM ». Mais quelle que soit la dénomination utilisée, il s'agit simplement d'un équipement servant à transférer des données sur des CI programmables.
Figure 1 : Programmeur universel pour les FPGA. (Source : Lattice Semiconductor)
On dénombre quatre grands types de programmeurs d'appareil :
1) Programmeurs de groupe : pour programmer plusieurs circuits dans une production à grande échelle.
2) Programmeurs universels : pour le développement et la production à petite échelle.3) Programmeurs de poche : programmeurs portables pour le développement et l'intervention sur le terrain.
4) Programmeurs spécialisés : pour certains types de circuit uniquement (programmeurs EPROM, par exemple).Dans cet article, nous allons plus particulièrement nous intéresser aux programmeurs universels, qui sont en mesure de programmer différents types d'appareil. C'est une caractéristique très utile car, au cours des dernières décennies (le premier programmeur EPROM est sorti en 1971), de nombreux appareils programmables différents, avec chacun leur propre mode de programmation, ont été commercialisés.
Les différentes méthodes de programmation suivent toutes une procédure de base : l'appareil à programmer est connecté au programmeur, soit en le branchant dans une prise sur le programmeur ou en connectant le programmeur à la carte de l'appareil au moyen d'un adaptateur. Les données sont ensuite transférées vers l'appareil en envoyant des signaux aux broches de connexion à l'aide de circuits à dispositif d'entraînement de broches.
Toutefois, au sein de cette procédure de base, il existe de nombreuses différences entre appareils. Tout d'abord, il n'existe pas une seule version standard pour les broches de programmation. Ensuite, certains appareils nécessitent des entrées série et d'autres des entrées parallèles. Les appareils fonctionnent sous différentes tensions d'alimentation et utilisent d'autres tensions pour la programmation.
Chaque broche d'E/S de programmeur universel doit donc être capable d'appliquer une tension allant de 0 à 25 V, une fréquence d'horloge de 40 MHz maximum et des entrées logiques avec des seuils ajustables. Sans parler du grand nombre de boîtiers proposés ! Ils sont généralement vendus avec des adaptateurs comme indiqué ci-dessous.
Figure 2 : Adaptateurs pour programmeur universel. (Source : Lattice Semiconductor)
Concernant les logiciels, le programmeur universel doit également prendre en compte plusieurs formats de fichier différents pour les données binaires (Motorola s-record, format HEX Intel, etc.). De nombreux fabricants proposent des programmeurs universels pour tous les appareils de leur ligne de produits et les concepteurs peuvent également obtenir des programmeurs universels compatibles avec les appareils d'autres fournisseurs. Un de ces appareils serait même compatible avec 92 000 appareils de 332 fabricants de CI !
Étant donné le nombre impressionnant de combinaisons possibles, un programmeur universel est l'outil indispensable des laboratoires qui utilisent différentes technologies de mémoire.