Page 2 of 2

PostPosted: Tue Feb 26, 2013 12:00 am
by klaus boda
Hallo,

da ich einige Fehlermeldungen hatte, stellte mir Ag seine Dateien zur Verfügung.
Ich habe wie in seiner Idee Inverter vor die obufs
(Symbol: Logic -> inv) gesetzt.

Nun funktionieren auch Common Anode Module.

Ansonsten sei noch zu erwähnen, dass S1 gegen 3V3 geschaltet werden muss, um hochzuzählen.
Hängt der Eingang "in der Luft", kommt es zu Störungen beim Zählen.

Vielen Dank an Ag!

LG Klaus

PostPosted: Sun Mar 03, 2013 12:00 am
by ag
Hallo an alle,

ich komme mit der Übungsaufgabe nicht klar und benötige Hilfe.

Ich habe mir die Umsetzung so vorgestellt: 7 LUT4 Symbole, je eine für jedes Segment im 7-Segment Anzeige. Nachdem ich die Schaltung entsprechend aufgebaut hatte, wollte ich dann für jedes Symbol die Bitwerte zuordnen, für die ein High am Ausgang gelten soll, damit das Segment zum leuchten gebracht wird. Als ich dazu die Properites angesehen habe, wüsste ich nicht weiter. Ich habe immer weider durchgelesen und nachgedacht, aber ich komme einfach nicht dahinter, wie die LUTs funktionieren, bzw. was ich für INIT Werte eintragen soll, oder ob mein erdachtes Lösungsweg überhaupt funktionieren kann.

Kann mir jemand auf die Sprünge helfen?

Nachtrag:
Inzwischen habe ich folgender Link gefunden, was mir besagt dass ich prinzipiell die richtige Lösungsweg eingeschlagen habe.

http://jimthecactus.livejournal.com/124123.html

Dennoch habe ich noch nicht begriffen, wie die 7 LUT4s zu pflegen sind.

Besten Dank für eine Aufklärung,
Ag

PostPosted: Mon Mar 04, 2013 12:00 am
by ag
Hallo an alle,

Dennoch habe ich noch nicht begriffen, wie die 7 LUT4s zu pflegen sind.


Ich glaube, dass ich es nun kapiert habe, dank dieser Link:

http://www.markharvey.info/fpga/init/index.html

Beispiel: LUT4_1 soll das a-Segment ansteuern. Das a-Segment soll leuchten bei Ziffern 0, 2, 3, 5, 6, 7, 8, und 9. Also bei folgende Eingangswerte:

0 = 0000
2 = 0010
3 = 0011
5 = 0101
6 = 0110
7 = 0111
8 = 1000
9 = 1001

Das ergibt folgende truth table:

I3 I2 I1 I0 O

0 0 0 0 0
0 0 0 1 1 2
0 0 1 0 0
0 0 1 1 0

0 1 0 0 1
0 1 0 1 0 1
0 1 1 0 0
0 1 1 1 0

1 0 0 0 0
1 0 0 1 0 C
1 0 1 0 1
1 0 1 1 1

1 1 0 0 1
1 1 0 1 1 F
1 1 1 0 1
1 1 1 1 1

Ergibt also INIT Wert für LUT4_1 = FC12

Das werde ich mal ausprobieren

Nachtrag:

Es hat wunderbar funktioniert, nur ist die Schaltungslogik invertiert gegenüber die ursprüngliche Dekoder mit Logik Gattern. Die Logik passt also für common anode 7-segment Anzeigen. Für common cathod Anzeigen müssen entweder Inverter dazwischen geschaltet werden, oder aber beim Berechnen der INIT Werte 0 und 1 beim Output tauschen. Im Beispiel oben für a-Segment wäre das dann so:

I3 I2 I1 I0.........CA CC.....CA.........CC

0 0 0 0...............0 1
0 0 0 1...............1 0........2 ........D
0 0 1 0...............0 1
0 0 1 1...............0 1

0 1 0 0...............1 0
0 1 0 1...............0 1........ 1........E
0 1 1 0...............0 1
0 1 1 1...............0 1

1 0 0 0...............0 1
1 0 0 1...............0 1........ C........3
1 0 1 0...............1 0
1 0 1 1...............1 0

1 1 0 0...............1 0
1 1 0 1...............1 0........ F........0
1 1 1 0...............1 0
1 1 1 1...............1 0

Ergibt also INIT Wert für LUT4_1 = FC12 für common anode
............................................. = 03ED für common cathode

Wer es mag, hier ist die vollständige common anode Version.


Viele Grüße,
Ag