Sei sulla pagina 1di 9

ESERCITAZIONE 2022-12-14 34

SINTESI RETE SEQUENZIALE


▸ Progettare una rete sequenziale con ingresso X a 1 bit la cui uscita Y assuma il valore 1 nché non riconosca negli ultimi
tre valori presentati all’ingresso un numero pari di bit con valore 1. Dopo il riconoscimento, a meno che il bit successivo
in ingresso determini un ulteriore riconoscimento, l'uscita della rete deve tornare al valore 1. Si producano il diagramma
degli stati, la tabella di transizione, il diagramma circuitale e una possibile implementazione in SystemVerilog
comprensiva di test bench. In questo caso la codi ca binaria degli stati permette di sempli care la progettazione.

S011 1
1 0 S111
1 1 0
S110
0
S101 1
0 0
S010 1 0
0 1
S001 0
0 1 S100
1 1 1

S000
reset
1 0

Diagramma degli stati (Moore)


fi
fi
fi
ESERCITAZIONE 2022-12-14 35

SINTESI RETE SEQUENZIALE


▸ Progettare una rete sequenziale con ingresso X a 1 bit la cui uscita Y assuma Current Input: X Next
il valore 1 nché non riconosca negli ultimi tre valori presentati all’ingresso State: S X State: S’
un numero pari di bit con valore 1. Dopo il riconoscimento, a meno che il bit
S000 0 S000
successivo in ingresso determini un ulteriore riconoscimento, l'uscita della
S000 1 S001
rete deve tornare al valore 1. Si producano il diagramma degli stati, la
S001 0 S010
tabella di transizione, il diagramma circuitale e una possibile
S001 1 S011
implementazione in SystemVerilog comprensiva di test bench. In questo
caso la codi ca binaria degli stati permette di sempli care la progettazione S010 0 S100
S010 1 S101
S011 0 S110
0
S011 1 S111
1
S100 0 S000
S011 1 S111
S100 1 S001
1 0 0
1 1 S110
0
S101
S101 0 S010
1
0 0
S010 1 0

S001
0 1
0 S101 1 S011
0 1 S100
1 1 1 S110 0 S100
reset
S000
1 0
S110 1 S101
S111 0 S110
S111 1 S111
Diagramma degli stati (Moore) Tabella di transizione

fi
fi
fi
ESERCITAZIONE 2022-12-14 36

SINTESI RETE SEQUENZIALE


▸ Progettare una rete sequenziale con ingresso X a 1 bit la cui uscita Y assuma il valore 1 nché non Current Input: X Next
riconosca negli ultimi tre valori presentati all’ingresso un numero pari di bit con valore 1. Dopo il
riconoscimento, a meno che il bit successivo in ingresso determini un ulteriore riconoscimento, State: S X State: S’
l'uscita della rete deve tornare al valore 1. Si producano il diagramma degli stati, la tabella di S000 0 S000
transizione, il diagramma circuitale e una possibile implementazione in SystemVerilog comprensiva
di test bench. S000 1 S001
S001 0 S010
▸ In questo caso usare direttamente codi ca binaria nelle etichette degli stati, che evidenzia la
sequenza degli ultimi tre bit in ingresso, permette di sempli care la progettazione S001 1 S011
S010 0 S100
▸ Analizzando la tabella di transizione si nota che la logica combinatoria di stato prossimo deve
manipolare i segnali di stato e di ingresso in maniera tale che il registro contenga i valori degli ultimi S010 1 S101
tre bit presentati all’ingresso in ordine cronologico. A ogni impulso di clock i due bit meno S011 0 S110
signi cativi del registro scorrono verso sinistra, sovrascrivendo il valore del bit più signi cativo e
lasciando posto al valore del bit di ingresso (left shift). S011 1 S111
S100 0 S000
S′2 = S1 S100 1 S001
S101 0 S010
S′1 = S0 S101 1 S011

S′0 = X S110
S110
0
1
S100
S101
S111 0 S110
S111 1 S111



Tabella di transizione
fi

fi
fi

fi
fi
ESERCITAZIONE 2022-12-14 37

SINTESI RETE SEQUENZIALE


▸ Progettare una rete sequenziale con ingresso X a 1 bit la cui uscita Y assuma il valore 1 nché
non riconosca negli ultimi tre valori presentati all’ingresso un numero pari di bit con valore 1. Current
Dopo il riconoscimento, a meno che il bit successivo in ingresso determini un ulteriore Output: Y
State: S
riconoscimento, l'uscita della rete deve tornare al valore 1. Si producano il diagramma degli
stati, la tabella di transizione, il diagramma circuitale e una possibile implementazione in
SystemVerilog comprensiva di test bench.
S000 1
▸ La codi ca binaria nelle etichette degli stati permette di sempli care anche la progettazione
della rete di uscita, che esprime l’OR della parità del valore a tre bit memorizzato (XOR) e del S001 1
mintermine 0.

S010 1

S011 0
S′2 = S1 S100 1
S′1 = S0
S101 0
S′0 = X
S110
Y = S2 ⊕ S1 ⊕ S0 + S2 S1 S0 0

S111 1



Tabella delle uscite

fi

fi
fi
ESERCITAZIONE 2022-12-14 38

SINTESI RETE SEQUENZIALE


▸ Progettare una rete sequenziale con ingresso X a 1 bit la cui uscita Y assuma il valore 1 nché non
riconosca negli ultimi tre valori presentati all’ingresso un numero pari di bit con valore 1. Dopo il
riconoscimento, a meno che il bit successivo in ingresso determini un ulteriore riconoscimento, l'uscita
della rete deve tornare al valore 1. Si producano il diagramma degli stati, la tabella di transizione, il
diagramma circuitale e una possibile implementazione in SystemVerilog comprensiva di test bench.
clk

Y = S2 ⊕ S1 ⊕ S0 + S2 S1 S0
reset S2’ S2

X
S1’ S1 RC Y

S0’ S0
r S′2 = S1
S′1 = S0
S′0 = X

Diagramma circuitale



fi
ESERCITAZIONE 2022-12-14 39

module recogev(input logic clk, input


HDL RETE SEQUENZIALE logic reset, input logic x, output
logic y);

logic [2:0] state, nextstate;


▸ Progettare una rete sequenziale con
always_ff @(posedge clk, posedge
ingresso X a 1 bit la cui uscita Y assuma il reset) begin
valore 1 nché non riconosca negli if (reset) begin
state <= 3'b000;
ultimi tre valori presentati all’ingresso un end
numero pari di bit con valore 1. Dopo il else state <= nextstate;
end
riconoscimento, a meno che il bit
successivo in ingresso determini un assign nextstate= {state[1:0], x};
assign y=(^state)|(state==3'b000);
ulteriore riconoscimento, l'uscita della
endmodule
rete deve tornare al valore 1. Si
producano il diagramma degli stati, la
tabella di transizione, il diagramma
circuitale e una possibile
implementazione in SystemVerilog
comprensiva di test bench.

fi

ESERCITAZIONE 2022-12-14 40

`timescale 1ns/1ns
HDL RETE SEQUENZIALE
module recogev_tb();
logic clk, reset, x, y;

▸ Progettare una rete sequenziale con recogev dut(clk, reset, x, y);


ingresso X a 1 bit la cui uscita Y assuma il always begin
valore 1 nché non riconosca negli clk=0; #10; clk=1; #10;
end
ultimi tre valori presentati all’ingresso un
numero pari di bit con valore 1. Dopo il
initial begin
riconoscimento, a meno che il bit $dumpfile("recogev_tb.vcd");
successivo in ingresso determini un $dumpvars(0, recogev_tb);
x=1;
ulteriore riconoscimento, l'uscita della reset=1; #2;
reset=0; #2;
rete deve tornare al valore 1. Si #11;
producano il diagramma degli stati, la x=0; #10;
x=1; #20;
tabella di transizione, il diagramma x=0; #20;
circuitale e una possibile x=1; #20;
x=0; #20;
implementazione in SystemVerilog x=1; #20;
comprensiva di test bench. x=1; #40;
$finish;
end
endmodule

fi

ESERCITAZIONE 2022-12-14 41

HDL RETE SEQUENZIALE


▸ Progettare una rete sequenziale con ingresso X a 1 bit la cui uscita Y assuma il valore 1 nché non riconosca negli ultimi tre
valori presentati all’ingresso un numero pari di bit con valore 1. Dopo il riconoscimento, a meno che il bit successivo in ingresso
determini un ulteriore riconoscimento, l'uscita della rete deve tornare al valore 1. Si producano il diagramma degli stati, la
tabella di transizione, il diagramma circuitale e una possibile implementazione in SystemVerilog comprensiva di test bench.

Visualizzazione con GTKWave del le VCD generato dal test bench


fi
fi
ESERCITAZIONE 2022-12-23 42

SINTESI RETE SEQUENZIALE


▸ Progettare una rete sequenziale sincrona con ingresso X a 1 bit la cui
uscita Y assuma il valore 0 quando riconosca la sequenza di bit 0, 1, 1
negli ultimi valori presentati all’ingresso. L'uscita Y deve assumere il
valore 1 per tutte le altre sequenze di ingresso. Si producano il
diagramma degli stati, la tabella di transizione, il diagramma circuitale
e una possibile implementazione in SystemVerilog comprensiva di test
bench.

Potrebbero piacerti anche