circuite integrate digitale

Post on 05-Oct-2015

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

CID

TRANSCRIPT

Circuite Integrate Digitale

Circuite Integrate DigitaleTema 1Furculescu Andreea-Cristina Grupa 422A

Problema 1.1

Cerin: Fie full adder-ul pe 4 bii descris n urmtorul modul Verilog:

module fullAdder( output [3:0] out , output crOut , // carry output input [3:0] in0 , input [3:0] in1 , input crIn ); // carry input

wire [4:0] sum ;

assign sum = in0 + in1 + crIn ;assign out = sum[3:0];assign crOut = sum[4] ;endmodule

Folosii modulul fullAdder pentru a realiza urmtorul adder pe 16 bii:

module bigAdder( output [15:0] out , output crOut , // carry output input [15:0] in0 , input [15:0] in1 , input crIn ); // carry input// ???endmodule

Rezolvare:Cu ajutorul unui fullAdder pe 4 bii, care adun dou numere binare de 4 bii, cu ansa de a accepta un carry in (crIn) i ansa ieirii unui carry out (crOut).Cerina este aceea de a se construi un modul cu aceeai funcie, dar care adun dou numere binare de cte 16 bii fiecare.O posibilitatea de a rezolva aceast cerina o reprezint mprirea adunrii a dou numere binare de 16 bii n patru adunri de cte 4 bii, astfel nct sa putem lega ntre ele patru module fullAdder ca n exemplul urmtor:

Fie schema adunrii a dou numere de 16 bii, cu reprezentarea adunrii a patru cte patru bii:

Dup cum putei vedea, primul modul va aduna ultimii 4 bii de la sfritul numerelor de 16 bii, adic biii 3, 2, 1, 0. Acest modul va trebui sa accepte carry in de la modulul bigAdder i s trimit carry out la urmtorul modul fullAdder. Al doilea modul va aduna urmtorii 4 bii ai numerelor binare de 16 bii, adic biii 7, 6, 5, 4, acceptnd carry in de la carry out-ul modulului anterior. Urmtorul modul va procesa la fel, adunnd biii 11, 10, 9, 8, pentru ca, n final, al patrulea modul s adune biii 15, 14, 13, 12 si numerelor binare de 16 bii, acceptand i el carry in de la carry out-ul celui de-al trilea modul i avnd carry out-ul conectat la carry out-ul modulului bigAdder.

n cele ce vor urma, vom afia descrierea Verilog a moduluilui bigAdder:

module bigAdder (output [15:0] sumtotal, output crOut, input [15:0] in0, input [15:0] in1, input crIn);wire wire1, wire2, wire3;

fullAdder fA0 (.out ( sumtotal [3:0] ), .crOut (wire1), .in0 ( in0 [3:0] ), .in1 ( in1 [3:0] ), .crIn ( crIn ) ),

fA1 (.out ( sumtotal [7:4] ), .crOut (wire2), .in0 ( in0 [7:4] ), .in1 ( in1 [7:4] ), .crIn ( wire1 ) ),

fA2 (.out ( sumtotal [11:8] ), .crOut (wire3), .in0 ( in0 [11:8] ), .in1 ( in1 [11:8] ), .crIn ( wire2 ) ),

fA3 (.out ( sumtotal [15:12] ), .crOut (crOut), .in0 ( in0 [15:12] ), .in1 ( in1 [15:12] ), .crIn ( wire 3 ) ),

endmodule

Schema bloc bigAdder:

n urma compilrii programului, nu au existat erori.Urmtorul pas l reprezint testarea funcionrii corecte a modulului bigAdder prin crearea unui modul tester care va introduce valori n in0, in1 i crIn. Vom folosi programul ModelSim pentru a verifica valorile obinute.

module tema1bis_tester;reg [15:0] in0;reg [15:0] in1;reg crIn;wire [15:0] sumtotal;wire crOut;initialbeginin0=16b 0000000000000000;in1=16b 00000000000000001;crIn=1;#2 in0=16b 0011010110100111;In1=16b 0000000010000001;crIn=0;#2in0=16b 1001011001111000;In1=16b 1111000000000000;crIn=0;#2in0=16b 1001000000110001In1=16b 0000000000000011crIn=0;#2$stop();

end

bigAdder deviceUnderTest( .out ( sumtotal) , .crOut ( crOut) , .in0 ( in0 ), .in1 ( in1 ), .crIn ( crIn ));endmodule

Problema 1.2Cerin:Desenai schema bloc a urmtorului design.

module topModule( output [7:0] out, input [7:0] in1, input [7:0] in2, input [7:0] in3);wire [7:0] wire1, wire2;

bottomModule mod1( .out(wire1 ),.in1(in1 ),.in2(in2 )), mod2( .out(wire2 ),.in1(wire1 ),.in2(in3 )), mod3( .out(out ),.in1(in3 ),.in2(wire2 ));endmodule

module bottomModule ( output [7:0] out, input [7:0] in1, input [7:0] in2);// ...endmodule

Problema 1.3Cerin: Fie reprezentarea schematic a designului topSyst din Figura 1.9. S se descrie n Verilog a ceea ce este descris n aceast figur.

n urma cercetrii schemei, descrierea n Verilog este urmtoarea:

module topSyst ( output [7:0] out1, output [7:0] out2, input [7:0] in1, input [7:0] in2, input [7:0] in3,wire [7:0] wire1, wire2;

syst1 syst1_stnga (.out(wire1), .in1(in1), .in2(in2)), syst1_dreapta (.out(wire2), .in1(in2), .in2(in3));syst2 syst2 (.out1(out1), .out2(out2), .in1 (wire1), .in2 (wire2));endmodule

module syst1 (output [7:0] out, input [7:0] in1, input [7:0] in2);//instruciuni

endmodule

module syst2 (output [7:0] out1, output [7:0] out2, input [7:0] in1, input [7:0] in2);wire [7:0] wire3;

syst3 syst3 (.out(wire3),.in(in2));

syst4 syst4_stnga (.out(out1),.in1(in1),.in2(wire3)), syst4_dreapta (.out(out2),.in1(wire3),.in2(in2));endmodule

module syst3(output [7:0] out,input [7:0] in);//instruciuni

endmodule

module syst4 (output [7:0] out,input [7:0] in1,input [7:0] in2);//instruciuni

endmodule

n figura avem un modul topSyst, care conine, la rndul lui alte 3 submodule: dou module de tip syst1 (syst1_dreapta si syst1_stnga) i un modul syst2.Aici gsim 3 intrri a cte 8 bii fiecare: in1, in2 , in3, dou ieiri tot a cte 8 bii fiecare, i anume: out1 i out2 i dou fire de 8 bii fiecare : wire1 i wire 2. n figura b, modulul syst2 este i el format tot din 3 submodule: un modul de tip syst3 i dou submodule de tip syst4 (syst4_dreapta i syst4_stnga). Aici gsim pe cte 8 bii fiecare dou intrri: in1, in2; dou ieiri: out1, out2 i un fir: wire3. n urma legturilor dintre aceste module s-a realizat descrierea Verilog de mai sus.

Not: Descrierile Verilog au fost colorate asemnator celor din ModelSim.

9

top related