Documente Academic
Documente Profesional
Documente Cultură
9 8 7 6 5 4 3 2 1 0
1 0 0 0 0 0 1 1 0 0
9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 1 1 0 0
9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 1 1 0 0
9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 1 1 0 0
Rezolvare exercițiul 1:
1. Proiectați un modul cu 2 intrări și 2 iesiri:
Urmează să facem inițializările (eq este inițial 0, iar max va fi egală cu 1 în SM):
Începem să verificăm pe cazuri. Dacă ambele numere sunt pozitive, adică dacă
bitul de semn al celor două numere este 0 (in_0[7] = in_1[7] = 0), atunci le comparăm
biții de magnitudine.
Începem să verificăm pe cazuri. Dacă ambele numere sunt pozitive, adică dacă
bitul de semn al celor două numere este 0 (in_0[7] = in_1[7] = 0), atunci le comparăm
biții de magnitudine.
Vom considera acum, cazul în care unul este pozitiv și unul negativ. Maximul este
cel pozitiv, și verificăm dacă nu cumva sunt ambele nule.
Și în final cazul în care sunt negative:
module comp(input[7:0] in_0, input[7:0] in_1, output reg eq, output reg[7:0] max);
initial begin
eq=1'b0;
max = 1;
max[7]=1;
end
always @(in_1)begin
if(in_0[7:0] == in_1[7:0])begin
end
else begin
if(in_0[6:0]> in_1[6:0])begin
max[7:0] = in_0[7:0];
end
else begin
max[7:0] = in_1[7:0];
end
end
//Numerele sunt 0
eq = 1'b1;
end
else begin
if(in_0[7]==1'b0)begin
max[7:0] = in_0[7:0];
end
else begin
max[7:0] = in_1[7:0];
end
end
end
end
if((~in_0[6:0]+1) == in_1[6:0])begin
eq = 1'b1;
end
else begin
max[7:0] = in_0[7:0];
end
else begin
max[7:0] = in_1[7:0];
end
end
end
end
endmodule
OR :
»Operator : |
o Model implementare : assign Q = A| B
o Implementare multiplă: assign Q = A|B|C | ... |N
XOR :
»Operator : ^
o Model implementare : assign Y = A^ B
o Implementare multiplă: assign Y = A^B^C ^ ... ^N
NOT :
»Operator :~
o Model implementare : assign out = ~A
o Implementare multiplă: -
Celelate tipuri de porți (nand , nor ,nxor) se obțin din poarta logică corespunzătoare
ce urmează a fi negata. De exemplu :
NAND =» assign out = ~(A&B);
Codul FINAL:
module implementare ( input a, input b,input c, output q);
assign q = ( ~(b & c) )|( (~c)^ (a & b) );
endmodule