SOMMAIRE

 

1) GENERALITES 
1.1) Principe du projet
1.2) Caractéristiques
1.3) Ma vision du projet

2) HARDWARE
2.1) Carte de développement
2.2) Verilog, schéma global
2.3) Verilog, coeur CPU
2.4) Verilog, Vidéo VGA
2.5) Verilog, périphériques

3) OUTILS DEVELOPPEMENT SOFTWARE
3.1) Généralités
3.2) Langage A2Z Basic
3.3) Compilateur
3.4) Assembleur
3.5) Autres outils
3.6) Emulateur sur PC

4) LES LOGICIELS A2Z
4.1) Le Boot
4.2) Système fichier & OS
4.3) Editeur texte
4.4) Image viewer & map viewer
4.5) Le jeu : Micromachines

Blog (hackaday.io)
hardware board


Réagissez sur le BLOG!


1) GENERALITES

1.1) Le principe du projet

A2Z computer, c’est un ordinateur imaginé, conçu et réalisé de A à Z par moi-même. D’où son nom !

C’est un projet didactique, qui a pour objectif d’apprendre et de maitriser tous les aspects d’un ordinateur, de A à Z. C’est un ordinateur très simple et peu performant (CPU 16bits 25MHz, RAM 2Mo), peu évolué, mais quand même utilisable.

Tout est imaginé, inventé, conçu et réalisé par mes propres soins. Je n’ai rien repris de projets existants, pas une seule ligne de code, et ce dans les 3 langages utilisés pour ce projet : Verilog, C, A2Z_Basic.

Je n’ai pas non plus cherché à « porter » un code open source existant, l’objectif est réellement de tout créer en partant de zéro, d’une feuille blanche.

La seule chose que j’ai copiée, c’est la police de caractère, qui aurait été fastidieuse à créer à la main pixel par pixel.

Tout le code fourni est OPEN SOURCE.

La liste des travaux réalisés pour arriver à un ordinateur complet :

  • Un CPU 16bits fait maison sur un FPGA, en langage Verilog. Le CPU a son propre jeu d’instruction RISC, inventé par mes soins.
  • Des périphériques conçus et codés également en Verilog : VGA, interface SPI (pour mémoire Flash), interface clavier PS/2 et port série. J’ai également codé les « drivers » associés (fonctions bas niveau).
  • Assembleur : un langage assembleur inventé, qui colle au mieux au jeu d’instruction spécifique, et un logiciel assembleur codé par mes soins en C
  • Compilateur croisé, conçu et codé de A à Z par moi-même, en langage C. Ce compilateur prend en entrée du code en langage A2Z_Basic, un langage inventé par mes soins, à mi-chemin entre le Basic et le C. Le compilateur est pour moi la partie la plus complexe du projet.
  • Système de fichier simple, sans gestion de fragmentation, inventé de toute pièce.
  • En guise d’OS, j’ai codé un gestionnaire de fichier très simple, qui est capable de manipuler les fichiers et dossiers, d’appeler les programmes, d’ouvrir des fichiers.
  • Quelques logiciels : éditeur texte, visualisateur d’images, visualisateur de carte raster, et jeu de voiture.
  • Un émulateur sur PC, qui permettra peut-être à d’autres personnes de reprendre mes bidouilles.

Ce projet n’imite aucun ordinateur ou CPU existant. C’est vraiment le produit de mon imagination.

Ca n’est donc pas un projet « vintage » à la base, même si le résultat y ressemble.

Ce projet utilise par contre des outils « modernes », et ne tente pas d’imiter le travail des pionniers de la micro-informatique (dont l’idole de beaucoup de nerds : Steve Wozniac) qui travaillaient avec très peu de moyens.

Comme « outil moderne », j’utilise :

  • Un PC comme outil de développement
  • Un FPGA (ALTERA Cyclone 4) et sa chaine de développement
  • Un analyseur logique 
  • La chaine d’outils sur PC (compilateur croisé, assembleur, émulateur) est créée par mes soins avec l’aide d’un vrai compilateur C/C++ (Visual Studio)
ATTENTION : il s’agit d’un projet amateur, réalisé par un autodidacte. Beaucoup de choses sont peu optimales, peu académiques. Donc même si le résultat fonctionne bien, j’ai clairement fait beaucoup de simplifications, et aussi des erreurs de conception. Je ne suis pas informaticien à la base.

C’est aussi mon tout premier projet sur FPGA, j’ai appris le Verilog en autodidacte pour l’occasion, mes connaissances sont encore perfectibles sur le sujet.

Donc si vous recopiez ça tel quel pour un projet d’étude, vous n’aurez pas forcément une bonne note !

 

Ce site web est à la fois une description de mes travaux, de tous les sujets abordés, mais c’est aussi un guide d’utilisation, dans le cas où vous voudriez reprendre et compléter le projet. Je pense que c’est très peu probable, mais bon…

 

J’ai essayé de documenter ce projet un minimum sur ce site. Mais il manque probablement des informations essentielles à la compréhension ou à l’utilisation de certaines parties.

N’hésitez pas à me les signaler !

Contact : f4hdk [at] free.fr

Téléchargement:


ZIP contenant toutes sources et exécutables du projet
Tout le projet est OPEN SOURCE, fourni "AS IS" (tel quel), vous en faites ce que vous voulez.
F4HDK| Janvier 2017
f4hdk_arob_free.fr