Hallo, ich wurde vor einiger Zeit mal gefragt, ob ich einen GAL16V8D progammieren kann. Und zwar einen art Zähler der von 1-6 zählt und auf knopfdruck dann die aktuelle zahl anhand von 7 LED's ausspuckt. Und zwar in form eines Würfels. Naja hab gsacht ich kanns mal probieren, aber ich bekomms einfach nicht hin. Meine Fragen an euch: Wie programmiere ich diesen GAL? Ist so ein zähler überhaupt möglich? Hat jemand vllt. einige Codebeispiele, oder sogar genau so eine schaltung? ;) Was ich zur verfügng hab währe ein Taster, 7 LED's und den µC. mehr soll auch angeblich nicht benötigt werden. MfG Weble
Für Würfel ist ein 3Bit-Johnson-Zähler mit anschließendem Decoder geeignet, der hat 6 erlaubte Zustände. Für die LEDs sind 4 Ausgänge nötig, also gesamt 7 Register. Vielleicht läßt es sich noch auf 6 oder 5 reduzieren, wenn man die state-machine passend austüftelt, dass ein Zählerbit gleichzeitig eine LED ansteuern kann. Anordnung der vier LED-Gruppen: 3 1 2 0 2 1 3 Augen/Led-Gruppe 3/2/1/0: 1: 0001 2: 0010 3: 0011 4: 1010 5: 1101 6: 1110 die restlichen zehn sind verbotene Zustände. Gruppe 3 und 0 sind jeweils halbe/halbe verteilt, die könnte man in der Statemachine direkt zählen. Die Zählreihenfolge ist ja egal.
Danke! Jetzt nur noch die frage, wie programmiere ich ein 3Bit-Johnson-Zähler, wie kann ich z.B. pin 2 als eingang und pin 12 13 14 15 als ausgänge definieren? Ich hatte bisher nur etwas mit dem ATtiny2313 zu tun, und das is wieder was ganz anderes ;(
Ein 3Bit-Johnson-Zähler hat dieses Schema: 000 001 011 111 110 100 und wieder 000 das ist ein 3Bit-Schieberegister, das den letzten Ausgang zum seriellen Eingang invertiert rückführt.
aber das Schema für die 4 LED-Gruppen kann man auch direkt als statemachine formulieren, vier Register-Ausgänge nehmen nacheinander die genannten 6 Zählerstände ein, wenn der Stop-Befehl kommt, muß der Takt anhalten oder ein 5.Register repräsentiert den Zustand "angehalten".
kommt auf Deine Programmierumgebung an. Du kannst "wenn Du kannst" HDL,VHDL o.ä benutzen.( etwas übertrieben ) Sonst gibt es dafür so genannte "GAL Assembler". Ich habe früher einen Gal Assembler von MAXON auf dem Amiga benutzt. Da konnte ich die komplette Logiktabelle eingeben. Google bringt da einiges. Such mal danach.
Danke! Nächste fragen ;) Wie heißen die register ;) Wie kann ich diese am besten ansprechen? Gibts sowas wie Interrupts? Wie mach ich am besten Schleifen ? g WIe ich das ganze nun verwickliche stelle ich mir so vor: Ne endlosschleife die den 3Bit-Johnson-Zähler zählt und jeweils imemr die 3 register verändert g und auf knopfdruck wird ein interrupt ausgelöst, der dann den aktuellen stand des zählers an die dioden weitergibt
Ein GAL ist kein Mikroprozessor sondern ein Logikkbaustein. Da gibt es keine Interrupts und Schleifen sind auch so ohne weiters nicht möglich. Für Dein Vorhaben solltest Du Dir besser einen kleinen Mikrocontroller besorgen und den so programmieren wie Du das kennst. Gruß Dirk
Ich hab mal nachgeschaut, Würfel mit TTL-Logik waren ein großes Thema (mehrere Seiten) in Elektor 1972, im Sonderheft "platine72", später nochmal 1975 mit den dann aufgekommenen CD40xx. Meistens mit Zählern 7490, 7492 oder CD4022, aber auch eine Schaltung mit 2*2 JK_Flipflops 7473 und vier Germaniumdioden, die direkt die Bitmuster für die vier LED-Gruppen erzeugen. Ich habe das damals nachgebaut, müßte noch irgendwo rumliegen.
bin auf der Seite: http://www.harald-sattler.de/ über das gleiche Problem gestolpert.... *IDENTIFICATION Wuerfel im PAL Version 2.0 H.Sattler *COMMENT Kombination von STATEMACHINE und COMBINATORIAL. Im Block STATE laeuft (mit CLK auf Pin 1) eine Statemachine, die einen synchronen Zaehler bis 6 bildet. Im Block COM ist durch Rueckkopplung ein Oszillator realisiert der sich mit dem Eingang RUN^ starten laesst. Ist RUN^ low, laeuft der Oszillator, sein Ausgangssignal wird auf Pin 1 gefuehrt und taktet so die Statemachine im Block STATE. Letzte Aenderungen: ------------------- -> 05.05.89, Sattler Blockstruktur eingearbeitet *X-Names RUN^ , ! Enable fuer Oszillator OSZI ; ! Rueckkopplung fuer Oszillator *Y-NAMES OSZI ; ! Oszillator-Ausgang *Z-NAMES LED[4..1] ; ! States fuer FSM und Ausgaenge *LINK RUN^ = OSZI:RUN^ ; Eingaenge OSZI = OSZI:OSZI , CNT:OSZI ; LED[4..1] = CNT:LED[4..1]; Ausgaenge ;=============================================================== @BLOCK = CNT *X-NAMES OSZI; *Z-NAMES LED[4..1] ; ! States fuer FSM und Ausgaenge *Z-VALUES S1 = 1110; Zaehlerstand 1 S2 = 1101; Zaehlerstand 2 S3 = 1100; Zaehlerstand 3 S4 = 1001; Zaehlerstand 4 S5 = 1000; Zaehlerstand 5 S6 = 0001; Zaehlerstand 6 S7 = 0000; nach Power On Reset *FLOW-TABLE RELEVANT = OSZI; S[1..5] , X - , F[2..6]; S6 , X - , F1; S7 , X - , F1; nach Power On Reset *STATE-ASSIGNMENT Z-VALUES @ENDBLOCK = CNT ;=============================================================== ;=============================================================== @BLOCK = OSZI *X-NAMES RUN^,OSZI; *Y-NAMES OSZI; *BOOLEAN-EQUATIONS OSZI = /OSZI & /RUN^; Funktion "GATED OSZILLATOR" @ENDBLOCK = OSZI ;=============================================================== *RUN-CONTROL LISTING = EQUATIONS, PINOUT; PROGFORMAT = JEDEC; *PAL-TYPE TYPE = GAL16V8_R; *PINS CLK = 1, RUN^ = 2, OSZI = 18, LED1 = 15, LED2 = 14, LED3 = 13, LED4 = 12; *END _
Die PAL-Beschreibungssprache LOGIC kannte ich nicht, die Beschreibung der Statemachine ist nicht gerade selbsterklärend. Für ein ordentliches Design fehlen mir noch die unzulässigen Zustände, immerhin sind von 16 möglichen nur 6 benutzt, ein Resetzustand "alle Null" ist noch berücksichtigt, aber die restlichen 9 fehlen.
wenn: Z-VALUES S1 = 1110; Zaehlerstand 1 S2 = 1101; Zaehlerstand 2 S3 = 1100; Zaehlerstand 3 S4 = 1001; Zaehlerstand 4 S5 = 1000; Zaehlerstand 5 S6 = 0001; Zaehlerstand 6 kann der würfel nicht funktionieren, weil: S[1..5] , X - , F[2..6]; = ungleich S6 , X - Z, F1; Du musst Z-VALUES S1 = 1110; Zaehlerstand 1 S2 = 1101; Zaehlerstand 2 S3 = 1100; Zaehlerstand 3 S4 = 1001; Zaehlerstand 4 S5 = 0020; Zaehlerstand 5 S6 = 0001; Zaehlerstand 6 Viele Grüße der Phil
Hi ich hab auch ma paar fragen zu einem GAL16V8D ich mache gerade eine Ausbildung und wir sollen etwas über dieses GAL Element herausfinden ich hab aber keinen plan davon T.T kann mir jemand helfen???
a) wozu die Leichenfledderei an dem alten Thread? b) google bzw. Datenblatt dürfte hilfreich sein
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.