GALs

Irgendwelche digitale Schaltungen haben die Notwendigkeit an bestimmten Stellen irgendwelche Leitungen, bzw. deren zu bestimmten Zeiten in der Elektrodynamik herrschenden Zustände logisch zu verknüpfen. 
Z. B. wird geprüft ob zwei Leitungen zeitgleich stromführend sind oder nicht. Je nach dem wie man diese Verknüpft, sei es verUNDet oder verODERt entsteht ein weiterer Zustand der mit einer Leitung zur nächsten "Auswerte"-Stelle transportiert wird. 
Dies geschieht in dem bestimmte Chips (ICs genannt) entsprechend verdrahtet werden. Diese ICs implementieren logische Funktionen, z. B. eine UND Verknüpfung. Der Ausgang solch eines IC wird an entsprechende nachfolgende Schaltungsteile der Gesamtschaltung geführt. Je nach dem wie komplex solche Auswertungen von irgendwelchen Zuständen ist, wird die Anzahl der einzelnen ICs schnell gross. Daher gibt es GALs die mehrere solcher IC-"funktionalitäten" in sich tragen können. Diese Dinger sind universell und bedürfen daher einer bestimmten vorrangehenden "Behandlung" damit diese entsprechend den Anforderungen der digitalen Schaltung funktionieren.
 
 

Gate Array Logic

Ich bin zur Zeit nicht in der Lage in so einem kleinen WIKI die Grundlagen der GALs und deren Anwendung exzessiv darzustellen. Dazu sei auf anständige Literatur hin verwiesen. 
Grundlegend gilt zu sagen, dass GALs erstmal das Plural von einem GAL sind
Ein GAL ist ein elektronischer Baustein der sich mit einem entsprechenden Programmiergerät programmieren läßt. Das Programm was da programmiert wird, ist jedoch kein Programm sondern während des programmmierens werden interne Verknüpfungen aktiviert und zwar so, dass von außen betrachtet dieses Ding sich wie mindestens ein "diskretes" Logik-IC verhält. Also ist das Programm eigentlich eine Beschreibung wie welche einzelnen Gatter in diesem IC mit anderen Gattern durch den Programmer verknüpft werden sollen. Diese Beschreibung folgt einer bestimmten "Syntax" die im JEDEC Standard definiert ist. JEDEC ist ein Zusammenschluss von schlauen Ingenieuren verschiedener Firmen, Institutionen, Gremien die sich auf die Art und Weise geeinigt haben, wie ICs die der Gattung GAL angehören, sich programmieren lassen sollten. Daher nennt man die "zu-programmierende-Datei" ein JEDEC-File. Dieses gilt es zu erzeugen.

 

GAL TESTER

Die oben links abgebildete Schaltung ist ein kleiner GAL Tester. Mit dieser Schaltung können verschiedene logische Zustände an die Eingänge des GALs geschaltet werden. Die Treiberstufen an den Ausgängen (die Leitungen die aus dem IC Nr U7 herausgeführt werden) bestromen entsprechend den Verknüpfungsprodukten Leuchtdioden zum einfachen erkennen der generierten Zustände.
Damit kann man im Vorfeld die Funktion eines "programmierten" GALs prüfen und bei entsprechendem Befund in eine elektronische Schaltung mit einbauen, so als wäre es von Hause aus bereits ein Logic IC mit einer bestimmten Funktion. 
Es gibt auch Simulatoren, meist in Kombination mit entsprechenden GAL Compilern. Atmel liefert hier einen WinCUPL Simulator. Das folgende Bild zeigt die GAL Definition und rechts der Simulator der die Zustände der Chip Selectes errechnet, anhand der Zustände der Signale MREQ, A19,A18,A17 und A16.
 
 
Haben Sie den Fehler schon entdeckt? 
Im Simulator sind die Signale als LowActive markiert. Das bedeutet, wenn das GAL ein Logisch High bringt, zeichnet der Simulator dieses als logisch LOW. Das ist an dieser Stelle richtig. Jedoch wird dieses JEDEC in dieser Art auf einen echten GAL gebracht, dann ist Aktiv High Pegel - und das ist falsch. 
Die Signale in der config Datei muss invertiert sein. Also z.B. !CSRAM256 . Das Ausrufe zeichen. … nur so als kleine Info.

JEDEC File erzeugen

Wie in der Programmierei nutzt man einen Texteditor, mit dem man in menschlich lesbarer Form das Verhalten des GALs beschreibt. Die Beschreibung folgt der Boolschen Algebra, der Definition welcher PIN an dem IC sich wie verhält, z.B. ob es ein Eingang ist, oder ein Ausgang. So eine Beschreibungsdatei ist eine "Definitions"-Datei. Der Inhalt dieser Datei kann von einem Programm, dem GAL Assembler, gelesen und verarbeitet werden. Das Ergebnis der Verarbeitung wird widerum in einem Datei, dem JEDEC File abgespeichert. 

Der Inhalt solch einer Definitionsdatei könnte so aussehen:
GAL16V8               Typ Übungen                Beschreibung B  C   D   E   F  G  H  I  J  GND K  NC  NC  NC  Z  Y  X  W  A  VCC W = A * B * C /X = D * E Y = F + G Z = H * I + J * K
 

GALs programmieren

Das Programmieren eines GALs anhand einem JEDEC Files geschieht durch einen Programmer. Das ist ein kleines elektronisches Gerät welches an einem Computer angeschlossen wird damit es entsprechende "Anweisungen" erhält. Dieses Gerät besitzt eine mechanische Halterung passend für verschiedene IC Bauformen. In diese Halterung wird der zu "programmierende" GAL Baustein eingesetzt. 
Eine entsprechende Software liest das JEDEC File ein und "koordiniert" die Aktiviten des Programmers, in der Art und Weise, dass der eingesetzte GAL Baustein entsprechende elektrische Ströme erfährt und dadurch seine eingebaute Gatter verknüpft.