Sunteți pe pagina 1din 6

MINISTERUL EDUCAIEI AL REPUBLICII MOLDOVA

UNIVERSITATEA TEHNIC A MOLDOVEI


FACULTATEA DE CALCULATOARE, INFORMATIC I MICROELECTRONIC
Catedra MDS

Tema: Metoda structural de descriere a circuitelor logice


combinaionale i secveniale

A elaborat:

A verificat:

Daranua Andrei, st. gr. ME-091

Prag V., lector universitar

Chiinu 2012

1. Scopul lucrrii:
S se proiecteze un decodificator 2x4, s se extind dup formula recursiv intr-un decodificator 4x16, pe baza
decodificatorului 4x16 s se proiecteze un demultiplexor conform formulei recursive.
1.1_Construcia unui modul de simulare pentru un decodificator 2x4
1.2_Construcia unui modul de simulare pentru un decodificator 4x16
1.3_Construcia unui modul de simulare pentru un demultiplexor 4x16
1.4_Construcia unui modul de simulare pentru un demultiplexor 1x32
1.5_Construcia unui mediu de simulare pentru dec.2x4
1.6_Construcia unui mediu de simulare pentru dec.4x16
1.7_ Construcia unui mediu de simulare pentru demux.1x16
1.8_ Construcia unui mediu de simulare pentru demux.1x16

2. Modulele verilog i rezultatele de simulare:


2.1 Modulul DCD2:
module dcd2(in,out);
input [1:0] in;
output[3:0] out;
wire w0,w2;
not (w0,in[0]);
not (w2,in[1]);
and (out[0],in[0],in[1]);
and (out[1],w0,w2);
and (out[2],in[0],w2);
and (out[3],w0,in[1
endmodule

Modulul de stimulare:
module top_stimule_dcd2;
reg [1:0] gen_in;
wire [3:0] rez_out;
// initializarea intrarilor
initial
begin
gen_in=0;
#100 $stop;
end
//
dcd2 DUT (gen_in,rez_out);
always
begin
#10 gen_in=gen_in+1;
$display("%b %b ",gen_in,rez_out);
end

endmodule

2.2 Modulul DCD4:


Schema hardware a dispozitivului

module dcd4(in,out);
input [3:0] in;
output [15:0] out;
wire [3:0] r0,r1;
dcd2 M1(in[1:0],r0);
dcd2 M2(in[3:2],r1);
and (out[15],r0[3],r1[0]);
and (out[14],r0[2],r1[0]);
and (out[13],r0[1],r1[0]);
and (out[12],r0[0],r1[3]);
and (out[11],r0[3],r1[3]);
and (out[10],r0[2],r1[3]);
and (out[9],r0[1],r1[3]);
and (out[8],r0[0],r1[2]);
and (out[7],r0[3],r1[2]);
and (out[6],r0[2],r1[2]);
and (out[5],r0[1],r1[2]);
and (out[4],r0[0],r1[1]);
and (out[3],r0[3],r1[1]);
and (out[2],r0[2],r1[1]);
and (out[1],r0[1],r1[1]);
and (out[0],r0[0],r1[0]);
endmodule

module dcd4(in,out);
input [3:0] in;
output [15:0] out;
wire [3:0] r0,r1;
dcd2 M1(in[1:0],r0);
dcd2 M2(in[3:2],r1);
and (out[15],r0[3],r1[0]);
and (out[14],r0[2],r1[0]);
and (out[13],r0[1],r1[0]);
and (out[12],r0[0],r1[3]);
and (out[11],r0[3],r1[3]);
and (out[10],r0[2],r1[3]);
and (out[9],r0[1],r1[3]);
and (out[8],r0[0],r1[2]);
and (out[7],r0[3],r1[2]);
and (out[6],r0[2],r1[2]);
and (out[5],r0[1],r1[2]);
and (out[4],r0[0],r1[1]);
and (out[3],r0[3],r1[1]);
and (out[2],r0[2],r1[1]);
and (out[1],r0[1],r1[1]);
and (out[0],r0[0],r1[0]);
endmodule

2.3 DMUX16
module DMUX16(i,sel,out);
input [3:0] sel;
input i;
output [15:0] out;
wire [15:0] w;
dcd4 M1(sel,w);
and (out[15],w[15],i);
and (out[14],w[14],i);
and (out[13],w[13],i);
and (out[12],w[12],i);
and (out[11],w[11],i);
and (out[10],w[10],i);
and (out[9],w[9],i);
and (out[8],w[8],i);
and (out[7],w[7],i);
and (out[6],w[6],i);
and (out[5],w[5],i);
and (out[4],w[4],i);
and (out[3],w[3],i);
and (out[2],w[2],i);
and (out[1],w[1],i);
and (out[0],w[0],i);
endmodule

module test_DMUX16;
reg [3:0] sel;
reg i;
wire [15:0] rez_out;
// initializarea inrarilor
initial
begin
sel=0;
i=0;
#100 $stop;
end
DMUX16 DUT (i,sel,rez_out);//declararea demultiplexorului DUTcu 16 iesiri
always
begin
#10 sel=sel+1; //incrementarea selectiei
#15 i=~i; // negarea intrarii
$display(" %b %b",sel,rez_out); // afisarea selectiei si iesirii
corespunzatoare
end
endmodule

2.4 DMUX32

module DMUX32(i,sel,out);
input [4:0] sel;
input i;
output [31:0] out;
wire i1,i2;//Declararea firelor.
//DMUX:
assign i1=sel[4]&i;//Atribuim i1, produs logic intre intrare si selectia 4.
assign i2=~sel[4]&i; //Atribuim i2,negarea produsului logic intre intrare
si selectia 4.

//Declararea demultiplexoarelor M1 si M2 cu
intrarile i2 respectiv i1 si iesirele 15 :0
respectiv 31:16.
DMUX16 M1(i2,sel[3:0],out[15:0]);
DMUX16 M2(i1,sel[3:0],out[31:16]);
endmodule

module test_DMUX32;
reg [4:0] sel;
reg i;
wire [31:0] rez_out;
// initializarea inrarilor
initial
begin
sel=0;
i=1;
#2000 $stop;
end
//
DMUX32 DUT (i,sel,rez_out);//declararea
demultiplexorului DUTcu 32 iesiri.
always
begin
#20 sel=sel+1;
$display(" %b %b",sel,rez_out);
end
endmodule

3. Concluzie:
n urma efecturii lucrrii de laborator am descris prin metoda structural modulele logice
combinaionale cu ajutorul limbajului de descrie hardware verilog n programul ModelSim. Metoda
const n descrierea circuitului prin enumerarea de intrri i ieiri a dispozitivului, de asemenea se
includ operatoriii logici la fiecare intrare sau ieire. n urma simulrii programelor scrise am obinut
nivele logice a dispozitivului.

S-ar putea să vă placă și