mikrocontroller.net

Forum: FPGA, VHDL & Co. GAL16V8D Würfel Programmieren


Autor: Weble (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Weble (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;(

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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".

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Weble (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Nitram L. (nitram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
_


Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: bastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach is doch alles kacke

Autor: bastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Unbekannt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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???

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
a) wozu die Leichenfledderei an dem alten Thread?
b) google bzw. Datenblatt dürfte hilfreich sein

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.