ein Wiederbelebungsversuch für die PLD-Klassiker GAL 16V8 und 20V8



Ähnliche Dokumente
Einführung in. Logische Schaltungen

9 Multiplexer und Code-Umsetzer

N Bit binäre Zahlen (signed)

Versuch 3: Sequenzielle Logik

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

10. Elektrische Logiksysteme mit

1 Anmerkungen zur Entwicklung von GALs mit LOG/iC

Technische Informatik Basispraktikum Sommersemester 2001

Oliver Liebold. NAND (negierte Undverknüpfung) L L H L H H H L H H H L

1. Speicherbausteine JK-RS-Master-Slave-Flip-Flop

Elektrische Logigsystem mit Rückführung

Grundtypen Flip-Flops

Eine Logikschaltung zur Addition zweier Zahlen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Grundtypen Flip-Flops

Grundlagen der Informationverarbeitung

13 Programmierbare Speicher- und Logikbausteine

Übung -- d002_ampelsteuerung

Binärdarstellung von Fliesskommazahlen

Schaltbild E Tec Module Schaltbeispiel (Prüfschaltung)

Teil 1: Digitale Logik

Grundlagen der Technischen Informatik. Sequenzielle Netzwerke. Institut für Kommunikationsnetze und Rechnersysteme. Paul J. Kühn, Matthias Meyer

Grundfunktionen und Bedienung

A.u.S. Spielgeräte GmbH A-1210 Wien Scheydgasse 48 Tel.+43-(0) Fax. +43-(0)

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

1 Mathematische Grundlagen

EasyWk DAS Schwimmwettkampfprogramm

Professionelle Seminare im Bereich MS-Office

Tietze, Schenk: Halbleiterschaltungstechnik (Kap. 10) Keller / Paul: Hardwaredesign (Kap. 5) L. Borucki: Digitaltechnik (Kap.

Carolo Knowledge Base

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Lineare Gleichungssysteme

Hinweise zum Ausfüllen der Zeiterfassung

GEVITAS Farben-Reaktionstest

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Microsoft Update Windows Update

Lizenz-Server überwachen

a) Wie viele ROM-Bausteine benötigen Sie für den Aufbau des 64x16 ROMs? c) Wie viele Bytes Daten können im 64x16 ROM insgesamt gespeichert werden?

Praktikum Digitaltechnik

- Strukturentwurf elementarer Rechenwerke - Grund-Flipflop (RS-Flipflop) - Register, Schieberegister, Zähler

Microsoft Access 2013 Navigationsformular (Musterlösung)

Baubericht für den AX81-GKR Einleitung

Waggonbeleuchtung. Stützkondensatoren

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Professionelle Seminare im Bereich MS-Office

Quanton Manual (de) Datum: URL: )

Arbeiten mit Standorten und Freimeldungen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

, WS2012 Übungsgruppen: Mo.,

AZK 1- Freistil. Der Dialog "Arbeitszeitkonten" Grundsätzliches zum Dialog "Arbeitszeitkonten"

TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE!

Handbuch ECDL 2003 Basic Modul 2: Computermanagement und Dateiverwaltung Dateien löschen und wiederherstellen

infach Geld FBV Ihr Weg zum finanzellen Erfolg Florian Mock

Kommunikations-Management

Technische Dokumentation: wenn Englisch zur Herausforderung wird

Protokoll zum Praktikum des Moduls Technische Informatik an der JLU Gießen

DFÜ-Netzwerk öffnen Neue Verbindung herstellen Rufnummer einstellen bundesweit gültige Zugangsnummer Benutzererkennung und Passwort

Startmenü So einfach richten Sie surfen manuell auf Ihrem PC oder Notebook ein, wenn Sie Windows XP verwenden.

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt

Mediumwechsel - VR-NetWorld Software

Kostenstellen verwalten. Tipps & Tricks

Erstellen von x-y-diagrammen in OpenOffice.calc

KLAUSUR DIGITALTECHNIK SS 00

Mediumwechsel - VR-NetWorld Software

Arbeitsbereich Technische Aspekte Multimodaler Systeme. Praktikum der Technischen Informatik T1 2. Flipflops. Name:...

So richten Sie Ihr Postfach im Mail-Programm Apple Mail ein:

Excel 2010 Kommentare einfügen

Turtle Charts mit der ViFlow Turtle Schablone (VTS) erstellen

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

Sensor board EB

Erfolgreiche Webseiten: Zur Notwendigkeit die eigene(n) Zielgruppe(n) zu kennen und zu verstehen!

Microsoft Excel 2010 Mehrfachoperation

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

HARDWARE-PRAKTIKUM. Versuch T-1. Kontaktlogik. Fachbereich Informatik. Universität Kaiserslautern

Aufbau und Bestückung der UHU-Servocontrollerplatine

Übungen zu Architektur Eingebetteter Systeme. Teil 1: Grundlagen. Blatt 5 1.1: VHDL 28./

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Einfache Computersteuerung für Modellbahnen

FTP-Leitfaden RZ. Benutzerleitfaden

Entladen und Aufladen eines Kondensators über einen ohmschen Widerstand

Artikel Schnittstelle über CSV

Labor Grundlagen der Elektrotechnik

Mediator 9 - Lernprogramm

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Dateien löschen und wiederherstellen

Folgeanleitung für Fachlehrer

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Tutorial: Wie kann ich Dokumente verwalten?

Hilfedatei der Oden$-Börse Stand Juni 2014

Lavid-F.I.S. Ablaufbeschreibung für. Arbeitszeiterfassung. Lavid-F.I.S.

Netzwerkeinstellungen unter Mac OS X

Jede Zahl muss dabei einzeln umgerechnet werden. Beginnen wir also ganz am Anfang mit der Zahl,192.

Um zusammenfassende Berichte zu erstellen, gehen Sie folgendermaßen vor:

1. Einführung. 2. Die Abschlagsdefinition

Bedienungsanleitung für das Tektronix Oszilloskop TDS 2002B

Transkript:

Portrait: Gerd Evers OStR an der BFS für Assistenten in Bremen Studium: Uni Hamburg: Physik, Elektrotechnik. Lehrtätigkeit seit: Fast drei Jahrzehnte an der FOS ( SZU ) Bremen Lehrtätigkeit bei: Physikalisch technische Assistenten Technische Assistenten für Informatik FOS Naturwissenschaft ( Physik, Informatik ) Theorie: Physik, Elektrotechnik / Elektronik, Technisches Englisch Labor: Elektrotechnik, Physik, Angewandte Mikrocomputertechnik Projekt: GAL-Evaluationsboard [ GDU32 ] Der GAL-ante Weg zur programmierbaren Logik... ein Wiederbelebungsversuch für die PLD-Klassiker GAL 16V8 und 20V8 Gerd Evers Es mag es schon sein, daß die programmierbaren Logikbausteine, allem voran die einfachen unter Ihnen... die GALs... heute wirklich nichts mehr darstellen, was die Taktfrequenz eines Profis merklich höher schlagen lassen. Es ist jedoch zu hoffen, daß die GAL-Klassiker 16V8 und 20V8 aus diesem Grunde noch nicht vollständig in Vergessenheit geraten sind, denn man würde diesen logischen Multitalenten sicherlich unrecht tun und das hätten sie nun wirklich nicht verdient. Ganz gewiß repräsentieren genannte GALs nicht den letzten Stand der Technik, aber sie bilden das Bindeglied zwischen den ersten PLDs, den PALs und der Spitze der heutigen Logiktechnologie, den hochintegrierten, komplexen isplsi PLDs. Nebenbei sollte man sich stets vergegenwärtigen, daß es nicht nur Profis gibt, sondern eine Vielzahl Interessierter, die nicht schon alles wissen.. können.. müssen, aber den Drang und das Recht haben, Neues zu erfahren. --------------------------------------------------------------------------------------------------------------- ----- Das hier vorgestellte Projekt ist wieder aus dem Tätigkeitsfeld des Autors heraus entstanden. Wer sich durch die Geheimnisse der TTL-Technik hindurchgequält und das PAL-Konzept mit seinen nicht zu leugnenden Mängeln kennengelernt hat ( u.a. die für den Einsteiger zu große Typenvielfalt, die nur einmalige Programmierbarkeit ) konnte plötzlich mit Zuversicht in die logische Zukunft blicken, denn... es begab sich die Zeit... in der das Gal entwickelt wurde, der Wegbereiter für die isplsi-plds. Wer sich mit den GALs vertraut gemacht hat, für den ist der Weg frei zu den PICs, den Mikrocontrollern, den Mikroprozessoren usw. Zusammenfassend läßt sich sagen, Um die isplsi-plds, in denen prinzipiell GALs implementiert sind, verstehen zu können, zahlt es sich mit Sicherheit aus, sich nicht nur theoretisch mit den GALs anzufreunden, ( mal die eine oder andere Simulation laufen zu lassen ), sondern deren vielfältigen

Einsatzmöglichkeiten konkret im Hardwaretest zu erleben. Das Ableben einer Hardwarekomponente als Folge eines fatalen Softwarefehler hinterläßt beim Anwender einen erheblich tieferen Eindruck, als es ein Simulationsprogramm jemals vermag. Genau diese Erfahrungen waren der Anstoß dafür, im Rahmen der Aus- und Weiterbildung nach einem geeigneten Einsteiger-Kit für die Einarbeitung in die Geheimnisse der GALs zu suchen. Konkret wurde eine Hardware gesucht, - bei der sich alles, was zur Bewältigung der anstehenden Problematik relevant ist, On Board befindet - bei der auf alle Input- und Outputpins der genannter Standard GALs zugegriffen werden kann. - bei der eine externe stabilisierte Spannungsversorgung entfällt - bei der ein externer Taktgenerator entfällt - bei der alle Ausgangszustände durch LEDs angezeigt werden - bei der eine Sieben-Segmentanzeige implementiert ist - bei der sich mehrere Einzelkomponenten zu einer komplexen Anordnung erweitern lassen - bei der es möglich ist, analoge Signalquellen in digitale Signalquellen zu konvertieren Die Vorgabe war: Das etwas andere GAL-Entwicklungsboard - nicht nur für den Einsteiger Das Ergebnis ist: Die GAL Development Unit [ GDU32 ] [ 3. Entwurf mit 2 Nachbesserungen ] - so entstehen Namen Auf die möglicherweise erstaunte Frage des Lesers, warum erst jetzt nach einem entsprechenden Board gesucht wurde, ist prinzipiell leicht zu beantworten. Leider ist es eine Tatsache, daß die mit der mit der praktischen Vermittlung technischer Sachverhalte verbundene Hard- und Softwarebeschaffung vielerorts dem aktuellen Stand der Technik weit hinterherhinkt... aus welchen Gründen auch immer... Die Vermutung, es müsse ein reichhaltiges Angebot an GAL- Entwicklungsboards geben, die den gestellten Anforderungen entsprechen, wurde leider enttäuscht. Das Suchergebnis bewegte sich nahe der Null-Linie. Für die ehrwürdige TTL-Technik gibt es recht gute Experimentiersets ( ITT-Trainer und deren Nachfolger ). Auf den praktischen Einsatz von PALs im Rahmen der Aus- und Weiterbildung sollte man wegen der teuren Programmiergeräte für den unterrichtlichen Einsatz und der viel zu hohen Materialkosten wegen der nur einmaligen Programmiermöglichkeit ohnehin verzichten. Für die Lattice ispplds-bausteine ( isplsixxx, ispgalxxx, ispgdsxxx ) gibt es recht gute und preislich akzeptable Starterkits wie z.b. das PLD-Einsteigerset der Firma ELV oder den ( der? das? ) Volks-PLD von K. Engelhardt / ELRAD 94 Heft 10ff ]. Für die besagten GAL-Oldies 16V8 und 20V8, die sich gerade für den Einstieg in die Welt der PLDs wegen der noch vorhandenen Überschaubarkeit hervorragend eignen, wurde die Suche nach einem Board, welches obigen Anforderungen entspricht, bald aufgegeben und die

Entscheidung getroffen, selber ein entsprechendes Board zu entwickeln. Das Entwicklungsresultat, die GDU32 soll hier vorgestellte werden. In mehreren Beiträgen soll der Versuch unternommen werden, den PLD-Interessierten soweit mit den GALs 16V8 und 20V8 vertraut zu machen, daß für anstehende Problemstellungen eigene Lösungen gefunden werden können. In diesem ersten Beitrag werden die Hardware sowie die GAL-Entwicklungs- und Testmöglichkeiten der GDU vorgestellt. In weiteren Beiträgen werden Möglichkeiten vorgestellt, mit denen sich elementare Gatter und Flip Flops mit einem GAL realisieren lassen. Aufbauend hierauf wird der Leser an komplexere Anwendungen mit GALs herangeführt. Es werden unterschiedliche Möglichkeiten zur Ansteuerung einer Siebensegmentanzeige, die Realisierung eines 8 Bit Binärzählers und ein 8 Bit Schieberegister mit Paralleleingabe vorgestellt. Da es problemlos ist, mehrere GDU-Boards parallel zu schalten, wird als Höhepunkt ein mehrstufiger BCD Zähler mit 7 Segment Dekoder und der Aufbau für eine parallele und serielle Datenübertragung ( Grundprinzip des I2 C-Bus ) gezeigt. Um die Entwicklung der Logikgleichungen nachvollziehen zu können, ist in diesem Zusammenhang an geeigneter Stelle ein anwendungsbezogener Mini Logikkurs geplant. Hier sind die im Beitrag verwendeten Begriffe wie Wahrheitstabelle, disjunktive Normalform u.s.w. für den Neueinsteiger zu klären bzw. für den Nicht-Neueinsteiger zumindest in Erinnerung zu rufen. In Verbindung mit dem Aufbau galgerechter Logikgleichungen wird es unumgänglich sein, sich mit dem de Morganschen Gesetz und dem Umgang mit dem KV-Diagramm vertraut zu machen. Die wesentlichen Features der GDU auf einen Blick: - konzipiert für die GALs 16V8 und 20V8 - leichtes Wechseln der Bausteine durch 24 poligen Textool Adapter - konfigurierbar durch Jumper / Schalter - Sämtliche Eingänge für die Ansteuerung durch externe Systeme herausgeführt - Sämtliche Eingänge durch DIP-Schalter beschaltbar - 4 Eingänge zusätzlich mit Tastern belegt - Sämtliche Ausgänge zur Ansteuerung einer 8stelligen LED-Reihe, eines 16-poligen Pfostensteckers ( gepuffert ) und einer Sieben-Segment-Anzeige ( separat gepuffert ) herausgeführt - Taktgenerator mit einstellbarem Taktmodus ON Board. Betriebsmodus: Manuell und Automatik [ 4 Taktfrequenzen ] Taktanzeige durch LED - Gepuffertes, aufbereitetes Taktsignal über Schmitt-Trigger herausgeführt - Bereitstellung von 4 Gattern zur Pufferung oder Signalanpassung mittels Schmitt- Trigger - Spannungsversorgung in Verbindung mit einem AC-Adapter [ > 7.5 V ] ON BOARD [ 5V Regler, verpolungsgeschützt, LED-Anzeige, PWR-On Schalter ]

Schaltungsbeschreibung im einzelnen: Stromlaufplan der GDU32: Problemlosen Wechseln der GALs durch Textoolfassung: Da sich die GALs nicht auf der GDU programmieren lassen ( Gruppe der nispssi-plds ) ist vor allem beim Einsatz in der Ausbildung mit einem häufigen Wechseln der Bausteine zwischen dem Testboard und dem Programmiergerät zu rechnen. Um die hieraus resultierende extreme Belastung sowohl für die Bausteine als auch für eine Standard IC-Fassung zu reduzieren, wurde das Board trotz der hohen Kosten mit einer 24poligen Textoolfassung ausgestattet. Eine gemeinsame Fassung für beide GAL-Typen: Obwohl das Pinout des GALs 16V8 und 20V8 für die Boardkonzeption ausgesprochen ungünstig ist, erschien es trotzdem sinnvoll, sich schon aus Kostengründen auf eine gemeinsame Textoolfassung zu beschränken und wegen der versetzt angeordneten Ausgänge einen "Pinkompromiß" bei einem der GAL-Bausteine einzugehen. Auf diese Besonderheit wird an gegebener Stelle näher eingegangen. Korrektes Einsetzen der GALs: Die korrekte Positionierung der GALs ist dem Bestückungsplan oder dem Bestückungsdruck des Boards zu entnehmen.

Bestückungsplan der GDU32: Die Eingänge: Alle Eingänge der GALs werden durch Pull-Up-Arrays im nichtbeschalteten Zustand ( DIP- Schalter offen / TA1 - TA4 nicht gedrückt ) auf den logischen Pegel 1 ( HIGH ) gezogen. Die 10 Eingänge des GALs 16V8 bzw. 14 Eingänge des GALs 20V8 werden an eine zweireihige Pfostensteckerleiste geführt und stehen somit für die Ansteuerung durch externe Steuereinheiten zur Verfügung. Wie der Schaltplan zeigt, nehmen die mit den Pins 1, 3 und 14 verbundenen Eingangsleitungen eine Sonderstellung ein. Während die übrigen Eingangsleitungen direkt zu den den DIP- Schaltern DIP8A und DIP8B geführt werden, laufen genannte Leitungen über die Umschalter SU1 und SU2 bzw. über den Jumper JMP2 zu den DIP-Schaltern S1, S3 und S13 bzw. zu den entsprechenden Eingangspins des Pfostensteckers. Bei der im Schaltbild dargestellten Schalter- und Jumpereinstellung kann auf alle zur Verfügung stehenden Eingänge des GAL20V8 zugegriffen werden. Beim Einsetzen eines GAL16V8 sind die Eingänge S1 und S2 und damit der Umschalter SU1 ohne Bedeutung. Der Jumper JMP2 hingegen muß umgesteckt werden, da sich an der Pinposition 14 in diesem Falle der Ausgang Q8 des GAL16V8 befindet ( Vgl. Titel: Die Ausgänge ). Die beschriebene Pinbelegung bezieht sich auf den Einsatz der Bausteine im Simple und Complex Mode ohne Registeroption. Bei dem Einsatz der Bausteine im Complex Register Mode bekommen der Pin 1, 3 und 13 eine besondere Funktion zugeteilt. Pin 1 und 3 werden zu Clock Eingängen ( CLK ) und über den

Eingangspin 13 wird die Output Enable Funktion gesteuert. Die Schalterposition von SU1 ( 20V8 ) bzw. SU2 ( 16V8 ) sind entsprechend zu ändern, um das mit Hilfe des Schmitt- Triggers 74LS14 aufbereitete Taktsignal auf den entsprechenden Clockeingang aufzuschalten. Um die Ausgangsbuffer der Bausteine zu aktivieren, ist der DIP-Schalter S12 auf ON (LOW) zu schalten. Parallel zu den DIP-Schaltern S4 - S7 bzw. den Eingängen IN4 - IN7 stehen Taster zur Verfügung, die das Austesten zahlreicher Anwendungen erleichtern ( Testen der Funktion elementarer Gatter, Flip-Flops, Zähler u.a.m. ) Um die Taster sowohl beim 16V8 als auch beim 20V8 nutzen zu können, sind diese so gelegt, daß der Zugriff auf die "Nur-Eingänge " IN2 - IN5 des 16V8 bzw. IN4 - IN7 des 20V8 gewährleistet ist. Anmerkung zu den GAL Betriebsmodi: Die oben angesprochenen Betriebsmodi der GALs ( Simple, Complex, Register ) werden in einem der folgenden Beiträge soweit erläutert, wie es für das Verständnis der dort vorgestellten Anwendungsbeispiele erforderlich erscheint. Die Ausgänge: Wie bereits an anderer Stelle erwähnt, ist die versetzte Pinanordnung der GAL Ausgänge für die Konzeption eines Entwicklungsboards mit einer gemeinsamen IC-Fassung ein Handicap. Am günstigsten wäre eine Lösung, bei der sich alle 8 Ausgänge des 20V8 mit einem entsprechenden Umschalter um eine Position nach unten verschieben ließen, um auf dieselben Anzeigeelemente zugreifen zu können. Von einer derartigen Lösung wurde abgesehen und stattdessen die hier vorgestellte Kompromislösung realisiert. Der Kompromis besteht darin, daß bei dem GAL16V8 der Ausgang Q8 über den entsprechend gesteckten Jumper JMP1 auf den Pin 1 der beiden Buffer1 und 2 und damit auf die LED1 und das Element A der 7 Segmentanzeige gelegt wird. Die Erfahrung hat in der Zwischenzeit gezeigt, daß diese " Handicap-Lösung " für die Ausbildung methodisch ein recht wertvoller Kompromis ist. Bei der Anpassung einer vorhandenen 20V8 Applikation an ein GAL16V8 oder umgekehrt bedarf es lediglich einer simplen Softwareanpassung, um die ursprüngliche Wertigkeit vordefinierter Ausgänge der veränderten Hardwareumgebung anzupassen. Dieses ist beispielsweise bei der Ansteuerung einer 7 Segmentanzeige, bei der Realisierung eines Zählers usw. von Bedeutung, da die ursprüngliche geforderte Bitmustergenerierung ansonsten kräftig durcheinander gerät und die 7 Segmentanzeige recht erstaunliche Symbole generiert. Gerade hier zeigt sich in sehr anschaulicher Weise die Stärke der programmierbaren Logikbausteine ( PLD ) schlechthin. Die Ausgangssignale der GALs werden durch zwei parallel geschaltete 8fach Darlington Arrays ( ULN2803 ) gebuffert. Wegen der offenen Kollektortechnik der ULNs sind die Ausgänge mit den Pull-Up-Arrays PU3 bzw. PU4 zu versehen. Durch die Bufferung wird den GALs eine echte Überlebenschance eingeräumt, wenn sie dem Härtetest der ( lernenden ) Anwender ausgesetzt sind. Das Pull-Down-Array PD1 sorgt dafür, daß die Pins einer leeren IC-Fassung oder sich im TRI- State befindliche GAL-Ausgänge auf den logischen Pegel 0 gezogen werden. Wegen der Invertierung der Signale durch die ULNs liegen die Bufferausgänge und somit die

für externe Anwendungen zur Verfügung stehenden Ausgänge Q1 bis Q8 ( Pfostenstecker OUTPUTS ) dann auf logisch 1. Die Anzeigeelemente: Um den aktuelle Stand des Entwicklungsergebnisses, d.h. die logischen Zustände aller Ausgänge optisch kontrollieren zu können, sind die Ausgänge mit LEDs bestückt. Hierdurch lassen sich alle Applikationen anschaulich überprüfen, in denen einzelne Bits, Bitmuster oder Bitmusterfolgen manipuliert werden. Die auf dem Board zur Verfügung gestellte Siebensegmantanzeige nimmt dem Softwareentwickler die Mühe ab, mit nur zusätzlichem Hardwareaufwand eine Logik realisieren und testen zu können, bei denen eine dezimale Anzeige des Logikergebnisses gefordert ist. Die Erfahrung zeigt, daß die angewandte Elektrotechnik, ja häufig schon der Gedanke an einen heißen Lötkolben für einen eingefleischten Softwareentwickler ein Greuel ist und es oftmals erheblicher Schubkräfte bedarf, den Schritt von der soften Simulation bis zur hardware(n) Realität zu wagen. Sowohl aus methodischen als auch aus pragmatische Gründen wurde eine Siebensegmentanzeige mit gemeinsamer Katode gewählt. Zum einen wird die ohnehin recht geringe Stromaufnahme des Boards hierdurch noch weiter reduziert, da einer leuchtenden LED immer ein nichtleuchtendes Element der Siebensegmentanzeige zugeordnet ist. Zum anderen wird der Anwender aufgefordert bzw. gezwungen, die vielfältigen Konfigurationsmöglichkeiten der GALs für seine spezielle Anwendung zu nutzen. ( Pegelanpassung mit Hilfe der vielfältigen Invertierungsmöglichkeiten der Ein- und Ausgangssignale ) Die für die Ansteuerung der LEDs und der Siebensegmantanzeige erforderlichen Strombegrenzungswiderstände ( RD1 und RD2 / Arrays im DIL-Format ) sind auf dem Board gesockelt. Falls sich der Entwickler durch die meist kryptischen Symbole der Siebensegmentanzeige irritiert fühlt oder die LED-Anzeige aus welchen Gründen auch immer stört, läßt sich das nichtgewünschte Anzeigeelement durch Herausziehen des entsprechenden Arrays außer Funktion setzen. Bei einer Sockelung der Siebensegmentanzeige bietet sich zusätzlich die Möglichkeit, nochmals acht gepufferte Bits für externe Anwendungen zur Verfügung zu stellen. GND und VCC: Der GND-Anschluß beider GAL-Typen ist fest verdrahtet. Der VCC-Anschluß ist nur beim GAL20V8 fest verdrahtet. Beim Einsatz des GAL16V8 ist der Jumper JMP1 so zu stecken, daß VCC an Pin 22 liegt. Der Stützkondensator C1 sorgt für die Unterdrückung von Spannungseinbrüchen. Der Taktgenerator: Beim Taktgeneratur wurde auf eine bewährte Standardschaltung zurückgegriffen, wie sie prinzipiell bereits in anderen vorgestellten Projekten ( UniStep, BiStep, ModuStep / ELRAD 92 ) eingesetzt wurde. Im vorliegenden Fall wurde jedoch auf jedes Bauelement verzichtet, welches für die hier geforderte Anwendung unbedeutend ist. Das Resultat ist ein wahlweise freischwingender oder manuell anzustoßender Taktgenerator,

dessen Taktfrequenz oder Taktverzögerung von der Kombination der Widerstände R2, R3 und R4 in Verbindung mit der Kapazität C5 abhängt. Die für die Taktfrequenz f bzw. Taktverzögerung D ( Delay ) zuständige Zeitkonstante läßt sich mit den DIP-Schaltern F1 und F2 einstellen. ( Siehe Tabelle ) F1 F2 f in Hz (ca.) D in ms (ca.) OFF OFF 1 1000 ON OFF 10 100 OFF ON 100 10 ON ON 110 9 Ungefähres Takt- bzw. Delayverhalten Der freischwingende Modus ( Auto Mode ) oder manuelle Modus wird mit dem Schalter SU3 eingestellt. Die Funktion des Taktgenerators läßt sich mit Hilfe einer LED ( L10 ) kontrollieren. Da das Taktsignal erst beim Erreichen einer fest vorgegeben Triggerschwelle ausgelöst wird, kommt es, was beim manuellen Betrieb beachtet werden sollte, zu einer Schaltverzögerung, die von der eingestellte Zeitkonstanten abhängt. ( Schalterstellung von F1 und F2 ) Eine niedrige Taktfrequenz bedeutet eine lange Taktverzögerung und umgekehrt. Wird der Taster TA5 ( CLK ) betätigt, spricht die Takt-LED sofort an, der Taktimpuls wird hingegen erst ausgelöst, wenn die LED erlischt. Um im manuellen Betrieb eine quasi unmittelbare Reaktion zu erhalten, ist es folglich sinnvoll, die Zeitkonstante für diesen Betrieb so kurz wie möglich zu wählen, d.h. die beiden DIP-Schalter F1 und F2 zu schließen. Die Signalaufbereitung: Das beschriebene Generatorverhalten hat direkt mit der Minimierung des Beschaltungsaufwandes zu tun, aber es ist für die Arbeit mit dem Board grundsätzlich ohne Belang. Für die Arbeit mit den GALs ist hingegen von Bedeutung, daß die Flankensteilheit und die Amplitude ( etwa nur 3 Volt ) des Taktsignals zwar bei einer rein kombinatorische Anwendungen ausreicht, für den Registermodus jedoch zu fatalen Fehlergebnissen führt. Aus diesem Grunde ist die TTL-gerechte Aufbereitung des Taktsignals mit Hilfe eines Schmitt- Triggers unerläßlich. Das Taktsignal des NE555 ( Pin 3 / OUT ) wird zu diesem Zweck über den 74LS14 an die Umschalter SU1 und SU2 geführt und kann bei Bedarf ( Registermode ) auf die Clockeingänge der GALs aufgeschaltet werden. Das invertierte, aufbereitete und gebufferte Taktsignal steht am Pfostenstecker ( ST_OUT ) für allgemeine Anwendungen zur Verfügung. Die zunächst widerwillige Implementation eines zusätzlichen Bausteines hat sich im nachherein als ausgesprochen vorteilhaft erwiesen. Bei der logischen Auswertung der von analog arbeitenden Sensoren generierten Signale oder der Realisierung komplexer Experimentieraufbauten durch Zusammenschaltung mehrerer GDUs zu beispielsweise mehrstufigen Zählern, paralleler oder serieller Übertragungssysteme u.a.m lassen sich ohne zusätzlichen Hardwareaufwand nicht-ttl-gerechte Steuersignale problemlos aufbereiten. Die hierfür vorgesehenen Ein- und Ausgänge des 74LS14 stehen dem Anwender am Pfostenstecker ( ST_OUT ) zur Verfügung.

Die Spannungsversorgung: Zur Spannungsversorgung bedarf es nur weniger Anmerkungen. Für den Laboreinsatz ist es nützlich, die Arbeit mit einer Entwicklungsumgebung aufnehmen zu können, ohne gerade nicht benötigten Labornetzteilen, Anschlußkabel, einen passenden Schraubendreher u.ä. suchen zu müssen. Aus diesem Grunde wurde ein DC-Adaper in Printausführung gewählt ( nicht überall leicht zu beschaffen ), um jedes Universal Gleichspannungsnetzteil [ 9V < U- < 12V / > 150mA ] ( überall leicht zu beschaffen ) einsetzen zu können. Von einem Versorgungsstecker in Klinkenausführung wurde im Gegensatz zu einigen Herstellern ähnlicher Entwicklungsboards abgesehen. Hier soll nicht der klassische Kurzschlußfall bei der Inbetriebnahme einer Hardware demonstriert werden! Es gibt die unterschiedlichsten Methoden, das Ableben einer Elektronik tatkräftig zu unterstützen. Beim Einsatz eines Netzteiles mit einer Umpolungsmöglichkeit kann es durchaus sein, daß der 5 Volt Spannungsregler hiervon überhaupt nicht begeistert ist und die GALs durch einen solchen Anschlag ebenfalls in Mitleidenschaft gezogen werden. Durch den Einbau der Diode D vor dem Spannungsregler ist die Schaltung verpolungssicher. Für eine stabile Spannungsversorgung von 5 Volt sorgen der Spannungsregler 78S05 in Verbindung mit den Stützkondensatoren C3, C4 sowie dem Elko C4. Das Entwickeln und Testen einer Logik macht ein häufiges Wechseln der GALs und damit verbunden, ein ebenso häufiges Ein- und Ausschalten der Versorgungsspannung erforderlich. Durch den Einbau des PWR-On Schalters ( MAIN ) wird eine unnötige mechanische Belastung der Versorgungsadapter vermieden. Diese an und für sich nicht erwähnenswerte Selbsverständlichkeit wird ebenso wie die LED zur Anzeige der Versorgungsspannung aus Kostengründen oftmals eingespart. Konfiguration des Boards: Mit den beiden Jumpern JMP1 und JMP2 und den Umschaltern SU1 und SU2 wird das Board für den gewünschten GAL-Typ konfiguriert. Die in der Tabelle unterhalb der GAL-Typen angegebenen Konfigurationshinweise beziehen sich auf die Positionen der Jumper und der Schalter, wie sie dem Bestückungsplan bzw. dem Bestückungsdruck zu entnehmen sind. Betriebs Modus Schalter / Jumper GAL16V8 GAL20V8 Simple Mode JMP1 VCC/V16 Q1/V20 und JMP2 Q1/V16 IN13/V20 Complex Mode SU1 don't care IN1/V20 SU2 IN1/V16 IN3/V20 S12 OFF OFF Register Mode JMP1 VCC/V16 Q1/V20 JMP2 Q1 / V16 IN13 / V20 SU1 don't care CLK/V20 SU2 CLK/V16 IN3/V20 S12 ON ON Das optionale Arbeitsfeld: Das Experimentierfeld mit 9 * 32 Durchkontaktierungen bietet Platz für den Aufbau kleinerer Hardwareanwendungen.

Die Bauteilliste: Widerstände: Die GDU32 wird als R1-470 / 1/4 W Leerplatine, Bausatz und Fertigboard R2-10k / 1/4 W angeboten R3-220k / 1/4 W R4-1 M / 1/4 W Bezugsquelle: PCS-Prozeßrechnertechnik & WebDesign R5-10k / 1/4 W Matthias-Claudius-Weg 26 R6-470 / 1/4 W D - 27753 Delmenhorst Widerstandsarrays: Informationen unter: http://www.pcs-he.com PU1 / 8 x 4k7 + 1 oder PU2 / 6 x 4k7 + 1 http://www.phyta.aka.de PU3 / 8 x 3k3 + 1 PU4 / 8 x 3k3 + 1 E-Mail-Adresse: pcs@ae-web.com PD1 / 8 x 10k + 1 oder RD1 / 8 x 470 ( DIL ) gevers@ae-web.com RD2 / 8 x 470 ( DIL ) Kondensatoren: C1-100 nf C2-100 nf C3-100 nf C4-220 uf / 25V / Elko, axial C5-470 nf C6-100 nf C7-100 nf Dioden: D Diode 1N4001 o.ä. L1 - L10 LED [ 3mm ] 7Segment LTS547 / T718 ICs: 1 * NE555 2 * ULN2803 1 * 74LS14 1 * 78S05 mit Kühlblech Taster / Schalter / Stecker: 4 * Digi-Taster 3 * Subminiatur Umschalter 2 * 8 fach DIP-Schalter 1 * Kippschalter / 1 * Um 1 * DC Adapter 4 * Pfostenstecker 16 polig / 2 reihig 1 * Pfostenstecker 14 polig / 2 reihig 2 * Pfostenstecker 3 polig / 1 reihig mit Jumper 1 * Textool IC Fassung Tex 24-3 / schmale Ausführung

Inhalt des Bausatzes: Widerstände: 2 * 470 Ohm / 0.25 W 2 * 10 kohm / 0.25 W 1 * 220 kohm / 0.25 W 1 * 1 MOhm / 0.25 W Widerstandsarrays: Kondensatoren: 2 * 4k7 / 8 + 1 / einreihig 2 * 3k3 / 8 + 1 / einreihig 1 * 10k / 8 + 1 / einreihig 2 * 470 Ohm / DIL-Format 5 * 100 nf 1 * 470 nf 1 * 220 uf / 25 V / Elko / axial Dioden: IC-Fassungen: ICs: 1 * 1N4001 1 * LED [ 3 mm ] / grün 1 * LED [ 3 mm ] / gelb 1 * LTS547 / T718 / 7 Segmentanzeige 1 * 8 polig 1 * 14 polig 2 * 16 polig 2 * 18 polig 1 * Textool IC Fassung Tex 24-3 / schmale Ausführung 1 * NE555 2 * ULN2803 1 * 74LS14 1 * 78S05 mit Kühlblech Taster: 4 * Digitaster [ rot ] 1 * Digitaster [ blau ] Schalter: Adapter: Steckerleisten: Leiterplatte: 3 * Subminiatur Umschalter 2 * 8 fach DIP-Schalter 1 * Kippschalter / 1 * Um 1 * DC Adapter 2 * Pfostenstecker 3 polig / 1 reihig mit Jumper 1 * Pfostenstecker 14 polig / 2 reihig 1 * Pfostenstecker 16 polig / 2 reihig 1 * Pfostenstecker 32 polig / 2 reihig 1 * Leiterplatte GDU32

Projekt: GAL-Evaluationsboard [ GDU32 ] Teil 2: Ohne Theorie geht es nicht Motto: Mit dem GAL sollte nicht nach TTL-Manier gebool(e)t werden...... ein Versuch, sich von der TTL-Denkweise zu befreien, um den Weg für PLD-gerechte Lösungswege frei zu machen... oder... wohl dem, der gar nicht weiß, daß es überhaupt ein TTL-Gatter gibt...? Von: Gerd Evers Wie bereits im ersten Beitrag geäußert, gilt wiederum: Auch in der Theorie gibt nicht nur Profis, sondern ebenfals solche, die nicht schon alles wissen, aber großes Interesse haben, Neues zu erfahren oder bereits Bekanntes eventuell aus einem anderen Blickwinkel zu betrachten. Um den Umfang der Ausführungen in akzeptablen Grenzen halten zu können,, wird "logistisches" Basiswissen vorrausgesetzt. Die elementaren Logikbausteinen wie BUFFER, INVERTER, AND, NAND, OR und NOR sowie deren mathematische Beschreibung mit Hilfe der Booleschen Algebra sollten bekannt sein. Um eine gemeinsame Ausgangsbasis für die anstehenden Erörterungen zu finden, erscheint es jedoch trotzdem sinnvoll, dem konkreten Umgang mit GALs einen Logik-Auffrischungskurs voranzustellen. Hier werden die in den Ausführungen verwendeten Begriffe und Konventionen sowie die nicht zu umgehenden theoretischen Hintergründe zur Beschreibung komplexerer, logischer Zusammenhänge so weit angesprochen, wie es für das Verständnis der jeweils vorgestellten Problematik erforderlich erscheint. Nicht nur in diesem "Logik-Crash-Kurs", sondern generell bei allen folgenden Überlegungen steht nicht die für die Problemlösung zu entwickelnde Hardware im Mittelpunkt ( TTL-Denkweise ), sondern vielmehr die grundsätzliche Überlegung, welche Kriterien von einer konfigurierbaren, im Rohzustand halbfertigen und damit zunächst "nutzlosen" Logikeinheit erfüllt werden müssen, um daraus eine konkrete Logikanwendungen wie beispielsweise eine XOR-Logik, unterschiedliche Flip-Flops, Binärzähler, Schieberegister u.a.m.zu realisieren ( PLD-Denkweise ). Zur Vorbereitung einer PLD- bzw- GALgerechte Denkweise sind Festlegungen zu treffen, die auf eine einheitliche, übergreifende Art der Problembeschreibung abzielen und somit generell auch auf den Umgang mit komplexeren Logikeinheiten wie PICs, Microcontrollern und schließlich Prozessoren zu übertragen sind. Damit die Chance besteht, den Weg von der Entstehung einer Logik-Idee bis hin zur Problemlösung mit einem universellen Logik-Device mit PLD bzw. GAL-Struktur in dem hier gesteckten Rahmen beschreiben zu können, wird besonderer Wert darauf gelegt, sich von Anfang an von einer für PLD-Betrachtungen blockierenden TTL-Denkstruktur ' zu lösen und stattdessen eine PLD-gerechte Denkweise zu übernehmen. Begriffe, Darstellungsmöglichkeiten, Beschreibungswerkzeuge logischer Zusammenhänge: Mit Hilfe der im folgenden zugrunde gelegten Logikschaltungen werden Begriffe, Darstellungsmöglichkeiten und Werkzeuge vorgestellt, die für die Beschreibung auch komplexerer PLD-Anwendungen relevant erscheinen. Die Umsetzung einer vorgegebenen Logikanforderung soll prinzipiell folgendermaßen realisiert werden: - Formulierung der Problemstellung sowie zwingender Schlußfolgerungen und Vereinbarungen - Minimierung des logischen Zusammenhanges mit Hilfe geeigneter Werkzeuge - Mathematische Formulierung des Logikergebisses, d.h. der Logikgleichungen - Eventuelle Umsetzung bzw. Anpassung der Logikgleichungen an die konkrete PLD- Entwicklungsumgebung

Um die aufgeführten Bedingungen umsetzen zu können, wird eine Standard-Hardware entsprechend der Abbildung 1 vorausgesetzt: Abbildung 1: Generelle Eigenschaften der Logikeinheit: - Die Eingangsvariablen werden gepuffert und stehen in einer Verknüpfungsmatrix in entsprechend zugeordneten Spalten in invertierter und nicht invertierten Form zur Verfügung - Auf die Eingänge der als Array angeordneten UND-Gatter kann in den entsprechenden zugeordneten Zeilen der Matrix zugegriffen werden - Die Zeilen und Spalten der Matrix lassen sich an den Kreuzungspunkten verbinden oder trennen d.h. die Eingangsvariablen lassen sich beliebig miteinander verknüpfen Hierdurch steht eine programmierbare UND-Matrix zur Verfügung, mit der sich sog. Produkttherme bilden lassen. z.b. ( E1 * E2 ) oder ( /E1 * E2 ) usw. [ lies: E1 UND E2 bzw. NICHT E1 UND E2 ] - Offene Eingangsleitungen der UND-Gatter liegen vereinbarungsgemäß auf logisch 1 Feste Verbindungen werden durch Punkte, frei konfigurierbare ( programmierbare ) Verbindungen durch Kreuze gekennzeichnet - Die Ausgangssignale der UND-Gatter ( die Logikergebnisse der Produkttherme ) werden in einem fest verdrahteten ODER-Gatter miteinander verknüpft - Das komplette Logikergebnis wird nicht direkt auf den Ausgang geschaltet, sondern läßt sich in einer konfigurierbaren Ausgangszelle den Peripherieanforderungen anpassen Durch diese konfigurierbare Ausgangszelle [ bei realen GALs als Output Logic Macro Cell bzw. abgekürzt OLMC bezeichnet ] stehen grundsätzlich folgende Ausgangsmodi zur Verfügung: 1. Kombinatorischer Ausgang - Ausgang einer aus reinen Verknüpfungsgliedern aufgebauten Logikschaltung Eine Änderung der Eingangsvariablen erscheint nur durch die Signallaufzeit verzögert am Ausgang Zwischen den Eingangszuständen ( Eingangsvariablen ) und dem Ausgangszustand ( logisches Ergebnis ) besteht ein fester funktioneller Zusammenhang, der sich mit den Gesetzmäßigkeiten der boolschen Algebra beschreiben läßt

- Kennt nur die beiden aktiven Zustände High ( 1 ) oder Low ( 0 ) - Ein hochohmiger Zustand ( Tristate ) ist nicht möglich - Keine Rückkopplungleitungen ( Feedback ) oder Speicherglieder ( Latches / Register ) vorhanden 2. Invertierter Ausgang - Der aktive Logikausgang kann wahlweise invertiert werden 3. Tristate - Ausgang - Der Logikausgang kann in die aktiven Zustände High und Low sowie in den hochohmigen Zustand geschaltet werden ( Ausgang abschaltbar ) 4. Ausgang mit Feedback - Das Logikergebnis wird am Ausgang zur Verfügung gestellt und zusätzlich vom Ausgang sowohl invertiert als auch nicht invertiert in die Logikmatrix zurückgeführt Durch diese Maßnahme steht das rückgeführte Logikergebnis als Eingangsvariable zur Verfügung und kann entsprechend der Anforderung mit anderen Variablen weiterverknüpft werden Das resultierende Logikergebnis ( Folgezustand ) ist somit eine Funktion des aktuellen Ausgangszustandes 5. Register Ausgang [ Ausgang mit transparentem D-Latch ] - Es läßt sich ein D-Latch zwischen das kombinatorische Netzwerk und den Logikausgang schalten. Das Logikergebnis wird auf den Eingang eines D-Latches geschaltet und steht nicht unmittelbar am Ausgang des D-Latches ( Registers ) zur Verfügung. Das Logikergebnis wird durch ein Clocksignals ( CLK ) in das Register eingeklinkt ( ge-latched ), zum Ausgang durchgeschaltet und schließlich am Ausgangspin sichtbar ( transparent ) Überall dort, wo ein Logikzustand " eingefroren " werden muß oder Schaltwerke wie Flip Flops, Zähler, Schieberegister u.a.m. zu realisieren sind, ist ein Registerausgang erforderlich Methoden und Werkzeuge zur Beschreibung logischer Zusammenhänge Im folgenden Beispiel sollen Methoden und Werkzeuge vorgestellt und erörtert werden, die zur Beschreibung und Lösung GAL-bezogener Problemstellungen erforderlich sind. Die Problemstellung ist bewußt relativ komplex gewählt, damit möglichst viele der gebräuchlichen Lösungsstrategien vorgestellt werden können. Problemstellung 1: Das in der Abbildung 1 dargestellte JK-Flip Flop in GAL Struktur ist zu entwickeln Konkrete Vorgaben: Die Hardware ist so zu konfigurieren ( Programmierung der Matrix ), daß jeder der grundsätzlich möglichen Logikterme die in der Spalte Q der Wahrheitstabelle angegebenen Logikergebnisse ergibt. Ergänzender Hinweis: Da der geforderte Logikzustand des Ausganges Q nicht nur vom aktuellen Zustand der externen Variablen J,K und CLK abhängt, sondern ebenfalls vom aktuellen Zustand des Ausganges selber, ist Q in die Verknüpfungsmatrix zurückzuführen ( Feedback ) und entsprechend als Variable zu behandeln. Der funktionelle Zusammenhang zwischen jeder Kombinationsmöglichkeit der Variablen ( Logikterme ) Q, K, J und CLK und dem geforderten Funktionsergebnis Q ( resultierender Logikzustand des Ausganges ) ist aus Gründen der Übersichtlichkeit und der Systematisierbarkeit in einer Wahrheitstabelle ( Logiktabelle ) zusammengestellt.

Blockschaltbild Wahrheitstabelle des JK Flip Flops: Nr. CLK J K Q Q* Funktion 1 0 0 0 0 0 Hold 2 0 0 0 1 1 Hold 3 0 0 1 0 0 Hold 4 0 0 1 1 1 Hold 5 0 1 0 0 0 Hold 6 0 1 0 1 1 Hold 7 0 1 1 0 0 Hold 8 0 1 1 1 1 Hold 9 1 0 0 0 0 Hold 10 1 0 0 1 1 Hold 11 1 0 1 0 0 Reset 12 1 0 1 1 0 Reset 13 1 1 0 0 1 Set 14 1 1 0 1 1 Set 15 1 1 1 0 1 Toggle 16 1 1 1 1 0 Toggle Erläuterungen und Vereinbarungen zur Erstellung der Wahrheitstabelle: - Die vier Variablen J, K, CLK und Q lassen sich 2 hoch 4 mal miteinander kombinieren ( 16 Logikterme ) - Die Kombinationsmöglichkeiten 0000, 0001, 0010, 0011 usw. werden konsequent so eingetragen, daß ihre binäre Wertigkeit von rechts nach links gelesen zunimmt. Die hier getroffene Vereinbarung ist nicht zwingend, erscheint jedoch überall dort sinnvoll, wo die Wertigkeit der Variablen eine Rolle spielt, wie z.b. bei Zählern, Schieberegistern usw. - Die Einträge in die Spalte Q hängen ausschließlich davon ab, welcher logische Zusammenhang zwischen der jeweilig möglichen Kombination der Eingangsvariablen und dem Verknüpfungsergebnis vom Entwickler definiert wird. In vorliegenden Fall ist gemäß der Problemstellung jeweils die Logikbedingung eingetragen worden, die der eines JK-Flip Flops entspricht. Auswertung der Wertetabelle: Das Ergebnis der Schaltfunktion für die 1-Auswertung läßt sich anhand der Logiktabelle durch folgende Gleichung in der disjunktiven Normalform formulieren. Begriffsklärungen: Q = ( Q * /J * /K * /CLK ) + ( Q * /J * K * /CLK ) + ( Q * J * /K * /CLK ) + ( Q * J * K * /CLK ) + ( Q * /J * /K * CLK ) + ( /Q * J * /K * CLK ) + ( Q * J * /K * CLK ) + ( /Q * J * K * CLK ) 1-Auswertung: Auswertung aller Produktterme, bei denen der Ausgang Q auf 1 liegt Disjunktive Normalform: ODER-Verknüpfung aller möglichen Produktterme Disjunktiv: Nicht verbunden - hier: Isoliert nebeneinander, nicht Minimiert

Für die folgenden Ausführungen werden die angegebenen Vereinbarungen getroffen - Es wird ein Forward-Slash [ / ] für die Kennzeichnung einer negierten Variablen verwendet - Es wird ein Produktzeichen [ * ] für eine UND-Verknüpfung verwendet - Eine UND-Verknüpfung wie beispielsweise ( /D * MO ) wird im folgenden als Produktterm bezeichnet - Es wird ein Pluszeichen [ + ] für die ODER-Verknüpfung der Produktterme verwendet - Die Logikgleichung hat immer die Struktur: Logikergebnis = ( Produktterm1 ) + ( Produktterm2 ) +... 4. Werkzeuge zur Minimierung und Veranschaulichung logischer Zusammenhänge In der disjunktiven Normalform ( DNF ) der Schaltfunktion werden alle Produktterme, die zu dem geforderten Ausgangspegel der Logik führen, ODER-verknüpft. Ist die Anzahl der Produktterme, die zu einer 1 führen geringer als die Anzahl der Produktterme, die zu einer 0 führen, so sollte eine 1-Auswertung, ansonsten eine 0-Auswertung vorgenommen werden. Trotz dieser Optimierungsmöglichkeit enthält die DNF-Formulierung häufig überflüssige Terme, die sich generell durch eine geeignete Maßnahme herausfiltern lassen. 4.1 Mathematische Minimierung der disjunktiven Normalform mit den Rechenregeln der booleschen Algebra Beispiel: Eine Wahrheitstabelle möge zu der angegeben Logikgleichung [ DNF ] führen Q = ( E1 * E2 * E3 ) + ( E1 * /E2 * E3 ) Unter Anwendung der booleschen Algebra läßt sich ebenfalls schreiben: Q = ( E1 * E3 ) * ( E2 + /E2 ) Nach den Rechenregeln ergibt der Klammerausdruck ( E2 + /E2 ) den Wert 1. Somit ist es gleichgültig, ob die Variable E2 den Wert 1 ODER 0 führt. E2 trägt nichts zu dem Logikergebnis bei, d.h. die Variable E2 ist "überflüssig ". Folglich lautet die "minimierte" Funktionsgleichung : Q = ( E1 * E3 ) 4.2 Theoreme von DE Morgan: Auf eine Umformung und möglicherweise Minimierung der Logikgleichung mit den Theoremen von DE Morgan wird im Zusammenhang mit der GAL-gerechten Denkweise verzichtet. Begründung: Beim Umgang mit programmierbaren Logikeinheiten bis hin zum Prozessor ist eine Hardware-Minimierung, wie sie mit den DE Morganschen Theoremen meist angestrebt wird ( Umformung von NANDs in NORs und umgekehrt / Zusammenfassung einzelnen Variablen zu komplexen Klammerausdrücken usw. ) vollkommen fehl am Platze ( TTL-Denkweise ). Die Umwandlung einzelner Variablen, wie z.b. Q = A * B in die äquivalente Form Q = /A + /B hat bei der Problemlösung mit PLDs eine untergeordnete Bedeutung. Hier geht es ausschließlich darum, die Variablen mit Hilfe der vorgegeben frei programmierbaren Hardware in GAL Struktur so zu konfigurieren, daß der Anwender zu dem von ihm vordefinierten Logikergebnis gelangt. 5. Grafisches Verfahren zur Minimierung von Schaltfunktionen ( KV-Diagramm ) Die angesprochene mathematische Minimierung ist bei Logikproblemen mit mehreren Variablen häufig recht mühsam und unhandlich. Berücksichtigt man den mathematischen Hintergrund der Minimierungsstrategie und überträgt diese auf eine grafische Verfahrensweise, wie sie von Karnaugh und Veitch entwickelt wurde, so kommt man durchweg eleganter und sicherer zum Ziel.

Allgemeine Anmerkungen und Erläuterungen zum KV-Diagramm: Im Rahmen dieses Beitrages wird darauf verzichtet, alle mit dem KV-Diagramm verbundenen Aspekte erschöpfend erörtern zu wollen. Aus der Sicht des Autors ist es nicht möglich, hier den mathematischen Hintergrund erschöpfend nachzuweisen, alle gebräuchlichen Darstellungsmöglichkeiten von KV-Diagrammen zu präsentieren, zu erörtern oder die unterschiedlichsten Auswertungsverfahren von KV-Diagrammen abzuhandeln. Die für die hier anstehenden Problemstellungen wichtigsten Kriterien im Umgang mit einem KV-Diagramm sind im folgenden zusammengestellt. Desweiteren wird auf entsprechende Fachliteratur verwiesen. Grundsätzlicher Aufbau eines KV-Diagrammes - Das KV-Diagramm ist prinzipiell nur eine andere Schreibweise der Wahrheitstabelle - Jedem Logikterm der Wahrheitstabelle ist ein Feld im KV-Diagramm zugeordnet - Die Anzahl der Felder entspricht der Anzahl der Logikterme - n Variablen sind 2 hoch n Felder zuzuordnen - Bei der Verarbeitung von mehr als zwei Variablen ist die Zuordnung der Variablen grundsätzlich so vorzunehmen, daß sich benachbarte Felder der Spalten oder der Zeilen nur in einer Variablen unterscheiden. Auswertung eines KV-Diagrammes Gruppenbildung: - Die mit 1 ausgefüllten, benachbarten Felder sind in Gruppen zusammenzufassen. - Eine Gruppe darf nur aus jeweils 2 hoch n Feldern ( 1, 2, 4, 8, 16... ) bestehen. - Die zu einer Gruppe zusammengefaßten Felder müssen eine geschlossene Einheit bilden - Je größer die Anzahl der zu einer Gruppe zusammengeschlossenen Felder ist, desto kleiner wird der schaltalgebraische Ausdruck - Gruppen können sich überlappen. Ein Feld kann auch Teil einer zweiten und dritten Gruppe sein - Felder gegenüberliegender Ränder der KV-Tafel lassen sich zu Gruppen zusammenfassen, da diese als " logisch benachbart " einzustufen sind. Auswertung der Gruppen: - Jede Gruppe repräsentiert einen Produktterm - Bei der Verknüpfung der Variablen innerhalb einer Gruppe entfallen die Variablen, die sowohl mit ihren 1- als auch mit ihren 0-Werten an der Gruppenbildung beteiligt sind [ Vgl. ( E1 * /E1 ) = 1 ] - Die Gruppen sind untereinander ODER-verknüpft Nach diesen Vorgaben sieht das KV-Diagramm für das zu entwickelnde JK-Flip Flop wie dargestellt aus:

Gruppe 1 wird vollständig beschrieben durch: /Q * J * T Gruppe 2 ( Randgruppe ) wird vollständig beschrieben durch: Q * /T Gruppe 3 wird vollständig beschrieben durch: Q * /K Die Minimierung der disjunktive Normalform mit Hilfe des KV-Diagrammes führt zu eine Funktionsgleichung mit nur 3 statt 8 Logiktermen. Das JK-Flip Flop wird folglich vollständig beschrieben durch: Q = T * J * /K + Q * /K + Q * /T Die Abbildung 1 zu Beginn der Ausführungen zeigt die schaltungstechnische Umsetzung dieser Gleichung [ JK-Flip Flop in GAL Technik ] Der Autor hofft, daß, nachdem das bereits recht komplexe JK-Flip Flop erfolgreich erschlagen wurde, die Entwicklung einiger anderer Standardschaltungen zwecks Vertiefung keine unüberwindbaren Probleme mehr bereiten dürfte. Anmerkung: Hoffnung ist das, was den Arbeitstag des Autors prägt! Problemstellung 2: Es ist ein RS Flip Flop zu entwickeln Wie bei allen Schaltwerken ist auch hier wieder zu berücksichtigen, daß der aktuelle Ausgangszustand den Folgezustand mitbestimmt ( Prinzip der Selbsthaltung bei allen Schaltwerken ) Der Ausgang Q muß folglich wieder in die Verknüpfungsmatrix zurückgeführt und als Variable behandelt werden. Lösungsstrategie: - Es sind die Logikbedingungen, durch die das gewünschte RS-FF charakterisiert ist, wieder aus Gründen der Übersichtlichkeit und Systematisierbarkeit in eine Logiktabelle einzutragen - Das Logikergebnis eines jeden möglichen Produktterms ist gemäß der Logikanforderung zu definieren ( Vgl. Kommentarspalte ) Blockschalbild Wahrheitstabelle KV-Diagramm R S Q Q Kommentar 0 0 0 0 bleibt 0 0 0 1 1 bleibt 1 0 1 0 1 wird 1 0 1 1 1 bleibt 1 1 0 0 0 bleibt 0 1 0 1 0 wird 0 1 1 0 0 bleibt 0 1 1 1 0 wird 0 Erinnerung: Eine Gruppe muß sich aus 2 hoch n Variablen zusammensetzen. Deshalb sind minimal 2 Gruppen zu bilden!

Gruppe 1 wird vollständig beschrieben durch: S * /R Gruppe 2 wird vollständig beschrieben durch: Q * /R Das RS Flip Flop läßt sich somit durch die Gleichung Q = Q * /R + S * /R beschreiben:

Die Abbildung 2 zeigt das RS Flip Flop in GAL Technik: ABB. 2: Problemstellung 3: Es ist ein transparentes D-Latch ( 1 Bit Register ) zu entwickeln Blockschalbild Wahrheitstabelle KV-Diagramm EN D Q Q Kommentar 0 0 0 0 bleibt 0 0 0 1 1 bleibt 1 0 1 0 0 bleibt 0 0 1 1 1 bleibt 1 1 0 0 0 bleibt 0 1 0 1 0 wird 0 1 1 0 1 wird 1 1 1 1 1 bleibt 1 Gruppe 1 wird vollständig beschrieben durch: Q * /EN Gruppe 2 wird vollständig beschrieben durch: D * EN Die dritte Gruppenbildung ist zwar grundsätzlich möglich, aber sie liefert keine zusätzlichen Informationen zur Logikbeschreibeung. Sie ist also überflüssig. Statt der 4 Logikterme der disjunktiven Normalform führt die Minimierung mit Hilfe der KV-Tafel zu einer Logikgleichung mit nur 2 Logiktermen! Das D - Latch läßt sich folglich durch die Gleichung Q = Q * /EN + D * EN beschreiben:

Die Abbildung 3 zeigt das D-Latch in GAL Technik: Problemstellung 4: Im letzten Beispiel ist eine Logik zu entwerfen, mit der die Temperatur einer Anlage durch drei unabhängig voneinander arbeitenden Sensoren überwacht wird. Vorgaben: - Die Sensoren sind über drei separate Meldeleitungen mit der Logik verbunden. - Die Meldeleitungen haben so zusammenzuwirken, daß nur dann der Ausgang TH [ Temperatur zu Hoch ] umschaltet, wenn alle 3 oder wenn zwei Sensoren ansprechen - Spricht nur einer oder sprechen zwei Sensoren an, dann soll zusätzlich der Ausgang TU [ Temperatur Ungleich ] umschalten - Die Sensoren werden mit S1, S2, S3 bezeichnet Zur Realisierung dieser Logik werden zwei kombinatorische Ausgänge benötigt. Auf die Option, mit Registerausgängen zu arbeiten, um den jeweiligen Meldezustand einzufrieren und explizit rücksetzen zu können, wird in diesem Beitrag verzichtet. Blockschalbild KV-Diagramm für TH Wahrheitstabelle S3 S2 S1 TH TU KV-Diagramm für TU 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0

Auswertungsentscheidung: Für den Ausgang TH wird eine 1- und für TU eine 0-Auswertung durchgeführt. Die Auswertung der KV-Tafel für TH ergibt: Die Auswertung der KV-Tafel für TH ergibt: Gruppe 1 wird beschrieben durch: /S1*S2*S3 Gruppe 1 wird beschrieben durch: /S1*/S2*/S3 Gruppe 2 wird beschrieben durch: S1*S2 Gruppe 2 wird beschrieben durch:s1*s2*s3 Gruppe 1 wird beschrieben durch: S1*S3 d.h. TH = ( /S1 * S2 * S3 ) + ( S1 * S2 ) + ( S1 * S3 ) /TU = ( /S1 * /S2 * /S3 ) + ( S1 * S2 * S3 ) Die Abbildung 4 zeigt die 2 von 3 Auswertung in GAL Technik: Im letzten Abschnitt dieses Beitrages soll der Sprung von der ( frustrierenden ) Theorie zur konkreten Umsetzung in die Praxis gewagt werden. Die als bekannt vorausgesetzten Kriterien, durch die eine AND, OR, NAND, NOR und XOR-Logik charakterisiert sind, sollen als BASIC_GATES in einem GAL16V8 und die in diesem Beitrag vorgestellten Flip Flops und die 2 von 3 Auswertung als BFF_2V3 in einem GAL20V8 untergebracht werden. Leider... es ist nicht zu ändern... geht es jedoch wieder nicht ganz ohne Theorie. Die elementaren Informationen, die im Umgang mit den einzusetzenden Bausteinen GAL16V8 und GAL20V8, der Entwicklungssoftware GDS3.5 und der Testhardware GDU32 vorhanden sein müssen, sind nicht zu umgehen. Für den tieferen Einstieg in die GAL Materie kommt man nicht an den vom GAL Hersteller LATTICE zur Verfügung gestellten Handbüchern und Datenblättern vorbei, ebensowenig wie an dem Handbuch für die hier verwendete Entwicklungssoftware GDS3.5 der Firma SH-Elektronik aus Kiel. Die Entwicklungshardware GDU32 sollte mit dem ersten Beitrag abgehakt sein. An dieser Stelle soll versucht werden, die für das weitere Verständnis der Betrachtungen erforderlichen Informationen in kompaktester Form... ausnahmsweise einmal ohne den sonst so lebenswichtigen Ballast ( stoff )... vorzustellen.

Die GALs 16V8 und 20V8: Kurzportrait: - Die GALs 16V8 und 20V8 sind prinzipiell durch die Abbildungen 1-4 vorgestellte Struktur charakterisiert - Das GAL16V8 verfuegt ueber ein Array aus 8 * 8 UND Gattern mit jeweils 32 Eingaengen - Das GAL20V8 verfuegt ueber ein Array aus 8 * 8 UND Gattern mit jeweils 40 Eingaengen Mit der zusätzlich an die UND-Gatter geführte Leitung PTD [ Product Term Disable ] werden alle nicht benoetigten Eingaenge auf einen definierten Pegel gelegt Die Anzahl dieser Eingänge ( Anzahl der Spalten in der Verknüpfungsmatrix ) bestimmt die maximale Anzahl aller möglichen UND-Verknüpfungen ( UND-Terme ) - Beide GALs verfügen über 8 ODER-Gatter die jeweils die 8 UND-Gatter miteinander verknüpfen. Es lassen sich somit jeweils maximal 8 komplexe Logikterme zusammenfassen -Jedem ODER-Ausgang ist eine konfigurierbare Ausgangszelle [ OLMC ] nachgeschaltet. Hierdurch lassen sich maximal 8 Logikergebnisse den Peripheriebedingungen anpassen - Bei beiden GALs ist die Anzahl der verfügbaren Ein- und Ausgänge vom Betriebsmodus abhängig Die Tabellen GAL16V8 und GAL20V8 geben Auskunft über die zur Verfügung stehenden Ein- und Ausgänge - GND, VCC, CLK und /OE sind reservierte Pinbezeichnungen! Tabelle GAL16V8 Pin Nr. Simple Mode Complex Mode Registered Mode 1 Input Input CLK 2-9 Input Input Input 11 Input Input /OE 12 In- oder Output NUR Output In- oder Output 13-14 In- oder Output In- oder Output In- oder Output 15-16 NUR Output In- oder Output In- oder Output 17-18 In- oder Output In- oder Output In- oder Output 19 In- oder Output NUR Output In- oder Output 10 GND GND GND 20 VCC VCC VCC Tabelle GAL20V8 Pin Nr. Simple Mode Complex Mode Registered Mode 1 Input Input CLK 2-11 Input Input Input 13 Input Input /OE 14 Input Input Input 15 In- oder Output NUR Output In- oder Output 16-17 In- oder Output In- oder Output In- oder Output 18-19 NUR Output In- oder Output In- oder Output 20-21 In- oder Output In- oder Output In- oder Output 22 In- oder Output NUR Output In- oder Output 23 Input Input Input 12 GND GND GND 24 VCC VCC VCC Zusätzliche Informationen zum Block Diagramm, Pin Konfiguration und prinzipieller Innenstruktur: Siehe Anhang: Auszug aus dem Lattice Data Book / 1994 Die Entwicklungssoftware GDS3.5

Auf eine Vorstellung und Bewertung des unterschiedlichen Softwareangebotes in Verbindung mit PLD- Entwicklungen wird hier verzichtet. Zu dieser Thematik stehen ausreichende Beiträge zur Verfügung. Der Autor hat sich letztlich für die Entwicklungssoftware GDS3.5 der Firma SH-Elektronik entschieden. Die bei der Einarbeitung in die Welt der GALs gewonnenen Erfahrungen - sowohl bei der eigenen Einarbeitung als auch im Rahmen der Ausbildung physikalisch technischer Assistenten, Informatikassistenten und FOS-Absolventen - haben die Entscheidung für die hier benutzte Software nicht schwer gemacht. Trotz einiger Schwächen, die vor allem auf den ' DOS-Komfort ' zurückzuführen sind, hat sich das Entwicklungssystem aufgrund seiner Bedienerfreundlichkeit und Anschaulichkeit für die Ausbildung bestens bewährt. Arbeiten mit der Entwicklungssoftware GDS35 Zur Entwicklung eines konkreten GAL-Files und die Generierung des für die Brennersoftware erforderlichen JEDEC-Files bedarf es nur weniger Informationen. Sofern man sich bemüht, - der Sicherheit halber alles groß zu schreiben - alle Kommentare nach dem Schlüsselwort [ CHIP ] konsequent durch ein Semikolon einzuleiten - die Programm-Kopfzeile in der Form ' CHIP... NAME... GALTYP... BETRIEBSMODE ' zu formulieren - die Pinanordnung entsprechend der Syntaxvorgaben vorzunehmen und - die Logikgleichungen wie in den Programmbeispielen aufzubauen, dann hat man das GAL auf seiner Seite. Die beiden folgenden Beispiele [ BASIC_GATES ] und [ BFF_2V3 ] sollen den Programmaufbau und die Syntax verdeutlichen. Programmbeispiel 1: Es sollen die elementaren Logikgatter AND, NAND, OR, NOR und XOR in einem GAL16V8 zur Verfügung gestellt werden Die Pinbelegung ist durch die anzusteuernde Peripherie vorgegeben Das zu editierende Sourcefile ist jeweils zwischen den Trennlinien dargestellt. ;------------------------------------------------------------------------------------------------------------------------------------ Titel: BASIC GATES Entwickler: gev Version: 2.1 Letzte Änderung: 15.02.98 Geforderte GAL-Funktion: INVERTER, AND, OR, NAND, NOR, XOR Vorgeschriebener GAL-Typ: GAL16V8 Pinzuweisung: Entsprechend der Peripherievorgaben Geforderter Betriebsmodus: COMPLEX_MODE rein kombinatorisch CHIP B_GATES GAL16V8 COMPLEX_MODE ; Programm-Kopfzeile ; 1 2 3 4 5 6 7 8 9 10 Pinanordnung C D F G M N P Q I GND ; 11 12 13 14 15 16 17 18 19 20 Pinanordnung J K L R O H E B A VCC