Sei sulla pagina 1di 19

RETI LOGICHE

ESERCITAZIONE 2022-01-12
ESERCITAZIONE 2022-01-12

Q17. SINTESI RETE COMBINATORIA


▸ Fornire la descrizione algebrica minima e la relativa rappresentazione circuitale di una RL con ingresso X a 2 bit, la cui
uscita Y riporti il valore de nito dalla [1], con n pari al valore ottenuto interpretando come numero intero senza
segno i due bit meno signi cativi della rappresentazione binaria della cifra in posizione 1 del proprio numero di
matricola. Indicare tutti i valori coinvolti.

Posizione 6 5 4 3 2 1 0 [1] Y = X + k, k = max {n,1}


Matricola 0 9 8 7 6 4 5
[2] 0 ≤ X ≤ 3 → 0 ≤ Y ≤ 3 + k
8 4 2 1
n = 0, k = max {n,1} = 1
5 0 1 0 0

[3] Y = X + 1, 0 ≤ Y ≤ 4

Y richiede tre bit perché somma di due numeri a due bit


fi
fi
ESERCITAZIONE 2022-01-12

Q17. SINTESI RETE COMBINATORIA


X1 X0 Y2 Y1 Y0
▸ Fornire la descrizione algebrica 0 0 0 0 1
minima e la relativa 0 1 0 1 0
rappresentazione circuitale di una 1 0 0 1 1

RL con ingresso X a 2 bit, la cui 1 1 1 0 0

uscita Y riporti il valore de nito Tabella di verità

dalla [3].

[3] Y = X + 1, 0 ≤ Y ≤ 4
fi
ESERCITAZIONE 2022-01-12

Q17. SINTESI RETE COMBINATORIA


X1 X0 Y2 Y1 Y0
▸ Fornire la descrizione algebrica 0 0 0 0 1
minima e la relativa 0 1 0 1 0
rappresentazione circuitale di una 1 0 0 1 1

RL con ingresso X a 2 bit, la cui 1 1 1 0 0

uscita Y riporti il valore de nito Tabella di verità

dalla [3].

[3] Y = X + 1, 0 ≤ Y ≤ 4 Y0 = X1 X0 + X1X0 = X0
Y1 = X1 X0 + X1X0 = X1 ⊕ X0
Y2 = X1X0
fi
ESERCITAZIONE 2022-01-12

Q17. SINTESI RETE COMBINATORIA


▸ Fornire la descrizione algebrica minima e la relativa rappresentazione circuitale
di una RL con ingresso X a 2 bit, la cui uscita Y riporti il valore de nito dalla [3].
[3] Y = X + 1, 0 ≤ Y ≤ 4
X0 Y0

X1

Y0 = X1 X0 + X1X0 = X0 Y1

Y1 = X1 X0 + X1X0 = X1 ⊕ X0
Y2 = X1X0 Y2

Rappresentazione circuitale della rete combinatoria (1)

fi
ESERCITAZIONE 2022-01-12

Q17. SINTESI RETE COMBINATORIA


▸ Fornire la descrizione algebrica minima e la relativa rappresentazione circuitale
di una RL con ingresso X a 2 bit, la cui uscita Y riporti il valore de nito dalla [3].
[3] Y = X + 1, 0 ≤ Y ≤ 4
X0 Y0

DUE PORTE AND E UNA PORTA NOT


SONO “ASSORBITE” DALLA PORTA XOR
X1

Y0 = X1 X0 + X1X0 = X0 Y1

Y1 = X1 X0 + X1X0 = X1 ⊕ X0
Y2 = X1X0 Y2

Rappresentazione circuitale della rete combinatoria (2)

fi
ESERCITAZIONE 2022-01-12

module q17(input logic [1:0] x, output


Q17. HDL RETE COMBINATORIA logic [2:0] y);

/* studentid: 0987645
* 0987645 4=4'b0100
▸ Implementazione in SystemVerilog * ^ ^^
* n
(non richiesta) *
* n=2'b00 k=max(2'b00, 1)=1
* y=x+2'b01
▸ Modulo */

/*
assign y[0]=~x[0];
assign y[1]= x[1]^x[0];
assign y[2]= x[1]&x[0];
*/
assign y=x+2'b01;
endmodule

ESERCITAZIONE 2022-01-12

module q17_tb();
Q17. HDL RETE COMBINATORIA logic [1:0] x;
logic [2:0] y;
logic [2:0] counter;

▸ Implementazione in SystemVerilog q17 dut(x, y);

(non richiesta) initial begin


$display("x1 x0 | y2 y1 y0");
$display("----------------");
▸ Test bench $monitor(" %b %b | %b %b %b",
x[1], x[0], y[2], y[1], y[0]);
/* x=2'b00; #1;
x=2'b01; #1;
x=2'b10; #1;
x=2'b11; #1;
*/
for(counter=0; counter<4;
counter=counter+1) begin
x=counter[1:0]; #1;
end
$finish;
end
endmodule

ESERCITAZIONE 2022-01-12

➜ 17 iverilog -o q17.vvp -g2012 q17.sv


Q17. HDL RETE COMBINATORIA q17_tb.sv
➜ 17 vvp q17.vvp
x1 x0 | y2 y1 y0
----------------
▸ Implementazione in SystemVerilog 0 0 | 0 0 1
0 1 | 0 1 0
(non richiesta) 1 0 | 0 1 1
1 1 | 1 0 0

▸ Output del test bench


ESERCITAZIONE 2022-01-12

Q18. 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 e il diagramma
circuitale.
ESERCITAZIONE 2022-01-12

Q18. 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 e il diagramma circuitale.

0 S2
1 1
0 1
1 S1
1 0
0 S3
1 0
S0
reset
1

Diagramma degli stati


ESERCITAZIONE 2022-01-12

Q18. 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 e il diagramma circuitale.

Current Input: X Next


State: S X State: S’
S0 0 S1
S0 1 S0
0 S1 0 S1
S2
1 1 S1 1 S2
0 1 S2 0 S1
1 S1
1 0 S2 1 S3
0 S3
1 0 S3 0 S1
S0 S3 1 S0
reset
1

Diagramma degli stati Tabella di transizione

ESERCITAZIONE 2022-01-12

Q18. 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 e il diagramma circuitale.

0 S2
1 Current
1 Output: Y
0 1 State: S
1 S1
1 0 S0 1
0 S3
1 0 S1 1
S0 S2 1
reset
1 S3 0

Diagramma degli stati Tabella di uscita


ESERCITAZIONE 2022-01-12

Q18. 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 e il diagramma circuitale.

State S1S0

S0 00
S1 01 Current Input: Next State:
State: S1S0 X S’1S’0
S2 10
S3 11 00 0 01
Tabella di codi ca degli stati
00 1 00

Current
S′1 = S1S0 X + S1S0 X 01
01
0
1
01
10
Output: Y
State: S1S0 S′0 = S1S0 + X 10 0 01
00 1
01 1 Y = S1 + S0 10
11
1
0
11
01
10 1 11 1 00
11 0


Tabella di uscita (codi cata) Tabella di transizione (codi cata)

fi
fi
fi
ESERCITAZIONE 2022-01-12

Q18. 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 e il diagramma circuitale.

S10 S1
CLK

X
S00 S0
rst

S′1 = S1S0 X + S1S0 X


S′0 = S1S0 + X
Y = S1 + S0


ESERCITAZIONE 2022-01-12

module q19(input logic clk, reset, x,


Q19. HDL RETE SEQUENZIALE output logic y);

logic [1:0] state, nextstate;


enum logic [1:0] {S0, S1, S2, S3}
▸ Indicare il codice di una possibile statevals;

implementazione in always_ff @(posedge clk, posedge


reset) begin
SystemVerilog della rete if(reset) begin
sequenziale descritta nel quesito state=S0;
end else begin
19. Includere un test bench per state<=nextstate;
end
descrivere in maniera completa il end

funzionamento della rete.  always_comb begin


case(state)
S0 : nextstate= (x ? S0 : S1);
S1 : nextstate= (x ? S2 : S1);
S2 : nextstate= (x ? S3 : S1);
S3 : nextstate= (x ? S0 : S1);
default: nextstate= S0;
endcase
end
assign y= ~(state==S3);

endmodule

ESERCITAZIONE 2022-01-12

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

▸ Indicare il codice di una possibile q19 dut(clk, reset, x, y);

implementazione in SystemVerilog always begin


clk=0; #10; clk=1; #10;
della rete sequenziale descritta nel end
quesito 19. Includere un test initial begin
bench per descrivere in maniera $dumpfile("q21_tb.vcd");
$dumpvars(0, q21_tb);
completa il funzionamento della x=1;
reset=1; #2;
rete.  reset=0; #2;
#11;
x=0; #10;
x=1; #20;
x=0; #20;
x=1; #20;
x=0; #20;
x=1; #20;
x=1; #25;
$finish;
end
endmodule

ESERCITAZIONE 2022-01-12

Q19. HDL RETE SEQUENZIALE


▸ Indicare il codice di una possibile implementazione in SystemVerilog della rete
sequenziale descritta nel quesito 19. Includere un test bench per descrivere in maniera
completa il funzionamento della rete. 

module q19(input logic clk, reset, x, output logic y);

logic [1:0] state, nextstate;


enum logic [1:0] {S0, S1, S2, S3} statevals;

always_ff @(posedge clk, posedge reset) begin


if(reset) begin
state=S0;
end else begin
state<=nextstate;
end
end

assign nextstate[1]= (~state[1]&state[0]&x) | (state[1]&~state[0]&x);


assign nextstate[0]= (state[1]&~state[0]) | ~x;
assign y= ~state[1]|~state[0];
endmodule

ESERCITAZIONE 2022-01-12

Q19. HDL RETE SEQUENZIALE


▸ Indicare il codice di una possibile implementazione in SystemVerilog della rete
sequenziale descritta nel quesito 19. Includere un test bench per descrivere in maniera
completa il funzionamento della rete. 

Visualizzazione con GTKWave del le VCD generato dal test bench


fi

Potrebbero piacerti anche