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

Fred_72
Messages : 1131
Inscription : 22 mai 2019 13:10
Localisation : Sarthe

Re: Z80 flashing leds / NOP test board

Message par Fred_72 »

Un testeur "universel" grande vitesse existe déjà. Il utilise des adaptateurs pour accorder le brochages des divers CPU.
https://x86.fr/category/electronics/uni ... er/page/3/
Zebulon
Messages : 2788
Inscription : 02 nov. 2020 14:03

Re: Z80 flashing leds / NOP test board

Message par Zebulon »

Encore un grand merci à tous pour vos contribution et liens sur ce sujet. J'avoue que vous m'avez tout de même un peu perdu car je suis trop novice en électronique. :D

Je précise que j'ai bien compris que le "NOP test" est très superficiel et que si l'échec est disqualifiant, le succès n'indique en rien que le processeur est 100% fonctionnel, c'est clair. Mais il peut s'effectuer avec une carte/un montage rudimentaire.

D'un côté il existe des cartes simples (trop?) mais il en faut une pour chaque processeur (même des variantes d'un même processeur ne sont pas gérées sur la même carte).

D'un autre côté il existe des testeurs "universels" mais pour le coup il faut effectivement un adaptateur pour chaque processeur et le coût devient prohibitif (je suppose aussi qu'ils font beaucoup plus qu'un simple test NOP).

Mon interrogation est, est-il possible de concevoir une carte supportant les Z80, les 6502/6510 et les 6809/6809E avec un certain degré de factorisation des composants communs et plusieurs sockets en parallèle ou des petites cartes d'adaptation pour un socket unique, ainsi que quelques switchs le cas échéant.

Parmi les différences:
- les signaux d'horloges
- la valeur hexa de l'instruction NOP
- l'attribution des pins
- quelques lignes spécifiques qui doivent être tirées à 0v ou 5v pour que le processeur fonctionne (pas en interruption, etc).

Les choses mutualisables:
- l'alimentation
- les générateurs d'horloge (un par famille, donc 3 au lieu de 5)
- des réseaux de résistance pull-up et pull-down
- les diodes affichant les adresses et quelques signaux additionnels

Après le plus simple est certainement d'avoir des machines/processeurs fonctionnels et de procéder à des échanges de composants.

J'ai mis à jour le premier post avec la photo et le schéma du montage réalisé ainsi que les conclusions du test du Z80 défectueux remplacé dans le ZX Spectrum.
Avatar de l’utilisateur
irios
Messages : 3396
Inscription : 04 nov. 2007 19:47
Localisation : Rochefort du Gard (30)
Contact :

Re: Z80 flashing leds / NOP test board

Message par irios »

Très intéressant le sujet !!
Et pour cause, dans le cadre du dépannage de nos vielles machines, je me suis posé la question si il existait un système capable de pouvoir tester in situ tous les éléments quelque soit le fabricant des composants et ce sur des machines cibles 8 et 16bits uniquement. Le but est de venir connecter une sonde en lieu et place du microprocesseur et piloté par un pc. On choisi le type de machine (amstrad, cpc, atari, thomson, commodore, ...) et à l'issue un ensemble de tests pourraient être réalisé. Il est vrai que ce n'est pas tout à fait le test du microprocesseur mais cela pourrait aider dans les diagnostiques et de fait pointer du doigt le dysfonctionnement du microprocesseur.
Je suis en train d'étudier (encore un de plus !! :mrgreen: ) une interface de conception simple en électronique avec des composants TLL type registres qui pourrait être pilotée en USB ou en série/parallèle. :D
La partie Soft, je la développerai en Turbo pascal histoire de retrouver les sensations d'antan ! :lol:
Bref, j'ouvrirai un topic à sujet pour montrer l'avancement du projet. 8)
http://irioslabs.over-blog.com/

La connaissance ne vaut que si elle est partagée par tout le monde.
I2C
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Z80 flashing leds / NOP test board

Message par hlide »

Donc on reste sur un simple test "NOP".

1) un PCB maitre (PCB NOP TESTER) qui utilise un DIL de plus de 40 broches si nécessaire pour mutualiser,

2) un PCB par "pinout" (PCB CPU) distinct (pour faire simple, un adaptateur minimaliste),

L'idée c'est que le DIL du PCB NOP TESTER définit chaque famille de bus au même endroit : les communs comme le bus d'adresse et de contrôle seront au même endroit.

C'est le PCB CPU qui se charge de rerouter les broches vers le PCB NOP TESTER.

Le bus de donnée est "codé en dur" sur le PCB CPU pour fournir le bon opcode ($00 pour Z80).

Attention @Zebulon, la broche /M1 semble être une spécificité au Z80, je ne suis pas certain que l'on puisse faire de même avec les autres.

Pour le 6809, on a deux horloges E et Q avec un décalage à respecter.

A noter que le NOP tester ne fait que du OPCODE FECTH d'un NOP, il n'y a donc pas de /WR = 0 ou R/W = 0 donc la LED semble pas nécessaire sauf à vouloir détecter une activité de lecture en mutualisant /RD et R/W mais avec une interprétation inversée.

Commun :
- A0-A15 : n LED sur PCB NOP TESTER, n broches dédiées sur DIL par simple reroutage sur PCB CPU (et NC pour ceux que l'on ne veut pas de LED si on veut se limiter à un nombre restreint)
- D0-D7 : NOP codé en dur sur PCB CPU, 0 broche dédié sur DIL. OU: Eventuellement avoir un lot de 8 états bas et 8 états haut sur le DIL et le PCB CPU peut rerouter les 8 bits de données sur les broches de ces deux lots pour recréer le bon opcode. Cela éviterait un jeu de résistance sur le PCB CPU.
- /RD ou /R/W : 1 LED sur PCB NOP TESTER, 1 broche dédiée.
- tous les signaux qui devront être à un état fixe (bas ou haut) et sans LED pourront se servir sur un lot de broches du DIL pas spécialement dédiées à un type mais à un état voulu que le PCB CPU choisira de rerouter à sa convenance. Il semble qu'une résistance est demandée par état fixe donc il faut un lot et non une seule broche par état.
- etc.

Z80 :
- /M1 : 1 LED sur PCB NOP TESTER, 1 broche dédié, avec un pull-up pour les autres CPU n'ayant pas de /M1 équivalent.
- D0-D7 : NOP codé en dur sur PCB CPU ($00), 0 broche dédié sur DIL.
- etc.

6502 :
- D0-D7 : NOP codé en dur sur PCB CPU ($EA), 0 broche dédié sur DIL.
- etc.

Et j'en passe. Toujours le problème de pouvoir tester des fréquences différentes.

Un autre NOP tester à fréquence variable : http://retro.hansotten.nl/other-retro-a ... p-testers/.

Et je vais arrêter là. :)
Dernière modification par hlide le 21 nov. 2021 15:05, modifié 5 fois.
Avatar de l’utilisateur
bubulemaster
Messages : 1082
Inscription : 01 juil. 2014 13:48
Localisation : Nantes

Re: Z80 flashing leds / NOP test board

Message par bubulemaster »

Suite à la vidéo, je voulais aussi me construire une plateforme de test de Z80.
Mais d'autres y on pensé avant moi, il y a plusieurs kit qui existe sur le site tindie.com
Le 80286 et suivant sont des processeurs beaucoup trop évolués qui n'auraient jamais dû être inventés :-).
Vinted | Le bon coin | Ebay
Avatar de l’utilisateur
meridian
Messages : 1226
Inscription : 01 sept. 2014 13:10
Localisation : Seine-Saint-Denis

Re: Z80 flashing leds / NOP test board

Message par meridian »

J'ai monté les NOP tester pour le 6502 et le Z80 décris sur le site de Hans, ça m'a permis de trouver un Z80 naze.
D'ailleurs faudrait que j'en fasse un pour le 8502.
Avatar de l’utilisateur
pascalien
Messages : 965
Inscription : 21 janv. 2019 23:40
Localisation : 93200 ST DENIS
Contact :

Re: Z80 flashing leds / NOP test board

Message par pascalien »

hlide a écrit : 19 nov. 2021 17:17 Par exemple, j'ai des K5C84000 dont l'ALU calculent en 16-bit au lieu du 4-bit habituel.
C'est KL5C84000.
Je n'ai trouvé qu'un datasheet de 4 pages.
Tu as mieux?
Une recherche google donne beaucoup de sites fermés.
Avatar de l’utilisateur
pascalien
Messages : 965
Inscription : 21 janv. 2019 23:40
Localisation : 93200 ST DENIS
Contact :

Re: Z80 flashing leds / NOP test board

Message par pascalien »

Il y aura des cpu pas testables en nop testeur genre 68008 et familles a bus multiplexé genre 8051, NSC800...

Si on prends un MPU à 1GHz on risque de tomber sur des tensions 1.8V.

Le crossbar par cpld/fpga il faut 40+40=80 broches.
Ca risque d'être ric-rac pour des EPM, MACH et XC en plcc84 5V.
Il faut passer en TQPF100 ou 144 au risque de ne plus trouver de version 5V.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Z80 flashing leds / NOP test board

Message par hlide »

Je réfléchie encore... en me demandant si en gardant un Arduino MEGA on pourrait avoir tous les tests exprimés ici.

L'Arduino nous permettrait en le branchant sur un PC d'alimenter les CPU et de diagnostiquer en choisissant les tests à effectuer. Pas de nécessité d'avoir un écran et des boutons même si rien n'empêche de le faire par la suite (i.e, de façon modulaire).

L'idée c'est que l'Arduino présentera un menu pour choisir le type de CPU et ensuite le type de test. Le choix de CPU peut se faire automatiquement si on accepte d'avoir un PCB CPU par "pinout" et que ce PCB nous encode le type de CPU (du moins sa famille avec le brochage compatible).

Le PCB CPU reroute les signaux de façon à ce que le bus d'adresse, de données et le reste se retrouve sur les mêmes broches de l'Arduino quelque soit le CPU. On se rapproche effectivement de ce qui est fait ici : https://www.tindie.com/products/8bitfor ... uino-mega/. Mais avec quelques différences peut-être.

A l'allumage de l'Arduino, la règle est d'avoir le /RESET à 0 pour faire patienter le CPU quel que soit son type (c'est le PCB CPU qui reroute correctement).

Je reste sur du Z80 pour la suite.

1) Je veux faire un simple test de NOP (après levé du /RESET) :

on entre dans un code Arduino qui va :
- mettre /RESET à 1.
- piloter le clock via un GPIO par bascule à chaque demi T-state à reproduire sur le Z80.
- attendre sur un "fetch opcode" (/M1 = 0, /MREQ = 0 et /RD = 0) pour récupérer l'adresse.
- répondre au "fetch opcode" pour présenter un $00 sur le bus de donnée.
- vérifier que le CPU nous répond (/MREQ = 0).
- vérifier que l'adresse a bien incrémenter.
- reboucler un nombre de fois sur l'attente d'un "fetch opcode" puis communiquer le résultat (pas de réponse ou incrémentation fausse, etc.)
- remettre /RESET à 0 et revenir au menu.

Accessoirement, on pourrait présenter l'opcode sur le bus de données de façon permanente juste avant la boucle.

2) Je veux faire un test NMOS/CMOS :

Même procédé que 1) sauf que :
- à la réponse au premier "fetch opcode", on présente $ED sur le bus de données.
- à la réponse au second "fetch opcode", on présente $71 sur le bus de données.
- puis on attend sur un "I/O write" (/IORQ = 0, /WR = 0).
- on lit en continue le bus de donnée jusqu'à que le /WR = 1.
- on vérifie si le bus de donnée a présenté un $00 (NMOS) ou un $FF (CMOS).
- le rebouclage n'est pas nécessaire.

3) Vérifier que le CPU s'exécute bien à la fréquence demandée :

C'est un peu plus compliqué. Il semblerait qu'il soit possible d'émettre des fréquences élevées comme indiqué ici et si ce n'est pas le cas, il faudra probablement alimenter le CLK du CPU depuis l'extérieur. D'autre part, il me semble que les timers hardware peuvent compter les fronts sur leur Tn. On peut imaginer de mettre le /M1 sur l'une de ces broches. En effet, une suite de NOP présentera un front descendant (ou montant) tous les quatre cycles (donc à la fréquence Fcpu/4, donc à 1/2/4 MHz pour du 4/8/16 MHz). Reste à savoir jusqu'à quelle fréquence, ces compteur peuvent... compter. Et nous compter dessus.

Idéalement, je souhaiterais reprendre ce qui a été fait ici qui se sert de l'astuce pour détecter une sortie d'adresse et une lecture/écriture sur le bus de donnée qui je pense peut s'étendre également sur les autres CPU.

D'ailleurs, je ne vois pas comment sur le 6502, on demande l'accès à la mémoire (je ne vois pas d'équivalent de /MREQ).
Dernière modification par hlide le 21 nov. 2021 17:43, modifié 8 fois.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Z80 flashing leds / NOP test board

Message par hlide »

pascalien a écrit : 21 nov. 2021 15:52 C'est KL5C84000.
J'ai ces puces. Et des brides de documentation.
KL5C8400.7z
(1.07 Mio) Téléchargé 61 fois
Sinon il y a un site japonais qui en parle mais vraiment pas mieux que ces bouts de documentation. De plus, il est erroné : il dit que le registre R est un simple registre or la documentation semble indiquer que le registre se comporte comme un Z80 en mode Z80. Par contre, il manque effectivement la sortie du signal /RFSH.

C'est pourquoi par moment je me dis qu'il faudrait me faire le même outil qui a servi à analyser le bus Z80 et à quantifier et à qualifier les M-cycles et T-states pour déterminer le degré de compatibilité du KC80 (en dehors du signal /RFSH) et un adaptateur DIP->QFP qui fait impasse sur le /RFSH. J'ai un projet à base GAL pour reconstruire le signal /RFSH aussi.

EDIT: dans le cas du KL5C84000, le /RFSH s'appelle /CFG qui est une entrée servant à déterminer dans quel mode ce CPU fonctionne (mode Z80 ou KC80). Il suffirait que l'Arduino MEGA passe la broche dévolue à /RFSH en sortie pour activer le mode souhaité en utilisant un simple adaptateur DIP40 vers QFP44.
Dernière modification par hlide le 21 nov. 2021 17:48, modifié 3 fois.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Z80 flashing leds / NOP test board

Message par hlide »

pascalien a écrit : 21 nov. 2021 16:02 Il faut passer en TQPF100 ou 144 au risque de ne plus trouver de version 5V.
Il y en a. Après c'est pour éviter le multi PCB CPU. Mais à la réflexion, on ne résous pas tout. Le PCB CPU minimaliste me semble plus facile à faire.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Z80 flashing leds / NOP test board

Message par hlide »

Fred_72 a écrit : 21 nov. 2021 07:59 Un testeur "universel" grande vitesse existe déjà. Il utilise des adaptateurs pour accorder le brochages des divers CPU.
https://x86.fr/category/electronics/uni ... er/page/3/
Je ne sais pas trop ce qu'il fait comme tests, il n'y a pas d'indication des prix et vu qu'il embarque un FPGA, je ne suis pas certain que son prix sera dans le budget souhaité.
Fred_72
Messages : 1131
Inscription : 22 mai 2019 13:10
Localisation : Sarthe

Re: Z80 flashing leds / NOP test board

Message par Fred_72 »

Oui c'est certain, probablement moult euros.
c'était pour juste pour montrer que d'autres s'était déjà posé la question et avait utilisé la grosse artillerie tout en conservant une approche multi pcb.
Zebulon
Messages : 2788
Inscription : 02 nov. 2020 14:03

Re: Z80 flashing leds / NOP test board

Message par Zebulon »

@hlide je rebondis sur ton message de 13h57, c'est à ce genre d'approche que je songeais. Une organisation des broches du support sur le PCB NOP TESTER par typologie et ensuite le PCB CPU ventile cela en fonction des besoins. :wink:

@Pascalien les 16-bit, les bus multiplexés et les GHz sont clairement hors de mon domaine de compétences. :P

J'ai sondé la base de données du forum et je trouve:
- Z80 sur 354 machines
- 6502 sur 74 machines
- 6510 sur 6 machines (en gros le C64...)
- 6809 sur 14 machines (j'ai trouvé 34 moins les 20 ci-dessous car la recherche retourne la sous-chaine)
- 6809E sur 20 machines

Alors c'est certain que dans cette liste finalement avec 3 cartes simples on couvre 95% du spectre et juste celle du Z80 couvre 75%. :shock:
Avatar de l’utilisateur
pascalien
Messages : 965
Inscription : 21 janv. 2019 23:40
Localisation : 93200 ST DENIS
Contact :

Re: Z80 flashing leds / NOP test board

Message par pascalien »

Les GHz sont aussi du domaine de mon incompétence.
J'aimerais bien quand même rajouter à la liste 6800 et 6802 qui sont de la même époque.
Et j'ai dans mon stock un 2650 et un 6507 pour des classiques.

Si on arrive à mettre au point un nop tester plus ou moins universel,
après mon optique est plutôt que de rajouter un MCU qui complique la vie,
autant utiliser le cpu en test pour s'auto-tester.
Avec une mémoire 080, dans les dernières grosses capacités disponibles en DIL et 5V
on à 1M. je pense suffisant pour tester pas mal de cpu.
Bien sur avec un peu de "bank switching".
Répondre