Ou le retour aux sources!
Je ne vais pas faire état dans ce billet de l'histoire d'un des plus fameux micro-processeurs que fût le Z80, et de toute sa lignée. Ce circuit n'intéresse plus aujourd'hui que les nostalgiques de la 'grande époque' et les 'rétro-gamers'.
http://en.wikipedia.org/wiki/Zilog_Z80 |
Bien que ce propos puisse quand même être tempéré puisque ce circuit, simple et rapide, peut trouver très avantageusement sa place au sein d'un FPGA, implémenté en tant que module IP. Il est très facile d'en insérer un certain nombre dans un même FPGA et ainsi, de créer des systèmes multi-tâches et très performants. Ceci est une autre histoire, peut-être une publication sur ce thème dans les prochains mois... Un petit exemple de ce qu'il est possible de faire à ce sujet : zx-spectrum-on-an-fpga
Non, je vais faire ici état des micro-contrôleurs de la famille Z8F. Précisons de suite que ces micro-contrôleurs n'ont rien à voir avec la famille Z80. L'architecture est différente ainsi que le jeu d'instruction. Par contre, et c'est un avis personnel, je trouve que la philosophie Zilog reste présente dans ces circuits, à savoir la simplicité d'utilisation. Ce qui ne veut absolument pas signifier qu'ils sont 'trop' simples ou archaïques, bien que ce soit des circuits 8 bits, mais fonctionnant à 20MHz pour certains modèles.
Au début, exista les micro-contrôleurs Z8E et l'émulateur 'in-circuit' associé :
Illustration provenant du site de RS. |
L'ensemble de la communication entre le système de développement et le PC hébergeant la partie logicielle se faisait par l'intermédiaire d'un simple port série. J'ai longtemps utilisé cet outil qui, grâce à sa facilité d'utilisation et le très faible coût des processeurs Z8E, m'a permis de résoudre bien des problèmes avec élégance.
Le seul grief qu'il était possible d'émettre à propos de ce système de développement, concernait le fait que ces processeurs étaient des circuits OTP, autrement dit : One Time Programmale. Donc, tout changement de version de programme s'accompagnait d'une mise au rebut du circuit et de la programmation d'un nouveau spécimen.
Sont alors arrivé, vers la fin des années 90, les Z8F, 'F' pour Flash!
Derniers nés de la famille (pas encore disponible le 10/2014) |
La philosophie de ces circuits reste exactement la même que les version Z8E, si ce n'est que, grâce à la flash intégrée au processeur, tout le système de programmation ET de débogage est intégré à la puce. Il n'est donc plus nécessaire de disposer d'un matériel 'conséquent' pour développer avec ces processeurs. De plus, l'ensemble de la communication avec l'outil de développement est réalisée par l'intermédiaire d'une seule connection sur le circuit, la patte DBG. Un adaptateur série, ou mieux USB, est alors requis pour relier simplement le processeur en cours de programmation à l'ensemble de l'application fournie par Zilog à savoir le logiciel 'Zilog Developer Studio II' ou ZDSII.
Interface opto-isolée de Zilog. |
Le coût de développement avec ce type de micro-contrôleur est extrêmement faible puisque le logiciel de développement est toujours gratuit et qu'une interface Xtools de Zilog est facturée 24,86 € HT chez Mouser au 15 octobre 2014 (réclame gratuite), Farnell ne disposant pas d'autant de références...
Une version 'simple' de l'interface de programmation de Zilog fournie avec les premières versions du Kit de développement sur base de processeurs Z8F. L'interface proposée était alors le port RS232 :
Étant acquis qu'il est possible de développer à moindre coût avec ce type de circuit, voyons ce qu'ils proposent. Voici l'exemple du Z8F6423, gros circuit de la série Z8F :
Origine : Zilog |
- 20MHz eZ8 microprocessor core
- 64KB Flash program memory
- 4KB register SRAM
- 12-channel 10-bit A/D converter
- Four 16-bit timers with PWMs, plus capture and compare capability
- 60 general-purpose I/Os, depending on package type
- 24 vectored interrupts
- Power-On Reset (POR) and Voltage Brown-Out (VBO)
- Full-duplex SPI and I2C, plus 2 UART ports with IrDA encoder/decoder
- On-chip debug with break and trap capability
- 3.0V to 3.6V voltage range
- Standard (0°C to 70°C) and extended (-40°C to 105°C) temperature range
- Available in 80-pin QFP package
Par opposition, voici les caractéristiques du plus petit processeur de la gamme, le Z8F0113 :
Origine : Zilog |
- 5.5MHz eZ8 microprocessor core
- 1KB Flash program memory
- 1KB register SRAM
- 5.5MHz Internal Precision Oscillator
- Two 16-bit timers with PWMs and capture and compare capability
- Up to 24 general-purpose I/Os
- Power-On Reset (POR) and Voltage Brown-Out (VBO)
- UART port with IrDA encoder/decoder
- On-chip debug with break and trap capability
- 2.7V to 3.6V voltage range
- Standard (0°C to 70°C) and extended (-40°C to 105°C) temperature range
- Available in 8-pin QFN, 8, 28 and 20-pin SOIC, 20 and 28-pin SSOP and 8, 20 and 28-pin PDIP packages
Une fois passée la découverte...
Le kit de développement est toujours produit par Zilog et est disponible sur commande chez Mouser à 33,16€ HT, mais plus chez Farnell. Ce kit est donc proposé à prix tout à fait abordable. Et, si par hasard il se trouvait à ne plus être disponible, il est très facile d'en réaliser, avec peut-être plus de périphériques intéressants que celui créé par Zilog, à savoir une horloge temps réel et une FRAM série comme sur cet exemple :
Ne cherchez pas le site http://www.electrodiy.net, il n'existe plus. |
Une fois les solutions techniques validées et définitivement adoptées, il devient aisé de passer à la pré-production, sachant que la connection à réaliser avec l'ordinateur de développement se résume au strict minimum, le signal série et la référence :
Carte pré-ampli haute qualité commandable par signal IR et codeur rotatif. |
Bilan :
Cette série de micro-contrôleurs de chez Zilog n'a jamais trouvé sa place auprès des amateurs. Personnellement, je n'ai pas d'explications à ce fait. Certes, la fréquence de fonctionnement de 20Mhz peut paraître faible, mais au début des années 90, elle se situait dans la bonne moyenne. Ces circuits sont facilement maîtrisables, comparés aux ARM par exemple. Ils possèdent relativement peu de registres, la programmation C se fait sans difficulté et l'accès aux instructions en assembleur se fait 'au fil de l'eau' avec l'aide du logiciel de développement.
Au fil des recherches sur le 'net', il est même possible de trouver des ressources permettant de programmer plus facilement les registres les plus 'délicats' du processeurs , à savoir les timers :
La ressource se situe ici : timer-calculator. Le code généré devant être éventuellement adapté au processeur utilisé.
Évidemment, d'autres familles de micro-contrôleurs existent comme les très intéressants circuits de la famille MSP430 de Texas Instruments. Mais la politique commerciale de cette entreprise concernant les outils de développement est discutable. Je peux comprendre que Texas-Instruments ne veuille pas casser le marché des société tierces fournissant des outils de programmations, mais en tant qu'utilisateur de circuits programmables de ce genre, la seule chose qui m'intéresse est de pouvoir les programmer avec le moins de contraintes possibles.
D'autres fabricants limitent les fonctionnalités de leur logiciel en possibilités d'optimisation du code. Cela peut se comprendre. Après-tout, si le besoin s'en fait sentir, le développeur peut acquérir une licence et ainsi profiter de toute la puissance de l'outil. Limiter la taille du code est une pratique que je juge archaïque et indigne, s'agissant de la considération du client.
Or donc, après une longue période d’inutilisation des ces micro-contrôleurs Zilog, j'ai décidé de m'y remettre. Ils permettent de faire tellement, de façon tellement efficace et en tellement peu de temps, que dès lors que la production rapide de matériels divers se fait sentir, ils (re)deviennent irremplaçables!