Implémentation d’un processeur à l’aide de 555 temporisateurs et d’une synthèse logique

Il y a beaucoup de commentaires sur ces pages ici du type « Pourquoi avez-vous utilisé un microcontrôleur, alors que vous auriez pu facilement utiliser une minuterie 555 ! » Et, oui, nous sommes parfois d’accord avec le sentiment, mais quand un commentaire fortuit vu par l’utilisateur de Hackaday.io [Tim Böscke] suggéré de le retourner et de construire un microcontrôleur à partir de 555 minuteries, le gant était bel et bien renversé. Maintenant, soyons clairs, ce n’est pas la première fois que nous rencontrons cette idée, il y avait une construction basée sur la maquette 555 il y a dix ans, mais c’est la première fois que nous le voyons faire en tirant parti de la synthèse open source ciblant un PCB !

Le premier élément logique était un simple onduleur, construit en attachant les broches TRIGger et THReShold ensemble.

Modèle LTSpice d’une porte NAND implémentée avec 555 et diodes

À partir de là, il s’agissait simplement d’ajouter quelques réseaux de résistances à diodes à l’entrée, pour effectuer une porte NAND2 et une porte NOR2. Le développement a été un peu accéléré en modélisant les circuits logiques dans LTSpice, pour trouver la meilleure combinaison de valeurs de pièces. A partir de ces éléments simples, toutes les autres fonctions logiques pourraient être implémentées. Ensuite, un élément de mémoire était nécessaire. Par chance, le 555 a une bascule RS dans son circuit, alimentée par deux entrées de comparateur. Il suffisait de polariser l’entrée THRS à Vdd/2, puis d’alimenter les données via un transistor de passage, et hop ! un loquet réparable, quoique lent.

[Tim] a précédemment créé un processeur minimaliste appelé MCPU, avec seulement quatre instructions, conçu pour s’adapter à un FPGA à 32 macrocellules, a donc pu réutiliser cette conception pour ce projet. La partie amusante était de tirer parti de la chaîne d’outils PCBFlow [Tim] maintient, qui implémente un flux de synthèse Yosys avec un backend de lieu et de route personnalisé (PnR). Un dossier de liberté a été réalisé décrivant les circuits (macrocellules) [Tim] voulu utiliser, puis un script de synthèse a implémenté le flux à l’aide de Yosys/GHDL pour élaborer la conception, la mapper dans la technologie définie précédemment et rédiger une liste d’interconnexions que l’outil PnR pourrait utiliser. Utilement, Yosys écrit également un PDF de la conception ainsi qu’une netlist d’épices. Quel outil !

L’outil PnR [Tim] créé pour PCBFlow a été écrit en python et génère le format XML qu’Eagle peut utiliser. Son travail consiste à placer les macrocellules (délibérément carrées) en recherchant le circuit physique approprié, y compris tous les passifs, en les déposant dans le PCB, en ajoutant les interconnexions, puis en optimisant la disposition à l’aide d’un recuit simulé, en optimisant pour une longueur de trace minimale. Nous pensons que le résultat est assez élégant et que l’approche peut facilement être réutilisée pour d’autres projets à l’avenir.

Merci [YGDES] pour l’avoir envoyé !