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)