Forum: FPGA, VHDL & Co. PAL Kopieren


von Mario R. (mariocb)


Lesenswert?

Hallo,
Ich bin schon seit einer ganzen Weile leser in dem Forum hier und hab 
schon sehr viele nützliche Hilfen für meine Arduino/ Atmel und sonstigen 
Bastelprojekte gefunden. Danke dafür..

Ich bin Hauptberuflich Tontechniker/ Systemingeur für Rundfunk- und 
Beschallungsanlagen. Privat beschäftige ich mich viel mit uC bastelein 
(Nixieuhren, kleine Messsysteme usw.) aber auch Röhrenradios und 
Verstärker sind gern mal auf der Werkbank.

Nun kommt mal was neualtes. Ein bekanter Studiobetreiber hat dort 
mehrere Tascam m700 Konsolen am laufen. Den Analogen Teil wartet er 
selbst aber das bisschen Automation was der Kahn hat ist Hauptsächlich 
mit einem EPL 10P8 der Firma Ricoh

Datenblatt: http://pdf.dzsc.com/epl/epl16rp6bp-35.pdf

gelöst. Ich hab schon herausgefunden das ein PAL 10L8 bzw PAL 10H8 zb. 
von MMI als ersatz empfohlem werde.

Das Problem besteht darin das bei einem der Pulte die Automation nicht 
mehr Fehlerfrei funktioniert. Was durch tauschen der Logikbausteine 
untereinander auf den Bausten zurückzuführen ist.

Ich hab ein TL866ii plus Programmer, deswegen hat er mich angefragt ob 
es denn nicht möglich wäre einen Funktionierenden Baustein auszulesen, 
für die Nachwelt zu sichern und halt einen "Neuen" zu beschreiben?

Die 10h8 zb. gibts ja noch bei eBay günstig zu kaufen und ich würde mir 
ja erstmal lieber ein paar "Opfer" bestellen, um versuche des Schreibens 
bzw. Lesens zu machen, um Sicher zu gehen das der funktionierende 
Originalchip nicht bei eventuellen Experimenten Schaden nimmt.

Wie kann ich mir ein LogikProgramm "Schreiben" um es dann auf den 
Baustein zu Brennen/Testen?

Geht das in C?

Wenn ich den Baustein auslese kommt doch mit sicherheit ein hex bzw bin 
File raus was ich wieder Brennen kann. Der Inhalt ist mir ja ziemlich 
wurscht..nur die Reproduktion des Originals ist wichtig.


Google und co. sind bei dieser historischen Technologie nicht so 
Hilfreich deswegen Frag ich halt hier mal nach.

Danke schon mal im Voraus.
LG Mario

von eProfi (Gast)


Lesenswert?

Nein, nicht mit C, sondern einer Hardware Description Language (HDL).
Diese compiliert man (z.B. mit CUPL) und bekommt ein Fuse-File, das
man dann ins PAL brennt.

von (prx) A. K. (prx)


Lesenswert?

Wenn man Glück hat, dann hat sich der Hersteller nicht die Mühe gemacht, 
die Security Fuse zu blasen. Die bringt bei einem kombinatorischen PAL 
sowieso nicht viel Sicherheit. Dann liesse sich das Teil mit dem PAL 
Programmer evtl direkt kopieren. Andernfalls wirds über die HDL deutlich 
umständlicher.

: Bearbeitet durch User
von Mario R. (mariocb)


Lesenswert?

A. K. schrieb:
> Andernfalls wirds über die HDL deutlich
> umständlicher.

HDL??

Ja das mit der Security Fuse hab ich auch schon gelesen... Ich muss das 
Datenblatt nochmal richtig Studieren. mal sehen.. Dank dir Schon mal.

EDIT: CUPL ja das lässt sich ja googlen...

: Bearbeitet durch User
von foobar (Gast)


Lesenswert?

Bei diese einfachen PALs nutzt ne Security-Fuse nichts - man geht alle 
Eingangskombinationen durch, merkt sich die dazugehörigen 
Ausgangssignale und erstellt anhand dessen ne neue Beschreibung. Bei 
denen mit Reigstern wird es etwas aufwendiger, geht üblicherweise aber 
auch. Ich meine mich zu erinnern, dass einige Programmer das 
unterstützten und es Software gab, die das erledigte - weiß aber keine 
Details mehr.

von Mario R. (mariocb)


Lesenswert?

foobar schrieb:
> Ich meine mich zu erinnern, dass einige Programmer das
> unterstützten und es Software gab, die das erledigte - weiß aber keine
> Details mehr.

Schade ^^

von A. B. (Gast)


Lesenswert?

Mario R. schrieb:
> Nun kommt mal was neualtes. Ein bekanter Studiobetreiber hat dort
> mehrere Tascam m700 Konsolen am laufen. Den Analogen Teil wartet er
> selbst aber das bisschen Automation was der Kahn hat ist Hauptsächlich
> mit einem EPL 10P8 der Firma Ricoh

> gelöst. Ich hab schon herausgefunden das ein PAL 10L8 bzw PAL 10H8 zb.
> von MMI als ersatz empfohlem werde.

Das wird u. U. nicht als Ersatz taugen, denn 10P8 hat "programmierbare 
Polarität" (daher P), während 10L8 nur "low aktiv" und 10H8 nur "high 
aktiv" hat. Wenn im Originalteil gemischt, geht's also erstmal gar 
nicht.

Außerdem sind die "echten" PAL i. d. R. in bipolarer Technik aufgebaut 
(gewesen), insbes. die von MMI. Gefräßig (Stromverbrauch) und schwierig 
zu programmieren (da werden Dioden oder Widerstände wirklich 
durchgebrannt, und da das offensichtlich nicht vorab getestet werden 
kann, gibt's da auch Fehlbrände), dafür noch ein Programmiergerät zu 
finden dürfte mühsam werden.

Daher würde ich zu einem GAL16V8 greifen, die gibt's immer noch zu 
kaufen, können 10P8 emulieren, und sind auch mit einem TL866 zu 
programmieren (bipolare PALs wohl nicht).

Einzige Frage ist das Auslesen der alten. Wie schon jemand geschrieben 
hatte, ist die Auslesesicherung bei einem rein kombinatorische PAL eher 
witzlos.

Im Notfall schließt man einen 10-Bit Binärzähler an die Eingänge an und 
notiert sich für jeden Zählerstand den Zustand der 8 Ausgänge. Daraus 
die Logikgleichungen zu extrahieren ist eine kleine(!!!), aber lästige 
Fleißarbeit.

Daraus muss man dann noch die Fuse-Liste für den neuen Chip erzeugen.
CUPL oder so, soweit die noch greifbar sind. Ansonsten: per Hand 
erzeugen. Hört sich aufwendig an, ist aber durchaus machbar. Vor 
Urzeiten hatte ich selbst man eine PALASM-ähnliche Variante programmiert 
(auch mit automatischer Reduktion), leider damals in PEARL, das in C 
oder so zu konvertieren, hatte ich nie in Angriff genommen ... Aber 
alles Nötige findet man problemlos in den Datenblättern von Lattice. In 
der c't gab es seinerzeit auch recht ausführliche Beschreibungen. Nur wo 
bekommt man diese Artikel aus der "Steinzeit" heute her?

Fazit: Durchaus machbar, aber man muss u. U. schon ein paar Tage Arbeit 
einkalkulieren. Gibt's den Hersteller noch? Vielleicht rückt der ja 
etwas Doku, Fuse-Listen oder so heraus, wenn man nett fragt?

von Mario R. (mariocb)


Lesenswert?

A. B. schrieb:
> Außerdem sind die "echten" PAL i. d. R. in bipolarer Technik aufgebaut
> (gewesen), insbes. die von MMI. Gefräßig (Stromverbrauch) und schwierig
> zu programmieren (da werden Dioden oder Widerstände wirklich
> durchgebrannt, und da das offensichtlich nicht vorab getestet werden
> kann, gibt's da auch Fehlbrände), dafür noch ein Programmiergerät zu
> finden dürfte mühsam werden.

ok sowas dachte ich mir auch schon fast...

> Daher würde ich zu einem GAL16V8 greifen, die gibt's immer noch zu
> kaufen, können 10P8 emulieren, und sind auch mit einem TL866 zu
> programmieren (bipolare PALs wohl nicht).

guter Tip danke

> Einzige Frage ist das Auslesen der alten. Wie schon jemand geschrieben
> hatte, ist die Auslesesicherung bei einem rein kombinatorische PAL eher
> witzlos.

hoffen wir mal..

> Im Notfall schließt man einen 10-Bit Binärzähler an die Eingänge an und
> notiert sich für jeden Zählerstand den Zustand der 8 Ausgänge. Daraus
> die Logikgleichungen zu extrahieren ist eine kleine(!!!), aber lästige
> Fleißarbeit.

Ja darüber hab ich mir auch schon gedanken gemacht..10 bit sind immerhin 
1024 möglichkeiten... aber soviel mögliche zustände gibt es in der 
Automation gar nicht... ich tipp auf ca.20..

Ich würde mir ja fast mit einem Uno ein Analyse/Dokumentationstool 
schreiben um alle eingangszustände zu erzeugen und die Ausgänge mir über 
die Serial geben zu lassen...

Und dann geht es halt drann in einem Syntax (wohl cupl) eine neue 
"Fusemap" / Jedec-code zu schreiben/erzeugen. Da muss ich mich erstmal 
reinfuchsen.. Bücher gibt es halt nur über hdl bzw FPGA. Ob da CUPL 
behandelt wird weiss ich nicht und fast 60,- bei Amazon ist ganz schön 
viel für eine einmalige Baustelle.

Hat jemand ein Tip wo mann eine schöne Anleitung bekommt?

: Bearbeitet durch User
von Michael J. (jogibaer)


Lesenswert?

Hallo,

bei mir steht das " Das GAL Buch" im Regal.
ISBN 3-928051-30-X

Dort geht es aber hauptsächlich um die Algebra mit der Minimierung
per Karnaugh Diagrammen.
Eine Diskette mit einem DOS Progamm (GAL Assembler) war auch dabei.
Vielleicht gibt es noch ein anderes Programm, was JEDEC-Files erzeugt.

Dann benötigt Du noch einen Brenner.
Man kann allerdings auch, wenn man viel Zeit hat, die Daten seriell 
reintakten. Habe ich selber schon gemacht.

Jogibär

von A. B. (Gast)


Lesenswert?

Mario R. schrieb:

> Und dann geht es halt drann in einem Syntax (wohl cupl) eine neue
> "Fusemap" / Jedec-code zu schreiben/erzeugen. Da muss ich mich erstmal
> reinfuchsen.. Bücher gibt es halt nur über hdl bzw FPGA. Ob da CUPL
> behandelt wird weiss ich nicht und fast 60,- bei Amazon ist ganz schön
> viel für eine einmalige Baustelle.
>
> Hat jemand ein Tip wo mann eine schöne Anleitung bekommt?

Zu CUPL kann ich nichts sagen, Format von den Fuse-Listen findet man z. 
B. unter http://k1.spdns.de/Develop/Projects/GalAsm/
beschrieben. Ob die Software dort funktioniert etc. weiß ich nicht.

Und wie schon gesagt, beim rein kombinatorischen PAL lohnt es als 
einmalige Aktion fast nicht, erst lange nach irgendwelcher Software zu 
suchen.

So ein Jedec-File kann man da (bis auf die Prüfsumme) fast schneller 
händisch schreiben. Einzige Frage, die mir jetzt beim Blick ins 
Datenblatt vom 16V8 so auffiel, ist ob eine '0' eine Verbindung bzw. 
keine Verbindung beim P-Term zu einer Variable war ...

Aber egal wie, ich würde zuallererst man eine simple "leere" Fuse-Liste 
erstellen und probieren, ob die Software vom TL866 die auch ohne zu 
meckern frißt und das GAL damit auch programmieren kann. Wäre doch 
ärgerlich, wenn man erst zum Schluss feststellt, dass da irgendwas 
klemmt ...

von Mario R. (mariocb)


Lesenswert?

Michael J. schrieb:
> bei mir steht das " Das GAL Buch" im Regal.
> ISBN 3-928051-30-X

für 7,- bei Medimops macht mann nix Falsch denk ich...guter Tip


> Dann benötigt Du noch einen Brenner.
> Man kann allerdings auch, wenn man viel Zeit hat, die Daten seriell
> reintakten. Habe ich selber schon gemacht.

ich hab einen TL866ii +   der auch PAL/ GAL auslesen/Schreiben und 
Testen kann.... ich hab das Teil hauptsächlich als ISP schnittstelle bzw 
zum dierekten Programieren von Hex Files in Atmega´s verwendet

von Markus F. (mfro)


Lesenswert?

A. B. schrieb:
> In
> der c't gab es seinerzeit auch recht ausführliche Beschreibungen. Nur wo
> bekommt man diese Artikel aus der "Steinzeit" heute her?

Die Artikel aus der Frühzeit der c't (als da noch wirklich interessante 
Sachen drin standen) kann man tatsächlich heute noch kaufen:

https://shop.heise.de/katalog/c-t-archiv-1983-2017-usb-stick

von Pali (Gast)


Lesenswert?

A. B. schrieb:
> Im Notfall schließt man einen 10-Bit Binärzähler an die Eingänge an und
> notiert sich für jeden Zählerstand den Zustand der 8 Ausgänge. Daraus
> die Logikgleichungen zu extrahieren ist eine kleine(!!!), aber lästige
> Fleißarbeit.
Das macht der VHDL/CPLD Compiler in 1 Minute.

von Mario R. (mariocb)


Lesenswert?

Markus F. schrieb:
> Die Artikel aus der Frühzeit der c't (als da noch wirklich interessante
> Sachen drin standen) kann man tatsächlich heute noch kaufen:
>
> https://shop.heise.de/katalog/c-t-archiv-1983-2017-usb-stick

Auch ganz schön Teuer..aber bestimmt Lohnenswert

: Bearbeitet durch User
von Mario R. (mariocb)


Lesenswert?

Pali schrieb:
> A. B. schrieb:
>> Im Notfall schließt man einen 10-Bit Binärzähler an die Eingänge an und
>> notiert sich für jeden Zählerstand den Zustand der 8 Ausgänge. Daraus
>> die Logikgleichungen zu extrahieren ist eine kleine(!!!), aber lästige
>> Fleißarbeit.
> Das macht der VHDL/CPLD Compiler in 1 Minute.

Meinst du das Tool: 
http://www.microchip.com/design-centers/programmable-logic/spld-cpld/tools/software/wincupl

??

von René F. (Gast)


Lesenswert?

Schau dir mal die Software GDSWin an, ob der Hersteller die Software 
noch verkauft weiß ich nicht (war aber nicht teuer, ich glaube 20€ oder 
so) die Demo Version war soweit ich mich erinnere nahezu 
vollfunktionsfähig (ich glaube sie war nur beschränkt auf den GAL16V8)

von Mario R. (mariocb)


Lesenswert?

René F. schrieb:
> Schau dir mal die Software GDSWin an,

Hab ich, geht gut denk ich, mal sehen was draus wird.

Dank dir..

: Bearbeitet durch User
von Dimi S. (ilovespeccy)


Lesenswert?

Wenn's keine Register im PAL sind, geht es noch viel einfacher mit 
Parallel-EEPROM (z.B.49F002) oder UV-EPROM (z.B. 27C512). 
Adressleitungen sind Eingänge, Datenleitungen sind Ausgänge.
PAL mit einem Zähler 0-1023 auslesen und deren Daten ins EEPROM brennen.
Habe mal sowas erfolgreich bei einem uraltem Computer gemacht.

von Mario R. (mariocb)


Lesenswert?

Dimi S. schrieb:
> Wenn's keine Register im PAL sind, geht es noch viel einfacher mit
> Parallel-EEPROM (z.B.49F002) oder UV-EPROM (z.B. 27C512).
> Adressleitungen sind Eingänge, Datenleitungen sind Ausgänge.
> PAL mit einem Zähler 0-1023 auslesen und deren Daten ins EEPROM brennen.
> Habe mal sowas erfolgreich bei einem uraltem Computer gemacht.

Hmm.. okay...das übersteigt meine junges Hirn nun doch wieder ein 
bischen...
Ich hatte ja die Idee mitn Arduino ein 10 bit zähler zu schreiben der 
dann an anderer seite ein 8 bit Port ausliest und den wert im verglech 
zum ausganswert aufschreibt...
Wära das nicht das selbe Ergebnis oder ist deine Idee dann Quasie schon 
eine Reproduktion der Ausgangslogik?


Der aktuelle stand ist gerade das wir sogar neue unprogramierte PAL 10p8 
Bausteine da haben (frag mich nicht wo der die her hat).

Wenn ich diesen mit meinem tl866 auslese müsste ich ja eine Jedec Datei 
o.ä. bekommen mit der ich dann ein GAL 10v8 beschreibe und dann Quasie 
auch ein (Werksneuen) PAL 10P8 (zummindest von der Logik her) haben 
sollte.
Wir wollen erstmal ein paar Trockenübungen machen bevor wir mit dem 
Definitv nicht ersetzbaren Original-IC rum Experimentieren.

A. B. hatte oben erwähnt das der VHDL/CPLD Compiler die Logiktabelle 
(bei gesetzter lesesicherung) unter eienr Minute austastet. Wie bekomme 
ich diesen Compiler dazu auf meine Hardware zuzugreifen?

von Dimi S. (ilovespeccy)


Lesenswert?

Mario R. schrieb:
> Ich hatte ja die Idee mitn Arduino ein 10 bit zähler zu schreiben der
> dann an anderer seite ein 8 bit Port ausliest und den wert im verglech
> zum ausganswert aufschreibt...

Genau diese Daten braucht man dafür. von 0 bis 1023 zählen und alle 
ausgelesene 8 bit aufzeichnen. Danach einfach diese Daten ins EPROM 
brennen.

> Wära das nicht das selbe Ergebnis oder ist deine Idee dann Quasie schon
> eine Reproduktion der Ausgangslogik?

Sehr schön geschrieben - "Reproduktion der Ausgangslogik"!
Genau das meine ich!

: Bearbeitet durch User
von Mario R. (mariocb)


Lesenswert?

Dimi S. schrieb:
> Genau diese Daten braucht man dafür. von 0 bis 1023 zählen und alle
> ausgelesene 8 bit aufzeichnen. Danach einfach diese Daten ins EPROM
> brennen.

Ok sind die Eproms Pinkompatibel?

von Dimi S. (ilovespeccy)


Lesenswert?

Mario R. schrieb:
> Ok sind die Eproms Pinkompatibel?

Nein. In meinem Fall musste ich ein wenig flicken.

von Mario R. (Gast)


Angehängte Dateien:

Lesenswert?

Hallöchen,

also ich hab das GAL Buch welches Michale J. empfohlen hat(es waren 
sogar noch Disketten dabei) und das "Programierbare Logik-IC" Buch 
ISBN:3-7785-1910-7 welches auch sehr empfehlenswert ist durch.

Das hilft mir auf jeden Fall dahingehend weiter wenn ich durch "reverse 
engeneering" mir die Handvoll Eingans-Ausgangszustände neu Formulieren 
muss.
Im anhang ist ein Bild von meinen ersten Gehversuchen. Bei den Boolschen 
gleichungen ist noch nicht die Low- bzw. High-defintion fertig und sonst 
Fehlen da bestimmt noch Verbindungen, weil ich den Schaltplan 
dahingehend noch untersuchen muss. Die Wahrheitstabelle ist 
Hauptsächlich aus der Bedienungsanleitung Implementiert.

Ich habe im Thread: Beitrag "PAL22V10 sichern, womit?"

einen Guten Hinweis zu folgender Webseite: http://www.techno-junk.org/

gefunden.
Dort wird ein Sockeladapter und eine Analysesoftware vorgestellt, welche 
der Idee von Dimi S. ähnelt. Nur wird aus der ausgelesenen .bin eine 
.txt im Wincupl Format erzeugt. Was sich erstmal gut anhört.

In dem og. Thread ging es um einnen PAL 22v10 und es hieß das er als 
GAL22v10 ausgelesen (wenn keine Security Fuse gesetzt ist) werden 
könnte. Da stoßen mir zwei Sachen auf:
1. die Belegung der "Programier"-relevanten Pins anders und
2. der PAL hat deutlich weniger Produkterme und 
"Konfigurations"-addressen. Also kann ich die Idee einen Pal 10p8 als 
GAL 16V8 auszulesen auch glaube ich gleich vergessen.

Hat jemmand eigendlich erfahrung aus .bin bzw. Jedec Files wieder 
Boolsche gleichungen zu extrahieren oder gar ein Jedec Code so 
umzuschreiben das er in einen anderen "Größeren" PAL / Gal passt.
Da ich, Gott sei dank, den einfachsten EPL 10p8 IC ohne Register und 
Feedback´s auslesen will ist es meiner meinung nach nur eine Suche nach 
dem Einachsten/ Fehlerfreisten Weg, ein Äquivalentes Jedec File für 
einen GAL 16v8 zu erstellen.

Grüße Mario

von Sempfdazugeber (Gast)


Lesenswert?

Du denkst da zu kompliziert.

Aus der Wahrheitstabelle die Kombinatorik zusammen zu frickeln
ist ja genau die Aufgabe eines HDL-Tools.

Also einfach die 1024 Zeilen mit den Daten da reinwerfen und
das Tool seine Arbeit machen lassen...

Wenn CUPL und Konsorten dafuer zu doof sind, koenntest du
auch ein nahezu beliebiges Tool eines FPGA-Herstellers nehmen,
und dir dann die RTL-Files (quasi die Schaltung...) anschauen.

Du musst dann nur zusehen, dass das Tool daraus nicht einfach
ebenfalls eine LUT in den (B)RAMs macht.

von Mario R. (mariocb)


Lesenswert?

Sempfdazugeber schrieb:
> genau die Aufgabe eines HDL-Tools.

Kannst du eins empfehlen?

von Sempfdazugeber (Gast)


Lesenswert?

Wenn etwas fuer ein GAL herauskommen soll: WinCUPL.

Aber empfehlen moechte ich das nicht nennen.
Das ist so als wenn man Pest oder Cholera empfehlen wollte.

Es gibt wohl schlicht nichts anderes.

von Mario R. (mariocb)


Lesenswert?

Sempfdazugeber schrieb:
> Wenn etwas fuer ein GAL herauskommen soll: WinCUPL.

Ok das Prog. geht dann wohl auch für Gal´s die nicht von Microchip 
sind?!
Hab welche von Lattice...GAL 16V8D.
Ich werd mir das mal Installieren und Durchstöbern.

Dank dir schon mal

von Sempfdazugeber (Gast)


Lesenswert?

> ür Gal´s die nicht von Microchip sind?!

Es kommt wohl ein JEDEC-File raus. Da dann den richtigen Typ
fuer den Programmer einzutragen traue ich dir schon zu.

Nebenbei solltest du dir mal Gedanken machen, den PAL auch
mal wirklich auszulesen.

10 Bit Adressen dranlegen und 8 Bit Daten irgendwohin wegschaufeln...

In VHDL koennte das etwa so aussehen:
1
  with adr select
2
  data <=
3
        "01100000"      when    "0000000000",
4
        "11100011"      when    "0000000001",
5
        "01111010"      when    "0000000010",
6
        "01010101"      when    "0000000011",
7
        "11100100"      when    "0000000100",
8
        "11010111"      when    "0000000101",
9
10
...
11
12
        "11110010"      when    "1111111010",
13
        "11101101"      when    "1111111011",
14
        "00011100"      when    "1111111100",
15
        "00101111"      when    "1111111101",
16
        "00010110"      when    "1111111110",
17
        "00000001"      when    "1111111111";

Viel Erfolg!

von Mario R. (mariocb)


Angehängte Dateien:

Lesenswert?

Hy Hy, ich hab da mal was vorbereitet:

im Schaltplan eine kleine Verdrahtung mit einem Arduino Nano und unten 
dann noch der Sketch, der mir Quasi alle kombinatorischen möglichkeiten 
von unserem 10p8 in zwei verschiedenen "Formatierungen" ausschpuckt. Ich 
würde das dann auch gleich nutzen um die neu erstellten IC´s mit dem 
Original "Datensatz", zb. in Excel oder so,zu vergleichen.

p.s. Sketch und Schaltung sind noch nicht getestet.

Grüße Mario
1
/**********************************************
2
 * *******Ausgabeschalter**************
3
 * 0 == Format: Ausgang eingang
4
 *          z.b.0000100 0101010
5
 * 1 == Format: "eingang" when  "ausgang" für VHDL
6
 *          z.b. "001010" when  "0101010"
7
 * 
8
 * kommt über serial terminal
9
 */
10
 
11
 int ausgabeschalter = 0;
12
13
/*************************************************/
14
15
16
//von PAL ausgänge= 12, 13, 14, 15, 16, 17, 18, 19  
17
  int eingange[] = {13, 14, 15, 16, 17, 18, 19, 12};
18
  
19
// an Pal eingänge= 1, 2, 3, 4, 5, 6, 7, 8,  9, 11,
20
  int ausgange[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
21
  
22
  int binwertein = 0; //binärwert eingänge
23
  int ausgangszustand = 1024; // ausganzähler 0 - 1023
24
  
25
//________________________________________________________________    
26
void setup() {
27
  
28
  //ausgänge
29
  for(int i= 0; i< 10; i++){pinMode(ausgange[i],OUTPUT);}
30
 
31
   //eingänge
32
  for(int j = 0; j< 8; j++){pinMode(eingange[j], INPUT);}
33
  
34
   //Seriele Schnittstelle
35
  Serial.begin(9600);
36
    
37
}// ende Setup
38
//___________________________________________________________
39
40
void loop() {
41
42
//start über Terminal  
43
if(Serial.available() > 0){
44
  ausgabeschalter = Serial.read();
45
  ausgangszustand = 0;
46
}
47
   
48
    
49
for (; ausgangszustand < 1024; ausgangszustand++){    
50
        
51
    for (int n = 0; n < 10; n++){  //for-schleife um ausgänge zu setzen
52
        
53
        if (bitRead(ausgangszustand,n) == 1){   //ausgänge setzen wenn bin wert an stelle n=1 ist
54
          digitalWrite(ausgange[n], HIGH);
55
        }
56
        
57
        else{
58
          digitalWrite(ausgange[n], LOW); //ausgänge aus wenn bitwert an stelle n=0 ist
59
        }// ende if - ausgänge setzen
60
        
61
    }//ende for schleife für ausgänge
62
    
63
     delay(2); //angstpause
64
     
65
    for (int m = 0; m < 8; m++){ //for-schleife eingänge auslesen
66
    
67
      if (digitalRead(eingange[m]) == HIGH){ 
68
        bitWrite(binwertein, m , 1);    
69
      }
70
      
71
      else{
72
        bitWrite(binwertein, m , 0);    
73
      }
74
    }//ende for schleife eingänge auslesen
75
    
76
    delay(2); //angstpause
77
    
78
    //___ende erzeugen und auslesen___________________
79
    //ausgabe an Serial
80
    //entscheidung mit ausgabeschalter variable 
81
   
82
   if (ausgabeschalter == 0){ausgabeNormal(ausgangszustand, binwertein);}
83
   else {ausgabevhdl(ausgangszustand, binwertein);}
84
85
   delay(2);
86
    
87
  }//ende zustands for schleife
88
 
89
//im Ruhemodus alle ausgänge aus 
90
for (int i = 0; i <10; i++){digitalWrite(ausgange[i],LOW);}
91
 
92
} // ende Loop
93
//_________________________________________________________________
94
95
96
void ausgabeNormal(int ausgangszustand, int binwertein){
97
  
98
    if(ausgangszustand == 0){ //erste zeile
99
      Serial.println("Ausgänge:/t/t/t/t Eingänge:");
100
      }//ende erste zeile
101
    
102
    Serial.print(ausgangszustand,BIN);
103
    
104
    Serial.print('/t/t/t/t');
105
    
106
    Serial.println(binwertein,BIN);
107
   
108
}//ende ausgabeNormal  
109
//______________________________________________________________________
110
111
void ausgabevhdl(int ausgangszustand, int binwertein){
112
  
113
  //ausgabe für VHDL
114
  if (ausgangszustand = 0){ //erte Zeile
115
    Serial.println("/n/n/n");
116
    Serial.println("Ausgabe für VHDL:"); 
117
  }//ende erste Zeile
118
  
119
  Serial.print('"');
120
  Serial.print(binwertein,BIN);
121
  Serial.print('"/t when /t');
122
  Serial.print(ausgangszustand,BIN);
123
  if(ausgangszustand < 1023){Serial.println('",');}
124
  else        {Serial.println('";');} 
125
  
126
}//ende ausgabe vhdl

von Mario R. (mariocb)


Angehängte Dateien:

Lesenswert?

So ich habe gestern mir WINCUPL installiert und ein paar Gehversuche 
unternommen. Wirkt bis jetzt erstmal recht soldie, nur die Error´s beim 
Compilieren sind ein wenig nichts sagend. Und WinSim ist ja wohl auch 
eine Wissenschaft für sich.

Im Anhang ist ein Bildschirmfoto von einem Script welches mit einer 
Wahrheitstabelle dann schön ein .doc mit den boolschen Gleichungen und 
ein Jedec-File für ein ATF16v8 auspukt. Ich hab die Datenblätter des 
GAL16v8 und des ATF16v8 mal nebeinander gelegt.
Beim ATF sind keine Addressen in dem Fuse-diagram eingetragen und beim 
GAL ist keine Programierspannung angegeben, da hat Google mir aber 
14,5-16 V gesagt. Das sollte dann quasie Kompatibel sein.

Ich werde die Tage mal die ersten Logiken "brennen" und wieder auslesen 
und wieder Brennen und vergleichen usw. Mal sehen was da so rauskommt.

Ich hab bei eBay ein paar Programierte PAL 10l8 und 10h8 für 
irgendwelche Amiga anwendungen geschossen. Die werden erstmal als 
Übungsobjekte (zum auslesen) herhalten müssen. Wenn die dann noch 
Funktionieren würde ich sie ja gern an jemanden der die braucht Abgeben.

Damit die Arduino-Auslesehilfe gleich eine für WINCUPL formatierte 
Wahrheitstabelle ausgibt. Hier nochmal die überarbeitete "ausgabevhdl" 
Funktion:
1
void ausgabevhdl(int ausgangszustand, int binwertein){
2
  
3
  //ausgabe für VHDL - Formatiert für WINCUPL TABLE Eingabe
4
  //zb. TABLE inputs  =>  outputs
5
  //      'b'0101010101 =>  'b'01010101;}
6
  if (ausgangszustand = 0){ //erte Zeile
7
    Serial.println("/n/n/n");
8
    Serial.println("Ausgabe für VHDL:/n");
9
    Serial.println("TABLE inputs => outputs{");
10
  }//ende erste Zeile
11
  
12
  //Wincupl formatierte ausgabe
13
  Serial.print("/t'b'");
14
  
15
    for(int i = 0; i<10; i++){  //jedes bit einzeln schreiben
16
     Serial.print(bitRead(ausgangszustand, i));        
17
    }
18
    
19
  Serial.print("/t=>/t'b'");
20
    
21
    for(int i = 0; i<8; i++){   //jedes bit einzeln schreiben
22
      Serial.print(bitRead(binwertein, i)); 
23
    }
24
  
25
   if(ausgangszustand < 1023){Serial.println(";");}
26
  else        {Serial.println(";}");} 
27
  
28
}//ende ausgabe vhdl

von S. R. (svenska)


Lesenswert?

Den Code hast du nie ausprobiert, sonst wäre dir aufgefallen, dass ein 
Newline mit "\n" gemacht wird, nicht mit "/n"...

von Sempfdazugeber (Gast)


Lesenswert?

> Den Code hast du nie ausprobiert, sonst wäre dir aufgefallen, dass ein
> Newline mit "\n" gemacht wird, nicht mit "/n"...

> p.s. Sketch und Schaltung sind noch nicht getestet.

Ich denke das er diesen Fehler schon noch selber gefunden haette.
Bis jetzt hat er sehr selbststaendig und umsichtig die Sache
vorangetrieben.

Davon das er seine GALs demnaechst in den Haenden halten wird,
gehe ich mal aus.

von Mario R. (mariocb)


Lesenswert?

Guter Tipp mit den Newline Zeichen S.R., da hätte ich mich beim suchen 
auch wieder rumgeärgert.
Ich gebe zu das ich solche Codes und Zeichnungen in der Standby-Zeit bei 
der Arbeit mit irgendwelchen Online Diensten im Groben erstelle und die 
Arduino IDE so oder so der letzte husten ist und die sowas nicht mal als 
Warnung ausspuckt. Wie auch sie hätte das einfach so über die Serial 
ausgegeben.

Wird werden, ich bekomme bestimmt in den kommenden Tagen mal wieder 
Ausgang und darf in meine Werkstatt. Da werd ich das „Auslese-Tool“ mal 
verdrahten und den Sketch mal Testen.

An
Senfdazugeber

Das macht Mut! Dank dir!

von gezuppel (Gast)


Lesenswert?

Wincupl ist gut. Nimm ein GAL16v8 nicht die ollen Dinger.
Wie man mit secured PALs umspringt: 
http://dreamjam.co.uk/emuviews/readpal.php

Viel Glück

von Mario R. (mariocb)


Lesenswert?

gezuppel schrieb:
> Wincupl ist gut. Nimm ein GAL16v8 nicht die ollen Dinger.
> Wie man mit secured PALs umspringt:
> http://dreamjam.co.uk/emuviews/readpal.php
>
> Viel Glück

Ja Danke, den Empfohlenen link hab ich mir auch schon Angesehen. Ist 
auch eine Option für unser Vorhaben.

von Mario R. (mariocb)


Lesenswert?

S. R. schrieb:
> Den Code hast du nie ausprobiert, sonst wäre dir aufgefallen, dass ein
> Newline mit "\n" gemacht wird, nicht mit "/n"...

Und Tatsache die empfohlene Änderung wirkt auch in der Online Arduino 
IDE

https://create.arduino.cc/

Farbliche wunder. :D

von Mario R. (mariocb)


Angehängte Dateien:

Lesenswert?

Frohe Kunde!!!

So wie geplant, nur mit ein paar änderungen im Arduino Sketch, 
funktioniert mein Vorhaben. Ich habe gerade erfolgreich einen im GAL 
simulierten PAL  ausgelesen und in einem GAL 16v8 im Simple Mode 
Reproduziert.

Im Anhang die beiden Serial Ausgaben der IC´s in Excel mit dem Vergleich 
der Ausgangswerte und der Eingagswerte.

Eine Genaue Beschriebung kommt noch.
Jetzt Trink ich erstmal ein Bier und werd die Sache noch verfeinern um 
in den nächsten Tagen dann mich an dem IC vergehen um den es eigendlich 
geht.
Hach bin ich erleichtert!

Dank an alle die Konstruktiv geholfen haben.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Die kleine DOS-Software JED2ABL wurde noch nicht erwähnt:
Beitrag "Re: Zähler mit GAL16V8 unter WinCupl realisieren"

damit kann man ein ausgelesenes JEDEC-File des PAL in lesbare logische 
Gleichungen zurückverwandeln.
Die ".JED"-Files unterschiedlicher Hersteller unterscheiden sich oft 
irgendwie, aber der Grundaufbau ist gleich, damit kann man vermutlich 
auch von Ricoh auf MMI umwandeln. CUPL ist eher selten, ABEL was hier 
herauskommt war gebräuchlicher.

von ./. (Gast)


Lesenswert?

> damit kann man ein ausgelesenes JEDEC-File

Der TO hat kein ausgelesenes JEDEC-File.
Er hat (vielleicht mittlerweile) eine Wahrheitstabelle des PAL.

Daraus die Kombinatorik zu erzeugen, sollte aber auch kein
Problem sein.

von Mario R. (mariocb)


Lesenswert?

So, ich bin wieder aus dem Urlaub zurück. Ja war schön!

Ich setz mich die Tage mal ran eine genaue Beschreibung auszuarbeiten 
und hier Hochzuladen.

Ich kann ja kurz anschneiden wie es nun Funktioniert:

-Ich habe ein Auslese Tool mit einem Arduino Nano und einer Handvoll 
LEDs und einem Nullkraftsockel gebastelt.

-Auf diesem Nano läuft ein Sketch der beim Empfang eines Zeichens über 
die Serial eine Routine startet in der Quasie alle für die 
Kombinatorischen möglichkeiten eine Wahrheitstabelle erstellt und diese 
in einem für WINCUPL Fertigen Code über die Serial ausgibt.

-Ich habe ein kleines Konsolenprogramm in C++ geschrieben welches in 
zwei Teilen Funktioniert:

-1. PAL Auslesen, nach der abfrage welcher Comport und welchen 
Dateinamen die ausgelesene .pld Datei haben soll sendet das Programm 
eine „1“ an den Comport und die Routine auf dem Arduino Startet und 
senden den Code mit Wahrheitstabelle über den Comport und das Programm 
schreibt das Zeilenweise in die .pld Datei.

-den 2. Teil des Programms erklär ich später

-So Nun kann ich mit Wincupl die erstellte .pld Datei öffnen und 
"Compilieren" das ist schon alles für ein GAL 16v8 im Simple Mode 
ausgegeben worden.

-Wincupl erzeug eine Menge projekt Dateien und das .jed was ich brauche

-Jetzt kann ich mit meinem TL866 Programmer und dessen Software das 
Jedec File in einen GAL brennen.

-Im 2. teil des Oben erwähnten Programms kann ich nach dem ich den 
gebrannten GAL wie den ersten PAL ausgelesen habe und eine zweite .pld 
Datei erstellt habe vergleichen. Ich hab mir da die Mühen gemacht dass 
so zu schreiben dass das Programm in dem Ordner wo es selbst liegt alle 
.pld Dateien sucht. Bei weniger als einer Meckert´s, bei zweien 
Vergleicht er diese und bei mehr als zwei muss Man sie sich aussuchen.

Der verglich der Dateien beginnt erst einmal damit die Größen der 
Dateien zu vergleichen, wenn diese Identisch sind wird Zeile für Zeile 
mit strgcmp() überprüft. Bei unterschieden schreibt er eine Result.txt 
wo nochmal alle Unterschiede Dokumentiert werden. Wenn alles Identisch 
ist gibt es nur ein Info über die Konsole. Ich hab das nur gemacht weil 
ich wohl eine elementare Anzahl (<20) der Reproduktionen herstellen 
werde und das unter Windows gar nicht so einfach ist Dateien und deren 
Inhalt zu vergleichen.
Getestet hab ich das alles bis jetzt mit ein paar Pal´s die aus einem 
Amiga stammen und es hat bis jetzt zufriedenstellend Funktioniert, bald 
ist der EPL 10p8 (baugleich PAL 10p8) aus der M700 Konsole drann.

Ich packe nochmal alle Code´s, Schaltbilder usw. zusammen und stell es 
hier noch rein.

LG Mario

von Christoph (Gast)


Lesenswert?

Mario R. schrieb:
> Getestet hab ich das alles bis jetzt mit ein paar Pal´s die aus einem
> Amiga stammen und es hat bis jetzt zufriedenstellend Funktioniert, bald
> ist der EPL 10p8 (baugleich PAL 10p8) aus der M700 Konsole drann.

Ich drück dir die Daumen, dass es so erfolgreich weitergeht!

von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Mario R. schrieb:
> Ich packe nochmal alle Code´s, Schaltbilder usw. zusammen und stell es
> hier noch rein.

Hallo Mario,

konntest Du seit Deinem letzten Post die von Dir angegebenen Daten 
zusammen bringen? Ich stehe vor einem ähnlichen Problem zwei PAL 
Bausteine ggf. in pin-kompatible EEProms zu konvertieren. Daher habe ich 
großes Interesse an Deinen Ergebnissen und Lösungen zu partizipieren.

Gruß aus Berlin
Torsten

von Mario R. (mariocb)


Angehängte Dateien:

Lesenswert?

Hy und Hallo,
ja das hat jetzt alles eine ewigkeit bei Mir rumgelegen. Mein Bekanter 
hat das Pult immernoch nicht wieder aufegbaut weil sein Studioumbau sich 
noch in die Länge zieht.

Aber das Verfahren ist getestet und funktioniert.

Anbei ist ein .zipfile in dem für die Hardwar ein Schaltbild und der 
Arduino Sketch ist. Deswiteren eine .exe und der .cpp Code für ein 
Windowsprogramm welche den Arduino ansteuert und dir dabei hilft die 
erstellten Wincupl-codes zu vergleichen. Dazu noch die nötigen Download 
Links.

Ich komm einfach nicht dazu eine ausführliche Anleitung fertig zu 
schreiben. Sorry.

Aber Kurz:

-Hardware bauen und Sketch installieren.
   (mit der Arduino IDE im Serial Monitor einfach irgendwien Zeichen 
senden, dann sollte über den Serial Monitor schon was ankommen was 
aussieht wie ein Wincupl Quellcode)

-Wincupl (linkliste) downloaden und installieren

-so das pal_auslese Programm strarten, über die Menüfuhrung=> Pal 
Auslesen=> Comport eingeben=> Dateinamen eingeben ( Datei wird im selben 
verzeichn is wie die .exe gespeichert.) und nun sollte das "auslese 
Gerät" anfang zu blinken.

-So die erstellte Datei mit Wincupl öffnen und compilieren.

-Ich habe ein TL866 EEprom Brenner, damit das erzeugt *.bin auf den ziel 
GAL-Brennen

-den Gal in das "auslese Gerät" stecken und ebenfalls "auslesen"

-nun mit dem pal_auslese Programm die beiden erstellten Datein 
vergleichen.
wenn Sie identisch sind wurde eine 1zu1 Kopie erstellt. Wenn nicht steht 
erstellten logfile in welcher Zeile was für Differenzen sind.
(Meistens sind werte der Warheitstabelle different)

Bitte habt nachsicht das dass Design der *.ino und der .cpp Codes nicht 
unbedingt Wartungsfreundlich, Organisiert geschweigeden Optimal ist, ich 
hab mir das alles in vielen Stunden selbst beigebracht und dennoch 
Funktioniert´s (zumindest bei mir, Stichwort Comport über msdn anfassen)

von Mario R. (mariocb)


Lesenswert?

Torsten K. schrieb:
> Hallo Mario,
>
> konntest Du seit Deinem letzten Post die von Dir angegebenen Daten
> zusammen bringen? Ich stehe vor einem ähnlichen Problem zwei PAL
> Bausteine ggf. in pin-kompatible EEProms zu konvertieren. Daher habe ich
> großes Interesse an Deinen Ergebnissen und Lösungen zu partizipieren.
>
> Gruß aus Berlin
> Torsten

Ach so!!!
Also wenn du ein Pin-Kompatiblen EEProm hast, denn lies doch deinen 
Logic IC einfach mit nem EEProm Brenner (Galep oder so) wie dein EEProm 
aus und schon hast du eine .bin  Datei mit den Informationen. Du siehst 
zwar nicht auf anhieb was in der Warheitstabelle drinn steht aber das 
muss mann ja auch nicht.
Dann brennst du das .bin in den "Ziel" EEProm und fertig ist.

Um was für IC`s handelt es sich den als Quelle bzw. Ziel?
Sind die echt 1zu1 Pingleich? Also Addressbus/ Inputs, Datenbus/ Outputs 
und Vcc und GND?

LG Mario

von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Hallo Mario,

erstmal Danke für Deine Informationen... das ist ja schon mal mehr als 
ich zu hoffen glaubte... insofern musst Du Dich nicht entschuldigen.

Ich habe kein 1:1 EEProm... das wäre sicher schön aber das wird es wohl 
nicht geben. Meine PALs die ich gerne brennen möchte oder eine 
Ersatzlösung dafür finde sind

16L8B-2 und 16R4A-4

Vielleicht gibt es ja hier im Forum auch einen User der z.B. einen 
Xeltek Super Z Brenner hat und mir gegen Kostenerstattung selbige PALs 
brennen würde. Ich bekomme diese Typen in den kommenden Tagen und ich 
habe auch die Equation Datei... ich habe aber selber nie damit etwas 
gemacht noch habe ich einen passenden Brenner. Daher mein Interesse an 
einer eventuellen anderen Lösung, diese PALs gegen GALs/EEProm ? Oder 
was auch immer mit der gleichen Funktionalität zu ersetzen.

Torsten

: Bearbeitet durch User
von Mario R. (mariocb)


Lesenswert?

Kuck mal in dem Datenblatt vom Lattice GAL 16v8 auf seite 4 siehst du 
das du den 16L8 mit dem GAL16V8 im Complexmode und den 16R4 mit dem 
GAL16V8 im Registeredmode emulieren kannst. Das heisst auch das sie 1zu1 
Pinkompatibel sind.

Ich will dir nicht die Hoffnung nehmen aber ich denke das es 
unwarscheinlich ist noch ein funktionierendes PAL Brenngerät zu 
bekommen. Es gibt zwar Lösungen sowas selbst zu bauen, das ist aber 
alles sehr Oversized. Ich würde dir Raten das mit GAL16v8 zu machen. Ich 
"Brenne" diese mit einem TL866 (Kostet 20-50 bei ebay/amazon und co.), 
die GAL´s hab ich über Ebay in China für unter einen euro das Stück 
bekommen.

So wenn du die Equations hast musst du das nur noch mit WIncupl o.ä. zu 
einem .jed (Jedecfile) o.ä. compilieren und halt "Brennen".

Da es sich bei deinen Logic IC´s um PAL´s mit Registern handelt wird das 
auslesen mit dem "Verfahren" wie ich es anwende eh nicht gehen.

Auch das emulieren der Pal´s mit EEProms geht nur bei rein 
Kombinatorischen Logiken ohne Register!

Poste doch mal die Equations ich kann ja mal schauen ob ich dir Helfen 
kann, wenns passt brenn ich dir auch gleich ein-zwei Gals die ich hab.

von Torsten K. (Firma: TOKA) (avantasia)


Angehängte Dateien:

Lesenswert?

Hallo Mario,

Danke für Dein nettes Angebot.

Etwas zum Hintergrund... ich sammel alte Computer und da möchte ich 
gerne einen alten DRAM Tester nachbauen (ich weiß das geht auch mit 
AVRs) das will ich aber nicht. Dieser DRAM Tester nutzt diese beiden 
PALs um TTL Logik zu minimieren.

Soweit so gut... den TL866 habe ich auch und einen Dataman S4, beide 
können keine PALs der besagten Typen brennen. Daher meine Anfrage. Die 
GALs kann ich mir beschaffen, das sollte kein Problem sein, wenn Du aber 
so nett bist das für mich gegen Kostenübernahme zu tun, nehme ich das 
gerne an. Daher anbei die Equation der jeweiligen PALs:

**********************************************
16L8B-2

;---------------------------------- PIN Declarations ---------------
Pin 1 Q0;
Pin 2 ASEL;
PIN 3 /RAS;
PIN 4 CKINA;
PIN 5 MTEST;
PIN 6 RD;
PIN 7 Q21;
PIN 8 Q22;
PIN 9 CKINB;
;PIN 10 GND

PIN 11 DOUT;
PIN 12 /CAS;
Pin 13 /CKOUT;
PIN 14 DIN;
PIN 15 /CKOUTA;
PIN 16 /LOWMARG;
PIN 17 /NORMMARG;
PIN 18 /HIGHMARK;
PIN 19 ERROR;
;PIN 20 Vcc

;----------------------------------- Boolean Equation Segment ------
EQUATIONS

DIN     = /Q21 & /Q0 # Q21 & QO;
CAS     = /ASEL & RAS;
HIGHMARG. OE   = MTEST & Q22;
LOWMARG. OE   = MTEST & IQ22;
NORMMARG. OE   = /MTEST;
HIGHMARG   = Q22;
LOWMARG   = /Q22;
NORMARG   = Q22 # /Q22;
ERROR     = RD & RAS & (DOUT & /DIN # /DOUT & DIN);
CKOUTA     = CKINA & /CKOUTB & /(CKINB & /CKOUTA);
CKOUTB     = CKINB & /CKOUTA & /(CKINA & /CKOUTB);
**********************************************

16R4A-4
**********************************************
;---------------------------------- PIN Declarations ---------------
Pin 1 CKIN;
Pin 2 Q8;
PIN 3 Q9;
PIN 4 Q18;
PIN 5 Q19;
PIN 6 CKIN;
PIN 7 /CYCLE;
PIN 8 RST;
PIN 9 ERROR;
;PIN 10 GND

PIN 11 IOE;
PIN 12 A9;
Pin 13 /RAS;
PIN 14 /CK1;
PIN 15 ;
PIN 16 FAIL;
PIN 17 PASS;
PIN 18 ASEL;
PIN 19 A8;
;PIN 20 Vcc

;----------------------------------- Boolean Equation Segment ------
EQUATIONS
ASEL  = /RAS;
A8     = /RAS & Q8 # RAS & Q18;
A9     = /RAS & 09 # RAS & 019;
RAS    = CKO & /CKIN;
PASS.D  = /FAIL & /Q18;
FAIL.D   = ERROR & CKO # FAIL & /RST;
CK1.D  = /RST & CK:1 & /FAIL & CYCLE;
**********************************************

Das ist das was ich habe... ich hoffe Du kannst damit etwas anfangen.

LG aus Berlin
Torsten

: Bearbeitet durch User
von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Hallo Mario,

ich habe mir eben WINCUPL installiert. Mal sehen ob ich das alleine hin 
bekomme.

GALs muß ich noch bestellen. Ich melde mich wenn ich mich zu blöd 
anstelle oder aber auch Erfolg habe ;-)

Danke für Deine Hilfestellung.

von Michael B. (laberkopp)


Lesenswert?

Torsten K. schrieb:
> Daher anbei die Equation der jeweiligen PALs

Dann hast du kein Problem, du musst nichts auslesen und die 
reprogrammierbaren und universell verwendbaren GALs sind die besseren 
Nachfolger der vorgesehenen PALs.

von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Danke... für Deinen Hinweis...

leider sind in den PAL Gleichungen Fehler drin...

Beispiel 16R4A PAL Equation aus den beigefügten Bildern

"RAS = CK0 & !CKIN" ;   -> CK0 (oder CKO) gibt es nicht.
Weder als Eingang noch als Ausgang ;-(


Beispiel 16L8B PAL Equation aus den beigefügten Bildern

"CKOUTA = CKINA & !CKOUTB & !(CKINB & !CKOUTA) ;"
"CKOUTB = CKINB & !CKOUTA & !(CKINA & !CKOUTB) ;"

wird mit einer Fehlermeldung vom Typ
"intermediate dependent on itself: CKOUTB" beim Compilierversuch 
quitiert.

Ich hoffe ich finde da den Fehler/die passende Lösung.

Denn nach den Bildern habe ich die Equation's erstmal grob notiert. Habe 
da schon ein paar kleine Fehler gefunden aber jetzt stecke ich dn den 
besagten Punkten fest.

von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Sodele... ich glaube ich bin etwas weiter gekommen.

Da ich die PAL Fuse MAPs habe und ich im Internet ein Lattice PAL2GAL 
V3.12 Converter Tool (DOS) gefunden habe, konnte ich die entsprechenden 
PAL Fuse Maps in GAL Fuse Maps wandeln.

Hier der Link: www.armory.com/~rstevew/Public/Pgmrs/GAL/jedec.htm

Dort nach der Überschrift PALTOGAL 3.12 suchen.

Das Tool unterstützt nur 8.3 Dateinamen also z.B. PAL_16L8.JED

Es ist auch bei Lattice zu finden, allerdings braucht man dort ein Login

https://www.latticesemi.com/en/Support/AnswerDatabase/7/1/710

Jetzt muß ich mir erstmal GALs bestellen um dann diese hoffentlich 
erfolgreich brennen zu können.

: Bearbeitet durch User
von Mario R. (mariocb)


Lesenswert?

Torsten K. schrieb:
> Jetzt muß ich mir erstmal GALs bestellen um dann diese hoffentlich
> erfolgreich brennen zu können.

Du kannst mir ja mal die Dateien schicken den brenn ich mal einen um zu 
kucken obs klappt.

Das Tool was du gefunden hast klingt erstmal sehr Hilfreich.

Ich hätte dir erstmal zu deinem vorrigen Post den Tipp geben wollen, ob 
du den Mode der Gals auch auf COMPLEX bzw REGISTRED gestetz hast?

LG Mario

: Bearbeitet durch User
von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Liebe Gemeinde,

ich benötige nochmal die Hilfe der Community.

Ich habe Lattice GALs vom Typ 16V8A erhalten und versuche gerade die 
RICHTIGE Programmier- / bzw. Erase Spannungen zu finden.

Hintergrund... mein TL866C stellt per default 16V ein, das führte aber 
nicht zum gewünschten Erfolg. Einige der erworbenen GALs waren bereits 
programmiert und Löschversuche scheiterten. Einige konnte ich bei 13,5V 
andere bei 10V löschen.

Im Datenblatt zu den Lattice GALs finde ich keinerlei Hinweise (oder ich 
habe Tomaten auf den Augen) welches die richtigen Spannungen sind. Ich 
suche also nach der per Spec richtigen ERASE Voltage und nach der 
PROGRAMMING Voltage.

Leider kann ich meinen Dataman S4 Brenner nicht einsetzen, da mir der 
notwendige Adapter zur GAL Programmierung fehlt und Dataman hier (obwohl 
das Gerät schon seit Jahren vo Markt ist) ein "Schweinegeld" für solch 
einen Adapter verlangt.

Kann mir ggf. jemand, was die Spannungen angeht, auf die Sprünge helfen?

Recht herzlichen Dank

von Michael B. (laberkopp)


Lesenswert?

Torsten K. schrieb:
> 16V8A

Torsten K. schrieb:
> Kann mir ggf. jemand, was die Spannungen angeht, auf die Sprünge helfen?

Du musst in der PES nachgucken

b8..b11=byte B1=programming algorithm
 00 VPP 15.75V programming pulse 100ms
 01 VPP 15.75V programming pulse 80ms
 02 VPP 16.50V programming pulse 10ms
 03 VPP 14.50V programming pulse 40ms
 04 VPP 14.00V programming pulse 100ms
 05 programming parameters follow starting at bit 34
b34..b36: erase pulse time 10,25,50,100,200,400,800,- msec
b37..b40: programing pulse time 
1,2,5,10,20,30,40,50,60,70,80,90,100,200,-,- msec
b41..b45: VPP(program/erase) 5.0,5.5,6.0,...20.5V

von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Dankeschön,

da das meine erste Berührung mit GALs ist... muß ich also zuerst die 
GALs auslesen und die Bits/Bytes mit obiger Tabelle vergleichen um die 
entsprechenden Infos zu erhalten. Ist meine Interpretation richtig ?

Danke Dir für eine hoffentlich letzte Antwort und ich wünsche schöne 
Feiertage...

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Torsten K. schrieb:

> da das meine erste Berührung mit GALs ist... muß ich also zuerst die
> GALs auslesen und die Bits/Bytes mit obiger Tabelle vergleichen um die
> entsprechenden Infos zu erhalten. Ist meine Interpretation richtig ?

Ja, Auslesen mit Editier-Spannung 12V.
Hier ist die GAL-Programmierung recht gut beschrieben:
http://www.armory.com/~rstevew/Public/Pgmrs/GAL/algo.htm

Grüßle
Volker

von Torsten K. (Firma: TOKA) (avantasia)


Lesenswert?

Dankeschön, das werde ich mir mal durchlesen und ausprobieren.

Schöne Feiertage

Torsten

von Rob (Gast)


Lesenswert?

Der Pal Brenner startete in ct Ausgabe 1/1987.
Scan davon ist kein Problem aber nur als PN (wg (c)!)

Allerdings ist das eine recht umfangreiche Schaltung und auch dort steht 
ausdrücklich, dass das (algorithmische) Auslesen nur funktioniert, wenn 
die Protection-Fuse NICHT gebrannt ist, also das PAL ungeschützt!

Zudem ist die Schaltung für den ECB-Bus, mit Adapter auch für ISA, aber 
das bedeutet auf jeden Fall viel Bastelei und meist das Neuaufsetzen 
eines historischen PCs...

Auch ist die Software dafür nicht komplett in der Zeitschrift abgedruckt 
und lag auch damals nur als Turbo-Pascal-Quellcode vor, d.h. man musste 
das für die Zielplattform entsprechend anpassen und selbst kompilieren.

Leider (das trifft auch für viele andere Zeitschriften wie Elektor zu!) 
findet man aber zugehörige Software im Gegensatz zum Artikel NIRGENDS 
mehr, weder im WWW noch auf den Seiten des Verlags oder auf den 
Archiv-CD/DVD/USB-Sticks!

Insofern der Aufruf: Wer hat den Quellcode dazu noch "griffbereit", um 
daraus für eine aktuelle Implementierung "lernen" zu können?

Die beiden geschilderten Vorgehensweisen für einfache kombinatorische 
PLA/PAL/GAL sind aber zielführend, sobald Register und/oder 
Rückkopplungen mit ins Spiel kommen, wird es deutlich komplexer, um 
nicht zu sagen unbeherrschbar.

Wenn man bedenkt, dass auch die Nachfolger der GALs, die CPLDs fast 
schon wieder am Verschwinden sind, zumindest aber solche mit nativ 5V 
Versorgung, welche man für die Reparatur älterer Schaltungen meist 
zwingend benötigt, kann man sehen, wie aussichtslos es aus heutiger 
Sicht ist, die Funktion von Geräten ab Anfang der 90er Jahre auf 
"unbegrenzte" Zeit aufrecht zu erhalten!

Ich bin selbst auch Typ "Sammler und Jäger", aber muss zunehmend 
konstatieren, dass man den Lauf der Zeit hier nicht aufhalten kann.

Interessanterweise lassen sich insbesondere ganz alte Geräte heute 
wiederbeleben, da zum Einen die Komplexität noch geringer war, das wäre 
ja noch irgendwie verständlich, aber zum Anderen auch deshalb, weil für 
diese Geräte noch ordentliche Dokumentation existiert!

Auf Papier versteht sich!
Und da das mühsam auch in der Erstellung war, hat man sich auch deutlich 
mehr Mühe damit gegeben!

Traurige Entwicklung, oder einfach ein Zeichen, dass man als Ü50 andere 
Prios setzt inzwischen?

von xxx (Gast)


Lesenswert?

Rob schrieb:
> Traurige Entwicklung, oder einfach ein Zeichen, dass man als Ü50 andere
> Prios setzt inzwischen?

Und zu recht: Die haben keine Zeit sich mit jahrealten Threads herum zu 
plagen.

von MaWin (Gast)


Lesenswert?

Mario R. schrieb:
> Wenn ich den Baustein auslese kommt doch mit sicherheit ein hex bzw bin
> File raus was ich wieder Brennen kann.

Nein, weil die Security-fuse gesetzt ist.

Rob schrieb:
> Insofern der Aufruf: Wer hat den Quellcode dazu noch "griffbereit", um
> daraus für eine aktuelle Implementierung "lernen" zu können?

Wozu ? Das Auslesen eines nicht-geschützen GAL/EPL ist einfach, aber die 
sind eh alle geschützt. Zudem ist der Code von 1987 schon 1990 veraltet 
und konnte die lieferbaren Chips nicht mehr programmieren.

Für aktuelle Chips (ATF) gibt es das 
http://www.bhabbott.net.nz/atfblast.html
Für ältere (GAL) das 
http://www.armory.com/~rstevew/Public/Pgmrs/GAL/_ClikMe1st.htm

Da muss man also mehr Gehirn investieren:

http://dreamjam.co.uk/emuviews/readpal.php
Beitrag "Re: PAL Kopieren"

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.