Das folgende Beispiel dient nur zur Demonstration. Es zeigt eine mögliche Einbindung der im Abschnitt 3 beschriebenen Tabelle.
Diese Dateien können im 5. Download-Berich gedownloadet werden.
Das obige Bild zeigt die sehr einfache Schaltung dieses Demonstrationsbeispiels. Sie besteht
im Wesentlichen aus dem zu programmierenden Logikbausteins (IC1) vom Typ
EPM7064 und der 16-Segment-Anzeige (LD1) vom Typ PSA08-12EWA. Der
Logikbaustein ist ein so genanntes CPLD (Complex Programmable Logic Device).
Die 10polige Anschlussleiste JTAG dient zur Programmierung des Logikbausteins IC1.
Die Programmierung erfolgt mit einem speziellen Downloadkabel.
Die Kondensatoren C1 bis C3 dienen zur Pufferung der Betriebsspannung für den Logikbaustein.
Eine Takterzeugung für den Logikbaustein ist hier nicht notwendig, da die programmierte Logik eine reine kombinatorische Logik in Form einer sehr großen Wahrheitstabelle ist. Aus demselben Grund ist auch keine Reset-Schaltung notwendig. Die Pins 43 (Takt) und 1 (Reset) bleiben daher unbeschaltet.
Die Widerstände R1 bis R16 sind so genannte Strombegrenzungswiderstände, während das Widerstandsarray R17 als so genannte Pull-Up-Widerstände für die Eingänge dienen.
Die Stromversorgung kann zwischen 2.5V und 5V liegen, wobei die Tendenz zu niedrigen Betriebsspannung geht, da hier die Verlustleistung deutlich geringer ist.
%****************************************************************************% %* Demonstrationsbeispiel 1 zum 16-Segment-Dekoder (in AHDL) *% %* *% %* CPLD-Typ: EPM7064SLC44-10 *% %* *% %* Entwickler: Buchgeher Stefan *% %* Entwicklungsbeginn: 11. Juni 2005 *% %* Funktionsfaehig seit: 11. Juni 2005 *% %* Letzte Bearbeitung: 8. Juli 2005 *% %****************************************************************************% %***************** Include-Dateien ******************************************% include "16_SEGM_DEKODER.INC"; %***************** Definition der Ein- und Ausgaenge ************************% SUBDESIGN 16_Segment_Dekoder ( inASCII[6..0] : INPUT; a,b,c,d,e,f,g,h : OUTPUT; k,m,n,p,r,s,t,u : OUTPUT; ) %***************** Definition der Variablen *********************************% VARIABLE iAnzeige : 16_SEGM_DEKODER; %***************** Beginn der Schaltungsbeschreibung ************************% BEGIN iAnzeige.in[] = inASCII[]; a = !iAnzeige.out[15]; b = !iAnzeige.out[14]; c = !iAnzeige.out[13]; d = !iAnzeige.out[12]; e = !iAnzeige.out[11]; f = !iAnzeige.out[10]; g = !iAnzeige.out[9]; h = !iAnzeige.out[8]; k = !iAnzeige.out[7]; m = !iAnzeige.out[6]; n = !iAnzeige.out[5]; p = !iAnzeige.out[4]; r = !iAnzeige.out[3]; s = !iAnzeige.out[2]; t = !iAnzeige.out[1]; u = !iAnzeige.out[0]; END;
Die in AHDL geschriebene Software besteht hier nur aus der Einbindung der Wahrheitstabelle vom Abschnitt 3 und der Definition der Ein- und Ausgänge. Die Einbindung erfolgt mit Hilfe der Include-Anweisung
include "16_SEGM_DEKODER.INC";
Bei den Ausgängen ist anzumerken, dass diese lowaktiv sind, da ja eine Anzeige mit gemeinsamer Anode verwendet wird. Das bedeutet, dass ein Segment nur dann leuchten kann, wenn der Ausgang des CPLD low ist. In der Software bedeutet dass, dass diese Ausgänge invertiert werden müssen. Diese Invertierung erfolgt mit "!" zB.
a = !iAnzeige.out[15];
Die Software benötigt 61 Makrozellen, füllt also das verwendete CPLD (mit 64 Makrozellen) fast vollständig aus.
Zu diesem Zweck kann im Download-Bereich ein Layout (im Ordner HArdware) gedownloadet und ausgedruckt werden.
Selbstverständlich kann eine eigene Platine entworfen werden, die den eigenen Anforderungen entspricht.
Das Bestücken einer Platine ist erst dann sinnvoll, wenn alle für diese Platine benötigten Bauteile vorhanden sind. Es sollten generell nur erstklassige und neuwertige Bauteile verwendet werden. Auf Bauteile aus ausgeschlachteten Geräten sollte grundsätzlich verzichtet werden, da ihre Funktionalität nicht gewährleistet ist, und eine unnötige Fehlersuche dadurch vermieden werden kann.
Weiters sollte ausreichend Platz und vor allem ausreichend Zeit für die Bestückung und Verdrahtung der Platinen vorhanden sein.
Die Bauelemente entsprechend den unteren Bildern (Bauteilseite und Lötseite) der folgenden Reihenfolge, der Stückliste und dem Schaltplan bestücken. Die nach dem anlöten überstehenden Anschlüsse mit einem kleinen Seitenschneider entfernen.
Reihenfolge zur Bestückung der Platine:
Nr. Bezeichnung St. Liefe- Bestell E- Bemerkungen rant -Nr. Preis ------------------------------------------------------------------------------------ R1 - R16 Widerstand 120 Ohm 16 Farnell 613-599 0,028 SMD 1206 R7 Widerstandsarray 8x1k 1 Conrad 414190 0,33 R18, R19 Widerstand 0 Ohm 2 Farenll 772-240 0,028 SMD 1206 C1, C2 Keramikkondensator 22pF 2 Conrad 453366 0,35 220nF (RM5,08) C3 Elko 22µF/25V 1 Conrad 460575 0,15 LD1 16-Segment-Anzeige 1 RS 451-6622 2,83 (PSA08-12EWA) IC1 EPM7064SLV44-10 1 Farnell 300-5860 9,60 PLCC-Fassung 44polig 1 Conrad 189731 1,15 für IC1 Stiftleiste 2reihig 1 Conrad 732478 0,79 Preis für 2x36polig (2x5polig) (für JTAG) Buchsenleiste 7polig 2 Conrad 740438 1,15 Preis für 32polig (für ASCII-Eingäng) Buchsenleiste 9polig 2 Conrad 740438 1,15 Preis für 32polig (für LD) Platinen-Basismaterial 1 Conrad 529214 1,95 Preis für 75x100mm (einseitig) Distanz M3x10 4 (optional) Mutter M3x10 4 (optional) Zahnscheibe M3x10 4 (optional)