MezData-Logo Lösungen Button :ISP: Namen der internen D-Flipflop- Anschlüsse (Dot-Extensions)

Beispiel: (Projektname: DFF)

  "  Takt (z.B. 1 Hz) am Takt-Eingang C (Clock) oder mit Taster
  "  Schalter am Daten-Eingang D
  "  Schalter am asynchronem Reset-Eingang (AR)

DECLARATIONS  "********** Ein- und Ausgänge ***********************
  takt  PIN 11;                    "Takt vom Taktgernerator
  daten PIN 19;                    "Eingang Schalter1 heisst Daten
  reset PIN 18;                    "Eingang von Taster2 heisst Reset
  dff   PIN 10 ISTYPE'BUFFER,REG'; 
               "REG bedeutet: internes D-Flipflop verwenden, 
               "das dff genannt wird und dessen Q-Ausgang 
               "mit Pin 10 verbunden wird.

EQUATIONS  "********** Funktionsgleichungen ***********************
  dff.d   = daten;  "D-Eing. des FFs mit Schalter Daten beeinflussen
  dff.ar  = reset;  "Reset-Eing. des FFs mit Taster Reset 
  dff.clk = takt;   "Takt des D-FF vom Taktgenerator

  "Untersuchung eines D-FFs 
  "  Takt (z.B. 1 Hz) am Takt-Eingang C (Clock) oder wahlweise mit Taster
  "  Schalter am Daten-Eingang D
  "  Schalter am asynchronem Reset-Eingang (AR)
DECLARATIONS  "********** Ein- und Ausgänge ******************************
  takt    PIN 11;                    "Takt vom Taktgernerator
  daten   PIN 19;                    "Eingang von Schalter1 heisst Daten
  reset   PIN 18;                    "Eingang von Taster2 heisst Reset
  dff     PIN 10 ISTYPE'BUFFER,REG'; "REG heisst D-Flipflop verwenden, 
                                     "das dff genannt wird und dessen 
                                     "Q-Ausgang mit Pin 10 verbunden wird.
EQUATIONS  "********** Funktionsgleichungen ****************************
  dff.d   = daten;  "D-Eing. des Flipflops mit Schalter Daten beeinflussen
  dff.ar  = reset;  "Reset-Eing. des FF mit Taster Reset beeinflussen
  dff.clk = takt;   "Takt des D-FF vom Taktgenerator

TEST_VECTORS "********** Simulation **************************************

  ([  takt ,daten,reset ] -> dff )
   [   .c. ,  0  ,  0   ] -> .x.;  ".c. ansteig. und abfallende Taktflanke
   [   .c. ,  1  ,  0   ] -> .x.;  "FF setzen
   [   .c. ,  0  ,  0   ] -> .x.;  "FF rücksetzen
   [   .c. ,  1  ,  0   ] -> .x.;  "FF setzen
   [   .c. ,  1  ,  0   ] -> .x.;  "FF bleibt gesetzt
   [    0  ,  1  ,  1   ] -> .x.;  "Ist asynchroner Reset dominant?
   [   .c. ,  1  ,  1   ] -> .x.;  "Ist asynchroner Reset dominant?
   [   .c. ,  1  ,  0   ] -> .x.;  "FF setzen
END

Simulationsergegnis:

(Berücksichtigung der Signallaufzeiten nur bei Timing-Simulation)

D-FF so beschaltet, dass es bei jedem Takt toggelt (=> T-FF)

MODULE dfftog

DECLARATIONS "************* Ein- und Ausgänge *****************************
  takt   PIN 11;                      "Takteingang Y0
  reset  PIN 18;                      "Rücksetzen mit Taster 2
  bit0   PIN 10 ISTYPE'BUFFER,REG';"internes D-FF verwenden, FF heisst bit0

EQUATIONS "**************** Zähler-Gleichungen ****************************
  bit0.d = !bit0.q;    "invertierten FF-Ausgang .q auf Dateneingang .d
                       "zurückführen, d.h. das D-FF toggelt bei jedem Takt
                       "alternative Darstellung:  bit0 := !bit0    oder 
                       "                          bit0 := !bit0.fb;
  bit0.clk = takt;     "Takt vom Taktgenerator
  bit0.ar  = reset;    "asynchroner Reset mit Taster2

TEST_VECTORS "************* Simulations-Vektoren **************************
            ([takt,reset] -> bit0); "Eingäng Takt,Reset -> Ausgang bit0 
 @repeat 4 { [.c. , 0   ] -> .x.; } "das in { } folgende 4 mal wiederholen
 @repeat 2 { [.c. , 1   ] -> .x.; } "Takt ist low-high-low .c., reset 0,1
 @repeat 4 { [.c. , 0   ] -> .x.; } "der Ausgang wird beobachtet, daher 
                                    "don't care .x.
END

Simulationsergebnis