MezData-Logo

Abstimmanzeige mit Funktionstabellen

 

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:

Projekt abstimm2 mit Berechnung (!) und Logik