home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / develop / galer / galer_deutsch / dok / galer.dok next >
Text File  |  1995-02-27  |  82KB  |  2,172 lines

  1.  
  2.  
  3.  
  4. GALer - copyright by Christian Habermann
  5.  
  6.  
  7.  
  8. GALer ist ein GAL-Programmiergerät mit der dazu nötigen Software.
  9.  
  10. GALer ist SHAREWARE. Falls Sie dieses Programm und/oder die Hardware
  11. gebrauchen können, senden Sie mir bitte 20,- DM zu. Den Schaltplan für
  12. die Hardware erhalten Sie umgehend nach Erhalt der Shareware-Gebühr.
  13.  
  14. Art der Bezahlung:
  15.    Inland:  Egal, das überlasse ich Ihnen.
  16.    Ausland: Bar oder Postwechsel. Bei Schecks beträgt die Sharewaregebühr
  17.         33,50 DM (13,50 DM Bearbeitungsgebühr für Auslandsschecks von
  18.         Seiten der Bank).
  19.  
  20.  
  21. Ein Update erhalten Sie, wenn Sie mir zusätzlich eine Diskette und 5 DM
  22. (auch in Briefmarken, 5 x 1,- DM) für Porto und Verpackung schicken und
  23. wenn ein Update fertig ist, das den Namen Update auch verdient. GALer wird
  24. allerdings auch weiterhin in PD Serien veröffentlicht werden, so daß Sie
  25. auch auf diesem Weg die neueste Version erhalten können.
  26.  
  27.  
  28.  
  29. Falls Sie mir schreiben wollen, beachten Sie bitte, daß es in Deutschland
  30. ab dem 1. Juli 1993 neue Postleitzahlen gibt.
  31.  
  32. Meine Adresse bis zum 30. Juni 1993:     Christian Habermann
  33.                      Asamstr. 17
  34.                      8050 Freising
  35.                      Deutschland
  36.  
  37. Meine Adresse ab dem 1. Juli 1993:     Christian Habermann
  38.                      Asamstr. 17
  39.                      85356 Freising
  40.                      Deutschland
  41.  
  42.  
  43. EMail-Adresse: FidoNet 2:246/105.10
  44.  
  45.  
  46.  
  47. Der Vertrieb von "GALer" über PD-Serien und Mailboxen ist erlaubt.
  48. Bedingung ist allerdings, daß dabei kein Gewinn gemacht wird und daß die
  49. einzelnen Files unverändert und vollständig kopiert bzw. "upgeloaded"
  50. werden.
  51. Falls Sie den GAL-Brenner nachgebaut haben, dürfen Sie diesen einen zum
  52. Bauteilepreis auch verkaufen. Der kommerzielle Vertrieb ist NICHT gestattet.
  53. Der Schaltplan darf nur privat und KOSTENLOS weitergegeben werden.
  54.  
  55.  
  56. ****************************************************************************
  57. Aufgrund der Tatsache, daß in Deutschland (und nicht nur dort) einige
  58. Leute anscheinend den Intelligenzquotienten eines Wollpullis haben, sehe
  59. ich mich zu der nachfolgenden Erklärung gezwungen:
  60.  
  61. Folgenden Personenkreisen ist die Benutzung meines Programms strikt
  62. untersagt: Allen Mitgliedern von rechtsradikalen Parteien (DVU, Republikaner
  63. usw.), allen Mitgliedern und Sympathisanten von neonazistischen oder
  64. rassistischen Gruppierungen, allen "Bürgern(?)", die die krimminellen
  65. Steine- und Brandsatzwerfer moralisch (sei es durch Applaudieren oder "nur"
  66. durch Zuschauen) unterstützen sowie allen anderen, die meinen, mit Gewalt
  67. gegen Schwächere etwas erreichen zu können.
  68. ****************************************************************************
  69.  
  70.  
  71.  
  72. Falls Sie "GALer" über einen PD-Händler bezogen haben und dafür mehr
  73. als 5 DM bezahlt haben, sollten Sie sich schnell einen neuen Händler
  74. suchen.
  75.  
  76.  
  77. ACHTUNG!!! Die Programme "GALer" und "GALerTest" senden über den Parallel-
  78. Port des Amiga Daten. Das heißt: wenn Sie dort einen Drucker, Digitizer oder
  79. sonstiges angeschlossen haben, sollten Sie diesen entweder ausschalten
  80. oder abstecken, da es sonst unter Umständen zur Beschädigung des Gerätes
  81. kommen kann.
  82.  
  83. Für eventuell entstandene Schäden durch die Hardware und/oder Software kann
  84. ich natürlich keine Verantwortung übernehmen.
  85.  
  86. Ich habe meinen Prototypen genau nach den Schaltplan aufgebaut, den
  87. auch Sie bestellen können. Das heißt, daß der Schaltplan 100%ig fehlerfrei
  88. ist. Bei gewissenhaftem Nachbau kann also eigentlich gar nichts schief gehen.
  89. Der Nachbau sollte aber dennoch nur von erfahreneren Elektronik-Freaks durch-
  90. geführt werden (zumindest muß man Löterfahrung haben und Schaltpläne lesen
  91. können). Näheres zur Hardware können Sie im Kapitel III dieser Anleitung
  92. erfahren.
  93.  
  94.  
  95.  
  96. Hinweis:  Diese Anleitung dient lediglich der Einführung in die Materie
  97.       der GAL-Programmierung. Sie kann weiterführende Literatur (siehe
  98.       unten) nicht ersetzen.
  99.       Wenn Sie sich jedoch schon länger mit Digitaltechnik beschäftigen
  100.       und gar nicht wissen wollen wie ein GAL intern aufgebaut ist und
  101.       wie es genau funktioniert, dann müßte diese Anleitung zusammen
  102.       mit den Beispiel-"Listings" ausreichen, um GALs sinnvoll
  103.       einzusetzen.
  104.  
  105.  
  106.  
  107. Versionen:
  108.     V1.0: - Testversion
  109.     V1.1: - Intuition-Umgebung hinzugefügt
  110.     V1.2: - einige Fehler beseitigt
  111.     V1.3: - Fehler im GAL-Assembler beseitigt
  112.           /name.E ist jetzt nicht mehr erlaubt
  113.       - Die Pinnamen des zu letzt assemblierten Files können an
  114.         das gezeichnete GAL angefügt werden.
  115.     V1.4: - an Kick2.0 angepaßt
  116.       - neue Benutzerführung
  117.       - A-Typen werden jetzt unterstützt
  118.       - Automatische Erkennung ob A-Typ oder Standardtyp vorliegt
  119.       - Format des JEDEC-Files kompatibel gemacht
  120.       - Neue Funktionen: Optimizer für Boolesche Gleichungen
  121.                  Verify
  122.                  Test auf Security-Fuse
  123.                  GALs Vergleichen
  124.                  Reassembler
  125.       - Fehler im Assembler beseitigt (war hoffentlich der letzte)
  126.           Bei der Rückkopplung von kombinatorischen Ausgängen machte
  127.           der Assembler einen Fehler (AC0 falsch gesetzt).
  128.       - WICHTIGE ÄNDERUNG!!! Negationszeichen '/' in der Pindeklaration
  129.         werden jetzt in den Gleichungen berücksichtigt! (siehe Abschnitt
  130.         "Das Source-File")
  131.  
  132.  
  133.  
  134.  
  135. An dieser Stelle möchte ich mich bei folgenden Leuten für Ihre tatkräftige
  136. Unterstüztung bedanken.
  137. Dank geht an:
  138.  
  139.  - alle diejenigen, die die Shareware-Gebühr bezahlt haben
  140.  
  141.  - Frank Stange für das Betatesting und für seine sehr konstruktive Kritik
  142.  
  143.  - Walraven van Heeckeren für einen Teil der englischen Anleitung
  144.  
  145.  - Wenzel Hoche und Peter Rössel für die TeX-Version der Anleitung,
  146.    das IFF-Layout und für die Übersetzung der Anleitung
  147.  
  148.  - an alle diejenigen, die Verbesserungsvorschläge gemacht oder mich auf
  149.    Fehler aufmerksam gemacht haben
  150.  
  151.  - an Colin Fox und Bruce Dawson für die 'req.library'
  152.  
  153.  
  154.  
  155.  
  156. Inhaltsverzeichnis:
  157.  
  158.     Kapitel I    Einführung
  159.         I.1    Was sind GALs
  160.         I.2    Wie ist ein solches GAL aufgebaut?
  161.         I.3    Welche GALs gibt es?
  162.         I.4    Die Betriebsmodi eines GALs
  163.  
  164.     Kapitel II    Die Software
  165.  
  166.         II.1    Das Source-File (Eingabe-Datei)
  167.  
  168.         II.2    Das Programm "GALer"
  169.         II.2.1   Installation
  170.         II.2.2   Allgemeines zur Bedienung
  171.         II.2.3   Die Menüpunkte
  172.         II.2.4   Der Assembler
  173.         II.2.5     Das Programmieren
  174.         II.2.6     Austesten von programmierten GALs
  175.         II.2.7     Der Optimizer
  176.  
  177.         II.3    Das JEDEC-File
  178.  
  179.         II.4    Weitere Beispiele
  180.  
  181.         II.5    Fehlermeldungen
  182.         II.5.1     Assembler
  183.         II.5.2   JEDEC-Datei
  184.         II.5.3     Reassembler
  185.  
  186.     Kapitel III    Die Hardware
  187.         III.1    Programmierung von GALs
  188.         III.2    Schaltungsbeschreibung
  189.         III.3    Aufbau
  190.  
  191.     Anhang
  192.             Schlüsselwörter des Source-Files
  193.             Stückliste des GAL-Brenners
  194.             Literaturhinweise
  195.  
  196.  
  197.  
  198.  
  199.  
  200. Kapitel I: Einführung
  201. =====================
  202.  
  203. I.1 Was sind GALs?
  204. ------------------
  205.  
  206. GALs (Generic Array Logic) sind programmierbare Logikbausteine. Durch
  207. entsprechende Programmierung durch den Anwender, können eine Vielzahl
  208. von Standardgatterfunktionen in einem IC, dem GAL, verwirklicht werden.
  209. Angenommen, Sie benötigen für eine Digitalschaltung folgende Logikfunktionen:
  210.  - UND -Gatter mit 2 Eingängen
  211.  - ODER-Gatter mit 2 Eingängen
  212.  - NAND-Gatter mit 2 Eingängen
  213.  - NOR -Gatter mit 2 Eingängen
  214. Um diese Schaltung zu verwirklichen, sind vier (geht auch mit weniger)
  215. Standard-ICs erforderlich (74LS... bzw. 40..). Diese Funktionen lassen
  216. sich durch EINEN! GAL-Baustein ersetzen.
  217. Die Hauptaufgabe von GALs ist die Vereinfachung von Digitalschaltungen
  218. indem ein GAL (oder mehrere) eine Vielzahl von herkömmlichen Logik-Bau-
  219. steinen ersetzt. Ein GAL kann bei entsprechender Programmierung fast alle
  220. Logik-Funktionen ersetzen, wie z.B.: AND, OR, XOR, NAND, NOR, Inverter,
  221. FlipFlops, Decoder (vor allem Adressdecoder), Multiplexer, Zähler usw.
  222. Außerdem kann das GAL jederzeit neu programmiert werden, so daß sich
  223. Schaltungen nachträglich wesentlich einfacher ändern lassen, vorausgesetzt
  224. das GAL ist gesockelt und nicht fest eingelötet.
  225.  
  226.  
  227.  
  228. I.2 Wie ist ein solches GAL aufgebaut?
  229. --------------------------------------
  230.  
  231. Kernstück eines GALs ist eine Matrix. Auf die Spalten dieser Matrix werden
  232. alle Eingänge invertiert und nicht invertiert zugeführt. Im unprogrammierten
  233. Zustand des GALs sind die Spalten und Zeilen miteinander verbunden. Jede
  234. dieser Verbindungen zwischen einer Zeile und einer Spalte entspricht einer
  235. UND-Verknüpfung. Durch Programmieren des GALs werden die entsprechenden
  236. UND-Verknüpfungen gelöscht, so daß sich die gewünschte Verknüpfung ergibt.
  237. Eine Zeile heißt Produktterm, da alle Eingänge (Spalten) deren Kreuzung
  238. mit einer Zeile noch existiert eben UND-verknüpft werden.
  239. Jeweils acht dieser Zeilen (= Produktterme) werden über ein ODER-Gatter
  240. zu der sogenannten OLMC (Output Logic Macro Cell) geführt. Es können also
  241. acht Produktterme (Zeilen) miteinander ODER-verknüpft werden. Die OLMC
  242. ist eine "konfigurierbare Ausgangszelle".
  243.  
  244. Was bitte ist eine "konfigurierbare Ausgangszelle"?
  245. Ein GAL besitzt acht dieser  konfigurierbaren Ausgangszellen. Diese Ausgangs-
  246. zellen können entweder als Eingang, als kombinatorischer Ausgang,
  247. als Tristate-Ausgang oder als Register-Ausgang programmiert werden.
  248.  
  249. Kombinatorischer Ausgang: dieser Ausgang ist ständig aktiv
  250.               (entweder HIGH oder LOW)
  251. Tristate-Ausgang        : dieser Ausgang kann drei Zustände annehmen
  252.               HIGH, LOW und hochohmig
  253.               (hochohmig wäre mit dem Abklemmen des Pins zu
  254.               vergleichen).
  255.               Dies wird benötigt, wenn man mehrere Ausgänge
  256.               zusammenschalten will, dabei aber nur einer
  257.               dieser Ausgänge aktiv sein darf.
  258. Register-Ausgang    : Bei diesem Ausgang gelangt das Verknüpfungser-
  259.               gebnis der Eingänge nicht direkt an den Ausgang,
  260.               sondern über ein D-FlipFlop.
  261.               Erst bei einem Clock-Impuls gelangt das Ergebnis
  262.               zu dem entsprechenden Ausgang. Wenn /OE auf HIGH
  263.               liegt, gehen alle Ausgänge in den hochohmigen
  264.               Zustand.
  265.  
  266.  
  267. Neben der Matrix gibt es in einem GAL noch mehrere "Bits":
  268. ( (n) bedeutet dabei, daß diese Bits für jeden Ausgang extra vorhanden sind)
  269.  
  270. XOR (n) : Mit diesem Bit kann das Ergebnis der Verknüpfung invertiert werden.
  271.       XOR (n) = 0 : Ausgang active LOW
  272.       XOR (n) = 1 : Ausgang active HIGH
  273.  
  274. SYN, AC0, AC1(n):
  275.       Mit diesen Bits wird bestimmt, in welchem Betriebsmodus sich das
  276.       GAL befinden soll. Im wesentlichen gibt es drei Betriebsmodi:
  277.  
  278.   Betriebsmodus 1:    SYN    = 1      AC0 = 0
  279.  
  280.             AC1(n) = 1 : OLMC als Eingang
  281.             AC1(n) = 0 : OLMC als kombinatorischer Ausgang
  282.  
  283.   Betriebsmodus 2:    SYN    = 1      AC0 = 1
  284.  
  285.             AC1(n) = 1 : Tristate-Ausgang
  286.  
  287.   Betriebsmodus 3:    SYN    = 0      AC0 = 1
  288.  
  289.             AC1(n) = 1 : OLMC als Tristate-Ausgang
  290.             AC1(n) = 0 : OLMC als Register-Ausgang
  291.  
  292.  
  293. PT0...63: (PT = Produkttermfreigabe) 
  294.       Diese Bits bestimmen, ob die Zeilen 0...63 in der Matrix
  295.       des GALs gültig sein sollen oder nicht.
  296.       PTx = 1: UND-Verknüpfungen in der Zeile x sind gültig
  297.       PTx = 0: UND-Verknüpfungen in der Zeile x sollen nicht
  298.            berücksichtigt werden (haben also keine Auswirkung
  299.            auf den Ausgang)
  300.       (x = zwischen 0 und 63; in der Matrix gibt es 64 Zeilen,
  301.        so daß jede Zeile individuell aktiviert bzw. deaktiviert werden
  302.        kann)
  303.  
  304. All diese Bits (82 Stück) sind zum sogenannten Architektur-Kontroll-Wort
  305. (ACW) zusammengefaßt. Der Aufbau dieses ACW wird im Kapitel III näher be-
  306. schrieben.
  307.  
  308.  
  309. Signatur:
  310.     Hier stehen acht Bytes für eigene Anwendungen zur Verfügung. 
  311.     In der Regel wird hier ein kleiner Kommentar oder die Versions-
  312.     nummer des GALs als ASCII-Text abgelegt.
  313.  
  314. Sicherheitszelle: (Security-Bit)
  315.     Durch Setzen dieses Bits wird das GAL gegen unerlaubtes Kopieren
  316.     geschützt. Das Auslesen der Matrix ist nicht mehr möglich. Da
  317.     aber die restlichen Bits noch gelesen werden können, ist dieser
  318.     Schutz nicht sehr effektiv.
  319.  
  320. Bulk Erase:
  321.     Durch Programmieren dieser Zelle wird das gesamte GAL gelöscht.
  322.     Ein GAL kann so ca. einhundertmal(!) neu programmiert werden.
  323.  
  324.  
  325.  
  326.  
  327. I.3 Welche GALs gibt es?
  328. ------------------------
  329.  
  330. Am gebräuchlichsten sind die Standard-Typen GAL16V8, GAL20V8 und deren
  331. A- und B-Typen GAL16V8A, GAL20V8A bzw. GAL16V8B, GAL20V8B. Die A- und
  332. B-Typen sind schneller und stromsparender als die Standard-Typen (ohne
  333. A oder B im Namen). Diese sechs GAL-Typen werden auch durch dieses GAL-
  334. Programmiergerät unterstützt.
  335. Wenn ab jetzt von GAL16V8 oder GAL20V8 die Rede ist, so sind damit
  336. auch die A- und B-Typen gemeint. Wenn es erforderlich ist zwischen A-,
  337. B-Typen und Standard-Typen zu unterscheiden, werde ich dies extra erwähnen.
  338.  
  339. Pinbelegungen:
  340.  
  341. GAL16V8
  342.                ---- ----
  343.      Eingang oder Clock   1|       |20  +5V
  344.         Eingang   2|       |19  konfigurierbare Ausgangszelle
  345.         Eingang   3|       |18  konfigurierbare Ausgangszelle
  346.         Eingang   4|       |17  konfigurierbare Ausgangszelle
  347.         Eingang   5|       |16  konfigurierbare Ausgangszelle
  348.         Eingang   6|       |15  konfigurierbare Ausgangszelle
  349.         Eingang   7|       |14  konfigurierbare Ausgangszelle
  350.         Eingang   8|       |13  konfigurierbare Ausgangszelle
  351.         Eingang   9|       |12  konfigurierbare Ausgangszelle
  352.             GND  10|       |11  Eingang oder /OE
  353.                    ---------
  354.  
  355. GAL20V8
  356.                ---- ----
  357.      Eingang oder Clock   1|       |24  +5V
  358.         Eingang   2|       |23  Eingang
  359.         Eingang   3|       |22  konfigurierbare Ausgangszelle
  360.         Eingang   4|       |21  konfigurierbare Ausgangszelle
  361.         Eingang   5|       |20  konfigurierbare Ausgangszelle
  362.         Eingang   6|       |19  konfigurierbare Ausgangszelle
  363.         Eingang   7|       |18  konfigurierbare Ausgangszelle
  364.         Eingang   8|       |17  konfigurierbare Ausgangszelle
  365.         Eingang   9|       |16  konfigurierbare Ausgangszelle
  366.         Eingang  10|       |15  konfigurierbare Ausgangszelle
  367.         Eingang  11|       |14  Eingang
  368.             GND  12|       |13  Eingang oder /OE
  369.                    ---------
  370.  
  371.  
  372. Aus der Pinbelegung erkennt man, daß sich die GAL-Typen GAL16V8 und GAL20V8
  373. nach außen hin nur durch die Anzahl der Eingänge unterscheiden. So hängt die
  374. Wahl, ob man ein GAL16V8 oder GAL20V8 verwenden soll, nur von der Anzahl der
  375. benötigten Eingänge ab.
  376.  
  377.  
  378.  
  379.  
  380.  
  381. I.4 Die Betriebsmodi eines GALs
  382. -------------------------------
  383.  
  384. Wie unter I.2 bereits erwähnt wurde, bestimmen die Bits SYN, AC0 und
  385. AC1(n), in welchem Modus sich das GAL befindet. Von diesem Modus hängt
  386. die Pin-Belegung des GALs ab.
  387.  
  388.  
  389.  
  390. GAL16V8, GAL16V8A, GAL16V8B:
  391.  
  392. Betriebs-|Betriebs-|Betriebs-|           |Betriebs-|Betriebs-|Betriebs-|
  393. modus 1  |modus 2  |modus 3  |           |modus 1  |modus 2  |modus 3  |
  394. ------------------------------             -------------------------------
  395.      |       |             --- ---         |         |
  396.    E     |    E    |  Clock     1|     |20    +5V    |   +5V   |   +5V
  397.    E     |    E    |       E       2|     |19    E/K    |   T*    |  E/T/R  
  398.    E     |    E    |    E       3|     |18    E/K    |   E/T   |  E/T/R
  399.    E     |    E    |    E       4|     |17    E/K    |   E/T   |  E/T/R
  400.    E     |    E    |    E       5|     |16     K     |   E/T   |  E/T/R
  401.    E     |    E    |    E       6|     |15     K     |   E/T   |  E/T/R
  402.    E     |    E    |    E       7|     |14    E/K    |   E/T   |  E/T/R
  403.    E     |    E    |    E       8|     |13    E/K    |   E/T   |  E/T/R
  404.    E     |    E    |    E       9|     |12    E/K    |   T*    |  E/T/R
  405.   GND    |   GND   |   GND     10|     |11     E     |    E    |   /OE
  406.                  -------
  407.  
  408.  
  409.  
  410. GAL20V8, GAL20V8A, GAL16V8B:
  411.  
  412. Betriebs-|Betriebs-|Betriebs-|           |Betriebs-|Betriebs-|Betriebs-|
  413. modus 1  |modus 2  |modus 3  |           |modus 1  |modus 2  |modus 3  |
  414. ------------------------------             -------------------------------
  415.      |       |             --- ---         |         |
  416.    E     |    E    |  Clock     1|     |24    +5V    |   +5V   |   +5V
  417.    E     |    E    |       E       2|     |23     E     |    E    |    E  
  418.    E     |    E    |       E       3|     |22    E/K    |   T*    |  E/T/R  
  419.    E     |    E    |    E       4|     |21    E/K    |   E/T   |  E/T/R
  420.    E     |    E    |    E       5|     |20    E/K    |   E/T   |  E/T/R
  421.    E     |    E    |    E       6|     |19     K     |   E/T   |  E/T/R
  422.    E     |    E    |    E       7|     |18     K     |   E/T   |  E/T/R
  423.    E     |    E    |    E       8|     |17    E/K    |   E/T   |  E/T/R
  424.    E     |    E    |    E       9|     |16    E/K    |   E/T   |  E/T/R
  425.    E     |    E    |    E      10|     |15    E/K    |   T*    |  E/T/R
  426.    E     |    E    |    E      11|     |14     E     |    E    |    E
  427.   GND    |   GND   |   GND     12|     |13     E     |    E    |   /OE
  428.                  -------
  429.  
  430. Abkürzungen:  E  :  Eingang
  431.           K  :  kombinatorischer Ausgang ohne Rückkopplung
  432.           T  :  Tristate-Ausgang
  433.           T* :  Tristate-Ausgang ohne Rückkopplung auf die Matrix, was
  434.             nur heißt, daß dieser Ausgang nicht als Eingang ver-
  435.             wendet werden kann
  436.           R  :  Register-Ausgang
  437.           Clock: Takt für D-FlipFlops; nur für die Pins interessant,
  438.              die als Register-Ausgang programmiert sind
  439.           /OE  : Output Enable (low aktiv): aktiviert die Register-
  440.              ausgänge
  441.               (Erklärung der Begriffe siehe I.2)
  442.  
  443.  
  444.  
  445. Aus der Pinbelegung ist z.B. ersichtlich, daß die Pins 15 und 16 des
  446. GAL16V8 bzw. die Pins 18 und 19 des GAL20V8 nicht als Eingänge
  447. programmiert werden können, wenn sich das GAL im Betriebsmodus 1 be-
  448. findet. Das gleiche gilt für die Pins 12 und 19 bzw. 15 und 22 für
  449. den Betriebsmodus 2. Im Betriebsmodus 1 sind die Pins 1 und 11 (GAL16V8)
  450. bzw. die Pins 1 und 13 (GAL20V8) für Clock und /OE reserviert. Diese
  451. Pins können also nicht wie in den anderen beiden Modi, als Eingänge
  452. verwendet werden.
  453.  
  454. Angenommen, Sie benötigen für Ihr GAL zumindest einen Registerausgang.
  455. Dann ist bereits der Betriebsmodus 3 festgelegt.
  456. Wenn Sie aber mindestens einen Tristate-Ausgang benötigen und keinen
  457. Registerausgang, dann befindet sich das GAL im Betriebsmodus 2.
  458. Wenn Sie weder einen Tristate- noch einen Register-Ausgang benötigen,
  459. ist Betriebsmodus 1 zu verwenden.
  460.  
  461.  
  462.  
  463.  
  464.  
  465. Kapitel II: Die Software
  466. ========================
  467.  
  468. Im Prinzip können Sie fast das ganze Kapitel I wieder vergessen. Im
  469. Prinzip - wohlgemerkt. Was Sie sich unbedingt merken sollten, ist
  470. die Pinbelegung der GALs in den verschiedenen Modi. Dadurch lassen sich
  471. unnötige Fehler vermeiden. Die Bestimmung des Betriebsmodus und die
  472. anderen Parameter, die bei der GAL-Programmierung zu berücksichtigen
  473. sind, nimmt Ihnen die Software "GALer" ab.
  474.  
  475.  
  476. II.1 Das Source-File
  477. ----------------------
  478.  
  479. Als erstes muß mit Hilfe eines Texteditors ein sogenanntes Source-File
  480. oder auch Eingabe-Datei erstellt werden. Diese Datei muß folgende
  481. Informationen enthalten:
  482.   1. den GAL-Typ (GAL16V8, GAL20V8 bzw. A oder B-Typ)
  483.   2. einen 8 Byte langen Text, der als Kommentar in das GAL geschrieben
  484.      werden soll (Signatur, siehe I.2)
  485.   3. die Pinnamen - hier werden den Pinnummern Namen zugewiesen, was
  486.      wesentlich anschaulicher ist
  487.   4. die Booleschen Gleichungen
  488.   5. Das Schlüsselwort DESCRIPTION - nach diesem Wort kann ein beliebiger
  489.      Text stehen. Dieser Text beschreibt in der Regel die Funktion des
  490.      GALs. Dadurch weiß man auch nach Jahren noch, für was das GAL
  491.      eigentlich programmiert wurde.
  492.  
  493. Bevor ich jetzt noch länger 'rum schwafle, hier ein BEISPIEL (freu, jubel).
  494.  
  495. Beispiel 1:
  496. Angenommen, Sie benötigen für eine Schaltung folgende Gatter:
  497. - ein AND  mit 3 Eingängen
  498. - ein NAND mit 2 Eingängen
  499. - ein OR   mit 2 Eingängen
  500. - eine kleine Digitalschaltung, in der die Ausgänge von 2 AND-Gattern
  501.   zu den Eingängen eines OR-Gatters führen
  502.  
  503. Schaltbilder:
  504.  
  505.     AND:                +----+            W = A * B * C
  506.               A ----|    |
  507.               B ----| &  |---- W
  508.               C ----|    |
  509.                     +----+
  510.  
  511.  
  512.     NAND:                +----+            /X = D * E
  513.               D ----|    |
  514.                     | &  |o--- X
  515.               E ----|    |
  516.                     +----+
  517.     OR:
  518.                     +----+            Y = F + G
  519.               F ----|    |
  520.                     | >1 |---- Y
  521.               G ----|    |
  522.                     +----+
  523.  
  524.     kleine Digital-            +----+            Z = H * I + J * K
  525.     schaltung:          H ----|    |
  526.                     | &  |----+
  527.               I ----|    |    |   +----+
  528.                     +----+    +---|    |
  529.                           | >1 |---- Z
  530.                     +----+    +---|    |
  531.               J ----|    |    |   +----+
  532.                     | &  |----+
  533.               K ----|    |
  534.                     +----+
  535.  
  536.  
  537.  
  538.   Legende: * : UND  - Verknüpfung
  539.            + : ODER - Verknüpfung
  540.        / : low aktiv
  541.  
  542.  
  543.  
  544. Um das Source-File zu erstellen, ist zuerst der GAL-Typ zu bestimmen.
  545. Für die Verwirklichung der obigen Logik-Funktionen werden insgesamt 11
  546. Eingänge und 4 Ausgänge benötigt.
  547. Aus Kapitel I wissen wir (oder auch nicht), daß die Wahl des GALs von
  548. der Anzahl der Eingänge abhängt. Die Anzahl der Eingänge wiederrum hängt
  549. von dem Betriebsmodus ab (siehe unter I.4, Pinbelegung in den einzelnen
  550. Modi). Da weder Tristate- noch Register-Ausgänge verwendet werden, wird
  551. sich das GAL nach der Programmierung im Betriebsmodus 1 befinden.
  552. Daraus folgt, daß das GAL16V8 10 Eingänge und 8 konfigurierbare Ausgänge be-
  553. sitzt. Da wir nur 4 Ausgänge benötigen, könnten wir die restlichen als
  554. Eingänge programmieren, so daß wir insgesamt die benötigten 11 Eingänge
  555. und 4 Ausgänge zur Verfügung haben. Daraus folgt, daß GAL16V8 für unsere
  556. Aufgabe ausreichend ist. GAL20V8 ginge zwar auch, es wären aber wesentlich
  557. mehr Pins unbenutzt (Verschwendung).
  558.  
  559. Als zweites benötigen wir einen Text für die Signatur, der max. acht
  560. Zeichen lang sein darf - z.B. "Beispiel".
  561.  
  562. Als nächstes kommen die Pin-Deklarationen. Hier werden einfach die Pins
  563. 1 bis 20 der Reihe nach mit ihrem Namen aufgelistet. Nichtverwendete Pins
  564. müssen mit "NC" (not connected) gekennzeichnet werden, Masse mit GND und
  565. +5V mit VCC.
  566. Hier:    B  C   D   E   F  G  H  I  J  GND
  567.          K  NC  NC  NC  Z  Y  X  W  A  VCC     
  568.  
  569. Das heißt:    Pin  1 := B     Eingang
  570.           Pin  2 := C    Eingang
  571.           Pin  3 := D    Eingang
  572.           Pin  4 := E    Eingang
  573.           Pin  5 := F    Eingang
  574.           Pin  6 := G    Eingang
  575.           Pin  7 := H    Eingang
  576.           Pin  8 := I    Eingang
  577.           Pin  9 := J    Eingang
  578.           Pin 10 := GND
  579.           Pin 11 := K    Eingang
  580.           Pin 12 := NC    nicht verwendet
  581.           Pin 13 := NC    nicht verwendet
  582.           Pin 14 := NC    nicht verwendet
  583.           Pin 15 := Z    kombinatorischer Ausgang
  584.           Pin 16 := Y    kombinatorischer Ausgang
  585.           Pin 17 := X    kombinatorischer Ausgang
  586.           Pin 18 := W    kombinatorischer Ausgang
  587.           Pin 19 := A    (konfigurierbarer Ausgang als Eingang def.)
  588.           Pin 20 := VCC
  589.  
  590.                 GAL16V8
  591.                ---- ----
  592.                     B  1|       |20  VCC
  593.                C  2|       |19  A
  594.                D  3|       |18  W
  595.                E  4|       |17  X
  596.                F  5|       |16  Y
  597.                G  6|       |15  Z
  598.                H  7|       |14  NC
  599.                I  8|       |13  NC
  600.                J  9|       |12  NC
  601.              GND 10|       |11  K
  602.                    ---------
  603.  
  604.  
  605. Der nächste Punkt sind die Booleschen Gleichungen. 
  606.  
  607.       W = A * B * C
  608.  
  609.     /X = D * E
  610.  
  611.      Y = F + G
  612.  
  613.      Z = H * I + J * K
  614.  
  615. Somit haben wir alle Dinge, die man für das Eingabe-File benötigt. Nun
  616. stellt sich aber die Frage wie dieses File aufgebaut ist:
  617.  
  618. In der 1. Zeile muß der GAL-Typ stehen. Hier "GAL16V8"
  619. In der 2. Zeile muß die Signatur stehen. Hier "Beispiel"
  620. Danach folgt die Pin-Deklaration:
  621.          B  C   D   E   F  G  H  I  J  GND
  622.          K  NC  NC  NC  Z  Y  X  W  A  VCC     
  623. dann die Booleschen Gleichungen:
  624.       W = A * B * C
  625.     /X = D * E
  626.      Y = F + G
  627.      Z = H * I + J * K
  628. und das Schlüsselwort DESCRIPTION.
  629. Jetzt können Sie mit Hilfe eines Texteditors das Eingabe-File erstellen und
  630. unter "beispiel.pld" abspeichern. Dabei dürfen Sie den Anhang ".pld" NICHT
  631. weglassen.
  632. So sollte das Eingabe-File schließlich aussehen:
  633. (**** kennzeichnet File-Anfang und File-Ende, bitte nicht mit eingeben)
  634.  
  635. ******************************************************
  636. GAL16V8            hier darf ein Kommentar stehen auch ohne ';'
  637. Beispiel        hier darf ein Kommentar stehen auch ohne ';'
  638.  
  639. B  C   D   E   F  G  H  I  J  GND
  640. K  NC  NC  NC  Z  Y  X  W  A  VCC     
  641.  
  642.  
  643.  W = A * B * C
  644. /X = D * E
  645.  Y = F + G
  646.  Z = H * I + J * K
  647.  
  648. DESCRIPTION:
  649.   Ab hier darf ein beliebiger Text stehen, der am besten
  650.   die Funktion des GALs näher beschreibt.
  651. ******************************************************
  652.  
  653. Ob Sie im Eingabe-File als GAL-Typ GAL16V8, GAL16V8A oder GAL16V8B angeben
  654. ist im Prinzip egal. Die JEDEC-Datei, die später der Assembler aus diesem
  655. Eingabe-File erzeugt, ist bei allen drei Typen gleich.
  656.  
  657.  
  658. Bei der Pindeklaration ist folgendes zu beachten: In der Version 1.4
  659. von GALer werden Negationszeichen ('/') in der Pindeklaration auch in
  660. den Gleichungen berücksichtigt. Das heißt: Wenn in der Pindeklaration
  661. vor einem Pinnamen ein '/' steht und in einer Gleichung der Pinname ohne
  662. '/' steht, hat dies die selbe Wirkung als wenn der Pinname in der Pin-
  663. deklaration ohne '/' stehen würde und in der Gleichung mit '/'.
  664. Steht sowohl in der Pindeklaration als auch in der Gleichung vor dem
  665. Pinnamen ein '/', so heben sich die Negationszeichen auf (doppelte
  666. Negation).
  667.  
  668.  
  669.  
  670. Wie erhält man aber jetzt aus dem Eingabe-File das programmierte GAL?
  671. Dazu wird das Programm "GALer" benötigt. Die Software wird im folgenden
  672. Kapitel ausführlich und hoffentlich auch allgemeinverständlich erklärt.
  673.  
  674.  
  675.  
  676.  
  677. II.2 Das Programm "GALer"
  678. -------------------------
  679.  
  680. II.2.1 Installation
  681. -------------------
  682.  
  683. GALer benötigt im libs: Verzeichnis die "req.library". Die Konfigurationen
  684. werden im File "s:GALer.config" abgespeichert. Wird dieses File beim Starten
  685. von GALer nicht gefunden, werden die Default-Werte eingestellt.
  686. Sie können "GALer" entweder von der Workbench oder von der Shell (oder CLI)
  687. aus starten.
  688.  
  689.  
  690. II.2.2 Allgemeines zur Bedienung
  691. --------------------------------
  692.  
  693. Zur Bedienung läßt sich eigentlich nur sagen, daß dieses überaus nette Wesen
  694. häufig in Restaurants anzutreffen ist und dem Trinkgeld nicht abgeneigt ist.
  695.  
  696.  
  697. Fast alle Requester (einzige Ausnahme ist der File-Requester) können sowohl
  698. mit der Maus als auch mit der Tastatur bedient werden.
  699. Die Tastenbelegung ist dabei folgende:
  700.  
  701.    "w":         entspricht dem Anklicken von "Weiter" oder "O.K."
  702.    "a" oder ESC: entspricht dem Anklicken von "Abbruch"
  703.  
  704.    "1":         entspricht dem Anklicken von "GAL16V8"
  705.    "2":         entspricht dem Anklicken von "GAL16V8A"
  706.    "3":         entspricht dem Anklicken von "GAL20V8"
  707.    "4":         entspricht dem Anklicken von "GAL20V8A"
  708.  
  709.    "ü":         entspricht dem Anklicken von "übernehmen" (siehe Optimizer)
  710.    "v":         entspricht dem Anklicken von "verwerfen" (siehe Optimizer)
  711.  
  712.  
  713. "GALer" verwaltet die Endungen an den File-Namen ".pld", ".jed", ".chp",
  714. ".pin", ".fus" selbstständig. Im File-Requester können Sie daher File-Namen
  715. entweder mit oder ohne die entsprechenden Endungen eingeben.
  716.  
  717. Die Bedienung an sich dürfte nicht zu schwer sein. Befolgen Sie einfach
  718. die Anweisungen von "GALer". Bei jeder Aktion erscheinen entsprechende
  719. Requester, die Sie darauf hinweisen, was gerade gemacht wird oder warum
  720. ein bestimmte Funktion nicht ausgeführt werden kann bzw. wo ein Fehler
  721. ist.
  722.  
  723.  
  724. II.2.3 Die Menüpunkte
  725. ---------------------
  726.  
  727. Projekt-Menü:
  728.  über GALer        Sagt Ihnen wer den ganzen Mist verbrochen hat.
  729.             Ich kann's Ihnen auch gleich so sagen:  Ich war's!
  730.  
  731.  Konfig. sichern    Hiermit können einige Einstellungen wie    GAL-Typ usw.
  732.             abgespeichert werden (File "s:GALer.config").
  733.             Beim nächsten Start von "GALer" wird dieses File
  734.             geladen und die entsprechenden Werte werden wieder
  735.             eingestellt.
  736.  
  737.  Quit           "GALer" verlassen (heul). Mit dieser Funktion sollten
  738.             Sie extrem vorsichtig sein: Wenn sie zu oft benutzt
  739.             wird, merkt sich das "GALer" und wird sehr sehr böse.
  740.             Die Folge: "GALer" hebelt den Prozessor 'raus und
  741.             verkauft ihn meistbietend - dann schaut Ihr Amiga und
  742.             versteht das RAM nicht mehr.
  743.  
  744. GAL-Typ - Menü:     
  745.   GAL16V8        Mit diesen drei Menüpunkten kann der zu verwendende
  746.   GAL20V8        GAL-Typ eingestellt werden. Welcher Typ eingestellt
  747.   A-Typ            ist, ist an dem Amiga-Haken links neben dem ent-
  748.             sprechenden Menüpunkt zu sehen.
  749.  
  750.   Auto-A-Typ        Wenn dieses Menü aktiviert ist (Amiga-Haken), ist
  751.             die automatische A- bzw. B-Typ-Erkennung aktiviert.
  752.             Das heißt: GALer erkennt selbstständig, ob ein A-,
  753.             B- oder ein Standard-Typ-GAL verwendet wird und ver-
  754.             hält sich ensprechend. Sie müssen also nicht mehr
  755.             aufpassen, daß Sie den richtigen Typ eingestellt
  756.             haben. Sie müssen nur noch einstellen, ob ein
  757.             GAL16V8 oder ein GAL20V8 verwendet wird.
  758.  
  759.   Typ-Requester     Wenn dieser Menüpunkt aktiviert ist, erscheint vor
  760.             jeder Schreib- oder Lesefunktion auf ein GAL ein
  761.             Requester, in dem Sie nochmal den GAL-Typ auswählen
  762.             können. Diese Auswahl hat eine globale Wirkung - die
  763.             gleiche, wie wenn Sie den GAL-Typ über den entsprech-
  764.             enden Menüpunkt auswählen würden. Das heißt: Wenn Sie
  765.             z.B. im GAL-Typ-Menü ein GAL20V8 eingestellt haben
  766.             und im Requester jetzt ein GAL16V8 auswählen, so wird
  767.             im GAL-Typ-Menü automatisch ein GAL16V8 eingestellt.
  768.             Alle darauffolgende Aktionen beziehen sich dann auf
  769.             das GAL16V8.
  770.  
  771. GAL - Menü:
  772.   programmieren          GAL programmieren. Es erscheint ein File-Requester,
  773.             mit dem Sie die entsprechende JEDEC-Datei auswählen
  774.             können, die in das GAL gebrannt (programmiert) werden
  775.             soll.
  776.  
  777.   kopieren        GAL kopieren. Mit dieser Funktion haben Sie die
  778.             Möglichkeit GALs zu kopieren. Dies ist jedoch nur
  779.             sinnvoll, wenn das zu kopierende GAL nicht geschützt
  780.             (Security-Fuse) ist. 
  781.  
  782.   löschen        GAL löschen. Bevor ein bereits programmiertes GAL
  783.             neu programmiert werden kann, muß es zuvor gelöscht
  784.             worden sein. Diese Aufgabe übernimmt diese Funktion.
  785.  
  786.   vergleichen        Es gibt drei verschiedene Möglichkeiten des Ver-
  787.             gleichs, die Sie in einem entsprechenden Requester
  788.             auswählen können. Als da wären:
  789.             1. GAL mit GAL vergleichen: Es wird ein    Quell-GAL
  790.             eingelesen, das dann mit mehreren, nacheinander in
  791.             die Textool-Fassung einzusetzenden GALs verglichen
  792.             werden kann.
  793.             2. GAL mit JEDEC-File vergleichen: Es wird wieder
  794.             zuerst ein Quell-GAL eingelesen. Anschließend
  795.             können Sie JEDEC-Files auswählen, die mit dem GAL
  796.             verglichen werden.
  797.             3. JEDEC-File mit GAL vergleichen: Es wird zunächst
  798.             ein JEDEC-File geladen, das dann anschließend mit
  799.             mehreren GALs verglichen werden kann.
  800.  
  801.   Leertest        Testen ob das GAL leer ist.
  802.  
  803.   setze Security-Bit    Brennt die Security-Fuse in einem GAL (siehe I.2).
  804.  
  805.   teste Security-Bit    Diese Funktion testet ein GAL daraufhin, ob die
  806.             Security-Fuse gebrannt wurde oder nicht.
  807.  
  808.   Schreibverhalten    Nach Aufruf dieses Menüpunkts erscheint ein Requester.
  809.             In diesem Requester können Sie folgendes einstellen:
  810.             programmieren mit oder ohne vorherigem Leertest und
  811.             mit oder ohne anschließendem Verify (Überprüfung, ob
  812.             die Daten richtig in das GAL programmiert worden sind)
  813.             GAL kopieren: Beim Ziel-GAL vorher Leertest durch-
  814.             führen oder nicht und nach dem Kopieren Verfiy durch-
  815.             führen oder nicht.
  816.             GAL löschen: Nach dem Löschen des GALs einen Leertest
  817.             durchführen um festzustellen, ob das GAL auch wirklich
  818.             leer ist.
  819.  
  820. GAL-Assembler - Menü:
  821.  Datei assemblieren     Durch Auswahl dieses Menüpunktes wird der
  822.             Assembler aufgerufen. Mit dem Assembler wird ein
  823.             Source-File (".pld") in eine JEDEC-Datei (".jed")
  824.             umgewandelt. Die JEDEC-Datei wird zur Programmierung
  825.             des GALs benötigt. Es erscheint zunächst wieder
  826.             ein Requester. In dem Requester kann eingestellt
  827.             werden, welche Files erzeugt werden sollen, ob
  828.             die Files automatisch (ohne extra einen File-
  829.             Requester zu öffnen) geschrieben werden sollen
  830.             und ob der im Source-File (".pld") angegebene
  831.             GAL-Typ (GAL16V8, GAL20V8) übernommen werden soll.
  832.             Durch Anklicken von "Weiter" erscheint ein File-
  833.             Requester mit dessen Hilfe Sie das zu assemblierende
  834.             Source-File (Endung ".pld") auswählen können.
  835.  
  836. GAL-Disassembler - Menü:
  837.  Signatur lesen          Liest die Signatur aus dem GAL aus und gibt
  838.             sie auf dem Bildschirm aus.
  839.  
  840.  ACW lesen        Liest das Architektur-Kontroll-Wort aus dem GAL aus
  841.             und gibt es auf dem Bildschirm aus.
  842.  
  843.  GAL-Info        Diese Funktion gibt einige Informationen über das
  844.             GAL aus: GAL-Typ (A-Typ oder Standard), Hersteller
  845.             und ob das GAL durch diese Version von GALer unter-
  846.             stützt wird oder nicht.
  847.  
  848.  JEDEC-Datei erstellen  Diese Funktion liest ein bereits programmiertes
  849.             GAL aus und erstellt eine JEDEC-Datei.
  850.  
  851.  JEDEC-Datei Parameter  Die Einstellungen, die hier vorgenommen werden können,
  852.             beziehen sich auf das Schreiben und auf    das Lesen der
  853.             JEDEC-Datei. Diese Einstellungen gelten für alle
  854.             Funktionen, die eine JEDEC-Datei erzeugen bzw. ein-
  855.             lesen. Das sind: erzeugen: der GAL-Assembler und
  856.             die Funktion "JEDEC-Datei erstellen" bzw. lesen:
  857.             GAL mit JEDEC-File bzw. JEDEC-File mit GAL ver-
  858.             gleichen und Programmieren eines GALs.
  859.  
  860.             Folgende Einstellungen sind für das JEDEC-File-Schrei-
  861.             ben zuständig:
  862.             1. Security-Bit: Gibt an, ob im JEDEC-File das
  863.             Security-Bit gesetzt sein soll oder nicht. Wenn es
  864.             gesetzt ist und später ein GAL mit dieser JEDEC-Datei
  865.             programmiert wird, so werden Sie nach der Program-
  866.             mierung des GALs in einem Requester gefragt, ob die
  867.             Security-Fuse im GAL gebrannt werden soll oder nicht.
  868.  
  869.             2. Fuse-Checksumme: Gibt an, ob eine Checksumme über
  870.             die verschiedenen Fuses (1en und 0en im JEDEC-File)
  871.             gebildet werden soll oder nicht. Diese Checksumme
  872.             wird dann beim späteren Einlesen der Datei überprüft.
  873.             Damit wird verhindet, daß versehentlich Fuses geändert
  874.             werden. In der Datei kann aber z.B. ein    Kommentar
  875.             verändert werden, ohne daß dies einen Einfluß auf
  876.             die Checksumme hätte, da die Checksumme ja nur über
  877.             die 1en und 0en gebildet wird - deshalb Fuse-Check-
  878.             summe.
  879.  
  880.             3. File-Checksumme: Gibt an, ob eine Checksumme über
  881.             das gesamte File erstellt wird. Dieses File darf
  882.             dann überhaupt nicht mehr geändert werden, auch
  883.             der Kommentar nicht. Ansonsten wird die Checksumme
  884.             verändert und beim Einlesen der JEDEC-Datei wird dann
  885.             darauf hingewiesen, daß die File-Checksumme nicht
  886.             mehr stimmt. Damit wird verhindert, daß die Datei
  887.             in irgendeiner Weise verändert wird.
  888.  
  889.             Für das Lesen des JEDEC-Files gibt es nur eine
  890.             Einstellung: CTRL => neue Zeile. Dies hat folgende
  891.             Bewandtnis: Wenn das JEDEC-File mit einer File-Check-
  892.             summe erzeugt wurde, sind im File einige Steuer-
  893.             zeichen (STX = 0x02 und ETX = 0x03) enthalten. Einige
  894.             Texteditoren (z.B. CED) beginnen nach einem solchen
  895.             Steuerzeichen eine neue Zeile, obwohl kein CR (carriage
  896.             return) vorliegt. Wenn jetzt im JEDEC-File ein Fehler
  897.             gefunden wurde, gibt "GALer" natürlich eine Fehler-
  898.             meldung zusammen mit der Zeilennummer aus, in der der
  899.             Fehler auftrat. Da aber "GALer" nicht wissen kann,
  900.             ob Sie anschließend das JEDEC-File mit einem Text-
  901.             editor editieren, der nach einem <STX> oder <ETX>
  902.             eine neue Zeile beginnt oder nicht, kann mit dem
  903.             "CTRL => neue Zeile" eingestellt werden, ob "GALer"
  904.             das <STX> bzw. <ETX> als ein Carriage Return bewerten
  905.             soll oder nicht. Damit wird erreicht, daß die von
  906.             "GALer" ausgegebene Fehler-Zeilennummer mit der
  907.             Zeilennummer in Ihrem Lieblingseditor übereinstimmt.
  908.  
  909.  Reassembler        Diese Funktion liest eine JEDEC-Datei ein und er-
  910.             stellt daraus das entsprechende Source-File.
  911.             Im Requester "Pinnamen" können Sie die Pinnamen
  912.             für die Pinnamendeklaration im Source-File eingeben.
  913.             Mit "Clear" werden die voreingestellten Pinnamen
  914.             gelöscht. Mit "Set" werden diese wieder hergestellt.
  915.  
  916.  
  917. Tools - Menü:
  918.  Pinnamen zeigen    Falls bereits ein Source-File erfolgreich assembliert
  919.             wurde und der eingestellte GAL-Typ mit dem GAL-Typ in
  920.             der Source-Datei übereinstimmt, fügt diese Funktion
  921.             die entsprechenden Pinnamen an das symbolische GAL in
  922.             der Bildschirmmitte an.
  923.  
  924.  Pinnamen löschen    Löscht die Pinnamen am GAL wieder.
  925.  
  926.  Prüfmuster        Programmiertes GAL auf Funktionsfähigkeit hin
  927.             überprüfen - nähere Beschreibung siehe unten.
  928.  
  929.  Optimizer        Diese Funktion dient der Optimierung von den
  930.             Booleschen Gleichungen in den Source-Files (siehe
  931.             weiter unten).
  932.  
  933.  
  934.  
  935. II.2.4 Der Assembler
  936. --------------------
  937.  
  938. Um ein GAL zu programmieren, muß zunächst das Source-File in das so-
  939. genannte JEDEC-File umgewandelt werden. Diese Aufgabe übernimmt der
  940. GAL-Assembler. Das JEDEC-File (Endung ".jed") ist ein "Text"-File, in dem
  941. sämtliche Bits, die in einem GAL gesetzt werden können, der Reihe nach auf-
  942. gelistet sind. Den Zustand der Bits (0 oder 1) ermittelt der GAL-Assembler
  943. aus dem Source-File. Neben dem JEDEC-File kann der GAL-Assembler noch drei
  944. weitere Files generieren. Diese Files dienen aber lediglich der Dokumen-
  945. tation. Das Fuse-File (Endung ".fus") zeigt den Zustand der Bits in der
  946. Logik-Matrix. Das Chip-Diagramm (Endung ".chp") zeigt den Anschlußplan des
  947. GALs und das Pin-Belegungs-File (Endung ".pin") listet alle Pins auf und
  948. zeigt, ob diese als Eingang oder Ausgang programmiert sind. Die Files können
  949. von einem beliebigen Texteditor gelesen und eventuell nachbearbeitet werden.
  950. Bei der Eingabe von Filenamen in "GALer" ist zu beachten, daß die Endungen
  951. (".jed", ".chp", ".pin", ".pld") der einzelnen File-Typen (JEDEC-, Chip-,
  952. Pin-, Eingabe-File) entweder weggelassen oder mit angegeben werden können.
  953.  
  954. Die Assemblierung eines Source-Files geschieht wie folgt:
  955. Sie wählen einfach den Menüpunkt "Datei assemblieren" an. Im daraufhin
  956. erscheinenden Requester kann folgendes einstellt werden:
  957.  
  958.  - Welche Files erzeugt werden sollen - JEDEC, Fuse, Chip, Pin.
  959.  - Ob die zu erzeugenden Files automatisch abgespeichert werden sollen.
  960.    Das heißt, daß nach erfolgreicher Assemblierung des Source-Files der
  961.    Name des Source-Files ("name.pld") mit den entsprechenden Endungen
  962.    "name.jed", "name.fus", "name.chp" und "name.pin" versehen wird und
  963.    anschließend ohne File-Requester in das selbe Directory geschrieben
  964.    wird, in dem sich auch das Source-file ("name.pld") befindet.
  965.  - Ob der GAL-Typ aus dem Source-File übernommen werden soll. Wenn
  966.    diese Funktion aktiviert ist, wird das symbolische GAL in der Bild-
  967.    schirmmitte mit den Pinnamen aus dem Source-File versehen. Damit
  968.    wird ein späteres Austesten mit der Funktion "Prüfmuster" erheblich
  969.    erleichtert, da anstatt der selten bläden Pinnummern jetzt richtige
  970.    Namen dastehen (ist doch toll, oder?). Anmerkung: "selten bläd" ist
  971.    ein bayerischer Kraftausdruck und heißt soviel wie: nicht häufig
  972.    unintelligent oder allgemein verständlicher: selten dämlich
  973.  
  974. Durch Anklicken von "Weiter" geht's weiter und mit "Abbruch" wird
  975. abgebrucht (hi hi -- lustiger Spruch, muß ich mir merken).
  976. Wenn Sie sich nach Abwägung sämtlicher Vor- und Nachteile und
  977. nach Beseitigung sämtlicher Gewissenskonflikte zu einem "Weiter" durch-
  978. gerungen haben, erscheint jetzt ein File-Requester. Gleich eines vorweg:
  979. Der File-Requester ist nicht von mir, Sie haben es sicher schon bemerkt.
  980. Der File-Requester stammt aus der "req.library" und  wurde von
  981. Colin Fox und Bruce Dawson programmiert - denen gebührt also die Ehre.
  982. Kennen Sie meinen "File-Requester" aus der 1.3er Version von "GALer"?
  983. Wenn ja, dann wissen Sie was Sie den beiden zu verdanken haben.
  984. In diesem File-Requester können Sie jetzt das Source-File auswählen,
  985. das assembliert werden soll.
  986.  
  987. Wenn während der Assemblierung kein Fehler aufgetreten ist, dann erscheint
  988. erneut ein File-Requester. Hier können Sie auswählen, unter welchem Namen
  989. die soeben erzeugte JEDEC-Datei abgespeichert werden soll. Fehlermeldungen
  990. des Assemblers werden in einem eigenen Abschnitt ausführlich erklärt.
  991.  
  992.  
  993.  
  994. II.2.5    Das Programmieren
  995. -------------------------
  996.  
  997. Um ein GAL zu programmieren muß, wie bereits erwähnt, zunächst aus dem
  998. Source-File die JEDEC-Datei erzeugt werden. Diese Aufgabe übernimmt,
  999. wie ebenfalls bereits erwähnt, der Assembler.
  1000.  
  1001. Liegt die JEDEC-Datei vor, muß sichergestellt sein, daß das GAL leer ist.
  1002. Dies kann mit der Funktion "Leertest" überprüft werden. Wenn ein GAL nicht
  1003. leer ist, muß es vor der erneuten Programmierung mit der Funktion "löschen"
  1004. gelöscht werden.
  1005. Wenn es dann leer ist, kann die Funktion "programmieren" aufgerufen werden.
  1006. Im daraufhin erscheinenden File-Requester können Sie das JEDEC-File auswählen,
  1007. das in das GAL programmiert werden soll. Wenn dies geschehen ist, wird das
  1008. GAL programmiert.
  1009.  
  1010.  
  1011. Hier nochmal eine kurze Zusammenfassung der Vorgehensweise bei der
  1012. Programmierung von GALs:
  1013.  
  1014.   1. mit Texteditor das Eingabe-File erstellen ("name.pld")
  1015.   2. Eingabe-File assemblieren -> JEDEC-File ("name.jed")
  1016.   3. GAL-Typ einstellen (GAL16V8 oder GAL20V8 und eventuell A-Typ, wenn
  1017.      nicht die automatische A-Typ-Erkennung (Menü Auto-Typ) aktiviert ist)
  1018.   4. GAL in die Fassung einsetzen
  1019.      Wenn das GAL nicht leer ist, muß es durch Anwählen von "löschen"
  1020.      zuerst gelöscht werden, bevor es programmiert werden kann.
  1021.   5. "programmieren" anwählen
  1022.   6. GAL aus der Fassung entfernen  -  fertig
  1023.  
  1024.  
  1025.  
  1026.  
  1027. II.2.6 Das Austesten von GALs
  1028. -----------------------------
  1029.  
  1030. Nachdem das GAL programmiert wurde stellt sich immer die Frage, ob sich
  1031. das GAL auch so verhält, wie man es sich eigentlich vorgestellt hat.
  1032. Dazu gibt es den GAL-Prüfer. Um ein GAL auf seine Funktion hin zu über-
  1033. prüfen, muß es natürlich zuerst wieder in die Fassung gesteckt werden und
  1034. gegebenenfalls der GAL-Typ wieder richtig eingestellt werden.
  1035. Jetzt kann der Menüpunkt "GAL-Prüfer - Prüfmuster" angewählt werden.
  1036. In der Mitte des Bildschirms sehen Sie symbolisch ein GAL abgebildet. Im GAL
  1037. selbst sind einige 'E's und 'A's zu sehen. Das 'E' steht für Eingang und
  1038. das 'A' für Ausgang. Das 'A' ist ein Gadget. Durch Anklicken wird das 'A'
  1039. zu einem 'E' und durch nochmaliges Anklicken wieder zu einem 'A'. Das heißt,
  1040. Sie können bestimmen, ob dieser Pin als Eingang oder als Ausgang behandelt
  1041. werden soll. Falls ein Pin ein Eingang ist, kann durch ein weiteres Gadget
  1042. bestimmt werden, ob der Eingang auf "High" ('H') oder auf "Low" ('L') ge
  1043. legt werden soll. Die Ausgänge sind blau umrandet. Ein Ausgang kann drei
  1044. Zustände annehmen: 'H' (High-Pegel), 'L' (Low-Pegel) und 'Z' (hochohmig).
  1045.  
  1046. Wenn Sie das GAL aus dem obigen Beispiel verwenden, muß zunächst Pin 19
  1047. (="A") durch Anklicken von 'A' (das bei Pin 19), als Eingang definiert
  1048. werden, da dieser Pin im obigen Beispiel eben als Eingang programmiert
  1049. wurde.
  1050. Die Eingänge des AND-Gatters sind: Pin 19 (="A"), Pin 1 (="B"), Pin 2 (="C")
  1051. Der Ausgang ist Pin 18 (="W"). Wenn Sie jetzt die Eingänge des AND-Gatters
  1052. durch Anklicken der Pegel-Gadgets auf HIGH legen, so muß der Ausgang (=Pin 18)
  1053. ebenfalls auf HIGH gehen. Tut er das nicht oder geht der Ausgang auch bei
  1054. anderen Kombinationen als bei "A"=HIGH, "B"=HIGH, "C"=HIGH auf HIGH,
  1055. liegt wahrscheinlich ein Fehler in der Eingabe-Datei vor. Diese sollte
  1056. dann nocheinmal überprüft und gegebenenfalls korrigiert werden. Wurde ein
  1057. Fehler gefunden, muß das GAL zuerst gelöscht werden bevor es neu programmiert
  1058. werden kann (ein GAL kann bis zu einhundertmal gelöscht und neu programmiert
  1059. werden).
  1060. Auf diese Art und Weise läßt sich das gesamte GAL überprüfen. Wenn das GAL
  1061. vollständig getestet wurde und kein Fehler gefunden wurde, kann es in
  1062. die Schaltung eingebaut werden.
  1063.  
  1064.  
  1065.  
  1066. II.2.7 Der Optimizer
  1067. --------------------
  1068.  
  1069. Es kann vorkommen, daß die Booleschen Gleichungen im Source-File recht
  1070. komplex sind. Boolesche Gleichungen lassen sich aber häufig vereinfachen.
  1071. Dazu gibt es mehrere Möglichkeiten:
  1072.  
  1073. 1. Karnaugh-Diagramm: Dies ist ein graphisches Verfahren, um Boolesche
  1074.    Gleichungen zu vereinfachen. Es eignet sich aber eher für einfachere
  1075.    Gleichungen und dann vor allem dazu, Gleichungen von Hand zu optimieren.
  1076.  
  1077. 2. Quine-McCluskey: Dies ist für den Computer das weitaus bessere Verfahren.
  1078.    Hier werden soviele Produktterme wie möglich an die eigentliche Gleichung
  1079.    angehängt (getrennt durch '+') die aber den Wahrheitsverlauf der
  1080.    Gleichung nicht verändern. Diese Produktterme werden als Resolventen
  1081.    bezeichnet. Durch diese zusätzlichen Produktterme ist es in der Regel
  1082.    möglich, andere Produktterme der Gleichung zu eliminieren. Wenn man Glück
  1083.    hat, wird die daraus enstehende Gleichung weniger komplex als die ur-
  1084.    sprüngliche. Wenn man Pech hat, ist das Ergebnis der Optimierung wieder
  1085.    die Ausgangsgleichung. Wenn man absolut megagroßes Pech hat, wird die
  1086.    Gleichung sogar noch komplexer als die Ausgangsgleichung - da hilft dann
  1087.    nur noch der Sprung aus dem Fenster (hoffentlich haben Sie Ihren Amiga
  1088.    im Keller stehen).
  1089.    Der Optimizer von "GALer" verwendet genau diesen überaus effizienten
  1090.    Algorithmus.
  1091.  
  1092. Nun zur Bedienung des Optimizers:
  1093.    Nachdem Sie die Menüpunkt "Optimizer" angewählt haben, erscheint ein
  1094.    File-Requester. Dort können Sie das Source-File auswählen, dessen
  1095.    Booleschen Gleichungen Sie vereinfachen wollen. Wenn das Source-File
  1096.    ohne Fehlermeldung geladen werden konnte, beginnt GALer mit der
  1097.    Optimierung der Gleichungen.
  1098.    Unter "alte Gleichung:" steht die Boolesche Gleichung, so wie sie 
  1099.    im Source-File steht. Unter "optimierte Gleichung:" steht, unter
  1100.    Umständen nach einigen Sekunden (Minuten, Stunden,...) Rechenzeit,
  1101.    das Ergebnis der Optimierung. Im Feld "Statistik:", ist eine Übersicht
  1102.    über die Anzahl der '*' und '+' der jeweiligen Gleichung zu sehen.
  1103.    Wenn Ihnen das Ergebnis der Optimierung gefällt, klicken Sie das
  1104.    Gadget "Übernehmen" an oder drücken die "ü"-Taste. Wenn Ihnen das
  1105.    Ergebnis nicht gefällt, dann klicken Sie "verwerfen" an oder drücken
  1106.    die "v"-Taste. Falls noch eine Gleichung vorhanden ist, wird die
  1107.    nächste optimiert.
  1108.    Wenn alle Gleichungen verkasimatukelt wurden, erscheint wieder ein
  1109.    File-Requester. Dort können Sie jetzt angeben, unter welchem Namen
  1110.    das neue Source-File, das jetzt die optimierten Gleichungen enthält
  1111.    (soweit "übernehmen" angewählt wurde), abgespeichert werden soll.
  1112.    Dort sollten Sie immer einen anderen Namen angeben, als den Namen
  1113.    des ursrünglichen Source-Files.
  1114.    Z.B.: ursprüngliches Source-File:  name.pld
  1115.      optimiertes Source-File:     name_opt.pld
  1116.  
  1117.    Zum Schluß noch ein schönes Beispiel, das zeigt wie effektiv eine
  1118.    Optimierung sein kann:
  1119.  
  1120.    Gleichung:
  1121.      X = /A*/C + A*/C + C*/D + /B*/C + /A*C*D + B*/D
  1122.  
  1123.    Durch GALer optimierte Gleichung:
  1124.      X = /C + /D + /A
  1125.  
  1126.    Beide Gleichungen sind vom Wahrheitsverlauf her völlig identisch. Es
  1127.    wurde nichts weggelassen, was wichtig wäre.
  1128.  
  1129.  
  1130.  
  1131. II.3 Das JEDEC-File
  1132. -------------------
  1133.  
  1134. Da das JEDEC-File inzwischen 9327 Mal erwähnt wurde, wird dieses
  1135. wundersame File an dieser Stelle näher erklärt. JEDEC steht übrigens für
  1136. (J)oint (E)lectron (D)evice (E)ngineering (C)ouncil.
  1137.  
  1138. Zunächst einmal ist das JEDEC-File nichts anderes als ein "Text"-File, in
  1139. dem sämtliche Sicherungen, die in einem GAL enthalten sind der Reihe nach
  1140. aufgelistet sind. Den Zustand der Bits (0 oder 1) ermittelt der oben
  1141. bereits erklärte GAL-Assembler.
  1142.  
  1143. Am File-Anfang kann ein fast beliebiger Text stehen. Das einzige Zeichen
  1144. das in diesem Text nicht vorkommen darf ist ein ein Asterix (*) - nicht
  1145. zu verwechseln mit dem bekannten Gallier. Nach dem ersten '*' werden
  1146. die eigentlichen Steuerzeichen erwartet. Jedes Steuerzeichen MUß wieder mit
  1147. einem '*' abgeschlossen werden, wobei das '*' auch erst in einer der nächsten
  1148. Zeilen stehen kann.
  1149.  
  1150. Mögliche Steuerzeichen sind:
  1151.  
  1152.  N: Das Steuerzeichen N leitet einen Kommentar ein. Das Ende des Kommentars
  1153.     wird mit einem '*' gekennzeichnet.
  1154.     Beispiel:    N  das ist ein Kommentar *
  1155.  
  1156.  F: Wenn nicht alle Zustände der Sicherungen aufgelistet sind, muß der Wert
  1157.     der fehlenden Zustände angegeben werden. Dazu dient das Steuerzeichen F.
  1158.     Direkt hinter dem F muß eine 0 oder 1 stehen. Diese 0 oder 1 gibt den
  1159.     Wert der fehlenden Zustände an. Das hat den Vorteil, daß nicht alle
  1160.     Sicherungen des GALs aufgelistet werden müssen. Damit wird das JEDEC-
  1161.     File erheblich kürzer und übersichtlicher. Das GAL20V8 hat immerhin
  1162.     2706 Sicherungen, was ein ganz schön langes File ergeben würde, wenn
  1163.     für jede Sicherung eine "0" oder "1" angegeben werden müßte.
  1164.     Beispiel:    F0 *
  1165.  
  1166.  G: G bestimmt, ob beim späteren Programmieren eines GALs die Security-Fuse
  1167.     gebrannt werden soll oder nicht.
  1168.     G0 *    : Security-Fuse nicht brennen -> Auslesen der Fuse-Matrix möglich
  1169.     G1 *    : Security-Fuse brennen -> Auslesen der Fuse-Matrix nicht mehr
  1170.           möglich. Bevor die Security-Fuse gebrannt wird, werden Sie
  1171.           aber durch einen Requester gefragt ob Sie das auch wirklich
  1172.           wollen.
  1173.  
  1174.  L: Das L leitet die eigentliche Fuse-Liste ein. Direkt hinter dem L muß
  1175.     die Adresse der nachstehenden Sicherungen stehen. Hinter dieser Adresse
  1176.     folgt dann die Liste der Sicherungen ("0", "1").
  1177.     Beispiel:  L0000  10110111111111111111111111011111 *
  1178.     Das heißt: in die Adresse 0000 des GALs wird eine 1 geschrieben, in
  1179.            die Adresse 0001 eine 0, in die Adresse 0002 wieder
  1180.            eine 1 usw....
  1181.  
  1182.     Die Adressen haben folgende Bedeutung:
  1183.  
  1184.     GAL16V8, GA16V8A, GAL16V8B:
  1185.       0000-2047: Fuse-Matrix
  1186.       2048-2055: XOR-Bits der Ausgangszellen
  1187.       2056-2119: Signatur
  1188.       2120-2127: AC1-Bits der Ausgangszellen
  1189.       2128-2191: Produkttermfreigabe
  1190.       2192     : SYN-Bit
  1191.       2193     : AC0-Bit
  1192.  
  1193.     GAL20V8, GAL20V8A, GAL20V8B:
  1194.       0000-2559: Fuse-Matrix
  1195.       2560-2567: XOR-Bits der Ausgangszellen
  1196.       2568-2631: Signatur
  1197.       2632-2639: AC1-Bits der Ausgangszellen
  1198.       2640-2703: Produkttermfreigabe
  1199.       2704     : SYN-Bit
  1200.       2705     : AC0-Bit
  1201.  
  1202.  
  1203.  QF: QF gibt an, wieviele Fuses (Sicherungen) in der JEDEC-Datei enthalten
  1204.      sind. Beim GAL16V8 sind es 2194 und beim GAL20V8 2706. Damit wird
  1205.      klar definiert für welchen GAL-Typ dieses JEDEC-File bestimmt ist.
  1206.      Beispiel:   QF2194 *
  1207.  
  1208.  C: Dem C folgt eine Checksumme (hexadezimale 16-Bit-Zahl) über die verschie-
  1209.     denen Fuses (1en und 0en im JEDEC-File). Diese Checksumme wird dann beim
  1210.     späteren Einlesen der Datei überprüft. Damit wird verhindet, daß ver-
  1211.     sehentlich Fuses geändert werden. In der Datei kann aber z.B. ein
  1212.     Kommentar verändert werden, ohne daß dies einen Einfluß auf die Checksumme
  1213.     hätte, da die Checksumme ja nur über die 1en und 0en gebildet wird,
  1214.     deshalb Fuse-Checksumme.
  1215.     Beispiel: C6402 *
  1216.  
  1217.  
  1218.  <STX>, <ETX>: Diese Zeichen sind Kontrollzeichen:
  1219.     <STX>: 0x02 = CTRL-B
  1220.     <ETX>: 0x03 = CTRL-C
  1221.  
  1222.     In Texteditoren sehen dieses Zeichen in der Regel so aus:
  1223.       <STX>  
  1224.       <ETX>  
  1225.     Das <STX> kennzeichnet den Fileanfang und das <ETX> das Fileende.
  1226.     Direkt hinter dem <ETX> muß eine File-Checksumme (hexadez. 16-Bit-Zahl)
  1227.     stehen. Nach der File-Checksumme darf kein Zeichen mehr stehen, also
  1228.     auch KEIN '*'. Diese Checksumme ist die Summe aller ASCII-Zeichen des
  1229.     Files ab dem <STX> bis zum <ETX> einschließlich des <STX> (0x02) und des
  1230.     <ETX> (0x03). Da diese Checksumme in der Regel über das ganze File
  1231.     gebildet wird, ist eine nachträgliche Änderung des Files nicht mehr
  1232.     erlaubt. Dieses File darf überhaupt nicht mehr geändert werden, auch
  1233.     der Kommentar nicht. Ansonsten wird die File-Checksumme verändert und
  1234.     beim Einlesen der JEDEC-Datei (durch "GALer") erscheint dann eine
  1235.     entsprechende Warnung, daß die File-Checksumme nicht mehr stimmt.
  1236.  
  1237.  
  1238.  V: Nach dem V folgt ein sogenannter Testvektor. Testvektoren werden
  1239.     hier noch nicht unterstützt. Sie werden wie ein normaler Kommentar
  1240.     behandelt (wie ein N).
  1241.  
  1242.  
  1243.       
  1244.  
  1245. II.4 Weitere Beispiele
  1246. ----------------------
  1247.  
  1248. Als nächstes möchte ich ein Beispiel zu Tristate-Ausgängen bringen.
  1249.  
  1250.  
  1251.        A ---------+
  1252.           |
  1253.         |\o
  1254.         | \
  1255.        B -------|  +------------------------ Y1
  1256.         | /                
  1257.         |/                
  1258.                   VCC
  1259.                    |
  1260.             +----+         |\|
  1261.        C -------|    |         | \
  1262.             | >1 |-----------|  +------- Y2
  1263.        D -------|    |         | /
  1264.             +----+         |/
  1265.  
  1266.  
  1267.             +----+
  1268.        E -------|    |
  1269.             | &  |------+
  1270.        F -------|    |      |
  1271.             +----+      |
  1272.               |\|
  1273.                           | \
  1274.        G -----------------|  +o------------- Y3
  1275.               | /
  1276.                       |/
  1277.  
  1278.  
  1279. Y1 soll nur dann den Zustand von "B" annehmen, wenn "A" = LOW ist.
  1280. Y2 soll ständig aktiv sein (entweder H oder L - abhängig von "C" und "D").
  1281. Dies entspricht einem kombinatorischen Ausgang.
  1282. Y3 soll nur dann aktiv sein, wenn "E" UND "F" = HIGH sind. 
  1283.  
  1284.  
  1285.                 GAL16V8
  1286.  
  1287.                ---- ----
  1288.                     A  1|       |20  VCC
  1289.                B  2|       |19  Y1
  1290.                C  3|       |18  Y2
  1291.                D  4|       |17  Y3
  1292.                E  5|       |16  NC
  1293.                F  6|       |15  NC
  1294.                G  7|       |14  NC
  1295.               NC  8|       |13  NC
  1296.               NC  9|       |12  NC
  1297.              GND 10|       |11  NC
  1298.                    ---------
  1299.  
  1300.  
  1301. Im Eingabe-File werden die Tristate-Ausgänge durch ein ".T" gekennzeichnet.
  1302. Die Tristate-Freigabe erfolgt anschließend mit einem ".E". Fehlt die
  1303. Tristate-Freigabe, so wird ständige Freischaltung angenommen (=VCC).
  1304. Tristate-Freigabe = GND entspricht ständigem Sperren (=hochohmig).
  1305. Achtung: Bei Tristate-Ausgängen können maximal sieben Produktterme verwendet
  1306. werden (bei allen anderen Ausgangsarten sind es maximal acht).
  1307. In der Tristate-Freigabe darf nur EIN Produktterm verwendet werden (kein OR).
  1308.  
  1309. Das Eingabe-File sieht wie folgt aus:
  1310. ******************************************************
  1311. GAL16V8
  1312. Bsp.2
  1313.  
  1314. A  B  C  D  E  F  G  NC NC GND
  1315. NC NC NC NC NC NC Y3 Y2 Y1 VCC
  1316.  
  1317.  
  1318. Y1.T = B
  1319.  
  1320. Y2.T = C + D
  1321.  
  1322. Y3.T = /G
  1323.  
  1324.  
  1325. Y1.E = /A
  1326.  
  1327. Y3.E = E * F
  1328.  
  1329.  
  1330. DESCRIPTION
  1331. ******************************************************
  1332.  
  1333.  
  1334.  
  1335.  
  1336. Als letztes Beispiel wird die Verwendung von Register-Ausgängen gezeigt.
  1337.  
  1338.  
  1339.                 GAL16V8
  1340.  
  1341.                ---- ----
  1342.          (Input)       Clock  1|       |20  VCC
  1343.     (Input)          D0  2|       |19  Q0        (Output)
  1344.     (Input)          D1  3|       |18  Q1        (Output)
  1345.     (Input)          D2  4|       |17  Q2        (Output)
  1346.     (Input)          D3  5|       |16  Q3        (Output)
  1347.     (Input)         Set  6|       |15  NC        (nicht verwendet)
  1348.     (Input)       Clear  7|       |14  NC        (nicht verwendet)
  1349.     (Input)          NC  8|       |13  NC        (nicht verwendet)
  1350.     (Input)          NC  9|       |12  NC        (nicht verwendet)
  1351.              GND 10|       |11  /OE        (Input)
  1352.                    ---------
  1353.  
  1354. Da Register verwendet werden heißt das, daß sich das GAL im Betriebs-
  1355. modus 3 befindet. Dies bedeutet, daß die Pins 1 und 13 für Clock und
  1356. /OE reserviert sind. Wenn /OE auf HIGH liegt, gehen alle Register-
  1357. ausgänge (hier Q0-Q3) auf "hochohmig" (=Z). Wenn Clear = HIGH ist und ein
  1358. Clock-Impuls (LOW-HIGH) anliegt, werden die Ausgänge auf 0 zurückgesetzt.
  1359. Durch die Eingänge D0-D3 kann der Zähler vorgeladen werden. Durch
  1360. Set = HIGH und einem Clock-Impuls werden die Werte von D0-D3 in Q0-Q3
  1361. übernommen. Ein Clock-Impuls bei Clear und Set gleich LOW bewirkt, daß
  1362. der Zähler um eins weiterzählt.
  1363.  
  1364. Im Eingabe-File werden Register-Ausgänge mit ".R" gekennzeichnet.
  1365. Es sind maximal acht Produktterme pro Register-Ausgang erlaubt.
  1366.  
  1367. ******************************************************
  1368. GAL16V8            4-Bit-Counter
  1369. Counter
  1370.  
  1371.  
  1372. Clock D0    D1    D2    D3    Set   Clear NC    NC   GND
  1373. /OE   NC    NC    NC    NC    Q3    Q2    Q1    Q0   VCC
  1374.  
  1375.  
  1376.  
  1377. Q0.R =   /Clear *  Set *  D0
  1378.        + /Clear * /Set * /Q0
  1379.  
  1380. Q1.R =   /Clear *  Set *  D1
  1381.        + /Clear * /Set * /Q1 *  Q0
  1382.        + /Clear * /Set *  Q1 * /Q0
  1383.  
  1384. Q2.R =   /Clear *  Set *  D2
  1385.        + /Clear * /Set *  Q2 * /Q1
  1386.        + /Clear * /Set *  Q2 * /Q0
  1387.        + /Clear * /Set * /Q2 *  Q1 *  Q0
  1388.  
  1389. Q3.R =   /Clear *  Set *  D3
  1390.        + /Clear * /Set *  Q3 * /Q2
  1391.        + /Clear * /Set *  Q3 * /Q1
  1392.        + /Clear * /Set *  Q3 * /Q0
  1393.        + /Clear * /Set * /Q3 *  Q2 *  Q1 *  Q0
  1394.  
  1395.  
  1396. DESCRIPTION
  1397. ******************************************************
  1398.  
  1399.  
  1400.  
  1401.  
  1402.  
  1403.  
  1404. II.5 Fehlermeldungen
  1405. --------------------
  1406.  
  1407. In den folgenden Abschnitten werden alle möglichen Fehlermeldungen,
  1408. die "GALer" erzeugen kann aufgelistet und genau beschrieben.
  1409.  
  1410.  
  1411. II.5.1 Assembler
  1412. ----------------
  1413.  
  1414. "Zeile 1: GAL-Typ erwartet"
  1415.   In der 1. Zeile des Source-Files wird der GAL-Typ erwartet. Wenn in
  1416.   der ersten Zeile etwas anderes als GAL16V8, GAL20V8, GAL16V8A, GAL20V8A,
  1417.   GAL16V8B, GAL20V8B steht, erscheint diese Fehlermeldung.
  1418.  
  1419. "unerwartetes Ende der Eingabe-Datei"
  1420.   Diese Meldung erscheint dann, wenn im Source-File (=Eingabe-Datei)
  1421.   das Schlüsselwort "DESCRIPTION" fehlt.
  1422.  
  1423. "habe nach '/' Pinnamen erwartet"
  1424.   Es wurde ein Negations-Zeichen "/" gefunden, hinter dem aber nicht
  1425.   unmittelbar ein Pinname folgt.
  1426.  
  1427. "Pinname hat mehr als 8 Buchstaben und Ziffern"
  1428.    Pinnamen dürfen nicht aus mehr als 8 Zeichen bestehen. Wird diese maximale
  1429.    Länge der Pinnamen überschritten, erscheint diese Meldung.
  1430.  
  1431. "unerlaubtes Zeichen bei Pin-Deklaration"
  1432.    In den Pinnamen kommt ein Zeichen vor, das nicht erlaubt ist. Erlaubte
  1433.    Zeichen sind: a..z, A..Z, 0..9, /
  1434.  
  1435. "VCC/GND-Zuweisung nur an den entsprechenden Pins erlaubt"
  1436.    VCC und GND sind Schlüsselwörter, die nur zur Kennzeichnung  der
  1437.    entsprechenden Pins am GAL erlaubt sind. Wenn in der Pindeklaration
  1438.    ein VCC oder GND als Pinname auftritt und dieser Pin nicht der VCC-Pin
  1439.    bzw. GND-Pin des GALs ist, dann erscheint diese Meldung.
  1440.  
  1441. "für VCC-Pin Zuweisung VCC erwartet"
  1442.    Dem VCC-Pin des GALs wurde ein anderer Name als VCC zugeordnet.
  1443.    Eine häufige Ursache für diese Fehlermeldung ist, daß in der Auf-
  1444.    zählung der Pinnamen in der Pindeklaration ein Pin vergessen wurde.
  1445.  
  1446. "für GND-Pin Zuweisung GND erwartet"
  1447.    Dem GND-Pin des GALs wurde ein anderer Name als GND zugeordnet.
  1448.    Eine häufige Ursache für diese Fehlermeldung ist, daß in der Auf-
  1449.    zählung der Pinnamen in der Pindeklaration ein Pin vergessen wurde.
  1450.  
  1451. "gleicher Pinname kommt mehrfach vor"
  1452.    In der Pindeklaration kommt der selbe Pinname mehrfach vor.
  1453.  
  1454. "unerlaubte Verwendung von '/'"
  1455.    Es wurde ein Negationszeichen gefunden, das nicht VOR einem Pinnamen
  1456.    steht, sondern irgendwo in der Gegend herumlungert.
  1457.  
  1458. "unbekannter Pin-Name in den Boolean-Gleichungen"
  1459.    In den Gleichungen tritt ein Pinname auf, der nicht definiert wurde.
  1460.  
  1461. "NC (Not Connected) in Boolean-Gleichungen nicht erlaubt"
  1462.    NC ist ein Schlüsselwort, das nur zu Kennzeichnung von nicht-
  1463.    verwendeten Pins dient. Kommt NC in den Booleschen Gleichungen vor,
  1464.    erscheint diese Meldung.
  1465.  
  1466. "nach '.' wird ein 'T', 'E' oder 'R' erwartet"
  1467.    Diese Fehlermeldung tritt auf, wenn nach einem '.' ein anderes Zeichen
  1468.    als 'T', 'E' oder 'R' steht.
  1469.  
  1470. "'=' wurde erwartet"
  1471.    Diese Fehlermeldung erscheint, wenn zwei Pinnamen hintereinander stehen
  1472.    und nach dem zweiten Pinnamen kein '=' folgt. Die Ursache für eine solche
  1473.    Fehlermeldung ist häufig ein vergessenes '+' oder '*'.
  1474.  
  1475. "Pin kann nicht als Ausgang programmiert werden"
  1476.    Der Pin der vor dem '='-Zeichen steht, kann nicht als Ausgang definiert
  1477.    werden.
  1478.  
  1479. "gleicher Pin ist mehrfach als Ausgang definiert worden"
  1480.    Diese Fehlermeldung tritt bei folgender Konstellation auf:
  1481.      X = ...
  1482.      X = ...
  1483.  
  1484. "Tristate-Kontrolle: Tristate-Ausgang noch nicht definiert"
  1485.    Bevor ein 'name.E' erfolgen darf, muß der entsprechende Tristate-Ausgang
  1486.    definiert worden sein.
  1487.    Also:  name.T = ...
  1488.       name.E = ...
  1489.  
  1490. "Betriebsmodus 2: Pins 12,19 können nicht als Eingang verwendet werden"
  1491.    Bei einem GAL16V8 können die Pins 12 und 19 nicht als Eingang definiert
  1492.    werden, wenn sich das GAL im Betriebsmodus 2 (siehe Einführung) befindet.
  1493.    Diese Pins können auch nicht zurückgekoppelt werden.
  1494.    
  1495. "Betriebsmodus 2: Pins 15,22 können nicht als Eingang verwendet werden"
  1496.    Bei einem GAL20V8 können die Pins 15 und 22 nicht als Eingang definiert
  1497.    werden, wenn sich das GAL im Betriebsmodus 2 (siehe Einführung) befindet.
  1498.    Diese Pins können auch nicht zurückgekoppelt werden.
  1499.  
  1500. "Tristate-Kontrolle wurde mehrfach angegeben"
  1501.    Es wurde eine Tristate-Kontrolle für einen Ausgang mehrfach angegeben.
  1502.    Beispiel:   name.E = A * B
  1503.            name.E = C
  1504.  
  1505. "Tristate-Kontrolle wurde auf Registerausgang angewendet"
  1506.    Tristate-Kontrollen ("name.E") dürfen nur für Tristate-Ausgänge angegeben
  1507.    werden. Hier wurde eine Tristate-Kontrolle für einen Registerausgang
  1508.    angegeben.
  1509.  
  1510. "Tristate-Kontrolle ohne vorheriges '.T'"
  1511.    Es wurde eine Tristate-Kontrolle für einen kombinatorischen Ausgang
  1512.    angegeben.
  1513.    Beispiel:    name   = ...
  1514.         name.E = ...
  1515.  
  1516. "statt /VCC, /GND bitte GND, VCC verwenden"
  1517.    Diese Fehlermeldung erklärt sich von selbst.
  1518.    Oder doch nicht?  Also: Irgendwo im Source-File kommt ein /VCC oder
  1519.    /GND vor. Statt dieser komischen Konstruktion, geben Sie bitte ein
  1520.    GND bzw. VCC ein.
  1521.  
  1522. "Betriebsmodus 3: Pins 1,11 für 'Clock' und '/OE' reserviert"
  1523.    Wenn Registerausgänge verwendet werden, befindet sich das GAL im Modus 3.
  1524.    In diesem Modus sind beim GAL16V8 die Pins 1 und 11 reserviert und können
  1525.    nicht als Eingang verwedet werden.
  1526.  
  1527. "Betriebsmodus 3: Pins 1,13 für 'Clock' und '/OE' reserviert"
  1528.    Wenn Registerausgänge verwendet werden, befindet sich das GAL im Modus 3.
  1529.    In diesem Modus sind beim GAL20V8 die Pins 1 und 13 reserviert und können
  1530.    nicht als Eingang verwedet werden.
  1531.  
  1532. "VCC und GND nicht in Booleschen Ausdrücken erlaubt"
  1533.    Ausdrücke wie "X = A * VCC" sind nicht erlaubt.
  1534.  
  1535. "bei der Tristate-Kontrolle ist nur EIN Produktterm erlaubt"
  1536.    In einer Tristate-Kontrolle darf kein '+' vorkommen, da für die Tristate-
  1537.    Kontrolle im GAL nur ein Produktterm zur Verfügung steht.
  1538.    Beispiel:   name.E = A + B * C     ist NICHT erlaubt
  1539.  
  1540. "maximal 8 Produktterme erlaubt"
  1541.    Bei kombinatorischen Ausgängen oder Registerausgängen dürfen max. sieben
  1542.    ODER ('+') vorkommen. Dies entspricht acht Produkttermen.
  1543.    
  1544. "maximal 7 Produktterme erlaubt"
  1545.    Bei Tristate-Ausgängen dürfen max. sechs ODER ('+') vorkommen. Dies
  1546.    entspricht sieben Produkttermen. Das ist einer weniger als bei
  1547.    kombinatorischen bzw. bei Register-Ausgängen. Dieser eine Produktterm wird
  1548.    zur Tristate-Kontrolle benötigt.
  1549.  
  1550. "keine Booleschen Gleichungen vorhanden"
  1551.    Es wurde versucht, ein Source-File zu assemblieren, in dem keine
  1552.    Booleschen Gleichungen vorhanden sind.
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558. II.5.2 JEDEC-Datei
  1559. ------------------
  1560.  
  1561. "unerwartetes Dateiende"
  1562.    Am Ende eines JEDEC-Files wird entweder die File-Checksumme oder ein
  1563.    '*' erwartet. Wenn keines von beiden vorhanden ist, erscheint diese
  1564.    Fehlermeldung.
  1565.  
  1566. "unbekannte Anweisung gefunden"
  1567.    Es wurde eine unbekanntes Steuerzeichen gefunden. Die Ursache dafür ist
  1568.    meistens ein vergessenes '*'.
  1569.  
  1570. "falsches Zahlenformat nach Anweisung"
  1571.    Es konnte eine hex. oder dez.-Zahl nicht korrekt interpretiert werden.
  1572.  
  1573. "erwarte unmittelbar nach einer Anweisung eine Zahl"
  1574.    Nach einer Anweisung muß direkt eine Zahl folgen. Wenn nach der Anweisung
  1575.    z.B. ein Space steht, tritt diese Fehlermeldung auf.
  1576.  
  1577. "habe unmittelbar nach der Anweisung eine 0 oder 1 erwartet"
  1578.    Nach einer Anweisung muß direkt eine Zahl folgen. Diese Zahl muß in diesem
  1579.    Fall eine "0" oder "1" sein. Ist das nicht der Fall, erscheint diese
  1580.    Fehlermeldung.
  1581.  
  1582. "keine eindeutige GAL-Typ-Bestimmung möglich"
  1583.    Aus der JEDEC-Datei geht nicht eindeutig hervor, ob sie für ein GAL16V8
  1584.    oder für ein GAL20V8 bestimmt ist. Für die auszuführende Funktion ist dies
  1585.    aber nötig.
  1586.  
  1587. "Anweisung QF mehrfach vorhanden"
  1588.    Na ja, QF ist eben mehrfach vorhanden, und das ist nicht erlaubt.
  1589.  
  1590. "Anweisung QP mehrfach vorhanden"
  1591.    Na ja, QP ist eben mehrfach vorhanden, und das ist nicht erlaubt.
  1592.  
  1593. "habe abschließendes '*' erwartet"
  1594.    Am JEDEC-Datei-Ende fehlt ein '*'.
  1595.  
  1596. "nach 'C' keine weiteren 'L' mehr erlaubt"
  1597.    Nach der Fuse-Checksumme darf keine Sicherung mehr verändert werden,
  1598.    da ja sonst die Checksumme nicht mehr stimmt.
  1599.  
  1600. "Fuse-Checksumme stimmt nicht"
  1601.    Die Fuse-Checksumme stimmt nicht mehr. Die Ursache für diese Fehlermeldung
  1602.    kann nur sein, daß einige Fuses mit einem Texteditor nachträglich (nach
  1603.    der Assemblierung des Source-Files mit GALer) verändert wurden.
  1604.  
  1605. "<STX> Steuerzeichen (= CTRL-B, 0x02) mehrfach vorhanden"
  1606.    Das <STX> Steuerzeichen sollte nur einmal am Datei-Anfang stehen.
  1607.  
  1608. "<ETX> Steuerzeichen (= CTRL-C, 0x03) mehrfach vorhanden"
  1609.    Das <ETX> Steuerzeichen sollte nur einmal am Datei-Ende (aber vor
  1610.    der File-Checksumme) stehen.
  1611.  
  1612. "Reihenfolge der Steuerzeichen <STX> und <ETX> stimmt nicht"
  1613.    Die Reihenfolge der Steuerzeichen stimmt nicht.
  1614.  
  1615. "nach der File-Checksumme wird das Datei-Ende erwartet"
  1616.    Nach der File-Checksumme wurde noch ein Zeichen gefunden, das kein
  1617.    Space, TAB oder Carriage Return ist.
  1618.  
  1619. "Überlappung von Fuse-Adressen (L... zu klein)"
  1620.    Beispiel:  L0010 1011 *
  1621.           L0013 0111 *
  1622.    Adresse 13 wurde zweimal definiert.
  1623.  
  1624. "Fuse-Adressen übersprungen, aber kein Default-Wert (F0/1) angegeben"
  1625.    Es wurden nicht alle Sicherungen angegeben. Da GALer aber wissen muß
  1626.    auf welchen Wert er die fehlenden Sicherungen setzen soll, muß
  1627.    ein F0/1 Steurerzeichen vorhanden sein. Das fehlt aber leider, wenn
  1628.    Sie diese Fehlermeldung erhalten.
  1629.  
  1630. "habe '*' erwartet"
  1631.    Es wurde ein '*' erwartet aber keines gefunden. Ja wo ist es denn?
  1632.  
  1633. "Diskrepanz zwischen QF... und letzter Fuse-Adresse L..."
  1634.    QF gibt die Anzahl der vorhandenen Sicherungen an. Wenn diese Anzahl
  1635.    nicht mit dem letzten L-Kommando übereinstimmt, erscheint diese
  1636.    Fehlermeldung.
  1637.  
  1638. "keine Fuses (weder F0/1 noch L...) vorhanden"
  1639.    Die Datei ist praktisch sinnlos, da keine Angaben über den Zustand
  1640.    der Fuses (Sicherungen) gemacht wurden. Daher hat GALer keinen
  1641.    Bock, diese Datei weiter zu bearbeiten.
  1642.  
  1643. "nur QF2194 * (GAL16V8) und QF2706 * (GAL20V8) erlaubt"
  1644.     Es wurde ein QF... gefunden, das weder zu einem GAL16V8 noch zu einem
  1645.     GAL20V8 paßt. Diese Softwareversion untestützt aber nur diese beiden
  1646.     GAL-Typen.
  1647.  
  1648. "es sind zu viele Sicherungen im JEDEC-File (>2706)"
  1649.     Im JEDEC-File wurden zu viele Sicherungen angegeben.
  1650.  
  1651. "es sind mehrere Fuse-Checksummen vorhanden"
  1652.     Es wurden mehrere Fuse-Checksummen (C...) angegeben, erlaut ist aber
  1653.     nur eine.
  1654.  
  1655. "eingestellter GAL-Typ paßt nicht zum JEDEC-File"
  1656.    Die JEDEC-Datei ist für einen anderen GAL-Typ bestimmt als den ein-
  1657.    gestellten.
  1658.    Diese Meldung tritt z.B. dann auf, wenn Sie ein GAL16V8 programmieren
  1659.    wollen, aber ein GAL20V8 zur Programmierung eingestellt haben.
  1660.  
  1661.  
  1662.  
  1663. II.5.3 Reassembler
  1664. ------------------
  1665.  
  1666. "der Modus AC0 = SYN = 0 wird nicht unterstützt"
  1667.    Im JEDEC-File ist AC0 = 0 und SYN = 0. Dieser Modus wird von "GALer"
  1668.    nicht unterstützt und verursacht daher die obige Fehlermeldung.
  1669.  
  1670. "Pin xx: Pinname doppelt"
  1671.    Bei der Pinnamendeklaration ist der Pin mit der Nummer xx mehrfach
  1672.    vorhanden.
  1673.  
  1674. "Pin xx: illegales Zeichen"
  1675.    Der Pin mit der Nummer xx enthält ein nicht zugelassenes Zeichen.
  1676.    Zugelassene Zeichen sind alle Ziffern, Buchstaben und das '/' vor(!)
  1677.    dem Pinnamen. Illegale Zeichen sind z.B. SPACE,#,*,....
  1678.  
  1679. "Pin xx: kein Pinname vorhanden"
  1680.    Für den Pin mit der Nummer xx ist kein Pinname angegeben worden.
  1681.  
  1682. "Pin xx: VCC/GND am falschen Pin"
  1683.    VCC und GND sind nur an den entsprechenden Pins erlaubt. Wenn VCC und/oder
  1684.    GND an einem anderen Pin vorkommt, erscheint diese Fehlermeldung.
  1685.  
  1686. "Pin xx: illegales '/'"
  1687.    Diese Fehlermeldung erscheint, wenn mehrere '/' angegeben worden sind oder
  1688.    wenn das '/' nicht unmittelbar vor dem Pinnamen steht.
  1689.  
  1690. "Pin xx: GND erwartet"
  1691.    Am Pin 10 des GAL16V8 bzw. Pin 12 des GAL20V8 wird "GND" als Pinname
  1692.    erwartet. Zuwiderhandlung wird mit Amiga-Entzug und MS-DOS-Zwang für
  1693.    eine Dauer von drei Jahren bestraft.
  1694.  
  1695. "Pin xx: VCC erwartet"
  1696.    Am Pin 20 des GAL16V8 bzw. Pin 24 des GAL20V8 wird "VCC" als Pinname
  1697.    erwartet. Zuwiderhandlung wird mit Amiga-Entzug und Atari-Zwang für
  1698.    eine Dauer von sechs Jahren bestraft.
  1699.  
  1700.  
  1701.  
  1702.  
  1703.  
  1704. Kapitel III: Die Hardware
  1705. =========================
  1706.  
  1707. III.1 Programmierung von GALs
  1708. -----------------------------
  1709.  
  1710. Als erstes stellt sich natürlich die Frage wie ein GAL programmiert
  1711. werden kann, wenn doch bereits alle Pins belegt sind und keine Pins
  1712. für die Programmierung mehr frei sind. Legt man am Pin 2 eines GALs
  1713. jedoch 16.5 Volt (oder 12.0 Volt, je nach GAL-Typ) an, so ändert sich die
  1714. PinbelePinbelegung. Das GAL befindet sich dann im sogenannten Edit-Mode.
  1715.  
  1716. 12.0 Volt bzw. 16.50 Volt an Pin 2 =>
  1717.  
  1718.                   GAL16V8
  1719.  
  1720.                 ---- ----
  1721.                   VIL   1|       |20  +5V
  1722.             EDIT   2|       |19  P,/V
  1723.             RAG1   3|       |18  RAG0
  1724.             RAG2   4|       |17  VIL
  1725.             RAG3   5|       |16  VIL
  1726.             RAG4   6|       |15  VIL
  1727.             RAG5   7|       |14  VIL
  1728.             SCLK   8|       |13  VIL
  1729.             SDIN   9|       |12  SDOUT
  1730.              GND  10|       |11  /STR
  1731.                     ---------
  1732.  
  1733.  
  1734.                  GAL20V8
  1735.  
  1736.                 ---- ----
  1737.                      VIL   1|       |24  +5V
  1738.             EDIT   2|       |23  VIL
  1739.             RAG1   3|       |22  P,/V
  1740.             RAG2   4|       |21  RAG0
  1741.             RAG3   5|       |20  VIL
  1742.              VIL   6|       |19  VIL
  1743.              VIL   7|       |18  VIL
  1744.             RAG4   8|       |17  VIL
  1745.             RAG5   9|       |16  VIL
  1746.             SCLK  10|       |15  SDOUT
  1747.                 SDIN  11|       |14  VIL
  1748.              GND  12|       |13  /STR
  1749.                     ---------
  1750.  
  1751.  
  1752. Ob das GAL programmiert oder ausgelesen werden soll, hängt vom
  1753. Pegel von P,/V ab. Ein HIGH bedeutet programmieren, ein LOW lesen.
  1754. An den Pins RAG0-RAG5 wird die zu lesende/programmierende Adresse
  1755. angelegt.
  1756. Das Programmieren geschieht wie folgt: nach Anlegen der Adresse an
  1757. RAG0-RAG5 müssen die zu schreibenden Bits an SDIN (seriell) angelegt und
  1758. durch einen LOW-HIGH-Impuls an SCLK in ein internes Schieberegister getaktet
  1759. werden. Ein LOW-Impuls am /STR-Pin programmiert schließlich die adressierte
  1760. Zelle. Dies wiederholt man solange, bis das gesamte GAL programmiert ist.
  1761.  
  1762. Das Auslesen eines GALs geschieht ähnlich: Nach Anlegen der Adresse an
  1763. RAG0-RAG5 werden die Bits der entsprechenden Adresse durch einen LOW-Impuls
  1764. (5us) an /STR in das interne Schieberegister geholt. Durch LOW-HIGH-Impulse
  1765. an SCLK werden die einzelnen Bits aus dem Schieberegister zu SDOUT, einem
  1766. Open-Collector-Ausgang, getaktet.
  1767. Die Bit-Breite einer Adresse bestimmt die Anzahl der SCLK-Impulse, die
  1768. nötig sind, um die Adresse vollständig zu programmieren bzw. auszulesen.
  1769.  
  1770. Die Bezeichnung VIL bedeutet Input Voltage Low. Die mit VIL gekennzeich-
  1771. neten Pins müssen im Edit-Mode entweder direkt auf Masse oder auf Low-Pegel
  1772. liegen.
  1773.  
  1774. Bei GALs gibt es unterschiedliche Programmieralgorithmen. Über die
  1775. Funktion "GAL-Info" von GALer kann man die Algorithmusnummer des
  1776. eingesetzten GALs erfahren. Diese Algorithmusnummer ist für den Anwender
  1777. eigentlich unwichtig. GALer benötigt sie aber, um GALs richtig auszulesen
  1778. oder zu programmieren.
  1779.  
  1780.  
  1781.         |            LESEN         |         PROGRAMMIEREN
  1782. ------------+----------------------------+----------------------------
  1783. Algorithmus | Edit-Spannung | STR-Impuls | Edit-Spannung  | STR-Impuls
  1784.       0 |  12 ± 0,25 V  |   5 us     | 15,75 ± 0,25 V | 80 ± 5 ms
  1785.       1 |  12 ± 0,25 V  |     5 us     | 15,75 ± 0,25 V | 80 ± 5 ms
  1786.       2 |  12 ± 0,25 V  |     5 us     | 16,50 ± 0,25 V | 10 ± 1 ms
  1787.       3 |  12 ± 0,25 V  |    5 us     | 14,50 ± 0,25 V | 40 ± 5 ms
  1788.       4 |  12 ± 0,25 V  |     5 us     | 14,00 ± 0,25 V |100 ± 5 ms
  1789.  
  1790. Beim Löschen eines GALs muß die STR-Impulsbreite 100 ms betragen.
  1791.  
  1792.  
  1793.  
  1794. Die interne Organisation der GALs (Adressen der Zeilen) sieht wie folgt aus:
  1795.  
  1796.  
  1797. GAL16V8:
  1798. Adresse                         Breite
  1799.  
  1800.  0-31        Fuse-Matrix            jeweils 64 Bit
  1801.    32        Signatur            64 Bit
  1802. 33-59        reservierter Bereich        jeweils 64 Bit
  1803.    60        Architektur-Kontroll-Wort ACW    82 Bit
  1804.    61        Sicherheitszelle
  1805.    62        reserviert
  1806.    63        Bulk Erase
  1807.  
  1808.  
  1809. GAL20V8:
  1810. Adresse                         Breite
  1811.  
  1812.  0-39        Fuse-Matrix            jeweils 64 Bit
  1813.    40        Signatur            64 Bit
  1814. 41-59        reservierter Bereich        jeweils 64 Bit
  1815.    60        Architektur-Kontroll-Wort ACW    82 Bit
  1816.    61        Sicherheitszelle
  1817.    62        reserviert
  1818.    63        Bulk Erase
  1819.  
  1820.  
  1821. Das Architektur-Kontroll-Wort der Standard-GALs unterscheidet sich im
  1822. Aufbau von dem der A- bzw. B-Typen.
  1823. Es hat folgenden Aufbau (82 Bit breit):
  1824. GAL16V8:
  1825. Bits  0-31: 32 Bit Produkttermfreigabe 0-31
  1826. Bits 32-35: 4 Bit XOR(n) für OLMC-Pins 19-16
  1827. Bit     36: AC0-Bit
  1828. Bits 37-44: 8 Bit AC1(n) für OLMC-Pins 19-12
  1829. Bit     45: SYN-Bit
  1830. Bits 46-49: 4 Bit XOR(n) für OLMC-Pins 15-12
  1831. Bits 50-81: 32 Bit Produkttermfreigabe 32-63
  1832.  
  1833. GAL16V8A und GAL16V8B:
  1834. Bits  0-3: 4 Bit XOR(n) für OLMC-Pins 19-16
  1835. Bit     4: AC0
  1836. Bit   5-8: 4 Bit AC1(n) für OLMC-Pins 19-16
  1837. Bit  9-72: 64 Bit Produkttermfreigabe PT0 - PT63
  1838. Bit 73-76: 4 Bit AC1(n) für OLMC-Pins 15-12
  1839. Bit    77: SYN
  1840. Bit 78-81: 4 Bit XOR(n) für OLMC-Pins 15-12
  1841.  
  1842.  
  1843. GAL20V8:
  1844. Bits  0-31: 32 Bit Produkttermfreigabe 0-31
  1845. Bits 32-35: 4 Bit XOR(n) für OLMC-Pins 22-19
  1846. Bit     36: AC0-Bit
  1847. Bits 37-44: 8 Bit AC1(n) für OLMC-Pins 22-15
  1848. Bit     45: SYN-Bit
  1849. Bits 46-49: 4 Bit XOR(n) für OLMC-Pins 18-15
  1850. Bits 50-81: 32 Bit Produkttermfreigabe 32-63
  1851.  
  1852. GAL20V8A und GAL20V8B:
  1853. Bits  0-3: 4 Bit XOR(n) für OLMC-Pins 22-19
  1854. Bit     4: AC0
  1855. Bit   5-8: 4 Bit AC1(n) für OLMC-Pins 22-19
  1856. Bit  9-72: 64 Bit Produkttermfreigabe PT0 - PT63
  1857. Bit 73-76: 4 Bit AC1(n) für OLMC-Pins 18-15
  1858. Bit    77: SYN
  1859. Bit 78-81: 4 Bit XOR(n) für OLMC-Pins 18-15
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869. III.2 Schaltungsbeschreibung
  1870. ----------------------------
  1871. Im folgenden Abschnitt werde ich auf die Funktionsweise meines GAL-
  1872. Progammiergerätes eingehen. Dabei werde ich mich auf den Schaltplan
  1873. beziehen. Sollten Sie diesen noch nicht besitzen, so können Sie diesen
  1874. Abschnitt überspringen.
  1875.  
  1876. Die Hardware wird am Parallelport des Amiga angeschlossen. Die verwendeten
  1877. Datenleitungen sind dabei D0-D4 und die BUSY-Leitung.
  1878. IC1, IC3, IC4 und IC5 sind achtstufige "seriell ein/parallel aus" Schiebe-
  1879. register. Die Ausgänge der Schieberegister von IC3, IC4 und IC5 führen zu
  1880. der Textool-Fassung für das GAL. Dadurch ist es möglich, an jedem Pin
  1881. (außer VCC und GND) des GALs einen beliebigen Pegel (HIGH oder LOW)
  1882. anzulegen. Die möglichen Ausgänge des GALs (Pin 14 bis 22) können über IC7
  1883. und IC6a ausgelesen werden. IC7 ist ein achtstufiges "parallel ein/seriell
  1884. aus" Schieberegister.
  1885. IC1 ist sozusagen die Schaltzentrale. Dieses IC steuert IC3, 4 und 5 (OE).
  1886. Desweiteren werden über dieses IC die Spannungen für das GAL (VCC, Edit-
  1887. Spannungen) ein- bzw. ausgeschaltet.
  1888. Damit die ICs 1, 3, 4, 5, 7 individuell angesprochen werden können, ist für
  1889. jedes dieser ICs eine eigene Takt-Leitung (Clk) vorhanden. Diese Clock-
  1890. Leitungen werden über IC2, einem 1-aus-4-Decoder, aus den Datenleitungen D0
  1891. und D1 des Parallelports erzeugt. D3 bestimmt, ob gelesen (low) oder ge-
  1892. schrieben (high) werden soll. Dabei ist folgendes zu beachten: D3 darf nur
  1893. dann low werden, wenn durch D0 und D1 das IC, das angesprochen werden
  1894. soll bereits selektiert ist. Ansonsten bekommt ein IC einen ungewollten
  1895. Clock-Impuls und beim nächsten Strobe-Impuls (D2) liegen dann die falschen
  1896. (um eins nach links geschobenen) Daten an den Ausgängen an.
  1897. Der Strobe-Impuls für die Schieberegister wird aus D2 gewonnen. Wenn D2
  1898. auf high geht, werden die Daten in den Schieberegistern in die Ausgangs- 
  1899. register der ICs 1, 3, 4, 5 übernommen. Bei IC7 bewirkt ein D2 = high,
  1900. daß die Daten an den Pins P1-P8 in das interne Schieberegister über-
  1901. nommen werden und anschließend durch entsprechende Clock-Impulse über
  1902. BUSY ausgelesen werden können.
  1903.  
  1904. Über D4 gelangen die einzelnen Bits vom Amiga zum GAL-Brenner.
  1905. Da an den Pins 2 und 4 der Textool-Fassung eine Spannung von mindestens
  1906. 12.0 Volt anliegen kann, muß IC4 durch die Dioden D2 und D3 vor
  1907. Überspannung geschützt werden. Die Edit-Spannung wird von IC9, einem
  1908. frequenzgesteuerten Sperrwandler, erzeugt. Die verschiedenen Spannungen
  1909. können über die Spindeltrimmer R40 bis R44 exakt eingestellt werden.
  1910.  
  1911. Das Relais K1 legt die Versorgungsspannung des GALs auf Pin 24 des Textool-
  1912. Sockels. Relais K2 legt entweder den Ausgang Q7 von IC3 oder +5V Ver-
  1913. sorgungsspannung (je nach GAL-Typ) an Pin 22 des Textool-Sockels. Beide
  1914. Relais werden über IC1 angesteuert.
  1915. Die LED zeigt an, ob am Textool-Sockel eine Spannung anliegt oder nicht.
  1916. Wenn die LED an ist, darf weder ein GAL in die Fassung gesteckt, noch aus
  1917. der Fassung heraus genommen werden.
  1918.  
  1919.  
  1920. Zusammenfassung:
  1921.  
  1922. Parallel-Port:
  1923.  D0-D1:  Selektion der einzelnen ICs über Clk
  1924.  D2:     Strobe-Impuls für IC 1, 3, 4, 5
  1925.  D3:     schreiben = low, lesen = high
  1926.  D4:     Datenleitung für "Bits schreiben"
  1927.  BUSY:     Datenleitung für "Bits lesen"
  1928.  
  1929. IC1:    Q1    Programmierspannung aufbauen (noch nicht anlegen!)
  1930.     Q2    an Pin 2 Edit-Spannung für GAL20V8 anlegen
  1931.     Q3    an Pin 4 Eidt-Spannung für GAL16V8 anlegen
  1932.     Q5    Vcc anlegen
  1933.     Q6    OE für IC3, 4, 5
  1934.     Q7    steuert LED an : high = on, low = off
  1935.     Q8    selektiert über IC10 die Programmierspannung
  1936.  
  1937. IC3:    Q1-Q8    Pin 16-23 des Textool-Sockels über R3-R8
  1938.  
  1939. IC4:    Q1-Q8    Pin 1-8 des Textool-Sockels
  1940.  
  1941. IC5:    Q1-Q3    Pin 9-11 des Textool-Sockels
  1942.     Q4    Pin 13 des Textool-Sockels
  1943.     Q5,Q6    Pins 14, 15 des Textool-Sockels über R9, R10
  1944.     Q7,Q8    selektiert über IC10 die Programmierspannung
  1945.  
  1946. IC6:    a    Pin 13 des Textool-Sockels lesen
  1947.     b    IC7 auslesen
  1948.  
  1949. IC7:    P1-P8    Pin 14-21 des Textool-Sockels lesen
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955. III.3 Aufbau
  1956. ------------
  1957. Im Anhang finden Sie die Stückliste. Die Kosten für die Bauteile (ohne
  1958. Platine und Textool-Sockel) dürften um die 40 DM liegen. Wenn Sie sich
  1959. den Textool-Sockel sparen wollen (ca. 15 DM), können Sie auch eine normale
  1960. 24polige IC-Fassung verwenden. Da der Abstand der Pinreihen aber zu groß ist,
  1961. müssen Sie die Querverbindungen zwischen den Pinreihen aufsägen, sauber
  1962. abfeilen und anschließend die beiden Pinreihen im entsprechenden Abstand
  1963. einlöten. Als IC-Fassungen sollten Sie nur Präzisions-Fassungen verwenden.
  1964.  
  1965. Die 25polige Sub-D-Buchse (A1000) bzw. der Sub-D-Stecker (sonstige Amiga
  1966. Modelle) wird wie folgt beschaltet:
  1967.  
  1968.   D0   = Pin 2
  1969.   D1   = Pin 3
  1970.   D2   = Pin 4
  1971.   D3   = Pin 5
  1972.   D4   = Pin 6
  1973.   BUSY = Pin 11
  1974.  
  1975.   GND  =  Pin 14 für A1000
  1976.       Pin 17 für A500, A2000, A3000 und was weiß ich nicht noch alles
  1977.  
  1978. Die Spannungsversorgung (+5V) müssen Sie sich entweder vom Expansion-Port
  1979. des Amiga holen oder von einem externen Netzteil (das auf 5V stabilisiert
  1980. ist!). Der GAL-Brenner hat eine maximale Stromaufnahme von ca. 220 mA. Wer
  1981. einen Amiga 1000 besitzt, kann die 5V auch direkt vom Parallel-Port holen.
  1982. Dies hat den Vorteil, daß keine zusätzlichen Kabel herum liegen. Ich habe
  1983. mich für diese Variante entschlossen und bis jetzt hat sich mein A1000 nicht
  1984. in Rauch aufgelöst. DIES GEHT ABER NUR BEIM A1000. Bei allen anderen
  1985. Amiga-Modellen sind die 5V über einen 47 Ohm Widerstand nach außen geführt.
  1986. Wenn Sie dort den GAL-Brenner anschließen, dann sendet dieser Widerstand mit
  1987. Sicherheit immer größer werdende Rauchzeichen aus und es riecht sehr nach
  1988. Strom. Wenn die Garantie für Ihren Amiga bereits abgelaufen ist, können Sie
  1989. den 47 Ohm Widerstand herauslöten und durch eine 500 mA Schmelzsicherung
  1990. ersetzen. Dann können die 5V vom Parallel-Port als Spannungsversorgung
  1991. verwendet werden.
  1992.  
  1993.  
  1994. Das Hauptproblem beim Aufbau des GAL-Brenners ist wahrscheinlich die Platine.
  1995. Da die wenigsten in der Lage sein dürften eine doppelseitige, durch-
  1996. kontaktierte Platine herzustellen, ist die beste Lösung die, daß man
  1997. die Schaltung mit Hilfe der Fädeltechnik auf eine einseitige Euro-Loch-
  1998. rasterplatine aufbaut. Dazu werden die Bauteile einfach auf die Platine
  1999. gelötet und anschließend durch dünne Drähte miteinander verbunden.
  2000. Wenn das Ganze auch einen einigermaßen sauberen Eindruck machen soll,
  2001. kann man auch Fädelleisten (Verdrahtungskämme) verwenden. Entlang dieser
  2002. Leisten können die Drähte dann geführt werden, so daß nicht alles drunter
  2003. und drüber geht. Wer die Fädeltechnik noch nicht kennt, der kann sie sich
  2004. ja einmal im Fachgeschäft erklären lassen.
  2005.  
  2006. Wenn Sie die Schaltung aufgebaut und an den Amiga angeschlossen haben
  2007. und dieser NICHT explodiert ist, können Sie das Testprogramm "GALerTest"
  2008. starten. Das Programm legt verschiedene Pegel an die Pins der Textool-Fassung,
  2009. die Sie mit einem Meßgerät überprüfen können. Die Programmierspannungen
  2010. können dann mit R40-R44 eingestellt werden. Sollte die Programmierspannung
  2011. nicht stabil anliegen, dann müssen Sie C1 um ein paar pF erhöhen.
  2012.  
  2013.  
  2014. NICHT VERGESSEN: Programmierspannungen einstellen (mit den Spindeltrimmern),
  2015.          sonst funktioniert der GAL-Brenner NICHT!!!!
  2016.          ("GALerTest" starten und bis zu den entsprechenden
  2017.          Testpunkten durchklicken)
  2018.  
  2019. Falls sich Ihr GAL-Brenner genau so verhält wie es das Testprogramm ver-
  2020. langt, können Sie probeweise ein GAL brennen und mit dem GAL-Prüfer über-
  2021. prüfen. Wenn es funktioniert, dann dürfte in der Hardware kein Fehler
  2022. sein. GALs vom Typ GAL16V8 müssen so in die Textool-Fassung gesteckt werden,
  2023. daß Pin 1 des GALs mit Pin 3 der Fassung übereinstimmt. Bei GALs vom Typ
  2024. GAL20V8 muß Pin 1 des GALs mit Pin 1 der Fassung übereinstimmen.
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030. **************************************************************************
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036. Anhang
  2037. ======
  2038.  
  2039. Schlüsselwörter des Source-Files:
  2040. ---------------------------------
  2041.  
  2042. GAL16V8,  GAL20V8,    bestimmt den GAL-Typ - ob dabei ein Standard-, ein
  2043. GAL16V8A, GAL20V8A    A- oder ein B-Typ angegeben wird ist hier
  2044. GAL16V8B, GAL20V8B    bedeutungslos
  2045.  
  2046. NC            nichtverwendeter Pin
  2047. GND            Masse    (=LOW)
  2048. VCC            +5V    (=HIGH)
  2049.  
  2050. .T            Ausgangspin ist Tristate-Ausgang
  2051. .E            Tristate-Freigabe durch Produktterm
  2052. .R            Ausgangspin ist Register-Ausgang
  2053.  
  2054. =            Ausgangspin wird eine Gleichung zugewiesen
  2055. +            ODER - Verknüpfung
  2056. *            UND  - Verknüpfung
  2057. /            NICHT
  2058.  
  2059. DESCRIPTION        kennzeichnet das Ende der Booleschen Gleichungen
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065. Stückliste:
  2066. -----------
  2067.  
  2068.     ICs:
  2069.     ----
  2070.      IC1, IC3, IC4, IC5   :   4 x   4094
  2071.      IC2              :   1 x   4555
  2072.      IC6              :   1 x   4503
  2073.      IC7              :   1 x   4021
  2074.      IC8              :   1 x   74LS06
  2075.      IC9              :   1 x   TL 497
  2076.      IC10              :   1 x   14LS145
  2077.  
  2078.     Dioden:
  2079.     -------
  2080.      D1-D4              :   4 x   1N4148
  2081.      LED              :   1 x   rot, 3 mm
  2082.  
  2083.     Transistoren:
  2084.     -------------
  2085.      T2, T4, T5          :   3 x   BC237B
  2086.      T1, T3              :   2 x   BC327
  2087.  
  2088.  
  2089.     Widerstände (1/4 Watt):
  2090.     -----------------------
  2091.      R1, R2, R35-39       :   7 x   1   KOhm
  2092.      R3-13, R19-26          :  19 x   10  KOhm
  2093.      R28-32              :   5 x   1,8 KOhm
  2094.      R14              :   1 x   1   Ohm
  2095.      R15              :   1 x   47  KOhm
  2096.      R34              :   1 x   220 Ohm
  2097.      R18              :   1 x   4,7 Ohm
  2098.      R27              :   1 x   47  Ohm
  2099.      R33              :   1 x   22  KOhm
  2100.      R40-44              :   5 x   1   KOhm Spindeltrimmer
  2101.      (R16 bis R17 gibt es nicht)
  2102.  
  2103.     Relais:
  2104.     -------
  2105.      K1, K2              :   2 x   Siemens V23101A3A101 o. ä.
  2106.                         (1 x Wechselkontakt)
  2107.  
  2108.     Spule:
  2109.     ------
  2110.      L1              :   1 x   100 uH,    Miniatur-Festinduktivität
  2111.  
  2112.  
  2113.     Kondensatoren:
  2114.     --------------
  2115.      C1              :   1 x   100 pF
  2116.      C2              :   1 x   4,7 uF, Tantal
  2117.      C3              :   1 x   100 nF
  2118.      C4              :   1 x   220 uF, 25V
  2119.  
  2120.  
  2121.     Sonstiges:
  2122.     ----------
  2123.      IC-Fassungen
  2124.        8 x 16polig
  2125.        2 x 14polig
  2126.        1 x Textool-Fassung 24polig, schmal!
  2127.      25polige  Sub-D-Buchse  (für Amiga 1000)
  2128.      bzw. 25poligen Sub-D-Stecker (für alle anderen Amiga-Typen)
  2129.  
  2130. Legende: u = mikro
  2131.  
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137. Literaturhinweise:
  2138. ------------------
  2139.  
  2140. 1) GALs - Programmierbare Logikbausteine in Theorie und Praxis
  2141.    Bitterle
  2142.    Franzis-Verlag
  2143.  
  2144. 2) Das GAL Buch - Grundlagen, Entwurf, Selbstbau-Brenner
  2145.    elektor
  2146.  
  2147. 2) Programmable Logic Manual - GAL Products
  2148.    SGS-Thomson
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154. Tja, das war's dann wohl.
  2155.  
  2156. An dieser Stelle möchte ich mich bei Ihnen herzlich bedanken, da Sie es
  2157. geschaft haben, diese Anleitung tatsächlich bis zum Ende durchzulesen.
  2158. Falls Sie die Anleitung von hinten her durchlesen, möchte ich mich
  2159. trotzdem bedanken und Ihnen schon Mal im voraus gratulieren, daß Sie
  2160. sie bis zum Anfang (?!) durchlesen.
  2161.  
  2162.  
  2163. Vielen Dank und Grüße an alle.
  2164.  
  2165. Tschau, Tschüß,.... bis zum nächsten Update oder bis zum nächsten Projekt,
  2166. Euer
  2167.  
  2168.    Christian Habermann
  2169.  
  2170.  
  2171.  
  2172.