: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

(Berücksichtigung der Signallaufzeiten nur bei Timing-Simulation)
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
