Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Sonstiges » Stand-alone Tester für Z80 CPUs » Themenansicht

Autor Thread - Seiten: -1-
000
11.06.2024, 12:40 Uhr
slabbi



Mit dieser Hard-/Software ist es möglich eine Z80-CPU zu identifizieren und zu testen.



Ich habe dieses Projekt schon im RCT Thema erwähnt:
https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=19308
Ein ähnliches Thema ist auch bereits hier zu finden:
https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=14415

Beschreibung:

Es versucht
- die CPU zu identifizieren,
- zu testen, ob die CPU noch funktionsfähig ist

und hat folgende Features:
- 32kb EPROM (27C256), alternativ kann ein EEPROM verwendet werden (AT29C256)
- 32kb SRAM
- 2 Ausgangsports (einer bidirektional, Rücklesemodus) mit 16 LEDs
- RESET- und NMI-Taste
- 16 MHz / 20 MHz umschaltbar
- 1, 1/2, 1/4, 1/8, 1/16 Multiplikator (1-16 MHz / 1,25-20 MHz)
- Stromversorgung über USB

Dieses Projekt basiert auf einer Idee von
- https://oshwlab.com/vitalian1980/z80-tester (Hardware, Public Domain)
und zusätzlich auf Ideen von
- https://bitbucket.org/rudolff/z80-tester (Software, keine Lizenz)
- https://github.com/skiselev/z80-tests (Software, GPL-3.0-Lizenz)
- https://github.com/EtchedPixels/FUZIX/blob/master/Applications/util/cpuinfo-z80.S (Software, GPL-2.0-Lizenz)
- https://groups.google.com/g/retro-comp/c/rhKeKpXmAXM (Software) und schließlich Frank Cringles Z80-Befehlssatz-Exerciser
- https://github.com/begoon/z80exer (Software, GPL-2.0-Lizenz)

Das GitHub-Repository ist hier zu finden:
- https://github.com/slabbi/Z80-CPU-Tester

Das Repository wurde in mehrere Unterprojekte aufgeteilt.
- Die erforderliche Hardware finden Sie im Ordner HARDWARE. Derzeit gibt es nur eine Hardwareversion (v1).
- Die benötigte Firmware ist im Ordner SOFTWARE abgelegt.

Dieser Beitrag wurde am 11.06.2024 um 12:48 Uhr von slabbi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
11.06.2024, 12:49 Uhr
slabbi



Wer an der Firmware aktiv mitarbeiten möchte, dem gebe ich gerne Schreibzugriff auf das Repository.
Dieser Beitrag wurde am 11.06.2024 um 12:52 Uhr von slabbi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
11.06.2024, 12:56 Uhr
slabbi



Die Firmware 1.1 gibt das Ergebnis wie folgt aus:

Port B:

STATUS: CU00tttt (C = CMOS, U = UB880, tttt = Typ)

C = CMOS erkannt
U = UB880 erkannt

Typ (tttt):
- Z80= 0000
- Z180= 0001
- Z280= 0010
- EZ80= 0011
- U880= 0100
- Clone= 0101
Die neueren CPUs bekommt man natürlich nicht in den Sockel. Ich habe die Erkennung aber mit aufgenommen.

Eine UB880 wird also als "0100 0100" angezeigt.

Port A:
Zeigt den aktuell durchgeführten Test an.

Wenn der Test fertig ist, zeigen die LEDs
- den fehlgeschlagenen Test an (Bit 7 blinkt),
- ein Lauflicht an, wenn alles Tests erfolgreich waren.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
11.06.2024, 18:55 Uhr
Klaus



Prima.
Nun ein eigener Thread zum Thema. Enrico hatte es ja schon angemahnt.

Ich habe mir die Platine beim slabbi bestellt und bin gespannt, was für Ergebnisse herauskommen, wenn ich das Teil aufgebaut habe.

Heute hatte ich zufällig mal ein paar Z80 CPUs von SHARP in der Mache und diese mit dem kleinen Tester mit kinzi Firmware getestet.
https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=20940

Interessanterweise werden hier alle SHARP Z80 CPUs immer als NMOS erkannt.
https://www.cpu-world.com/info/id/Sharp-identification.html

Getestet habe ich LH0080, LH0080A, LH0080B … das sind NMOS… also OK.
LH5080A, LH5080L und LH5080AL sind CMOS, werden aber auch als NMOS angezeigt.
Hat mir keine Ruhe gelassen und siehe da….
https://www.cpu-world.com/CPUs/Z80/Sharp-LH5080.html

Hier wurde unter Notes on Sharp LH5080 angeben:
„compatible with Z80 NMOS microprozessor“

An der Stromaufnahme kann man natürlich gut erkennen, dass es sich bei den LH5080 definitiv um CMOS Typen handelt, aber anscheinend haben die bei Sharp das mit dem OUT (C),0 nicht geändert, wie bei CMOS Typen anderer Hersteller, so dass die Erkennung an dieser Stelle versagt.

Beim Z80TYPE vom Kiselev scheint es aber eine Erkennung für die Sharp CMOS Varianten zu geben. Vermutlich geht es hier über die undokumentierten Flags 3 und 5.
Muss ich bei Gelegenheit mal an meinem NANOS-Rechner probieren, dort läuft das Programm ja.

@Stephan
Evtl. musst Du Dein Programm noch entsprechend erweitern, damit das NMOS/CMOS bei Sharp auch klappt.

Viele Grüße,
Klaus

Dieser Beitrag wurde am 11.06.2024 um 19:40 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
11.06.2024, 19:07 Uhr
slabbi



Ich habe mich mit den FX und FY Flags bisher nur kurz beschäftigt.
Hier würde ich mich freuen, wenn Code beigetragen wird.
Oder hat die LH5080 andere Besonderheiten, woran man sie erkennen könnte?

Die "Kinzi" Hardware hat ein paar Nachteile. Eigentlich lässt sich mit diesem nicht sehr viel erkennen, da keinerlei Speicher vorhanden ist, also keine Stack-Operationen, keine Unterprogramme etc. möglich sind. Vor allem kann kein EEPROM eingesetzt werden. Ich hatte die ersten Experimente mit dieser Hardware gemacht, aber das ständige Löschen der EPROMs war einfach nervig.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
11.06.2024, 20:12 Uhr
Enrico
Default Group and Edit


Genau auf diesen "Kinzi" Tester bezog ich mich.
Vielleicht lässt sich das ja mit etwas Draht dann zurechtspaxen...
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
12.06.2024, 16:10 Uhr
slabbi



Ich habe die Tests von Sergey Kiselev zusätzlich implementiert.

Die Anzeige ist

Quellcode:

0000 - not used
0001 - Z180
0010 - Z280
0011 - EZ80
0100 - U880 (new)
0101 - U880 (old)
0110 - SHARP LH5080A
0111 - NMOS Z80
1000 - NEC D780C
1001 - KR1858VM1
1010 - NMOS unknown
1011 - CMOS Z80
1100 - Toshiba Z80
1101 - NEC D70008AC
1110 - CMOS unknown
1111 - NEC Clone



Ich habe leider nur eine "U880 (new)", "NEC D780C", sowie NMOS, CMOS und eine "NMOS unknown".

Dieser Beitrag wurde am 12.06.2024 um 18:03 Uhr von slabbi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
12.06.2024, 19:12 Uhr
Klaus



Hallo Stephan,

sehr schön!
Da sind die 4 Bit ja schon ausgereizt

Ich habe weit mehr als 100 verschiedene Z80-CPUs in der Sammlung und werde einige davon testen, wenn ich alles für den Tester hier und das Teil zusammengebaut habe.
180, 280,... habe ich nicht... ist nicht mein Sammelgebiet und die habe ich auch noch nie verwendet.

Danke und viele Grüße,
Klaus

Dieser Beitrag wurde am 12.06.2024 um 20:37 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
12.06.2024, 20:15 Uhr
slabbi



Es sind noch zwei Bits frei, also wären 64 CPUs möglich.

Man könnte die zwei Bits aber auch dazu verwenden, um einen Status direkt anzuzeigen, wie die CMOS/NMOS und U880 LED.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
13.06.2024, 19:07 Uhr
slabbi



Update:
Über den NMI Taster kann man jetzt auch XYRESULT, XFCOUNTER und XFCOUNTER anzeigen lassen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
13.06.2024, 21:32 Uhr
Klaus



Hallo Stephan,

vielen Dank… Platine ist gut angekommen. Kessler hat auch schon geliefert.
Danke für die Micro-USB-Buchse.
Du hattest wohl eine Glaskugel… genau die hatte ich nicht da.

Hier mal ein paar schnelle Fotos.
Sieht bisher alles sehr gut aus
Perfekte Arbeit!!!






Weitere Tests folgen..... evtl. morgen.
Danke und viele Grüße,
Klaus

EDIT:
Im ersten Foto ist ja der LH5080A drin und wird auch 0110 als LH5080A erkannt.
Da dies aber ein CMOS ist, wäre es da nicht sinnvoll, dass auch die LED (B7) für CMOS mit leuchtet?
Falls das geht.

Dieser Beitrag wurde am 13.06.2024 um 21:47 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
13.06.2024, 22:13 Uhr
slabbi



Die CMOS Z80 weist i.d.R. genau einen Unterschied bei den undokumentierten Befehlen auf. "out (c),0" wird als "out (c),255" ausgeführt. Dieses scheint bei der NEC nicht der Fall sein. Ich könnte die LED einfach einschalten, wenn es sich um diesen Typ handelt. Aktuell gibt die LED das Ergebnis dieses Tests aus.

Interessant finde ich das Ergebnis vom D780C.
Eigentlich sollte dort 1000 ausgegeben werden. Die 1111 habe ich selbst noch implementiert, nachdem alle anderen Tests gelaufen sind. Hier scheint sich dein NEC noch etwas anders zu verhalten.

Lade dir noch einmal die aktuelle FW. Ich hatte heute Abend noch daran gearbeitet.

Dieser Beitrag wurde am 13.06.2024 um 22:18 Uhr von slabbi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
13.06.2024, 22:14 Uhr
slabbi



Die Codes sind jetzt wie folgt:

Quellcode:

0000 - not used
0001 - Z180
0010 - Z280
0011 - EZ80
0100 - U880 (newer; MME U880, Thesys Z80, Microelectronica MMN 80CPU)
0101 - U880 (older; MME U880)
0110 - SHARP LH5080A
0111 - NMOS Z80 (Zilog Z80, Zilog Z08400 or similar NMOS CPU, Mosstek MK3880N, SGS/ST Z8400, Sharp LH0080A, KR1858VM1)
1000 - NEC D780C (NEC D780C, GoldStar Z8400, possibly KR1858VM1)
1001 - KR1858VM1 (overclocked)
1010 - Unknown NMOS Z80 Clone
1011 - CMOS Z80 (Zilog Z84C00)
1100 - Toshiba Z80 (Toshiba TMPZ84C00AP, ST Z84C00AB)
1101 - NEC D70008AC
1110 - Unknown CMOS Z80 Clone
1111 - NEC Z80 Clone (NMOS)


Dieser Beitrag wurde am 14.06.2024 um 17:12 Uhr von slabbi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
14.06.2024, 15:19 Uhr
Klaus



Hallo Staphan,

ein kurzer Test heute am frühen Morgen mit der aktualisierten Firmware, brachte beim NEC D780C keine Änderung (weiterhin 1111).
Ich habe noch andere NEC in der Sammlung, komme aber heute nicht mehr zum Testen.

Heute ist Freitag, da wartet das Zweithobby
Viele Grüße,
Klaus
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
14.06.2024, 16:22 Uhr
DL
Default Group and Edit



Zitat:
Klaus schrieb
Heute ist Freitag, da wartet das Zweithobby



Bei Onkel Pö spielt 'ne Rentnerband seit 20 Jahren Dixieland 'n Groupie haben die auch die heißt Rosa oder so und die tanzt auf'm Tisch wie 'n Go Go Go...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
14.06.2024, 21:55 Uhr
Klaus



Na klar; DL ....
Leider wieder kein Groupie da … dafür aber immer genug Bier
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
14.06.2024, 22:12 Uhr
slabbi



Hier die unterschiedlichen NEC CPUs (Detail Modus über NMI Taster):

XYRESULT = 50 (Anzeige 1111 = NEC Clone)



XYRESULT = FD (Anzeige 1000 = NEC D780C)


Dieser Beitrag wurde am 14.06.2024 um 22:17 Uhr von slabbi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
15.06.2024, 12:46 Uhr
Klaus



Hallo Stephan,

ich habe alle meine NEC mal durchgetestet. Nur die Anzeige.
Bei NEC scheint da bei der Erkennung ein ganz schönes Chaos zu herrschen.

Bei XYRESULT ist mir ich noch nicht ganz klar, wann das genau kommt.
Kannst Du im Programm evtl. etwas einbauen, dass dieses als XYRESULT irgendwie gekennzeichnet wird (z.B. mit LEDs B7-B0 z.B. 01010101 o.ä.) und es länger ansteht, damit man sich den Code des XYRESULT notieren kann?

Mit Handy abfilmen und dann suchen, wann XYRESULT kurz aufblinkt, finde ich nicht die Lösung.
Ich gebe zu… bin auch kein wirklicher Handy-Fan.



Viele Grüße,
Klaus
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
15.06.2024, 13:19 Uhr
slabbi



Super, vielen Dank für die Übersicht. Das deckt sich mit meinen Ergebnissen.

Für die detaillierten Ergebnisse:
Wenn der Tester noch beim Ausführen der funktionalen Tests ist, kannst du schon den NMI Taster drücken.

Er blinkt dann dreimal 11110000 00001111 im Wechsel.
Danach werden 8 Bit angezeigt (Port A) - XYRESULT
dann 16 Bit (Port B/A) - XFCOUNT
dann 16 Bit (Port B/A) - YFCOUNT

Die NEC Typen sind tatsächlich nicht alle 100% verlässlich erkennbar.

- 1111 beruht auf der Annahme, dass NEC CPUs das XF/YF Flag löschen, wenn Flags=FF gesetzt wurde (Trefferwahrscheinlichkeit 90%).

- 0111 liefert die Ausnahme von "1111" Es scheint, dass einige NEC CPUs "zufällig" die Bits nicht auf "0" setzen (kommt relativ selten vor).

- 1001 hier spielen die Flags wieder verrückt. Auch hier zeigt die NEC CPU ein nicht-deterministisches Verhalten. Ich vermute, dass wenn du diese CPU mehrmals testest, wird hin und wieder ein anderes Ergebnis herauskommen.

- 1101 ist relativ verlässlich (Trefferwahrscheinlichkeit >99%)
- 1110 hier scheinen die Flags wieder "zufällig" abzuweichen (kommt selten vor).

Die anderen Werte wären jetzt interessant. Das NEC Chaos ist hier schon teilweise kommentiert:
https://github.com/skiselev/z80-tests/blob/main/Results.md

Ich überlege gerade, ob der dort verwendete XY-Test ausreicht. Es fehlt ein Test der mit F = FF und A=0/A=C arbeitet.


Zu der Anzeige: Wenn du die CPU mit nur 1MHz laufen lässt, bleiben die LED Anzeige länger stehen

Dieser Beitrag wurde am 15.06.2024 um 14:06 Uhr von slabbi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
15.06.2024, 14:27 Uhr
Klaus



Danke für die Erklärungen.

Der D780C-2 mit Datumscode 1430XD004 sieht nach einer Laserbeschriftung aus.
Ob das ein Fake ist, weiß ich nicht.
Die Pins sind sauber und auch noch nicht 90° gebogen, keine Lötzinnspuren. Gehäuse und Stempelung unten entsprechen denen der anderen NEC Z80 CPUs.



Zitat:
slabbi schriebZu der Anzeige: Wenn du die CPU mit nur 1MHz laufen lässt, bleiben die LED Anzeige länger stehen


Das habe ich natürlich schon gemacht
Es ist trotzdem mühselig, die ganze Zeit hin zu starren, damit man den richtigen Zeitpunkt nicht verpasst.

Evtl. gibt es ja eine Möglichkeit das XYRESULT (wie vorhin schon beschrieben) gut kenntlich zu machen und länger anzuzeigen.
Ich vermute mal bei den SGS und ST Teilen könnten vielleicht auch noch Unterschiede auftreten.
Da habe ich 17 verschiedene in der Sammlung.

Viele Grüße,
Klaus

Dieser Beitrag wurde am 15.06.2024 um 14:29 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
15.06.2024, 16:18 Uhr
slabbi



Das wäre natürlich interessant, ob es da Unterschiede gibt.

Ich müsste den Code dafür noch einmal anpassen und gucken, ob die zusätzlichen Tests auch Sinn machen. Die Anzeige wird dadurch aber nicht übersichtlicher.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
15.06.2024, 17:44 Uhr
Klaus



Hallo Stephan,

die Tests der vielen anderen CPUs kommen dann so nach und nach.

Ich habe Dein Programm schnelle mal ein wenig modifiziert.
Bei den LH5080… die ja alle richtig als SHARP (CMOS) erkannt werden, habe ich das Bit7 für CMOS einfach stumpf gesetzt.
Und für XYRESULT einfach mal zur Erkennung 01010101 XXXXXXXX ausgegeben.
XXXXXXXX ist wie gehabt das XYRESULT.
Damit es etwas länger angezeigt wird, noch paar zusätzliche „delay“ Aufrufe.
Hilft mir ein wenig weiter und ich kann dann die Test-Tabelle auch noch mit dem XYRESULT ergänzen.

Heute wird aber nicht mehr viel…. Besuch ist da.
Viele Grüße,
Klaus

LH5080 (LH5080A, LH5080AL) mit CMOS LED



LH5080 (LH5080A, LH5080AL) 01010101 und XYRESULT

Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
15.06.2024, 17:53 Uhr
slabbi



Mit dem Bit 7 gesetzt, wenn über die Flags eine CMOS CPU erkannt wurde, hat auch einen Nachteil: Du wisst nicht mehr, wie sich OUT (C),0 bei der CPU verhält.

Das ist ja gerade die Besonderheit bei der Sharp CPU, dass OUT (C),0 sich wie bei einer NMOS CPU verhält, also 0 zurück gibt.

Evtl. sollte ich besser die Beschriftung ändern in:


Quellcode:

Bit 7     Bit 6
OUT(C),0  U880



Wieso ist R7 denn eine LED? War zu dunkel im Raum?

Dieser Beitrag wurde am 15.06.2024 um 17:59 Uhr von slabbi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
15.06.2024, 18:15 Uhr
Klaus



Neee...

teilweise gibt es Situationen, da sind alle LEDs aus und man konnte nicht sehen, ob die Versorgungsspannung noch zugeschaltet ist.
Unter Spannung mochte ich die (teilweise seltenen) CPUs nicht unbedingt wechseln.

Ich habe mir deshalb die LED als Spannungskontrolle dran gefriemelt (einfach mit Vorwiderstand parallel zum Stütz C).

Was Du zum gesetzten bit7 geschrieben hast, ist natürlich richtig.
Bei CMOS-Erkennung wäre die LED ok, bei OUT(C),0 natürlich nicht.

Mal sehen... ist ja bei Bedarf schnell rückgängig gemacht

Dieser Beitrag wurde am 15.06.2024 um 18:15 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
15.06.2024, 19:26 Uhr
slabbi



Blinkt die Platine nicht wie verrückt, wenn keine CPU eingesetzt ist und die Spannung an ist?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
15.06.2024, 19:37 Uhr
Klaus



Nicht unbedingt.
Bzw. im Normalfall (nach Reset) leuchtet ja meist etwas.
Bei NMI und 1MHz gibt es aber Situationen, da ist manchmal einige Zeit alles dunkel.

EDIT: Ich meine hier natürlich mit eingesetzter CPU.

Dieser Beitrag wurde am 16.06.2024 um 11:42 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
16.06.2024, 11:38 Uhr
Klaus



Hallo Stephan,

ein paar weitere Ergebnisse.
Ich habe Deine neue Version von gestern genutzt.
Du hattest ja noch paar kleine Änderungen eingebaut.
Evtl. wäre es hilfreich, wenn Du in den Quellen die v1.1.7 auch anhebst. Sonst komm ich u.U. durcheinander

Also….
NEC ist ein echtes Problem.
Ich bekomme keinen klaren Ergebnisse bei den XY Tests (kann jetzt aber nicht sagen, ob das vor der letzten Aktualisierung der Firmware auch schon so war).
Selbst bei zwei D780C mit demselben Datumscode, kommen unterschiedliche Ergebnisse.
Die NEC habe ich erst mal beiseite geräumt.

Die Tests mit den SHARP, ROHM und TOSHIBA CPUs sahen gut aus. Nur bei TOSHIBA (TMPZ84C00AP) gibt es einen Ausreißer. Der IC ist aber echt. Vielleicht eine vorübergehende Produktionsumstellung?
Ich habe leider keinen zweiten davon zum Vergleich.



Viele Grüße,
Klaus
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
027
16.06.2024, 12:13 Uhr
slabbi



Eine Trefferquote von 100% wird man vermutlich nicht erreichen. Einige Flags verhalten sich vermutlich "zufällig". Bei den Tests werden die Anzahl der gesetzten/nicht gesetzten Flags gezählt, was bei gleicher CPU bei einigen Typen zu unterschiedlichen Ergebnissen führt (=nicht deterministisch).

XFRESULT ist ein "Zwischenergebnis" und enthält vier Ergebnisse mit je zwei Bit.


Quellcode:

    A[7:6] - YF result of F = 0, A = C | 0x20 & 0xF7 (F.5 set, F.3 reset)
    A[5:4] - XF result of F = 0, A = C | 0x08 & 0xDF (F.3 set, F.5 reset)
    A[3:2] - YF result of F = C | 0x20 & 0xF7, A = 0 (F.5 set, F.3 reset)
    A[1:0] - XF result of F = C | 0x08 & 0xDF, A = 0 (F.3 set, F.5 reset)

Where the result bits set as follows:

    00 - flag always set as 0
    11 - flag always set as 1
    01 - flag most of the time set as 0
    10 - flag most of the time set as 1



Bei einigen CPUs ist dieser Ergebnisvektor immer konstant. Leider gibt es gerade bei den NEC CPUs viele Fälle, bei denen das Ergebnis bei einem erneuten Lauf abweicht. Ich vermute, dass einige Logikzustände einfach nicht kodiert wurden und so undefiniert sind.

Deine Tabelle sieht sehr viel schöner aus, als die, die ich erstellt habe (beinhaltet aber dieselben Informationen). Sende mir die doch bitte zu, dann ergänze ich meine Ergebnisse und würde diese auf Github ablegen. Ich kann dir auch Zugriff auf das Repository geben, dann könntest du diese dort auch aktualisieren.

Dieser Beitrag wurde am 16.06.2024 um 12:28 Uhr von slabbi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
028
16.06.2024, 12:31 Uhr
slabbi



Ich habe die Versionsnummer auf Github aktualisiert.

btw: Wenn du auf Github auf "History" klickst und dann auf die Hex-Zahl am rechten Rand, werden die jeweiligen Änderungen angezeigt.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
029
16.06.2024, 13:55 Uhr
Klaus



Danke.
Ja das mit den Änderungen habe ich gesehen, deshalb der Hinweis mit der Versionsnummer im Quellcode.

E-Mail ist unterwegs...

Viele Grüße,
Klaus

Dieser Beitrag wurde am 16.06.2024 um 13:55 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
030
16.06.2024, 16:15 Uhr
slabbi



Prima, danke.
Die ergänzte Excel-Datei habe ich auf Github abgelegt.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
031
16.06.2024, 20:09 Uhr
slabbi



Würde es Sinn machen eine Spalte "max. Speed" aufzunehmen?
Ich habe einige NMOS CPUs bis auf 10 MHz takten können.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
032
16.06.2024, 20:56 Uhr
Klaus



Hmmm... ich weiß nicht...
Einerseits könnte man so evtl. China-Fakes entlarven, aber ob das ein 100%iger Test wird?

Mir ist z.B. gerade durch Zufall aufgefallen, dass eine U880 DC 08 bei 8 MHz ok war, bei 10 MHz trotzdem lief, aber das XY Ergebnis Abweichungen hatte (warum auch immer).
Ob das am Ende irgendwie aussagekräftig ist???
Eigenartig ist der Efffekt trotzdem.
Das Programm lief, nur die XY Ergebnis sind abgewichen. Kannst Du das bei einer CPU evtl. mal verifizieren?
Kann ja auch an meinem Aufbau liegen.

Natürlich treibt das dann den Testaufwand sehr in die Höhe.

Ich weiß nicht, ob sich hier im Forum evtl. noch jemand den Tester aufbaut und dann später fleißig mit testet (sofern ein paar unterschiedliche CPUs vorhanden sind).

Viele Grüße,
Klaus
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
033
16.06.2024, 21:25 Uhr
slabbi



Das XFResult (der erste (8Bit-)Wert) sollte relativ stabil sein.

Grundsätzlich werden die gesetzten X und Y Flags gezählt. Wenn die Flags nie gesetzt werden, steht im XFResult 00, wenn sie immer gesetzt werden, dann 11.

Bei allem dazwischen gehe ich davon aus, dass die Ergebnisse eher zufällig sind. Bei 01 und 10 ("meistens 0 bzw. 1") können die Counter (die beiden 16 Bit Werte) beliebig abweichen.

Mit den Flags kann man nicht immer eine CPU eindeutig erkennen. Sie können aber bei der Erkennung unterstützen.

Ich habe die max. Geschwindigkeit einfach mal mit aufgenommen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
034
16.06.2024, 21:28 Uhr
slabbi



Guck mal hier:



Ein U880, der sich als Zilog Z84C0020 ausgibt. Er verträgt aber immerhin 10 MHz
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
035
16.06.2024, 21:43 Uhr
Klaus



Ja… die lieben Chinamänner….
Ich denke mal, dass es sich so langsam herumgesprochen haben sollte, dass inzwischen sehr viele Faks von dort kommen. Paar wenige seriöse wird es sicher geben, aber da bekommt man die CPUs auch meist nicht für „Kleingeld“

Das Foto hatte ich schon mal gepostet:
1035 BW … sind auch bei mir dabei …. (muss ich bei Gelegenheit nochmal mit Deinem Tester prüfen)

Besonder bekloppt ist die vorletzte unter. Aus einen modernen CMOS CPU machen die eine alte NMOS.



Viele Grüße,
Klaus

Dieser Beitrag wurde am 16.06.2024 um 21:44 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
036
17.06.2024, 21:57 Uhr
Bert




Zitat:
slabbi schrieb
Einige Flags verhalten sich vermutlich "zufällig".


So richtig an Zufall mag ich nicht glauben.
Ich könnte mir vorstellen, das die beiden Flags davon abhängig sind, was vorher über den Bus gelaufen ist (eine Adresse, der Stackpointer oder ein anderes Register).
Vielleicht werden sie im Moment des Auslesen auch nicht aktiv getrieben und floaten zu einem bestimmten Potential. Je nach Taktfrequenz (und damit Zeitpunkt des Auslesen) bekommt man dann selbst bei der selben CPU unterschiedliche Resultate.

Grüß,
Bert

Dieser Beitrag wurde am 17.06.2024 um 21:57 Uhr von Bert editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
037
17.06.2024, 22:30 Uhr
slabbi




Zitat:
Bert schrieb
Vielleicht werden sie im Moment des Auslesen auch nicht aktiv getrieben und floaten zu einem bestimmten Potential. Je nach Taktfrequenz (und damit Zeitpunkt des Auslesen) bekommt man dann selbst bei der selben CPU unterschiedliche Resultate.



Genau das.

Dieser Beitrag wurde am 17.06.2024 um 22:30 Uhr von slabbi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
038
21.06.2024, 22:11 Uhr
Early8Bitz

Avatar von Early8Bitz

Hallo Stephan,

ich habe mal den Identifizierungs-Part der Software auf einen kleinen SBC mit Mini-ROM-Monitor portiert und ein paar meiner CPUs durchgetestet. Die Anzeige erfolgt über serielle Ausgabe auf ein Terminal.
Taktfrequenz des SBC ist 2,4576MHz, auch die Anfall CPU (UD880D) lief darauf.

Quellcode:

Zilog Z8400PS 2,5MHz, Zilog-Logo, Datecode 8052:     NMOS Z80  Typ=08 XYResult=fd YFCount=bfff XFCount=bff7 00FF_Result=00    => CPU_NECD780C
  selbe CPU weitere Tests                XFCount=bff9, bffa, bffb, bffc

Toshiba TMPZ84C00AP, Datecode 8602EDI:            CMOS Z80  Typ=0c XYResult=3f YFCount=8000 XFCount=c000 00FF_Result=28    => CPU_TOSHIBA

U84C00DC04, zöllig, MME, ohne Datecode:            CMOS Z80  Typ=0b XYResult=ff YFCount=c000 XFCount=c000 00FF_Result=28    => CPU_CMOSZ80

UD880D, MME, S1, Datecode T6:                NMOS U880 Typ=04 XYResult=ff YFCount=c000 XFCount=c000 00FF_Result=28    => CPU_U880NEW

UB880D, MME, Datecode S6:                NMOS U880 Typ=04 XYResult=ff YFCount=c000 XFCount=c000 00FF_Result=28    => CPU_U880NEW

U880DC08, zöllig, FWE-Logo, Datecode A9:        NMOS U880 Typ=05 XYResult=f0 YFCount=8000 XFCount=8000 00FF_Result=00    => CPU_U880OLD

UA880D, zöllig, FWE-Logo, Datecode nicht lesbar:    NMOS U880 Typ=05 XYResult=fd YFCount=bf4b XFCount=903a 00FF_Result=20    => CPU_U880OLD
grüne Markierung an Pin 1
  selbe CPU weitere Tests                XFCount=bf62, bf65 YFCount=9233, 9259

UA880D 2. Exemplar, gleiche Kennung:            NMOS U880 Typ=05 XYResult=fd YFCount=c000 XFCount=b69a 00FF_Result=28    => CPU_U880OLD
  selbe CPU weitere Tests                YFCount=b6c7, b6e4 00FF_Result=20


Auffällig sind eine Zilog CPU, die als NEC identifiziert wird sowie die instabile Ausgabe bei beiden UA880D, die ich besitze. Alle Bauelemente stammen aus der Zeit vor der Wende und mit allen läuft der Monitor meines SBC.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 21.06.2024 um 22:11 Uhr von Early8Bitz editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
039
22.06.2024, 09:30 Uhr
slabbi



Gab es damals schon Zilog Fakes? Das XRESULT FD ist eigentlich sehr zuverlässig bei NEC CPUs.

Die FWE/MME kann man anscheinend sehr verlässlich identifizieren. Wobei die 8 MHz FWE schon auffällig ist.

Ich habe deine Ergebnisse der Tabelle hinzugefügt.

Dieser Beitrag wurde am 22.06.2024 um 14:04 Uhr von slabbi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
040
23.06.2024, 17:46 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
slabbi schrieb
Gab es damals schon Zilog Fakes? Das XRESULT FD ist eigentlich sehr zuverlässig bei NEC CPUs.

Die FWE/MME kann man anscheinend sehr verlässlich identifizieren. Wobei die 8 MHz FWE schon auffällig ist.

Ich habe deine Ergebnisse der Tabelle hinzugefügt.


Beim Einfügen in Deine Tabelle ist Dir ein Fehlerchen unterlaufen:
Die erste UA880D mit grünen Punkt (aktuell Zeile 116 der Excel Tabelle):
- Du schreibst bei YFCOUNT 00FD BF62 (das FD gehört zu XYRESULT)
- Richtig ist YFCOUNT BF4B, BF62, BF65 und weitere

Zweite UA880D mit grünen Punkt (Zeile 117):
- Hier habe ich noch weiter gespielt. 00FF_RESULT war nur beim allerersten Durchlauf 0x28, seitdem nur noch 0x20, auch nach Reset, PowerOff, zwei Tage lang keine Änderung mehr.
Die 0x28 müssen ein Ausrutscher sein, ich habe es aber als 'Beweis' in einem Screenshot.
YFCOUNT wechselt bei genügend vielen Durchläufen ausschließlich zwischen 0xBFFF und 0xC000. XFCOUNT nimmt unterschiedliche Werte im Bereich 0xB5xx oder 0xB6xx an.

Dann habe ich noch eine weitere UA880D raus gekramt, diesmal ohne grünen Punkt. Beschriftet: UA880D MME Datecode X3. Ergebnis:
NMOS U880 Typ=05 XYResult=fd YFCount=c000 XFCount=bda7 00FF_Result=20

YFCOUNT war bisher konstant, XFCOUNT wechselt im Bereich 0xBCxx, 0xBDxx und 0xBFxx.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 23.06.2024 um 17:46 Uhr von Early8Bitz editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
041
23.06.2024, 18:01 Uhr
Early8Bitz

Avatar von Early8Bitz

Ergänzung zur letzten UA880D MME X3:
Hier habe ich auch gerade das Wechseln von 00FF_RESULT zwischen 0x20 und 0x28 beobachtet.

Quellcode:

>j 8c00
NMOS U880 Typ=05 XYResult=fd YFCount=c000 XFCount=bc98 00FF_Result=20
>j 8c00
NMOS U880 Typ=05 XYResult=fd YFCount=c000 XFCount=bd29 00FF_Result=20
>j 8c00
NMOS U880 Typ=05 XYResult=fd YFCount=c000 XFCount=bd66 00FF_Result=20
>j 8c00
NMOS U880 Typ=05 XYResult=fd YFCount=c000 XFCount=bda7 00FF_Result=20
>j 8c00
NMOS U880 Typ=05 XYResult=fd YFCount=c000 XFCount=bf14 00FF_Result=20
>j 8c00
NMOS U880 Typ=05 XYResult=fd YFCount=c000 XFCount=bf0f 00FF_Result=20
>j 8c00
NMOS U880 Typ=05 XYResult=fd YFCount=c000 XFCount=bf33 00FF_Result=28
>j 8c00
NMOS U880 Typ=05 XYResult=fd YFCount=c000 XFCount=bf2c 00FF_Result=20
>j 8c00
NMOS U880 Typ=05 XYResult=fd YFCount=c000 XFCount=bf33 00FF_Result=20
>


--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 23.06.2024 um 18:02 Uhr von Early8Bitz editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
042
23.06.2024, 18:27 Uhr
slabbi



Vielen Dank. Ich habe das hoffentlich richtig korrigiert.

3 FWE UA880D (zöllig) 4 MHz NMOS 0 1 x x 0 1 0 1 1 1 1 1 1 1 0 1 FD BF4B BF62 BF65 903A 9233 9259 0 0 1 0 0 0 0 0 20 U880 (older; MME U880)

4 FWE UA880D (zöllig) 4 MHz NMOS 0 1 x x 0 1 0 1 1 1 1 1 1 1 0 1 FD C000 BFFF B5xx B6xx 0 0 1 0 (1) 0 0 0 20 U880 (older; MME U880)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
043
23.06.2024, 18:51 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
slabbi schrieb
Vielen Dank. Ich habe das hoffentlich richtig korrigiert.


Ja, passt.

Bei der zuletzt hinzu gefügten U8880D (Zeile 131, Nr 7) wäre dann bei 00FF_RESULT

Quellcode:
| 0 0 1 0(1) 0 0 0 | 20 |


sinnvoller (genau wie bei der UA880D in Zeile 117), da der Wert 0x20 signifikant häufiger auftritt, als 0x28.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
044
23.06.2024, 19:58 Uhr
slabbi



Stimmt, ist geändert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
045
01.07.2024, 23:22 Uhr
Early8Bitz

Avatar von Early8Bitz

So, heute wieder die CPU umgestöpselt. Diesmal steckt auf dem Sockel: "U 880D 00B" "FWE" Datecode "PD", also 12/1982.
32 Durchläufe brachten:
XYResult stabil 0xf4
YFCOUNT instabil 8fxx, 90xx, 91xx
XFCOUNT stabil 0x8000
00FF_Result stabil 0x00

Die letzten 5 Loops:

Quellcode:
NMOS U880 Typ=05 XYResult=f4 YFCount=9160 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=916e XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=916c XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9166 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=916e XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9161 XFCount=8000 00FF_Result=00


Sergey Kiselev hat seinen Code für einen Assembler geschrieben, der nur 8080 Mnemonic übersetzt. Z80-spezifische Instruktionen hat er mit DB/DEFB kodiert. Damit ist in einer Hardware, die eine Z80-CPU enthält, noch Optimierungspotential gegeben. Ich habe hier das Unterprogramm "testflags" auf Z80 optimiert. Die Codeänderung sollte nicht die Testergebnisse verändern, bei den von mir getesteten CPUs blieb alles beim alten.

Was nocht auffällt, Sergey hat hier statt dem SCF-Befehl CCF (CMC bei 8080) genommen (im Kommentar aber SCF (STC bei 8080) geschrieben). Soll aber die gleiche Wirkung haben https://github.com/skiselev/z80-tests/issues/1.

Quellcode:
testflags:
        ld      hl,0            ; init counters
        ld      (XFCOUNT),hl
        ld      (YFCOUNT),hl
        ld      d,0             ; init outer loop with 256
tfloop1 ld      e,0             ; (re)init inner loop with 256
tfloop2 push    de              ; Push counters to the stack
        push    de              ; PUSH DE TO THE STACK
        di
        pop     af              ; POP A AND FLAGS FROM THE STACK (DE)
        ccf                     ; SET CY FLAG, DEPENDING ON THE CPU TYPE THIS
                                ; ALSO MIGHT CHANGE YF AND XF FLAGS
        push    af              ; STORE A AND F
        ei
        pop     de              ; NEW FLAGS IN E
        bit     3,e             ; Test XF (F.3)
        jr      z,tfloop4       ; XF (F.3) not set
        ld      hl,(XFCOUNT)
        inc     hl              ; XFCOUNT += 1 IF FLAG IS SET
        ld      (XFCOUNT),hl
tfloop4 bit     5,e             ; Test YF (F.5)
        jr      z,tfloop5       ; YF (F.5) not set
        ld      hl,(YFCOUNT)
        inc     hl              ; YFCOUNT += 1 IF FLAG IS SET
        ld      (YFCOUNT),hl
tfloop5 pop     de              ; Restore counters from stack
        inc     e               ; counter for inner loop += 1
        jr      nz, tfloop2
        inc     d               ; counter for outer loop += 1
        jr      nz, tfloop1
        ret


Addon:
Die DI/EI Passage habe ich eingefügt, weil bei meinem System im Hintergrund ein Timerinterrupt läuft für eine Watchdog und das Multiplexing einer 7-Segment Anzeige. Damit nicht zufällig eine ISR Seiteneffekte auf die XF/YF-Flags nimmt, habe ich in der Passage, wo die Flags getestet werden, den Interrupt verboten.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 01.07.2024 um 23:32 Uhr von Early8Bitz editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
046
02.07.2024, 08:26 Uhr
slabbi



Ich bin mir nicht sicher, ob die Optimierung anstelle RRCA BIT zu verwenden gut ist. BIT verändert (bzw. diese sind "undefined") mehr Flags als RRCA (nur das Carry Flag). Man möchte ja das F.3 und F.5 betrachten und sich nicht noch mehr Unsicherheiten (undefined) einfangen. Wer weiß, welche Seiteneffekte der BIT Befehl hat.

Im aktuellen Programm sind Interrupts ebenfalls gesperrt (direkt erste Zeile).

Dieser Beitrag wurde am 02.07.2024 um 08:53 Uhr von slabbi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
047
02.07.2024, 18:38 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
slabbi schrieb
Ich bin mir nicht sicher, ob die Optimierung anstelle RRCA BIT zu verwenden gut ist. BIT verändert (bzw. diese sind "undefined") mehr Flags als RRCA (nur das Carry Flag). Man möchte ja das F.3 und F.5 betrachten und sich nicht noch mehr Unsicherheiten (undefined) einfangen. Wer weiß, welche Seiteneffekte der BIT Befehl hat.


Der Passus in diesem Unterprogramm, der für die Analyse relevant ist, ist ja nicht verändert.

Quellcode:
     push  de     ; Setze vorbereitetes Testpattern
     pop   af     ; nach A und F
     scf          ; Manipuliere die Flags
     push  af     ; Sichere manipulierte Flags
     pop   de     ; und transportiere das Ergebnis nach E


Die eigentliche Auswertung von XF und YF passiert ja nachgelagert im Register E (bei mir) bzw. Register A (bei Sergey). Klar, viele Befehle werden F.3 und F.5 beeinflussen, aber letzlich erfolgt ja die Auswertung anhand einer Kopie des Flagregisters, welche unmittelbar nach dem SCF erstellt wurde.
Zum anderen rufst Du das Unterprogramm testflags bei Deinem Standalone Tester ja in einem ganz anderen Kontext auf (NMI Routine) als im Original von Sergey, wo es nach einer CP/M Ausgaberoutine aufgerufen wird. D. h. der Zustand der CPU-Register beim Aufruf von call testflags wird grundsätzlich unterschiedlich sein.

Zitat:
slabbi schrieb
Im aktuellen Programm sind Interrupts ebenfalls gesperrt (direkt erste Zeile).


In Deinem Standalone Tester läuft aber auch nichts, was maskierbare Interrupts auslösen kann. Daher ist das DI beim Programmstart unnötig, außerdem ist die CPU nach Reset ohnehin im DI-Zustand.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
048
02.07.2024, 20:06 Uhr
slabbi



Du hast recht. Da habe ich nicht überlegt.

Der Aufruf im NMI ist auch eher eine Notlösung, da ich sonst nichts habe und diese Ausgabe für den "normalen" Betrieb nicht haben wollte. Da ist ein CP/M System schon praktischer
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
049
02.07.2024, 21:25 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
slabbi schrieb
Da ist ein CP/M System schon praktischer


Pro und Contra.

Bei einem Komplettrechner a'la CP/M (ich glaube 'Klaus' hat das auf einem NANOS System laufen) oder bei meinem SBC hat man selten die Möglichkeit, die CPUs mit verschiedenen Taktfrequenzen zu striezen. Außerdem haben diese Rechner selten einen ZIF-Sockel, weil man die ursprünglich nicht für den häufigen Wechsel der CPU gebaut hat. Da ist Dein Stand-Alone Tester im Vorteil.

Die komplexe Ausgabe mehrerer Ergebnisbytes über eine LED-Leiste ist dagegen ein Nachteil, was die Handhabung betrifft. Da ist die Bildschirmausgabe auf einem Rechner mit Betriebssystem oder ROM-Monitor schon wesentlich angenehmer.

Ein weiterer Vorteil, wie ich das implemetiert habe, ist, dass ich beim Aufruf der Testroutine einen Durchlaufzähler in der Komandozeile mit angeben kann. Dadurch hat man dann den Output von <n> Tests untereinander auf dem Bildschirm stehen und sieht sofort, welche Tests schwankende Ergebnisse bringen.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
050
03.07.2024, 13:21 Uhr
slabbi



Ein LCD-Display könnte man schon ansteuert. Port B (ist ja nur unidirektional) wäre dafür geeignet. Das ist nur etwas Fleißarbeit. Den (C-)Code habe ich, ich müsste ihn nur etwas vereinfachen und in Z80 Assembler übersetzen. Einziges größeres Problem wäre das Timing. Wenn man aber 20 MHz als max. Taktfrequenz nimmt und Delays entsprechend programmiert (z.B. 1ms), sollte die 20fache Wartezeit bei 1 MHz (dann 20ms) eigentlich nicht stören.
Dieser Beitrag wurde am 03.07.2024 um 13:23 Uhr von slabbi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
051
04.07.2024, 22:42 Uhr
Early8Bitz

Avatar von Early8Bitz

Ich möchte noch was zur Rubrik "Wissen, das die Welt nicht braucht" beitragen. Mir hat das instabile Verhalten von XFCount bzw. YFCount bei manchen CPUs keine Ruhe gelassen.
Den Versuch habe ich basierend auf der CPU in <045> durchgeführt. Ich hatte schon beobachtet, dass der instabile Wert von YFCount bei dieser CPU zwar auf und nieder geht, aber über die Laufzeit tendenziell steigt.

Quellcode:

32 Durchläufe nach kurz nach Power On

>j 8c00 20
NMOS U880 Typ=05 XYResult=f4 YFCount=8fc0 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8fb9 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8fe9 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8fef XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8ff7 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8ffb XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9002 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=900d XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=903f XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=904a XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9042 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9054 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9052 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9054 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9048 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=906c XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9063 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9066 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9092 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9098 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=907d XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9083 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=909f XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9086 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=908e XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=90b1 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=90a9 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=909c XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9098 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9084 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=90ad XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=90bb XFCount=8000 00FF_Result=00
>


Da ich keinen geheimen Zeitgeber in der CPU vermutete, fiel der Verdacht auf Temperaturabhängigkeit. Also Test wiederholt und zwei Kühlintervalle durch Anblasen mit Druckluft aus der Dose eingeschoben. Das Ergebnis spricht für sich.

Quellcode:

32 Durchläufe mit Kühlphasen

>j 8c00 20
NMOS U880 Typ=05 XYResult=f4 YFCount=90b5 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=90af XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=90c1 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=90bc XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=90df XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=90a1 XFCount=8000 00FF_Result=00 <= Kühlung Start
NMOS U880 Typ=05 XYResult=f4 YFCount=8ff5 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8f72 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8f40 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8f1a XFCount=8000 00FF_Result=00 <= Kühlung Ende
NMOS U880 Typ=05 XYResult=f4 YFCount=8f70 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8fab XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8fda XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8fe5 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8ffe XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9024 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9028 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9041 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9063 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9076 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=904f XFCount=8000 00FF_Result=00 <= Kühlung Start
NMOS U880 Typ=05 XYResult=f4 YFCount=8fb4 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8f63 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8f0b XFCount=8000 00FF_Result=00 <= Kühlung Ende
NMOS U880 Typ=05 XYResult=f4 YFCount=8f31 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8f67 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8f97 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8fa6 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8fed XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9001 XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=8fff XFCount=8000 00FF_Result=00
NMOS U880 Typ=05 XYResult=f4 YFCount=9014 XFCount=8000 00FF_Result=00
>


Ein Testdurchlauf dauert bei 2,MHz Takt etwa 5 Sekunden.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 04.07.2024 um 22:46 Uhr von Early8Bitz editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
052
26.07.2024, 15:43 Uhr
digitaler



Ich habe mit dem Tester nach dem Aufbau ein paar merkwürdige Ergebnisse erhalten.
Auslöser war ein fehlendes Bauteil. Der fehlende 74LS393 wurde zunächst durch einen 74HC393 ersetzt. Nachdem ich 74LS393 aus China erhalten hatte, habe ich damit noch einmal die Messungen durchgeführt.
Bei U880 und einem echten Zilog Z80 gab es keine Unterschiede.
Auch die 4 vermutlich Fake-IC (Z84C0008PSC, Z84C0010PEC und 2 Z84C0020PEC) liefen bei 8MHz bzw. 10 MHz, wurden richtig als NMOS erkannt (war vorher schon an der Stromaufnahme zu sehen). Ausgegeben wurden alle mit 0111 (NMOS CPU), wobei der 74HC393 eingesetzt war.



Mit dem 74LS393 wurde hingegen bei allen 4 IC der Code 1111 (NEC Z80) ausgeben.



Die Z84C0010PEC -CPU wurde noch einmal extra getestet, da sie bei 10 MHz augenscheinlich an der Grenze mit der Taktfrequenz war (startete manchmal nicht) oder Probleme mit dem Taktsignal hatte. Laut Datenblatt verlangt der Z80 (sowohl CMOS als auch NMOS) Ucc – 0,6V als Minimum für das Taktsignal. Die 74LS393 liefern jedoch im Mittel nur 3,5 Volt und sind mit typisch 35 MHz Taktfrequenz (Minimum 25 MHz) bei 20 MHz Takt gefordert. Der 74HC393 bringt laut Datenblatt im Mittel 99 MHz.
Deshalb habe ich beim 74LS393 noch das Taktsignal mit 330 Ohm an 5V angehoben und plötzlich wurde aus dem Z84C0010PEC ein U880 ???



Eine Erklärung habe ich nicht (sofern die 74LS393 i.O. sind). Weitere CPUs zum Testen habe ich auch nicht.
PS: Software ist die 1.1.11.

VG
Dietmar

Dieser Beitrag wurde am 26.07.2024 um 15:50 Uhr von digitaler editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
053
26.07.2024, 17:05 Uhr
Early8Bitz

Avatar von Early8Bitz

Ich hatte mir den Schaltplan des Testers bisher garnicht angeschaut, da ich die Software auf einen fertigen Rechner portiert habe.
Aber richtig, die Testschaltung sollte natürlich den Prüfling im Bereich der spezifizierten Betriebsbedingungen betreiben, um verlässliche Testergebnisse zu erhalten.
Um die geforderten Bedingungen für das Taktsignal des U880 oder des NMOS Vorbildes zu erfüllen, haben wir damals sogar mit einem Transistor aktiv nach +5V getrieben.
HC[T] hatten wir anfangs der 80er Jahre noch nicht zur Verfügung, und [LS]TTL bringt den erforderlichen H-Pegel des Taktsignals nicht.
Ein Pullup mit 330 Ohm schafft zwar den H-Pegel, aber die Flankensteilheit der L-H Flanke ist dann noch unter der Spezifikation.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 26.07.2024 um 17:38 Uhr von Early8Bitz editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
054
26.07.2024, 17:21 Uhr
Early8Bitz

Avatar von Early8Bitz

Gerade nochmal ins Zilog Datenblatt geschaut.
Minimum Clock Input High Voltage ist sowohl bei CMOS als auch bei den NMOS CPUs mit Vcc-0.6V angegeben.
Max Clock Rise Time und Clock Fall Time von 30ns bei der langsamsten bis 10ns bei der höchsten Taktvariante.
Ein LS-Schaltkreis als Takttreiber ist definitiv Out of Specification.

Added:
https://www.mikrocontroller.net/attachment/179615/Z80Clock.pdf
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 26.07.2024 um 17:39 Uhr von Early8Bitz editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
055
27.07.2024, 09:26 Uhr
Klaus



Hallo Dietmar und Ralf,

eine interessante und wichtige Erkenntnis.

Wenn ich mir ein paar Schaltungen mit Z80 CPU (U880) anschaue, ist eigentlich immer ein Pullup 330 oder 470 Ohm bzw. die vom Ralf erwähnte Transistorstufe (die bei den hohen Taktfrequenzen vermutlich sinnvoller ist) am Taktsignal.

In meinem Tester ist ein 74HCT393 verbaut (hatte gerade nichts anderes). Ich muss bei Gelegenheit mal testen, ob da der Pullup auch Auswirkungen hat.

Momentan bin ich noch mit meiner Baustelle beschäftigt und mir fehlt ein wenig die Zeit. Es sind ja auch noch diverse Z80 CPUs, die ich in der Ergebnis-Tabelle vom Stephan eintragen muss.

Danke und viele Grüße,
Klaus
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
056
27.07.2024, 17:18 Uhr
Early8Bitz

Avatar von Early8Bitz

HCT haben eine High Ausgangsspannung knapp unterhalb Vcc. Die Ausgangssituation ist für die Taktung der CPU dadurch schon wesentlich günstiger als mit TTL Schaltkreisen.
Wie es dynamisch aussieht, müsste man mal mit einem guten Oszi untersuchen (den ich leider nicht habe).
Gerade bei 16MHz oder 20MHz, was ja der Standalone Tester liefern kann, beeinflussen die Umladeströme der Eingangskapazität der CPU die Signalform des Taktsignals.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
057
27.07.2024, 18:14 Uhr
Early8Bitz

Avatar von Early8Bitz

Unabhängig vom Standalone Tester ist das Problem der Taktversorgung bei einfachen Amateurcomputern oder Steuerrechnern (SBC) eine Betrachtung wert.
Die nicht unübliche Kombination [LS]TTL + Pullup muss dort oft neben der CPU noch ein bis zwei PIOs und evtl. einen CTC versorgen.
Da müssen dann wesentlich mehr Kapazitäten über den Pullup geladen werden, was die Situation bei der Anstiegszeit (L-H-Flanke) verschlechtert.
Bei 2,5MHz vielleicht noch unkritisch, müsste man das Taktsignal bei höheren Taktfrequenzen dann messtechnisch kontrollieren.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
058
27.07.2024, 19:19 Uhr
Enrico
Default Group and Edit


Das Problem hatte ich beim LC80ex
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
059
27.07.2024, 20:34 Uhr
slabbi



Das ist sehr interessant. Ich kann das veränderte Verhalten beim Einsatz eines LS Typen nicht nachvollziehen.

Bei den Nicht-U880 Typen nicht, aber auch beim U880 nicht. Evtl. habe ich da welche aus einer anderen Serie, aber die werden - egal of LS, HC oder HCT - immer als U880 erkannt. Und das ganze funktioniert auch bei 20 MHz.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
060
28.07.2024, 13:27 Uhr
digitaler



Ich habe als Ergänzung zu 052 und Anregung von Ralf noch ein paar Messungen gemacht.
Nachfolgend die Taktsignale am Ausgang 74HCU04 mit 16 und 20 MHz.
Verwendet wurde ein SIGLENT SDS 1202X-E 200MHz DSO.




Zum Vergleich der Takt mit einem 74HC04 bei 16 und 20 MHz. Der 74HCU04 liefert das etwas bessere Signal.



Danach wurde am Ausgang des 74HC393 bei 1, 5 und 10 MHz gemessen. Das Signal ähnelt bei 10 MHz eher einem Sinus.




Das gleiche Bild ergibt sich beim 74LS393 – lediglich die Pegel sind, wie erwartet – kleiner. Ein Pullup 330 Ohm gegen 5 Volt hat übrigens keine Veränderung an der Kurvenform gebracht, nur der DC-Pegel wurde angehoben.



@Slabbi
U880 und echte Zilog Z80 funktionieren auch bei mir sowohl mit LS als auch HC korrekt. Ansonsten habe ich nur die 4 Stück als CMOS gelabelte NMOS Typen. Hier wird mit dem HC393 reproduzierbar der TYP 0111 und mit dem LS393 Typ 1111 ausgegeben ? Warum einer bei 10 MHz mit LS393 und Pullup als U880 ausgewiesen wurde ist unklar (bei niedrigeren Frequenzen übrigens nicht).
Zeigt der von Dir als U880 getestete Z84C0020PEC auch bei niedrigeren Frequenzen dieses Ergebnis?

Gruß
Dietmar

Dieser Beitrag wurde am 28.07.2024 um 20:21 Uhr von digitaler editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
061
28.07.2024, 14:43 Uhr
slabbi



Wenn ich die innerhalb der Spezifikation betreibe, dann ist das Ergebnis gleich. Wird der Takt höher, habe ich bei einer CPU auch ein unterschiedliches Ergebnis.
Dieser Beitrag wurde am 28.07.2024 um 14:44 Uhr von slabbi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
062
28.08.2024, 21:06 Uhr
slabbi



Ich habe ein kleines Update veröffentlicht.

Die Platine hat jetzt einen Jumper, wenn entfernt, kann die Stromaufnahme gemessen werden. Und es gibt eine "Power-LED".
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
063
29.08.2024, 07:52 Uhr
Klaus



Hallo Stephan,

so gaaanz langsam lässt der Stress mit den Reparaturen an unserer alten Bude nach. Obwohl… fertig wird man da sowieso nie.
Ich hatte deshalb ja in den letzten Monaten kaum Zeit für irgendwelche Tests, bzw. das Hobby allgemein.

Danke für die neue Hardware-Version und die Weiterführung der Ergebnistabelle.


Zitat:
slabbi schrieb
... Und es gibt eine "Power-LED".


Ah… da hat Dich meine Idee (021 /022) wohl inspiriert

Die Sache mit der Messung der Stromaufnahme ist natürlich auch sehr gut zur NMOS/CMOS Erkennung geeignet.

Allerdings hier mal eine Frage an die Experten:
Macht es der CPU etwas aus, wenn an den Eingängen Signale anliegen, aber die 5V (Vcc) fehlen, falls man vergessen hat den Jumper zu stecken, bzw. das Strommessgerät anzuschließen?

Dann gleich noch eine Frage zu der erweiterten Ergebnistabelle:
Hier hast Du eine Spalte (Current) hinzugefügt. Bei welcher Taktfrequenz wird die Strommessung gemacht?
Ich würde hier vorschlagen evtl. immer die Taktfrequenz (Test) wählen, um eine bessere Vergleichbarkeit zu haben.

Ein Fehler hat sich auch eingeschlichen. KR1858VM1 ist NMOS. KR1858VM3 ist CMOS.

Letztes Wochenende hatte ich mal paar Minuten Zeit und Lust und da ist mir der vom Ralf unter 051 beschriebene Effekt bei einer KR1858VM3 auch genauso aufgefallen. Hier haben sich sogar XFCount und YFCount bei Temperaturänderungen nachvollziehbar geändert.

Viele Grüße,
Klaus

Dieser Beitrag wurde am 29.08.2024 um 13:35 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
064
29.08.2024, 10:34 Uhr
slabbi



Gute Ideen nehme ich immer gerne auf

Das Datenbuch sagt für Eingangssignale
V_IL = -0.3 - 0.8v
V_IH = 2.0 - Vcc

V_ILC = -0.3 - 0.45v
V_IHC = Vcc-0.6 - Vcc+0.3

Das betrifft aber mWn nur, in welchem Rahmen die Signale korrekt erkannt werden.

Unter den "Absolute Maximum Ratings" befindet sich dann die Aussage:
"Voltage On Any Pin with Respect to Ground: -0.3V - +7V"

Eine Warnung die CPU ohne Vcc zu betreiben habe ich nicht gefunden. Ich kann mir ehrlich gesagt auch nicht vorstellen, dass das der CPU schaden würde. Sie wird halt nicht korrekt laufen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
065
29.08.2024, 10:36 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
Klaus schrieb
Allerdings hier mal eine Frage an die Experten:
Macht es der CPU etwas aus, wenn an den Eingängen Signale anliegen, aber die 5V (Vcc) fehlen, falls man vergessen hat den Jumper zu stecken, bzw. das Strommessgerät anzuschließen?


Experte lassen wir mal offen.

Wenn die Signalquelle gerade Low ausspuckt, passiert nichts, die CPU-GND und Signal-GND sind ja trotzdem verbunden.
Ist die Signalquelle auf High, wird je nach Stromergiebigkeit ein Strom über die Eingangsschutzschaltung des jeweiligen CPU-Eingangs fließen und einen positiven Pegel am offenen Vcc-Anschluss der CPU erzeugen. Wie hoch der ist, hängt von vielen Faktoren ab.
Anzahl der Eingänge, Innenwiderstand der Signalqelle(n), u. A.
Die CPU erhält dadurch eine geringe Betriebsspannung. Der summarische Strom aller High-Eingänge wird sicher nicht reichen, die CPU vernüftig arbeiten zu lassen.
Ob durch die Eingangsströme die CPU-Eingänge geschädigt werden, ist schwer zu sagen.
Auf jeden Fall dürfte der Grenzwert ViH <= Vcc+0,6V überschritten werden.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 29.08.2024 um 10:45 Uhr von Early8Bitz editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
066
29.08.2024, 11:51 Uhr
slabbi



Das "ViH <= Vcc+0,6V" ist auch kein "absolute Maximum Rating". Diese Werte werden eingehalten.

Einfach ausprobieren, ob die CPU anspringt.

Dieser Beitrag wurde am 29.08.2024 um 11:51 Uhr von slabbi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
067
29.08.2024, 13:35 Uhr
Klaus



Hallo Ralf und Stephan,

vielen Dank an Euch beide.

Leider habe ich zu wenig Ahnung von der ganzen Materie und meine Frage rührt hauptsächlich daher, weil doch einige seltene Stücke in meiner Z80 CPU Sammlung sind, die ich bei der Testerei natürlich nicht aus Versehen „schrotten“ möchte.

Ich hätte ja auch vermutet, dass der CPU nichts passiert, aber um sicher zu gehen, meine Fragerei.

Danke und viele Grüße,
Klaus

Dieser Beitrag wurde am 29.08.2024 um 20:55 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
068
29.08.2024, 15:22 Uhr
Early8Bitz

Avatar von Early8Bitz

Hi Klaus,

ein Vorschlag zum Schutz Deiner Schätzchen :

Brücke den Jumper mit einer Silizium Diode in Flussrichtung. Dann hat die CPU bei vergessenem Jumper immer noch 5V-0.7V am Vcc Anschluss.
Bei gestecktem Jumper im Regelbetrieb spielt die Diode keine Rolle, da sie dann gebrückt ist.
Klemmst Du an Stelle des Jumpers ein Strommessgerät an, sollte der Spannungsabfall über dem Strommessgerät unterhalb der Flussspannung der Diode liegen.
Dann fließt nur noch ein vernachlässigbar Reststrom durch die Diode und der Haupanteil des Stroms fließt durch das Messgerät.
Für eine Unterscheidung NMOS/CMOS sollte das genau genug sein.
Man könnte den Jumper auch mit zwei in Reihe geschalteten Dioden brücken, dann hast Du mehr Luft nach oben, was den Spannungsabfall über dem Strommessgerät betrifft.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
069
29.08.2024, 20:52 Uhr
Klaus



Hallo Ralf,

vielen lieben Dank für den super Vorschlag.

Ich habe noch die alte Platinenversion ohne den Strommess-Jumper, aber ich werde bei Gelegenheit das mit dem Jumper für die Strommessung und natürlich die vorgeschlagene Diode nachrüsten.

Auch wenn der CPU ohne Vcc evtl. nichts passiert, sicher ist sicher… und so eine Diode ist ja nun wirklich kein Aufwand

Meine CP/M Version des Testprogrammes nach Kieselev werde ich auch noch ein wenig modifizieren, um so eine Schleifenausgabe, wie bei Dir zu erreichen. Evtl. werde ich die Ausgaben auch noch ein wenig umstellen, damit die Daten leichter in slabbis Tabelle eingetragen werden können.

Inzwischen tümpelt es so um die 140 verschiedene Z80 CPUs herum und ich mache mir inzwischen wenig Hoffnung noch ein paar der vielen Fehlenden/Gesuchten (speziell aus dem Ostblock) zu bekommen.

Danke und viele Grüße,
Klaus
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Sonstiges ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek