1 Considerare il circuito descritto dal seguente listato VERILOG

Transcript

1 Considerare il circuito descritto dal seguente listato VERILOG
Esercizio 1a - 1
Considerare il circuito descritto dal seguente listato VERILOG. Individuare un hazard (se ne
sono presenti piu` di uno, basta indicarne uno), dire per quali ingressi e transizione avviene,
scrivere un testbench che evidenzi solamente l’hazard di interesse introducendo un opportuno
ritardo nel circuito (solo due segnali che non cambiano ed uno che varia).
Esercizio 1a - 2
Considerare il circuito descritto dal seguente listato VERILOG. Individuare un hazard (se ne
sono presenti piu` di uno, basta indicarne uno), dire per quali ingressi e transizione avviene,
scrivere un testbench che evidenzi solamente l’hazard di interesse introducendo un opportuno
ritardo nel circuito (solo due segnali che non cambiano ed uno che varia).
module mlog(z,a,b,c);
input a,b,c;
output z;
not n1(na,a);
not n2(nb,b);
not n3(nc,c);
nor n4(x1,na,b);
nor n5(x2,nb,na);
nor n6(x3,b,c);
nor n7(z,x1,x2,x3);
endmodule
module mlog(z,a,b,c);
input a,b,c;
output z;
not n1(na,a);
not n2(nb,b);
not n3(nc,c);
nor n4(x1,c,b);
nor n5(x2,c,na);
nor n6(x3,na,nc);
nor n7(z,x1,x2,x3);
endmodule
Soluzione
Mappa di karnaugh
Soluzione
Mappa di karnaugh
BC
A
0
1
00
0
0
01
BC
11
10
A
0
0
0
0
1
00
0
0
01
11
10
0
0
0
L’hazard considerato si ha per
A=…1....... B=….0/1.... C=…0 o 1...... (scrivere 0/1 o una freccia per l’ingresso in transizione)
L’hazard considerato si ha per
A=…..1..... B=….0 o 1.... C=…0/1....... (scrivere 0/1 o una freccia per l’ingresso in transizione)
Introduco un ritardo di….......#1....................... nella porta …...........n2.................
Introduco un ritardo di…..........#1.................... nella porta …............n3................
Il testbench
module tb;
reg a,b,c;
mlog dut(z,a,b,c);
initial
begin
a=1; b=0; c=1; // o c=0
#10 b=1;
#10 b=0;
end
endmodule
Il testbench
module tb;
reg a,b,c;
mlog dut(z,a,b,c);
initial
begin
a=1; b=0; c=0; // o b=1
#10 c=1;
#10 c=0;
end
endmodule
Esercizio 1a -3
Considerare il circuito descritto dal seguente listato VERILOG. Individuare un hazard (se ne
sono presenti piu` di uno, basta indicarne uno), dire per quali ingressi e transizione avviene,
scrivere un testbench che evidenzi solamente l’hazard di interesse introducendo un opportuno
ritardo nel circuito (solo due segnali che non cambiano ed uno che varia).
Esercizio 1a - 4
Considerare il circuito descritto dal seguente listato VERILOG. Individuare un hazard (se ne
sono presenti piu` di uno, basta indicarne uno), dire per quali ingressi e transizione avviene,
scrivere un testbench che evidenzi solamente l’hazard di interesse introducendo un opportuno
ritardo nel circuito (solo due segnali che non cambiano ed uno che varia).
module mlog(z,a,b,c);
input a,b,c;
output z;
not n1(na,a);
not n2(nb,b);
not n3(nc,c);
nand n4(x1,c,b);
nand n5(x2,c,na);
nand n6(x3,na,nc);
nand n7(z,x1,x2,x3);
endmodule
module mlog(z,a,b,c);
input a,b,c;
output z;
not n1(na,a);
not n2(nb,b);
not n3(nc,c);
nand n4(x1,na,b);
nand n5(x2,nb,na);
nand n6(x3,b,c);
nand n7(z,x1,x2,x3);
endmodule
Soluzione
Mappa di karnaugh
Soluzione
Mappa di karnaugh
BC
A
0
1
00
1
01
1
BC
11
1
1
10
1
A
0
1
00
1
01
1
11
1
1
10
1
L’hazard considerato si ha per
A=….0...... B=….0 o 1.... C=…..0/1..... (scrivere 0/1 o una freccia per l’ingresso in transizione)
L’hazard considerato si ha per
A=…..0..... B=…0/1..... C=…..0 o 1..... (scrivere 0/1 o una freccia per l’ingresso in transizione)
Introduco un ritardo di…..........#1.................... nella porta …...............n3.............
Introduco un ritardo di…..........#1.................... nella porta …......n2......................
Il testbench
module tb;
reg a,b,c;
mlog dut(z,a,b,c);
initial
begin
a=0; b=1; c=0; //o b=0
#10 c=1;
#10 c=0;
end
endmodule
Il testbench
module tb;
reg a,b,c;
mlog dut(z,a,b,c);
initial
begin
a=0; b=0; c=1; //o c=0;
#10 b=1;
#10 b=0;
end
endmodule
Esercizio 1b - 1
La macchina a stati, descritta dalla seguente tabella dello stato successivo, si comporta di fatto come un
contatore di fronti. Dopo un certo numero di fronti (con EN a 1) mette la sua unica uscita Z a 1. La macchina
e` dotata di un ingresso RESET attivo alto che la riporta allo stato A.
Tale macchina e` stata implementata con l’assegnamento degli stati come da tabella delle transizioni (vedi tra
parentesi) e realizzando le reti combinatorie in accordo con gli implicanti evidenziati nelle mappe di Karnaugh.
Per un errore di progettazione del circuito stampato che la realizza c’e` una interferenza che fa si che quando
la macchina si trova nello stato 101, si attiva (con un piccolo ritardo) il clear (attivo basso) del flip-flop che ha
come uscita Q2. Completare la descrizione VERILOG strutturale, i moduli richiamati nelle parti gia`
disponibili nella soluzione, non sono da progettare (notare che tra l’altro e` da completare l’assign che
simula l’errore, manca la logica per gestire il reset e per ricavare Z). Dire in poche righe come si evidenzia il
malfunzionamento e che influenza ha sulla funzionalita` svolta dalla macchina. Scrivere un testbench che
permetta di evidenziare una situazione di malfunzionamento e tracciare i grafici che si ottengono in uscita
(solo uno zoom sulla zona dove si manifesta l’errore). Si consiglia di ragionare sugli stati non sui codici
binari per quanto possibile (cioe` non mettersi a fare i grafici dei singoli bit).
EN
EN
Z
Z
0
1
Q2Q1Q0 (S)
0
1
A
A
B
0
000 (A)
000
100
0
B
B
C
0
100 (B)
100
101
0
C
C
D
0
101 (C)
101
110
0
D
D
E
0
110 (D)
110
111
0
E
E
A
1
111 (E)
111
000
1
S*
Q2*Q1*Q0*
Tabella dello stato successivo
Tabella delle transizioni
Verilog strutturale
module macstati(ck,EN,Z,RESET);
input EN,ck,RESET;
output Z;
logicaD2 xd2(D2,Q0,Q1,Q2,EN) ; //simula la logica D1
logicaD1 xd1(D1,Q0,Q1,Q2,EN) ; //simula la logica D1
logicaD0 xd0(D0,Q0,Q1,Q2,EN) ; //simula la logica D0
flipflopD dd0(ck,D0,Q0,clr_l) ;
flipflopD dd1(ck,D1,Q1,clr_l) ;
flipflopD dd2(ck,D2,Q2,clr2_l) ;
assign #1 clr2_l= clr_l& (q2’|q1|q0’);//COMPLETARE! simula il disturbo
assign clr_l=~RESET;
assign z= q1& q0& q2;
Soluzione
Z
EN
A
B
C
D
E
0
A
B
C
D
E
1
B
C
D
E
A
XF
XG
XH
S*
0
0
0
0
1
Z
EN
Q2Q1Q0 (S)
000 (A)
100 (B)
101 (C)
110 (D)
111 (E)
0
000
100
101
110
111
1
100
101
110
111
000
0
0
0
0
1
001 (XF)
010 (XG)
011 (XH)
100
110
0
endmodule
Descrizione degli effetti del malfunzionamento
Quando avviene il malfunzionamento il contenuto del flip-flop diventa 001 (XF). Se EN vale 1 non ci si accorge del
difetto perche` prosegue in 110 che e` lo stesso stato in cui andrebbe comunque. Se EN vale 0 passa a 100 e se
torna EN a 1 reincontra l’errore, si allunga di diversi passi il numero di colpi di clock che servono per avere l’uscita
uguale a 1.
Q2*Q1*Q0*
Testbench
module tb;
reg ck, EN, RESET;
macstati (ck, EN, Z, RESET);
Esercizio 1b - 2
initial
begin
RESET=0; EN=0;
#7 RESET=1;
#12 RESET=0;
#10 EN=1
#200 EN=0 ;
#10 $stop ;
end
La macchina a stati, descritta dalla seguente tabella dello stato successivo, si comporta di fatto come un
contatore di fronti. Dopo un certo numero di fronti (con EN a 1) mette la sua unica uscita Z a 1. La macchina
e` dotata di un ingresso RESET attivo alto che la riporta allo stato A.
Tale macchina e` stata implementata con l’assegnamento degli stati come da tabella delle transizioni (vedi tra
parentesi) e realizzando le reti combinatorie in accordo con gli implicanti evidenziati nelle mappe di Karnaugh.
Per un errore di progettazione del circuito stampato che la realizza c’e` una interferenza che fa si che quando
la macchina si trova nello stato 110, si attiva (con un piccolo ritardo) il clear (attivo alto) del flip-flop che ha
come uscita Q2. Completare la descrizione VERILOG strutturale, i moduli richiamati nelle parti gia`
disponibili nella soluzione, non sono da progettare (notare che tra l’altro e` da completare l’assign che
simula l’errore, manca la logica per gestire il reset e per ricavare Z). Dire in poche righe come si evidenzia il
malfunzionamento e che influenza ha sulla funzionalita` svolta dalla macchina. Scrivere un testbench che
permetta di evidenziare una situazione di malfunzionamento e tracciare i grafici che si ottengono in uscita
(solo uno zoom sulla zona dove si manifesta l’errore). Si consiglia di ragionare sugli stati non sui codici
binari per quanto possibile (cioe` non mettersi a fare i grafici dei singoli bit).
always #5 ck=~ck;
endmodule
EN
0
A
B
C
D
E
A
B
C
D
E
Grafici
CK
Z
1
B
C
D
E
A
0
0
0
0
1
Q2Q1Q0 (S)
000 (A)
100 (B)
101 (C)
110 (D)
111 (E)
S*
Tabella dello stato successivo
EN
EN
0
1
000
100
100
101
101
110
110
111
111
000
Q2*Q1*Q0*
Tabella delle transizioni
Z
0
0
0
0
1
STATO
100
001
110
111
000
100
Z
Soluzione
EN
A
B
C
D
E
0
A
B
C
D
E
XF
XG
XH
S*
EN
Z
1
B
C
D
E
A
0
0
0
0
1
Z
Q2Q1Q0 (S)
000 (A)
100 (B)
101 (C)
110 (D)
111 (E)
0
000
100
101
110
111
1
100
101
110
111
000
0
0
0
0
1
001 (XF)
010 (XG)
011 (XH)
110
100
0
Q2*Q1*Q0*
Verilog strutturale
module macstati(ck,EN,Z,RESET);
input EN,ck,RESET;
output Z;
logicaD2 xd2(D2,Q0,Q1,Q2,EN) ; //simula la logica D1
logicaD1 xd1(D1,Q0,Q1,Q2,EN) ; //simula la logica D1
logicaD0 xd0(D0,Q0,Q1,Q2,EN) ; //simula la logica D0
flipflopD dd0(ck,D0,Q0,clr) ;
flipflopD dd1(ck,D1,Q1,clr) ;
flipflopD dd2(ck,D2,Q2,clr2) ;
assign #1 clr2= clr |(q2 & q1 & q0’).;//COMPLETARE! simula il disturbo
assign clr=RESET;
assign z=q1& q0;
initial
begin
RESET=0; EN=0;
#7 RESET=1;
#12 RESET=0;
#10 EN=1
#200 EN=0 ;
#10 $stop ;
end
always #5 ck=~ck;
endmodule
Grafici
CK
EN
STATO
100
Z
endmodule
Descrizione degli effetti del malfunzionamento
Quando avviene il malfunzionamento il contenuto del flip-flop diventa 010 (XG). Se EN vale 0 non ci si accorge del
difetto perche` prosegue in 110 che e` lo stesso stato in cui andrebbe comunque. Se EN vale 1 passa a 100 e se
si innesca un loop per il quale non si arrivera` mai ad avere l’uscita uguale a 1.
Testbench
module tb;
reg ck, EN, RESET;
macstati (ck, EN, Z, RESET);
101
010
100
101
010
Esercizio 1b - 3
La macchina a stati, descritta dalla seguente tabella dello stato successivo, si comporta di fatto come un
contatore di fronti. Dopo un certo numero di fronti (con EN a 1) mette la sua unica uscita Z a 1.. La macchina
e` dotata di un ingresso RESET_L attivo basso che la riporta allo stato A.
Tale macchina e` stata implementata con l’assegnamento degli stati come da tabella delle transizioni (vedi tra
parentesi) e realizzando le reti combinatorie in accordo con gli implicanti evidenziati nelle mappe di Karnaugh.
Per un errore di progettazione del circuito stampato che la realizza c’e` una interferenza che fa si che quando
la macchina si trova nello stato 101, si attiva (con un piccolo ritardo) il clear (attivo alto) del flip-flop che ha
come uscita Q2. Completare la descrizione VERILOG strutturale, i moduli richiamati nelle parti gia`
disponibili nella soluzione, non sono da progettare (notare che tra l’altro e` da completare l’assign che
simula l’errore, manca la logica per gestire il reset e per ricavare Z). Dire in poche righe come si evidenzia il
malfunzionamento e che influenza ha sulla funzionalita` svolta dalla macchina. Scrivere un testbench che
permetta di evidenziare una situazione di malfunzionamento e tracciare i grafici che si ottengono in uscita
(solo uno zoom sulla zona dove si manifesta l’errore). Si consiglia di ragionare sugli stati non sui codici
binari per quanto possibile (cioe` non mettersi a fare i grafici dei singoli bit).
EN
EN
Z
Z
0
1
Q2Q1Q0 (S)
0
1
A
A
B
0
000 (A)
000
100
0
B
B
C
0
100 (B)
100
101
0
C
C
D
0
101 (C)
101
110
0
D
D
E
0
110 (D)
110
111
0
E
E
A
1
111 (E)
111
000
1
S*
Q2*Q1*Q0*
Tabella dello stato successivo
Tabella delle transizioni
i
Verilog strutturale
module macstati(ck,EN,Z,RESET_L);
input EN,ck,RESET_L;
output Z;
logicaD2 xd2(D2,Q0,Q1,Q2,EN) ; //simula la logica D1
logicaD1 xd1(D1,Q0,Q1,Q2,EN) ; //simula la logica D1
logicaD0 xd0(D0,Q0,Q1,Q2,EN) ; //simula la logica D0
flipflopD dd0(ck,D0,Q0,clr) ;
flipflopD dd1(ck,D1,Q1,clr) ;
flipflopD dd2(ck,D2,Q2,clr2) ;
assign #1 clr2= clr | (q2 & q1’& q0);//COMPLETARE! simula il disturbo
assign z= q1 & q0;
assign clr=~RESET_L ;
Soluzione
Z
EN
A
B
C
D
E
0
A
B
C
D
E
1
B
C
D
E
A
XF
XG
XH
S*
0
0
0
0
1
Z
EN
Q2Q1Q0 (S)
000 (A)
100 (B)
101 (C)
110 (D)
111 (E)
0
000
100
101
110
111
1
100
101
110
111
000
0
0
0
0
1
001 (XF)
010 (XG)
011 (XH)
001
110
0
endmodule
Descrizione degli effetti del malfunzionamento
Quando avviene il malfunzionamento il contenuto del flip-flop diventa 001 (XF). Se EN vale 1 non ci si accorge del
difetto perche` prosegue in 110 che e` lo stesso stato in cui andrebbe comunque. Se EN vale 0 rimane in 001 e
quindi non si evidenzia alcun difetto.
Q2*Q1*Q0*
Testbench
module tb;
reg ck, EN, RESET;
macstati (ck, EN, Z, RESET);
Esercizio 1b - 4
initial
begin
RESET=0; EN=0;
#7 RESET=1;
#12 RESET=0;
#10 EN=1
#200 EN=0 ;
#10 $stop ;
end
La macchina a stati, descritta dalla seguente tabella dello stato successivo, si comporta di fatto come un
contatore di fronti. Dopo un certo numero di fronti (con EN a 1) mette la sua unica uscita Z a 1. La macchina
e` dotata di un ingresso RESET_L attivo basso che la riporta allo stato A.
Tale macchina e` stata implementata con l’assegnamento degli stati come da tabella delle transizioni (vedi tra
parentesi) e realizzando le reti combinatorie in accordo con gli implicanti evidenziati nelle mappe di Karnaugh.
Per un errore di progettazione del circuito stampato che la realizza c’e` una interferenza che fa si che quando
la macchina si trova nello stato 110, si attiva (con un piccolo ritardo) il clear (attivo basso) del flip-flop che ha
come uscita Q2. Completare la descrizione VERILOG strutturale, i moduli richiamati nelle parti gia`
disponibili nella soluzione, non sono da progettare (notare che tra l’altro e` da completare l’assign che
simula l’errore, manca la logica per gestire il reset e per ricavare Z). Dire in poche righe come si evidenzia il
malfunzionamento e che influenza ha sulla funzionalita` svolta dalla macchina. Scrivere un testbench che
permetta di evidenziare una situazione di malfunzionamento e tracciare i grafici che si ottengono in uscita
(solo uno zoom sulla zona dove si manifesta l’errore). Si consiglia di ragionare sugli stati non sui codici
binari per quanto possibile (cioe` non mettersi a fare i grafici dei singoli bit).
always #5 ck=~ck;
endmodule
EN
0
A
B
C
D
E
A
B
C
D
E
Grafici
CK
Z
1
B
C
D
E
A
0
0
0
0
1
Q2Q1Q0 (S)
000 (A)
100 (B)
101 (C)
110 (D)
111 (E)
S*
Tabella dello stato successivo
EN
EN
0
1
000
100
100
101
101
110
110
111
111
000
Q2*Q1*Q0*
Tabella delle transizioni
Z
0
0
0
0
1
i
STATO
100
001
110
111
000
100
Z
Soluzione
Z
EN
A
B
C
D
E
0
A
B
C
D
E
1
B
C
D
E
A
XF
XG
XH
S*
0
0
0
0
1
Z
EN
Q2Q1Q0 (S)
000 (A)
100 (B)
101 (C)
110 (D)
111 (E)
0
000
100
101
110
111
1
100
101
110
111
000
0
0
0
0
1
001 (XF)
010 (XG)
011 (XH)
110
110
0
Q2*Q1*Q0*
Verilog strutturale
module macstati(ck,EN,Z,RESET_L);
input EN,ck,RESET_L;
output Z;
logicaD2 xd2(D2,Q0,Q1,Q2,EN) ; //simula la logica D1
logicaD1 xd1(D1,Q0,Q1,Q2,EN) ; //simula la logica D1
logicaD0 xd0(D0,Q0,Q1,Q2,EN) ; //simula la logica D0
flipflopD dd0(ck,D0,Q0,clr_l) ;
flipflopD dd1(ck,D1,Q1,clr_l) ;
flipflopD dd2(ck,D2,Q2,clr2_l) ;
assign #1 clr2_l= clr_l& (q2’| q1’ |q0).;//COMPLETARE! simula il disturbo
assign z= q2 & q1 & q0;
assign clr_l=RESET _L ;
macstati (ck, EN, Z, RESET);
initial
begin
RESET=0; EN=0;
#7 RESET=1;
#12 RESET=0;
#10 EN=1
#200 EN=0 ;
#10 $stop ;
end
always #5 ck=~ck;
endmodule
Grafici
CK
EN
STATO
100
Z
endmodule
Descrizione degli effetti del malfunzionamento
Quando avviene il malfunzionamento il contenuto del flip-flop diventa 010 (XG). Sia che EN valga 0 o valga 1
rimane torna nello stato 110 che fa tornare in 010, quindi non si arrivera` mai ad avere l’uscita uguale a 1.
Testbench
module tb;
reg ck, EN, RESET;
101
010
010
010
010
Esercizio 2 - 1
Esercizio 2 -2
Si vuole realizzare una macchina a stati di Moore che gestisca una luce di occupato in una cabina elettorale.
La luce e` accesa quando qualcuno si trova dentro. Per identificare l’ingresso/uscita della persona sono a
disposizione due celle fotoelettriche in ingresso distanziate di pochi centimetri in orizzontale sul percorso di
accesso. L’ingresso della persona e` evidenziato dall’attivazione della prima, da un momento in cui entrambe
sono attive e dall’attivazione di solo la seconda. L’uscita e` caratterizzata dalla transizione opposta. Devono
esistere tutte e tre le fasi perche` l’ingresso o uscita sia ritenuta valida (cioe` la transazione e` finita quando le
due celle fotoelettriche tornano inattive), tutti gli altri casi sono da considerarsi abbagli o ripensamenti
sull’ingresso o sull’uscita. Gli ingressi sono quindi A e B (prima e seconda fotocellula), se la fotocellula e`
attraversata da qualcosa A (o B) vale 0. Quindi durante l’entrata di una persona la coppia di bit AB e`
caratterizzata dalle seguenti fasi ognuna di lunghezza imprecisata (anche piu` colpi di clock) 11 01 00 10 11,
la sequenza per l’uscita della persona invece da 11 10 00 01 11.
L’uscita Z vale 1 se c’e` una persona dentro, 0 se la cabina e` libera.
Il dispositivo che verra` realizzato avra` un tasto di reset attivabile solo quando si e` dentro la cabina (cioe` la
prima azione che si aspetta la macchina dopo il reset e` l’uscita di una persona).
Scrivere la tabella dello stato successivo, e l’uscita di una macchina che faccia tutto questo, se ne faccia un
assegnamento degli stati ragionato e ben giustificato e si scriva la descrizione Verilog algoritmica della
macchina cosi` ideata.
Si vuole realizzare una macchina a stati di Moore che gestisca una luce di occupato in una cabina elettorale.
La luce e` accesa quando qualcuno si trova dentro. Per identificare l’ingresso/uscita della persona sono a
disposizione due celle fotoelettriche in ingresso distanziate di pochi centimetri in orizzontale sul percorso di
accesso. L’ingresso della persona e` evidenziato dall’attivazione della prima, da un momento in cui entrambe
sono attive e dall’attivazione di solo la seconda. L’uscita e` caratterizzata dalla transizione opposta. Devono
esistere tutte e tre le fasi perche` l’ingresso o uscita sia ritenuta valida (cioe` la transazione e` finita quando le
due celle fotoelettriche tornano inattive), tutti gli altri casi sono da considerarsi abbagli o ripensamenti
sull’ingresso o sull’uscita. Gli ingressi sono quindi A e B (prima e seconda fotocellula), se la fotocellula e`
attraversata da qualcosa A (o B) vale 0. Quindi durante l’entrata di una persona la coppia di bit AB e`
caratterizzata dalle seguenti fasi ognuna di lunghezza imprecisata (anche piu` colpi di clock) 11 01 00 10 11,
la sequenza per l’uscita della persona invece da 11 10 00 01 11.
L’uscita Z vale 1 se c’e` una persona dentro, 0 se la cabina e` libera.
Il dispositivo che verra` realizzato avra` un tasto di reset attivabile solo quando si e` fuori dalla cabina (cioe` la
prima azione che si aspetta la macchina dopo il reset e` l’entrata di una persona).
Scrivere la tabella dello stato successivo, e l’uscita di una macchina che faccia tutto questo, se ne faccia un
assegnamento degli stati ragionato e ben giustificato e si scriva la descrizione Verilog algoritmica della
macchina cosi` ideata.
Soluzione
Soluzione
AB
S
SA
SB
SC
SD
SE
SF
SG
SH
SI
SL
00
01
SA**
SB
SC
SB
SC
SA**/SB**
SA**/SC**
SA**
SE**
SE**
SG
SE**
SG
SH
SE**/SG**
SH
11
SA
SA**
SA**
SE
SE
SE**
SE**
SA
10
SA**
SA**
SD
SD
SF
SF
SE**/SF**
SE**
Z
0
0
0
0
1
1
1
1
Stato
SA
SB
SC
SD
SE
SF
SG
SH
SI
SL
codifica
100
101
111
110
000
001
011
010
S
SA
SB
SC
SD
SE
SF
SG
SH
SI
SL
AB
00
01
SA**
SB
SC
SB
SC
SA**/SB**
SA**/SC**
SA**
SE**
SE**
SG
SE**
SG
SH
SE**/SG**
SH
11
SA
SA**
SA**
SE
SE
SE**
SE**
SA
10
SA**
SA**
SD
SD
SF
SF
SE**/SF**
SE**
Z
0
0
0
0
1
1
1
1
Stato
SA
SB
SC
SD
SE
SF
SG
SH
SI
SL
codifica
000
001
011
010
100
101
111
110
S*
** potevano essere scelti in modo diverso
S*
** potevano essere scelti in modo diverso
Giustificazione della scelta della codifica degli stati
Il reset porta nello stato SE, per agevolare il reset dei flip-flop viene quindi scelto per quello
000
Viene usato il negato del primo bit per codificare l’uscita. Gli altri sono in sequenza di Grey.
Giustificazione della scelta della codifica degli stati
Il reset porta nello stato SA, per agevolare il reset dei flip-flop viene quindi scelto per quello
000
Viene usato il primo bit per codificare l’uscita. Gli altri sono in sequenza di Grey.
Esercizio 2 - 3
Esercizio 2 -4
Si vuole realizzare una macchina a stati di Moore che gestisca una luce di occupato in una cabina elettorale.
La luce e` accesa quando qualcuno si trova dentro. Per identificare l’ingresso/uscita della persona sono a
disposizione due celle fotoelettriche in ingresso distanziate di pochi centimetri in orizzontale sul percorso di
accesso. L’ingresso della persona e` evidenziato dall’attivazione della prima, da un momento in cui entrambe
sono attive e dall’attivazione di solo la seconda. L’uscita e` caratterizzata dalla transizione opposta. Devono
esistere tutte e tre le fasi perche` l’ingresso o uscita sia ritenuta valida (cioe` la transazione e` finita quando le
due celle fotoelettriche tornano inattive), tutti gli altri casi sono da considerarsi abbagli o ripensamenti
sull’ingresso o sull’uscita. Gli ingressi sono quindi A e B (prima e seconda fotocellula), se la fotocellula e`
attraversata da qualcosa A (o B) vale 1. Quindi durante l’entrata di una persona la coppia di bit AB e`
caratterizzata dalle seguenti fasi ognuna di lunghezza imprecisata (anche piu` colpi di clock) 00 10 11 01 00,
la sequenza per l’uscita della persona invece da 00 01 11 10 00.
L’uscita Z vale 1 se c’e` una persona dentro, 0 se la cabina e` libera.
Il dispositivo che verra` realizzato avra` un tasto di reset attivabile solo quando si e` fuori dalla cabina (cioe` la
prima azione che si aspetta la macchina dopo il reset e` l’entrata di una persona).
Scrivere la tabella dello stato successivo, e l’uscita di una macchina che faccia tutto questo, se ne faccia un
assegnamento degli stati ragionato e ben giustificato e si scriva la descrizione Verilog algoritmica della
macchina cosi` ideata.
Si vuole realizzare una macchina a stati di Moore che gestisca una luce di occupato in una cabina elettorale.
La luce e` accesa quando qualcuno si trova dentro. Per identificare l’ingresso/uscita della persona sono a
disposizione due celle fotoelettriche in ingresso distanziate di pochi centimetri in orizzontale sul percorso di
accesso. L’ingresso della persona e` evidenziato dall’attivazione della prima, da un momento in cui entrambe
sono attive e dall’attivazione di solo la seconda. L’uscita e` caratterizzata dalla transizione opposta. Devono
esistere tutte e tre le fasi perche` l’ingresso o uscita sia ritenuta valida (cioe` la transazione e` finita quando le
due celle fotoelettriche tornano inattive), tutti gli altri casi sono da considerarsi abbagli o ripensamenti
sull’ingresso o sull’uscita. Gli ingressi sono quindi A e B (prima e seconda fotocellula), se la fotocellula e`
attraversata da qualcosa A (o B) vale 1. Quindi durante l’entrata di una persona la coppia di bit AB e`
caratterizzata dalle seguenti fasi ognuna di lunghezza imprecisata (anche piu` colpi di clock) 00 10 11 01 00,
la sequenza per l’uscita della persona invece da 00 01 11 10 00.
L’uscita Z vale 1 se c’e` una persona dentro, 0 se la cabina e` libera.
Il dispositivo che verra` realizzato avra` un tasto di reset attivabile solo quando si e` dentro la cabina (cioe` la
prima azione che si aspetta la macchina dopo il reset e` l’uscita di una persona).
Scrivere la tabella dello stato successivo, e l’uscita di una macchina che faccia tutto questo, se ne faccia un
assegnamento degli stati ragionato e ben giustificato e si scriva la descrizione Verilog algoritmica della
macchina cosi` ideata.
Soluzione
Soluzione
AB
S
SA
SB
SC
SD
SE
SF
SG
SH
SI
SL
00
SA
SA**
SA**
SE
SE
SE**
SE**
SA
01
11
10
SA**
SA**
SB
SA**
SC
SB
SD
SC
SA**/SB**
SD
SA**/SC**
SA**
SF
SE**
SE**
SF
SG
SE**
SE**/SF**
SG
SH
SE**
SE**/SG**
SH
Z
0
0
0
0
1
1
1
1
Stato
SA
SB
SC
SD
SE
SF
SG
SH
SI
SL
codifica
000
001
011
010
100
101
111
110
S
SA
SB
SC
SD
SE
SF
SG
SH
SI
SL
00
SA
SA**
SA**
SE
SE
SE**
SE**
SA
AB
01
11
10
SA**
SA**
SB
SA**
SC
SB
SD
SC
SA**/SB**
SD
SA**/SC**
SA*
SF
SE**
SE**
SF
SG
SE**
SE**/SF**
SG
SH
SE**
SE**/SG**
SH
Z
0
0
0
0
1
1
1
1
Stato
SA
SB
SC
SD
SE
SF
SG
SH
SI
SL
codifica
100
101
111
110
000
001
011
010
S*
**potevano essere scelti in modo diverso
S*
** potevano essere scelti in modo diverso
Giustificazione della scelta della codifica degli stati
Il reset porta nello stato SA, per agevolare il reset dei flip-flop viene quindi scelto per quello
000
Viene usato il primo bit per codificare l’uscita. Gli altri sono in sequenza di Grey.
Giustificazione della scelta della codifica degli stati
Il reset porta nello stato SE, per agevolare il reset dei flip-flop viene quindi scelto per quello
000
Viene usato il negato del primo bit per codificare l’uscita. Gli altri sono in sequenza di Grey.