Projet Megatron

Le projet Megatron a vu initialement le jour après une étude sur le projet Gigatron, après avoir terminé l’étude sur Gigatron et la réalisation d’une simulation sur Logisim, plusieurs idées de modification, d’adaptation et d’ajout ont fait surface, ce qui a mené à la naissance de Megatron. En résumé Megatron est une miniaturisation de Gigatron, avec moins de portes logiques et un affichage sur écran d’appareils portables, comme les écrans des smartphones et les consoles portables.

En premier c’était Gigatron

En premier lieu le projet Gigatron était un projet a reproduire comme sujet de fin d’étude par l’étudiant Akram Chaoui, qui entre dans le cadre de la Conception Hardware. C’est une réalisation sur simulateur Logisim de la machine Gigatron TTL à partir de portes logiques en TTL, précisément à partir des très célèbres et largement disponibles (même en Algérie) les circuits de la série 74. La Particularité de ce projet c’est de construire une machine en absence de circuit complexe, qui ne contiennent pas de Processeur, ni de Microcontrôleur, ni d’aucun Contrôleur, mais seulement des portes logiques basiques (and, or, not…etc) et de la mémoire élémentaire (Registres, RAM, ROM), ce qui rend le projet académiquement très riche dans la manière de comprendre réellement comment une architecture fonctionne à l’intérieur au niveau des portes logiques. Vous pouvez visualiser toutes les séances de consultation (en langue Arabe) en vidéo sur les pages qui suivent.

Naissance de Megatron

Megatron est la petite sœur de Gigatron. Il s’agit d’une tentative de modification/minimisation de certains aspects matériels/logiciels de Gigatron. Megatron est basé sur Gigatron, un projet consistant à construire un ordinateur/console à base d’un ensemble de puces logiques élémentaires de la série TTL 74, sans utiliser de puce complexe telles que des processeurs, des microcontrôleurs, des contrôleurs graphiques/audio … etc. Le projet comprend deux parties: le matériel et le logiciel. Megatron est une tentative de modification et de minimisation du nombre de puces et la réduction du dispositif d’affichage (d’où le nom Megatron). Il est destiné à être utilisé avec de petits écrans tft portables, ajoutant ainsi une résolution plus élevée et une profondeur de couleur plus importante au lieu du VGA dans Gigatron. Il ajoute également une unité d’entrée/sortie spéciale pour gérer davantage de périphériques d’entrée/sortie, ce qui permet d’ajouter un clavier natif à Megatron. Le logiciel est censé être compatible avec Gigatron malgré certaines modifications de code obligatoires pour gérer l’unité d’entrée/sortie. Vous trouverez plus de détails ci-dessous et dans le site www.HackADay.io.

Simulation sur Logisim

Tout d’abord, le commencement était par la simulation, tout a été mis au point sur Logisim afin de bien comprendre le fonctionnement de Gigatron et de vérifier s’il est possible d’implémenter les différentes modifications. Trois simulations différentes ont été réalisées sur Logisim, leurs images sont en bas, et peuvent être téléchargés ici ou sur Github:

  • Le premier est Gigatron.circ, utilisé principalement à des fins académiques et pédagogiques. Il s’agit d’une version à logique simplifiée de Gigatron, dans laquelle la série 74 n’a pas été utilisée, mais des équivalents logiques simplifiés à la place. Cette version est pleine de mécanismes de débogage et de monitoring.
  • Deuxièmement, GigatronTTL.circ est une simulation plus précise où les puces logiques de la série 74 identiques ont été utilisées. Néanmoins, certaines parties de Gigatron ne peuvent pas être simulées sous Logisim en raison de leur nature analogique, comme les grilles de résistances/diodes utilisées dans l’unité de contrôle (UC), ainsi ils ont été remplacés par des circuits équivalents. De plus, dans certaines situations, Gigatron mélange l’ordre des bits dans certains registres, par souci de clarté, la simulation conserve l’ordre naturel des bits.
  • Troisièmement MegatronTTL.circ, une simulation précise de Megatron utilisant des puces de la série 74.
Giagatron sous Logisim
Gigatron TTL sur Logisim
Megatron TTL sur Logisim

Pour que la simulation fonctionne correctement, GigatronTTL.circ et MegatronTTL.circ ont besoin du fichier 74xx Library.circ dans le même répertoire pour fonctionner correctement. MegatronTTL.circ exige également que les 3 ROM (27c512) dans le circuit CU soient chargées consécutivement de haut en bas avec CU-datapath.ROM, CU-registers.ROM, CU-ALU.ROM dans le cas où ça ne serait pas déjà été fait automatiquement.

Deux programmes peuvent être exécutés sur les simulations Gigatron et Megatron, le programme de la suite de Fibonacci et la Factorielle. Pour exécuter le code machine, vous devriez charger dans la ROM de la machine aven le code machine du programme. Fibonacci est enregistré dans le fichier Fibonnaci.ROM et la Factorielle dans le fichier Factorial.ROM. Deux autres fichiers, Fibonnaci.txt et Factorial.txt, sont utilisés pour illustrer les programmes en langage assembleur, ça représente principalement une documentation pour expliquer l’algorithme dans les deux programmes.

Les deux programmes doivent avoir des valeurs d’entrée lors de l’exécution, la valeur d’entrée (exemple 3) doit être insérée dans le registre BUS-IN dans Gigatron, et KEYBOARD-IN dans Megatron, sans oublier que le registre IOC dans Megatron doit également être mis à 0x11 (ou 00010001b) indiquant que le clavier est le périphérique d’entrée principal. Le résultat des programmes est affiché dans le registre de sortie à la fin de l’exécution. Une exécution pas à pas peut également être effectuée en utilisant le mode « manuel » de l’horloge, toutes les informations des composants peuvent être surveillées par les afficheurs 7 segments associés. En plus, le contenu de la RAM peut être suivi en temps réel en utilisant la fenêtre de la RAM du simulateur.

Les modifications sur Megatron

Les modifications apportées à Megatron par rapport à Gigatron sont principalement destinées à réduire le nombre de composants afin de faciliter l’utilisation et l’implémentation, en plus d’améliorer certains aspects matériels, comme apporter une plus grande flexibilité pour l’ajout et la gestion des périphériques.

La liste de toutes les modifications apportées à Megatron sont comme suite :

  • La suppression de la VGA et la remplacer par des écrans de petite taille plus intelligents, offrant une résolution et une profondeur de couleur supérieures. En réalité, la VGA a imposé de lourdes contraintes à toute l’architecture, comme par exemple le fait que le grand temps de calcul passé par Gigatron est destiné à la génération des signaux VGA. Et aussi l’utilisation de la VGA à forcer l’utilisation d’une horloge à 6,25 MHz, ce qui (je suppose) a conduit à appliquer un pipeline non souhaitable dans Gigatron, et ainsi certaines manipulations matérielles supplémentaires non triviales pour se conformer aux contraintes temporelles du système.
  • Suppression du pipeline.
  • Doubler la capacité de RAM de 32 Ko à 64 Ko.
  • L’utilisation de l’UAL 74181 pour accélérer le calcul arithmétique/logique et aussi réduire le nombre de puces impliquées.
  • Le remplacement de la logique complexe existante de la CU (unité de contrôle) par 3 ROM (utilisées comme Look-up tables) a permis de créer un circuit plus simple et plus petit et une unité de contrôle reprogrammable plus flexible.
  • L’ajout d’une unité d’entrées/sorties appropriée mettant en œuvre un véritable gestionnaire de périphériques permettant l’ajout de plus de périphériques d’entrées/sorties.
  • L’ajout d’un clavier natif à Megatron et potentiellement à d’autres périphériques, comme une deuxième manette ou autres.

La partie Logicielle

Certains ajouts sont apportés au jeu d’instructions, en particulier les instructions responsables de l’unité d’entrée/ sortie. Vous trouverez plus de détails sur ces instructions et leur utilisation dans le PDF Instructions Set présenté ci-dessous.

Instructions-set

Le code devrait être compatible entre les deux machines Megatron et Gigatron, à l’exception des instructions d’entrée/sortie, elles doivent être supprimées pour Gigatron et ajoutées pour Magatron. L’instruction NOP après chaque instruction de saut n’est plus obligatoire dans Megatron, car le pipeline a été supprimé.

Ce n’est pas le cas pour l’instant, mais à l’avenir, l’utilisation d’un assembleur et d’une pile logicielle différente de celle de Gigatron serait envisageable.

Implémentation physique

La réalisation physique est en cours d’avancement, le datapath dans sa totalité est terminé et vous pouvez le voir sur l’image en bas, j’ai fait un petit test en exécutant pas à pas une instruction. Il reste l’unité de contrôle et sa micro-programmation, et les unités d’entrées/sorties.

Autres liens pour le projet

Les liens pour tous les vidéos de consultation du projet

Les pages qui suivent contiennent les vidéos des séances de consultation sur les deux projets Gigatron et Megatron

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.