Z80 flashing leds / NOP test board

Cet espace concerne les composants électroniques, les techniques de réalisation, le soudage, la mesure et ses divers instruments, les programmateurs ou encore votre laboratoire. Recueille également les éventuelles ventes, achat, dons ou recherches.

Modérateurs : Papy.G, fneck, Carl

Répondre
Zebulon
Messages : 2787
Inscription : 02 nov. 2020 14:03

Z80 flashing leds / NOP test board

Message par Zebulon »

Désolé pour le titre en anglais. Suite au visionnage de la video proposée par bubulemaster ici je suis en train de réaliser le montage pour le Z80 (j'ajouterai des photos ce week-end). Je me suis dit pourquoi ne pas faire une petite carte qui permettrait de tester le Z80 sur ce principe (probablement pas un test exhaustif) en l'absence d'une seconde machine disponible et puis je suis tombé sur ceci.

C'est décidemment très difficile d'avoir des idées originales sur cette terre. Néanmoins serait-il possible de combiner le test de 2 ou 3 processeurs sur une même carte moyennant soit des adaptateurs pour chaque CPU soit plusieurs sockets de test en parallèle comme sur certaines cartes de test DRAM.

En plus du Z80, les 6502/6510 et les 6809/6809E seraient de bons candidats (ils n'ont pas de circuits logiques supplémentaire sur les cartes de test NOP).

Y aurait-il un intérêt pour ce type de carte ou finalement c'est plus simple de monter une carte par processeur ?

EDIT 21/11/2021 voici donc le résultat du montage vu dans la vidéo sur la Protoboard:
Proto_Z80_NOP_tester.png
Proto_Z80_NOP_tester.png (825.8 Kio) Consulté 4249 fois
Je me suis basé sur le schema suivant trouvé ici:
Schema_Z80_flashing_leds.png
Schema_Z80_flashing_leds.png (48.38 Kio) Consulté 4249 fois

Donc bilan des courses sur le Z80 qui était en anomalie dans le ZX Spectrum que j'ai récemment réparé : le compteur d'adresse s'incrémente bien et les autres leds flashent de manière cohérente sauf M1 qui reste éteinte en permanence. Le défaut doit être subtil puisque dans la machine on voyait qu'il marchouillait jusqu'à un certain point.

EDIT 24/11/2021 j'ai reçu deux nouveaux Z80 et je les ai testés sur mon montage et la diode M1 clignote bien comme attendu. Donc il est intéressant d'avoir quelques diodes en plus de celles du bus d'adresse pour visualiser le fonctionnement de certaines lignes. Sinon mon Z80 HS serait passé pour correct au NOP test.
Dernière modification par Zebulon le 24 nov. 2021 23:20, modifié 4 fois.
Avatar de l’utilisateur
ZamZam
Messages : 195
Inscription : 09 nov. 2020 16:10
Localisation : TOUL (54200) Meurthe & Moselle

Re: Z80 flashing leds / NOP test board

Message par ZamZam »

Il y a des projets pour émuler la mémoire d'un système 8 bits à base de Pi Pico et quelques adaptateurs de niveaux 3,3V/5V birectionnels
https://github.com/nickbild/picoROM
Un même montage pourrait effectuer des tests de CPU pouvant s'assimiler à l'exécution d'un contenu de ROM particulier.
Ce projet utilise le Pi Pico en mode bourrin car il overclocke ces processeurs principaux pour réussir l'émulation de la ROM

Il existe un autre projet qui découle du 1er mais qui utilise la machine à états (une sorte de mini-processeur interne) du Pi Pico permettant de faire tourner le Pi Pico à sa vitesse normale et de laisser les processeurs principaux pour éventuellement d'autres tâches
https://github.com/rhulme/picoROM_pio
Le concepteur du projet ne l'a pas testé que sur quelques bits d'adresse et de donnée.

Je suis en train d'essayer de mettre en application ce 2éme projet sur une console Vectrex, je ferai un post dans le forum si j'arrive à aboutir.
picorom.jpg
picorom.jpg (473.43 Kio) Consulté 4426 fois
Jean-Luc
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Z80 flashing leds / NOP test board

Message par hlide »

Celui qui m'intéresserait pas mal est : https://baltazarstudios.com/arduino-zilog-z80/

La raison est simple : il existe des Z80 dont on n'a pas de documentation exacte sur les instructions qu'ils exécutent et à quel point ils sont compatibles à 100% ou non (je ne parle pas du cas NMOS vs. CMOS). Par exemple, j'ai des K5C84000 dont l'ALU calculent en 16-bit au lieu du 4-bit habituel. Un INC HL sera donc aussi rapide qu'un INC L. Par contre, j'ignore s'il exécute les instructions non officielles (à base de IXL, IXH, etc.). Ce truc-là, non seulement il vérifie l'exécution d'une instruction mais quantifie le nombre de M-cycle et le nombre de T-state par M-cycle. En plus, il distingue bien le "tri-state" sur le bit LSB du bus d'adresse et sur celui du bus de donnée pour reconnaitre une lecture ou écriture mémoire ou entrée/sortie via une astuce expliquée dans l'article. Evidemment, celui-ci ne sera pas évidemment portable sur les autres processeurs.
Avatar de l’utilisateur
ZamZam
Messages : 195
Inscription : 09 nov. 2020 16:10
Localisation : TOUL (54200) Meurthe & Moselle

Re: Z80 flashing leds / NOP test board

Message par ZamZam »

Oui le Mega2560 est idéal pour cela si la vitesse d'exécution n'est pas critique.
Il y a eu déjà un essai avec un Z80 fait par un membre du forum :wink: suite à un article dans le magazine "Hackable" => https://forum.system-cfg.com/viewtopic.php?t=8498
Jean-Luc
Avatar de l’utilisateur
pascalien
Messages : 964
Inscription : 21 janv. 2019 23:40
Localisation : 93200 ST DENIS
Contact :

Re: Z80 flashing leds / NOP test board

Message par pascalien »

La rolls des systèmes de test de CPU semble être:
https://www.cpushack.com/
avec le prix en conséquence.

Depuis longtemps je réfléchi à ce problème.
A l'origine, l'idée était de faire en sorte que le support zif, l'eprom, la ram et la logique de décodage soient réutilisés.
Maintenant que pour 0.50 à 1€, on a chacun des éléments, donc grand usage d'huile de cerveau pour économiser 5€.
Donc la solution la plus simple serait d'avoir autant de circuits imprimés que de famille de cpu.
Si on se contente des plus utilisés, disons 5, 5 circuits imprimés c'est faisable.
Par contre, si on en veut 20, on a un budget de 20*(5€+prix du circuit imprimé) pour trouver un système universel.

Le gros problème à résoudre est le "crossbar".
Si on veut un système 100% universel, il faut pouvoir router 40 broches sur 40 autres (allez soyons fous 64 sur 64!)
En me baladant sur internet, j'ai vu deux façons de faire.
Les cables que l'on connecte en fonction du processeur et le crossbar fait avec 20 connecteur 2x20 et petits jumper bien placés.
C'est quand même bien chiant!

Il faut 1600 2n7002 et 200 74hc595 au tarif Aliexpress cela ne fait que 50€ de composants.
Par contre niveau circuit imprimé...
Et je vois 2 inconvénients
Est ce que le routage du quart/horloge est possible.
Et l'alimentation? le petit 2n7002 risque de ne pas supporter.
Si il faut prendre d'autres références la facture va s'alourdir!

Donc finalement on garde rom, ram et décodage
et le cpu va sur une carte spécifique avec le zif, le crossbar étant fait par le dessin du circuit imprimé.
Mais il faut à chaque fois faire un circuit imprimé encartable certes plus petit.

Encore trop compliqué pour moi.
Donc j'ai en commande chez Ali des connecteurs 2x25 broches.
Avec un bout de platine à bande, pleins de petits fils, de la soudure et de l'huile de coude,
on fait un adaptateur pour chaque cpu.
Ca devrait permettre de faire un proof of concept après que j'ai résolu mes problèmes de pc, station de desoudage et ICT.

Par contre j'aime bien l'idée d'un testeur plus simple et plus robuste pour écarter d'emblée le cpu hs ou fake,
et éviter de cramer un testeur plus onéreux.

Avec le crossbar fait par un cpu genre pic ou avr la partie matérielle devient beaucoup plus simple.
Dernière modification par pascalien le 23 nov. 2021 14:04, modifié 1 fois.
Zebulon
Messages : 2787
Inscription : 02 nov. 2020 14:03

Re: Z80 flashing leds / NOP test board

Message par Zebulon »

Merci Pascalien pour ton retour. En effet sacré usine à gaz. De mon point de vue supporter 5 processeurs serait déjà bien, mais en effet le NOP test est limité/loin d'être exhaustif. Si le CPU ne passe pas a priori il est cuit mais l'inverse n'est pas suffisant pour dire qu'il est OK.

Cette page propose les fichiers gerber pour les cartes simples et donne chaque fois quelques spécificités de chaque processeur (qui explique aussi la complexité d'une carte unique), valeurs différentes de l'instruction NOP, complexité des signaux d'horloge pour certains processeurs, etc. Ce n'est donc pas seulement une question de tuyauterie.

Finalement le Z80 semble de loin être le plus rudimentaire.
Dernière modification par Zebulon le 20 nov. 2021 22:24, modifié 1 fois.
Avatar de l’utilisateur
pascalien
Messages : 964
Inscription : 21 janv. 2019 23:40
Localisation : 93200 ST DENIS
Contact :

Re: Z80 flashing leds / NOP test board

Message par pascalien »

Super site.
Je n'aurais jamais pensé utiliser un 555 à la place d'un quartz.

Par contre, j'ai en commande un ICSxxx qui permet de générer simplement différentes fréquences.
Les ICS511 et ICS512 sont plus facilement trouvables et moins chers, par contre la sélection doit se faire par cavaliers.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Z80 flashing leds / NOP test board

Message par hlide »

Euh, il faut une source de fréquence pour ces LOCO PLL (j'en ai quelques-uns), et ça reste des fréquences de fonctionnement très élevés donc je ne comprends pas trop comment ça peut remplacer un 555 ou un quartz.
Fred_72
Messages : 1131
Inscription : 22 mai 2019 13:10
Localisation : Sarthe

Re: Z80 flashing leds / NOP test board

Message par Fred_72 »

Je suis assez d'accord avec pascalien, pour les 3 familles citées cela fait 3pcb qui ne sont finalement pas très grand avec 1 ou 2 ZIF.

La mesure du courant consommé me semble aussi intéressante pour identifier rapidement une version CMOS d'une version NMOS (une simple clé USB qui indique la tension et le courant suffit).
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Z80 flashing leds / NOP test board

Message par hlide »

L'autre solution c'est d'avoir un CPLD entre le CPU et le MCU (PIC/AVR). Le CPLD qui se charge de rerouter correctement les signaux avec un piano par exemple pour choisir le brochage du CPU à tester. Bon, c'est un poil plus compliqué car les VCC du CPU, il ne faut pas que ce soit le CPLD qui le fournit directement.
Avatar de l’utilisateur
pascalien
Messages : 964
Inscription : 21 janv. 2019 23:40
Localisation : 93200 ST DENIS
Contact :

Re: Z80 flashing leds / NOP test board

Message par pascalien »

Effectivement les LOCO PLL sont des multiplieurs de fréquences, donc il faut utiliser un autre type de circuit.
Mais comme il nous faudrait des fréquences de 1 à 16Mhz, un simple diviseur de fréquence devrait fonctionner.
Par contre je ne sais pas si tous les cpu sur lesquels on est censé brancher un quartz peuvent fonctionner avec un signal.

Certains programmateurs d'eprom universels sont conçu avec une architecture "driver de pin".
On peut supposer que quand la broche est à vcc, le controlleur/asic/cpld/fpga est isolé.

Si le MPU est assez puissant, pas besoin de cpld pour faire le reroutage.
Une simple table de conversion fait le job, si les timings peuvent être respectés.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Z80 flashing leds / NOP test board

Message par hlide »

Le problème du MPU est : a-t-il suffisamment de GPIO pour piloter les broches d'un CPU ? pas sûr. On le voit bien avec PiStorm qui a recours à un CPLD pour masquer la faiblesse des GPIOs. Mais bon je digresse là. Selon que l'on souhaite faire, il est peut-être préférable d'avoir un PCB par CPU pilotable par le même MPU. Ça existe déjà : https://www.tindie.com/stores/8bitforce/. J'en ai pris quelques-uns, notamment pour le Z80 mais je suis assez déçu qu'il ne prenne pas en compte tous les signaux - dont le /BUSRQ et /BUSACK.
Avatar de l’utilisateur
pascalien
Messages : 964
Inscription : 21 janv. 2019 23:40
Localisation : 93200 ST DENIS
Contact :

Re: Z80 flashing leds / NOP test board

Message par pascalien »

En tapant un peu au hasard de mes datasheets:

GD32F450VET6 200MHz up to 82 i/o LQFP100
GD32F450ZET6 200MHz up to 114 i/o LQFP144

Donc on peut trouver, par contre au niveau ressources disponibles, c'est moins bien qu'un truc à base de mega2650 ou RPi.

Par contre, je vois que la fréquence de fonctionnement est de 200kHz.
Est ce que ce timing est avec un RPi à 700MHZ ou ceux a 1,5Ghz?
Est-ce que son code peut être réécrit pour être plus rapide?

Les besoins de ce créateur sont différents.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Z80 flashing leds / NOP test board

Message par hlide »

C'est un Arduino Mega avec un AVR qui tourne à 16 MHz donc espérer tourner sur un 1 MHz est... très problématique. Mais ces Arduino fonctionnent en 5 V, pas les RPI. Après l'auteur à aussi fait un PCB pour y mettre un Teensys "compatible" en 5 V qui se met à la place de l'Arduino MEGA : https://www.tindie.com/products/8bitfor ... troshield/

Pour rappel, un RPI c'est du 3,3V et ses GPIOs ne sont pas rapides et assez nombreux.

Cependant, si l'optique est de pouvoir exécuter un Z80@20MHz à 20 MHz pour vérifier que c'est bien un CMOS capable de 20 MHz alors, désolé, utiliser un Arduino MEGA ou un RPI n'y changera rien.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Z80 flashing leds / NOP test board

Message par hlide »

Je m'exprime peut-être mal, je ne dis pas que ce n'est pas faisable en utilisant ce GD32 ou un RPI mais il faudra des convertisseurs 3,3 V <-> 5 V. Il faudra l'écrire en baremetal. Eviter de sandwicher les bits entre les ports pour lire une adresse ou une donnée (sur AVR t'es mort si tu fais ça), etc. Après il faudrait s'entendre en détail sur ce que doit tester ce PCB.

EDIT:
La doc du GD32 parle de 5VT pour le niveau de tension des GPIO : du 5 V tolérant. Après je ne sais pas ce qu'implique le terme "tolérant" (tension en sortie ?). Et pareil, je ne suis pas certain que l'on peut utiliser un GPIO pour alimenter le Vcc d'un CPU.
Répondre