Retro-Ingénierie d'une carte Z80 : partie 3 - EEPROM et Interface Homme-Machine

Bonjour à tous,

Dans le dernier article "Retro-ingénierie d'une carte Z80 : partie 2" je terminais le schéma de la carte et identifiait les espaces d'adressage.

C'est Dimanche... l'occasion de se pencher sur un projet maison.

Comment progresser?

Dans ce dernier article j'identifiais deux points essentiels à résoudre.

  1. Remplacer les UVPROM (effaçable par ultraviolet) avec des EEPROM plus facile à programmer.
  2. Créer une interface Homme-Machine car, en l'état, la carte ne dispose ni de port série.

Trouver les EEPROM de remplacement

J'ai besoin de remplacer les UVPROM 27512 (512 Kbits, 5V, 28 broches) servant de ROM avec EEPROM plus facile a programmer.

UVPROM 27512 64Kio

Trouver des EEPROM compatibles (ou proches) en traversant ou CMS depuis les grand distributeurs en électronique est devenu impossible!

J'ai déniché une seule référence à 27EUR TVA! Non mais ils sont malades!!!
Et comme je ne suis pas décidé à passer par la Chine....


Après des recherches complémentaires, j'ai trouvé le GLS27SF512 de Greenliant chez Mouser (ref: 804-GLS27SF5123C-NHE).

C'est un format PLCC-32 (entre CMS et traversant) qui s'utilise généralement avec support/socket ad-hoc.

Le temps d'accès du GLS27SF512 est de 70ns, ce qui est suffisant pour une machine à 2 Mhz (la période du signal d'horloge est de 500ns).

L'intérêt de ce composant est d'être Pin Compatible avec le 27512 d'origine.


Ni une, ni deux, j'ai dégainé mon Kicad et réaliser un adaptateur PLCC32 vers DIP28. (GitHub kicad-public-projects/HASKEL-Z80/EPROM-27512-GLS27SF512/ ).

Adaptateur PLCC32 vers DIP28

C'est bien parti!

Interface Homme-Machine

Le problème

En l'état, la carte CPU (schéma ici) ne dispose que de PIO (extension IO) pour communiquer avec le monde extérieur.

Carte CPU (voir sa description)

Le PIO ne permet pas de communication série.
La carte CPU ne dispose pas, non plus, d'interface série... il faudra donc en monter une sur le bus existant :-/

Se lancer dans le montage d'une interface série, sa programmation, c'est un sacré challenge pour un premier essai surtout qu'au passage, il y aura aussi une nouvelle ROM/EPROM !

Il faut donc une approche qui permet de minimiser les difficultés, voire de pouvoir  rebondir.

Les options

Lorsque la carte sera reprogrammée, il y a plusieurs options pour arriver à vérifier le bon fonctionnement de ce premier programme.

Voici les différentes options:

La solution choisie

J'ai opté pour:

  1. Etendre le bus Z80 directement depuis le processeur Z80 (en insérant une carte entre le processeur et la carte CPU).
  2. Créer un module digital I/O comme celui du RC2014 dont le schéma est publié et utilisation maîtrisée .
    Contient 8 sorties (8 LEDs) + 8 entrées (8 boutons poussoir).
    Activer les LEDs nécessite seulement deux instructions assembleur Z80!
  3. Prévoir un connecteur Bus RC2014 pour sonder les signaux du Z80 et du bus -OU- ajouter une carte d'extension.

Le module digital I/O RC2014 n'utilise que des circuits logiques et ressemble à ceci:

Et son fonctionnement interne est détaillé dans l'article "Z80 - Echanges I/O et application au RC2014 avec la carte Digital I/O".

Carte CPU Add-on

J'ai donc dégainé Kicad (encore un fois) et créé la carte CPU-Addon à insérer entre le CPU Z80 (tout en bas de la carte CPU.

Carte add-on pour la carte CPU

Carte CPU-AddOn qui se s'assemble sur la carte CPU comme suit:

Avec le schéma suivant (également disponible en ligne).


Schéma disponible en ligne sur GitHub

Le schéma reprend le même 74HC138 que celui présent sur la carte CPU (imite donc le même mécanisme de sélection). Il devient donc possible d'avoir les mêmes signaux de sélection. Le but du jeu est d'utiliser des activations I/O non utilisé sur la carte CPU.

Les ports 0x00, 0x04, 0x08, 0x0C étant utilisés par la carte CPU, j'ai opté pour le port I/O 0x1C pour activer notre module d'entrée/sortie.

Eviter les collisions de port I/O

Pour éviter les collisions de port sur la carte CPU-Board, il faut compléter le circuit de sélection 74HC138N (IC16) pour éviter les activations des PIO/CTC lorsque a5,a6,a7 sont activés... ce sera le cas dans le futur!

Compléter le mécanisme de sélection sur la CPU-Board.

Il reste un inverseur disponible sur la carte CPU (IC1, un 74LS04). Cela tombe à point :-)

Bilan

Voilà un projet qui avance promptement.
Je m'approche de plus en plus du réemploi de la carte CPU.

Ensuite: un programmeur d'EEPROM

Le matériel des cartes ci-dessus est déjà commandé (il me manque encore les PCB).

L'étape suivante se concentrera donc sur la programmation de l'EEPROM.
Deux approche possibles:

  • Utiliser un programmateur d'EEPRom existant (compatible Linux)
  • Réaliser mon propre programmeur avec un Pico et MicroPython.



Aucun commentaire