Forum: Mikrocontroller und Digitale Elektronik TL866II Plus als offener Logic Tester für ATF/GAL/PAL und TTL chips


von Michael D. (nospam2000)


Lesenswert?

Hi,

das minipro Kommandozeilentool für den TL866II Plus Eprom Programmer 
habe ich um eine offene Logic Test Funktionalität erweitert. "Offen" 
bedeutet, es werden Test-Vektoren verwendet, die in Textfiles definiert 
sind und selbst erweitert werden können.

Getestet werden können z.B. ATF/PAL/GAL und Standard-Logikbausteine 
(74xx, 4xxx). Für Standardbausteine wie 74xx wird bereits eine 
Testvector library mitgeliefert.

Für ATF, GAL oder PAL kann man direkt die Test-Vektoren verwenden die 
bereits für die Software-Simulation verwendet wurden.

Unterstützt werden folgende Dateiformate:
 - .jed: Das JEDEC File kann Testvectoren beinhalten, man muss aber nach 
jeder Änderung des .si File das .jed File neu erzeugen
 - .si+.sim: das sind die Formate von WinCUPL. Momenten kann man den 
Chiptyp noch nicht angeben (das ist für die Festlegung von Vcc/GND Pins 
notwendig), es ist ein ATF22V10 voreingestellt.
 - .dat: für die Standardbausteine kann man mehrere Bausteine in einer 
Datei definieren. Jeder Baustein beginnt mit ".<NAME> <PINCOUNT>" (z.B. 
".7400 14")

Folgende Pin-Zustände werden für die Testvektoren unterstützt:
 - V   Drive pin Vcc (Vcc can be selected with e.g. `-o vcc=3.3`, 
default is 5V)
 - G   Drive pin GND
 - 0   Drive input low
 - 1   Drive input high
 - L   Test output low
 - H   Test output high
 - C   Drive input low, high, low
 - K   Drive input high, low, high
 - Z   Test output for high impedance
 - X   Output not tested, input default level
 - N   Power pins and outputs not tested
 - F   Float input or output
 - *   Output is read, but result ignored

Der Sourcecode kann hier runtergeladen werden (im 'logic_test' branch):
https://gitlab.com/michael.dreher42/minipro/-/tree/logic_test

Beispiele von Test vector Dateien sind im Unterverzeichnis 'logic_test' 
zu finden.

Der issue unter welchem das auf Gitlab entwickelt wird:
https://gitlab.com/DavidGriffith/minipro/-/issues/77

Kommandozeilen Beispiele:
1
minipro -p 7400 -T  : Perform logic test using the default test vector file "/usr/local/share/minipro/lib/logictest.dat" (depending on the PREFIX when installed)
2
minipro -p 7400 -T -U path/to/mylib.dat : Use a custom .dat file
3
minipro -T -U path/to/mylib.jed  : Use test vectors from jedec file
4
minipro -T -U path/to/mylib.si   : Use test vectors from .si file (at the moment only for 24 pin ATF, PAL, GAL)

Das ganze ist noch nicht fertig.

Über Feedback würde ich mich freuen.

 Michael

: Bearbeitet durch User
von Michael D. (nospam2000)


Lesenswert?

Hi Forum,

ich suche immer noch ein paar Tester, hat jemand Lust zu unterstützen?

 Michael

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Sonen programmer hab ich, aber keine ATF/PAL/GAL.
Das ist etwas aus der Mode gekommen.

Jedenfalls Hut ab vor der Leistung!

von 🍅🍅 🍅. (tomate)


Lesenswert?

Geile Sache, muss ich mir mal genauer anschauen.
Wahrscheinlich erheblich einfacher als die Counter/Logikanalyzer 
Methode, die ich bisher benutzt hab, um PALs rauszuknobeln.

von Michael D. (nospam2000)


Lesenswert?

Rote T. schrieb:
> Wahrscheinlich erheblich einfacher als die Counter/Logikanalyzer
> Methode, die ich bisher benutzt hab, um PALs rauszuknobeln.

Dafür hatte ich es ursprünglich nicht gemacht, aber klar das kannst du 
auf der Basis auch machen :-)

Entweder du generierst einen langen Testvector per script, oder du passt 
den C-Sourcecode direkt an. Letzteres ist wahrscheinlich einfacher.

Sieh dir mal in logic.c/action_logic_test() den Teil ab dem Kommentar 
"iterate over test vectors, execute them and read back results" an.

Letztlich wird tl866iiplus_chiptest_setoutputs() aufgerufen um die 
Inputs zu setzen und tl866iiplus_chiptest_readinputs() um die Outputs zu 
lesen, jeweils indirekt über minipro_chiptest_setoutputs() / 
minipro_chiptest_readinputs().

Wenn ich das nochmal machen würde, dann wäre Python meine erste Wahl. 
Die beiden genannten Funktionen sollten sich leicht portieren lassen.

 Michael

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Moin,

Michael D. schrieb:

> das minipro Kommandozeilentool für den TL866II Plus Eprom Programmer
> habe ich um eine offene Logic Test Funktionalität erweitert.
>
> Getestet werden können z.B. ATF/PAL/GAL und Standard-Logikbausteine
> (74xx, 4xxx). Für Standardbausteine wie 74xx wird bereits eine
> Testvector library mitgeliefert.

> Über Feedback würde ich mich freuen.

Ich habe das gerade mal ausprobiert. Je ein 7400, 7408 und 74193 haben 
den Test bestanden. Dito diverse 4001, 4013, 4044 und 4520. Was nicht 
funktioniert hat, waren zwei Exemplare 4093. Vermutlich ein Problem mit 
den Logikpegeln?

Nett wäre eine Funktion, die alle Typen aus der Library mit einer 
gegebenen Pinzahl durch geht, um so einen unbekannten IC zu 
identifizieren. Tatsächlich habe ich für 3 4001er nur geraten, daß das 
welche sein könnten (keine Beschriftung mehr). Vorher habe ich sie als 
4011 probiert, da gab es aber Testfehler.

Alles in allem recht schick. Wenn auch - für mich - von eher begrenztem 
Nutzen. OK, ich habe die 4520 (eigentlich К561ИЕ10) sicher 
identifiziert, da war die Beschriftung nur noch zu erahnen.

PS: kaum hatte ich das abgeschickt, da fiel mir ein, daß ich ja auch 
verschiedene Vcc verwenden kann. Wenn das bei den 4093 ein Pegelproblem 
ist, dann geht es ja vielleicht bei einer anderen Spannung. Und - tadaa 
- mit "-o vcc=3.3" testen die 4093 auch als ok.

: Bearbeitet durch User
von Michael D. (nospam2000)


Lesenswert?

Axel S. schrieb:
> Ich habe das gerade mal ausprobiert.

Danke fürs Feeback!

> Nett wäre eine Funktion, die alle Typen aus der Library mit einer
> gegebenen Pinzahl durch geht, um so einen unbekannten IC zu
> identifizieren

Prinzipiell ist es kein Problem alle Typen durchzuprobieren, der Aufwand 
dürfte sich in Grenzen halten.

Wenn man für HIGH und LOW die niederohmige Ansteuerung verwendet, dann 
kann solch ein Test den IC beschädigen. Zum Beispiel wenn ein IC Ausgang 
+5V liefert, der Programmer diesen Pin aber als Eingang betrachtet und 
GND anlegt, kommt es zu einem hohen Strom. Aus diesem Grund bin ich bei 
diesem scannen vorsichtig auch wenn es sich erstmal verlockend anhört.

Anfangs habe ich die Ansteuerung mit Vorwiderstand verwendet, die 
liefert aber für manche ICs zu wenig Strom für den Logikpegel, so dass 
der Test fehlschlägt. Daher wird für LOW momentan der niederohmige GND 
Pegel verwendet. HIGH verwendet den 3.3V Logikpegel mit Vorwiderstand.

Das ist übrigens genau ein Teil, der noch nicht fertig ist, da man hier 
nicht nur den statischen Zustand sondern auch die Übergänge betrachten 
muss. Es gibt ein paar Übergänge bei manchen ICs bei denen der TL866II+ 
einen kurzzeitigen Überstrom erkennt. Das muss vor einem Release noch 
raus, ist aber recht aufwändig, da es ca. 20 verschiedene Übergänge gibt 
für die jeweils bis zu ca. 5 Phasen notwendig sind und dies für jeden 
Pin einzeln betrachtet werden muss.

> Alles in allem recht schick. Wenn auch - für mich - von eher begrenztem
Nutzen

Den Haupt-Nutzen sehe ich auch eher beim Testen von ATF Bausteinen um zu 
sehen ob diese wirklich richtig gebrannt wurden. Aber auch das ist 
begrenzt, da bei Latches und Clocks die Ansteuerung nicht perfekt ist, 
weil ein Übergang von H auf L intern mindestens aus 2 Schritten besteht 
und möglicherweise durch einen Zwischenzustand 2 Pulse erzeugt werden.

  Michael

von MCUA (Gast)


Lesenswert?

Aber um diese Logic-Tests zu machen, muss man kein Programmer kaufen.

von Elmar (Gast)


Lesenswert?

Ich würde es gerne testen.
Gibt es für Windows eine Version ?

von Axel S. (a-za-z0-9)


Lesenswert?

MCUA schrieb:
> Aber um diese Logic-Tests zu machen, muss man kein Programmer kaufen.

Sicher nicht. Aber wenn man den Programmer schon hat, muß man dann 
keinen zusätzlichen Logik-Tester mehr kaufen :)

von Michael D. (nospam2000)


Lesenswert?

Elmar schrieb:
> Ich würde es gerne testen.
> Gibt es für Windows eine Version ?

Hier schreibt jemand, dass er minipro mit mingw-64 übersetzen und 
verwenden konnte: https://github.com/vdudouyt/minipro/issues/70
Ein Anderer schreibt, dass es mit cygwin funktioniert.
Du benötigst natürlich die libusb.

Das Makefile enthält die entsprechenden Abfragen für Windows.

Meine initiale Motivation für die Arbeit an minipro war eigentlich, dass 
ich den TL866II+ ohne Windows verwenden will, da ich einen Mac habe :-)

 Michael

: Bearbeitet durch User
von MCUA (Gast)


Lesenswert?

>Aber wenn man den Programmer schon hat, muß man dann
>keinen zusätzlichen Logik-Tester mehr kaufen :)
Aber wenn dein Programmer den Geist aufgibt, gibt auch dein Logik-Tester 
den Geist auf.

von Jim W. (jimwest256)


Lesenswert?

Ich bin gerade zufällig auf diesen Thread gestoßen und finde die Idee 
und deine Arbeit großartig! :)
Könnte man damit nicht auch PALCEs "auslesen"? Sofern es sich um 
kombinatorische und nicht registered handelt.

von Soul E. (Gast)


Lesenswert?

Jim W. schrieb:

> Könnte man damit nicht auch PALCEs "auslesen"? Sofern es sich um
> kombinatorische und nicht registered handelt.

Das kannst Du mit jedem EPROMmer machen. Die Eingänge vom PLD an die 
Adressen, die Ausgänge an die Daten, und dann "auslesen". So bekommt man 
die Wertetabelle. Die schickt man durch einen Minimizer (oder malt 
Karnaugh-Diagramme auf Karopapier) und erzeugt aus den Logikgleichungen 
dann ein JEDEC-File für den Ersatztypen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.