MODULE abstimm
"Abstimmungsanzeige
"Die Anzahl der Ja-Stimmen (1) von 4 Teilnehmern (a,b,c,d) wird ermittelt
"und als Dualzahl und als Leuchtband (Balkenanzeige) dargestellt.
@dcset; "Don't-Care-Set: für max. Vereinfachung in der 2.Funktionstabelle
DECLARATIONS "********* Ein- und Ausgänge ************************************
a,b,c,d PIN 25,26,27,28; "4 Teilnehmer (DIP-Schalter)
d2..d0 PIN 3,4,5 ISTYPE'BUFFER,COM'; "obere 3 LEDs für Dualzahl
l4..l1 PIN 7,8,9,10 ISTYPE'BUFFER,COM'; "untere 4 LEDs für Leuchtband
"********************* SET Deklarationen ************************************
abstimmer = [d,c,b,a]; "Zusammenfassung der Teilnehmer
dualzahl = [d2..d0]; "Anzeige einer Dualzahl
leuchtband = [l4..l1]; "Anzeige als Leuchtband
EQUATIONS "*******************************************************************
TRUTH_TABLE "*********** Funktionstabelle Dualzahl ermitteln *****************
( abstimmer -> dualzahl) "Eingänge -> Ausgänge
"([d ,c ,b ,a ] -> [d2,d1,d0]) wäre auch möglich.
[0 ,0 ,0 ,0 ] -> 0; "keine Ja-Stimme
[0 ,0 ,0 ,1 ] -> 1; "1 Ja-Stimme = Anzahl der Einsen von d c b a
[0 ,0 ,1 ,0 ] -> 1; "1 Ja-Stimme
[0 ,0 ,1 ,1 ] -> 2; "2 Ja-Stimmen
[0 ,1 ,0 ,0 ] -> 1;
[0 ,1 ,0 ,1 ] -> 2;
[0 ,1 ,1 ,0 ] -> 2;
[0 ,1 ,1 ,1 ] -> 3;
[1 ,0 ,0 ,0 ] -> 1;
[1 ,0 ,0 ,1 ] -> 2;
[1 ,0 ,1 ,0 ] -> 2;
[1 ,0 ,1 ,1 ] -> 3;
[1 ,1 ,0 ,0 ] -> 2;
[1 ,1 ,0 ,1 ] -> 3;
[1 ,1 ,1 ,0 ] -> 3;
[1 ,1 ,1 ,1 ] -> 4;
TRUTH_TABLE "************ Funktionstabelle Leuchtband *************************
( dualzahl -> leuchtband) "Eingänge -> Ausgänge
"([d2,d1,d0] -> [l4,l3,l2,l1]) wäre auch möglich
0 -> [0 ,0 ,0 ,0 ]; "alle LEDs aus
1 -> [0 ,0 ,0 ,1 ]; "1 LED an
2 -> [0 ,0 ,1 ,1 ]; "2 LEDs an
3 -> [0 ,1 ,1 ,1 ]; "3 LEDs an
4 -> [1 ,1 ,1 ,1 ]; "4 LEDs an
" Dualzahlen 5 bis 7 werden als Don't-Care behandelt, da oben @dcset steht
" könnte man auch hier angeben: 5 -> [.x.,.x.,.x.,.x.]; usw.
TEST_VECTORS "************* Simulation ***************************************
(abstimmer -> leuchtband); "Eingänge -> Ausgänge
0 -> .x.; "DesignExpert benoetigt dies !??
@const i = 0; "Angangswert der Zählvariablen
@repeat 16 "alle 16 Möglichkeiten testen
{ i -> [.x.,.x.,.x.,.x.];
@const i = i+1; "Zählvariable um 1 erhöhen
}
END
Vom Compiler erzeugte Gleichungen:
(gleiches Ergebnis bei Abstimm und abstimm2)

Simulationsergebnis:

