Laboratorium2-ISPSynarioSystem.pdf

(80 KB) Pobierz
ISP Synario System – laboratorium Synario.2
ISP Synario System – Laboratorium 2
Sterowanie 4 urz dzeniami przy zadanej liczbie pracuj cych urz dze i urz dze w stanie awarii
Układ ma za zadanie sterowa 4 urz dzeniami (sygnały Go0..Go3) zgodnie z nast puj cymi regułami:
Ilo zał czonych urz dze jest podawana na dwóch bitach (Cnt1 - MSB, Cnt0 - LSB). Sygnały Off0..Off3
podaj , czy oraz które urz dzenie jest w stanie wył czenia z u ytku (na skutek awarii lub remontu). Zało eniem
jest, e co najwy ej jedno urz dzenie mo e by wył czone z u ytku. Zał czenia lub wył czenia urz dze mog
odbywa si po jednym urz dzeniu (czyli np. maj c zał czonych 2 urz dzenia mo liwe jest wył czenie jednego
i przej cie do stanu zał czenia jednego urz dzenia, lub zał czenie jednego i przej cie do stanu zał czenia trzech
urz dze ).
Funkcj kontroli zał czania lub wył czania jednego urz dzenia na raz zrealizowa przy pomocy
diagramu stanów (maszyny stanów), natomiast zał czanie/wył czanie odpowiedniej ilo ci urz dze przy danych
urz dzeniach wył czonych z u ytku zrealizowa na tablicy prawdy (truth_table).
Jako nadrz dn cz projektu u y schematu w nast puj cej postaci:
- 1 -
774509459.002.png
ISP Synario System – laboratorium Synario.2
Definicja bloku diagramu stanów jest przedstawiona poni ej. Zawiera ona definicje sygnałów
wej ciowych ( In0 , In1 , Areset , CLK ) oraz definicje rejestru stanu, w którym przechowywany,
zapami tywany jest aktualny stan diagramu stanów, jak równie deklaracj nazw stanów ( S0..S3 ) oraz
makrodefinicje Inputs oraz Outputs, ułatwiaj ce korzystanie z sygnałów In0, In1, Out0, Out1 .
Poniewa diagram stanu zaimplementowany jest przy pomocy elementów pami taj cych (przerzutniki),
w zwi zku z tym niezb dne s dwa dodatkowe sygnały: zegarowy oraz resetuj cy. Sygnał resetuj cy mo e
wyst powa w dwóch wersjach: synchronicznej i asynchronicznej.
Sekcja equations zawiera jedno równanie przypisuj ce wej ciu zegarowemu zintegrowanego rejestru SReg
wej cie definiowanego bloku: CLK .
Nast pna dyrektywa @dcset okre la sposób optymalizacji u yty w tym bloku (odnosi si ona nie tylko
do diagramu stanów!!!), mianowicie optymalizacj uwzgl dniaj c zbiór warto ci nieokre lonych ( dcset =
don’t care set). Optymalizator pakietu Synario napotykaj c tak dyrektyw od miejsca jej wyst pienia b dzie za
warto ci nieokre lone podstawiał Prawd lub Fałsz.
Ostatnia cz diagramu stanów deklaruje sygnał AReset jako reset asynchroniczny, wprowadzaj cy
diagram stanów w stan S0 (poniewa po wł czeniu układu, przerzutniki znajduj si w niezdefiniowanych
stanach, a wi c i diagram stanów znajduje si w niezdefiniowanym stanie, nale y go wyresetowa .
stated.abl:
MODULE StateD
In0,In1,AReset,CLK pin;
Out0,Out1 pin istype 'com';
SReg state_register;
S0..S3 state;
Inputs = [In1,In0];
Outputs = [Out1,Out0];
equations
SReg.clk = CLK;
@dcset
state_diagram SReg
state S0:
Outputs=[0,0];
if( Inputs==[0,1] ) then goto S1;
else S0;
state S1:
Outputs=[0,1];
if( Inputs==[0,0] ) then goto S0;
else if( Inputs==[1,0] ) then goto S2;
else S1;
state S2:
Outputs=[1,0];
if( Inputs==[0,1] ) then goto S1;
else if( Inputs==[1,1] ) then goto S3;
else S2;
state S3:
Outputs=[1,1];
if( Inputs==[1,0] ) then goto S2;
else S3;
async_reset S0: AReset;
END
- 2 -
774509459.003.png
ISP Synario System – laboratorium Synario.2
Zawarto bloku TTable jest samowyja niaj ca. Po napotkaniu stanów po lewej stronie, wyj cia nale y ustawi
w stany zdefiniowane po prawej.
ttable.abl:
MODULE TTable
Cnt_b0..Cnt_b1, Off0..Off3 pin;
Go0..Go3 pin istype 'com';
truth_table( [Cnt_b1..Cnt_b0, Off0..Off3]->[Go0..Go3] )
[ 0,0, 0,0,0,0 ]->[ 0,0,0,0 ];
[ 0,0, 1,0,0,0 ]->[ 0,0,0,0 ];
[ 0,0, 0,1,0,0 ]->[ 0,0,0,0 ];
[ 0,0, 0,0,1,0 ]->[ 0,0,0,0 ];
[ 0,0, 0,0,0,1 ]->[ 0,0,0,0 ];
[ 0,1, 0,0,0,0 ]->[ 1,0,0,0 ];
...
[ 1,1, 0,0,0,1 ]->[ 1,1,1,0 ];
END
- 3 -
774509459.004.png
ISP Synario System – laboratorium Synario.2
Poni ej przedstawiono przykładowe wektory testowe dowodz ce poprawno ci rozwi zania.
mixed.abv:
module Mixed
Cnt0..Cnt1, AReset, CLK, Off0..Off3 pin;
Go0..Go3 pin istype 'com';
c=.c.;
x=.x.;
test_vectors( [AReset, CLK, Cnt1..Cnt0, Off0..Off3]->[Go0..Go3])
[ 1, 0, 0,0, 0,0,0,0 ] -> [ x, x, x, x ];
[ 0, c, 0,0, 0,0,0,0 ] -> [ x, x, x, x ];
[ 0, c, 0,0, 0,1,0,0 ] -> [ x, x, x, x ];
[ 0, c, 0,1, 0,1,0,0 ] -> [ x, x, x, x ];
[ 0, c, 1,1, 0,1,0,0 ] -> [ x, x, x, x ];
[ 0, c, 1,0, 0,1,0,0 ] -> [ x, x, x, x ];
[ 0, c, 1,1, 0,1,0,0 ] -> [ x, x, x, x ];
[ 0, c, 1,1, 0,0,1,0 ] -> [ x, x, x, x ];
[ 0, c, 1,1, 0,0,0,1 ] -> [ x, x, x, x ];
[ 0, c, 0,1, 0,0,0,1 ] -> [ x, x, x, x ];
[ 0, c, 1,0, 0,0,0,1 ] -> [ x, x, x, x ];
[ 0, c, 0,1, 0,0,1,0 ] -> [ x, x, x, x ];
[ 0, c, 0,0, 0,0,1,0 ] -> [ x, x, x, x ];
end
- 4 -
774509459.005.png 774509459.001.png
Zgłoś jeśli naruszono regulamin