Thursday, 19 March 2015

DECODER PROGRAMS


Formation of 4-to-16 decoder circuit in terms of smaller decoders: (a) 2-to-4
decoder, (b) 3-to- 8 decoder in terms of two 2-to-4 decoders, and (c) 4-to-16 decoder in 
terms of two 3-to-8 decoders.

2-4 DECODER

module dec2_4 (a,b,en);

output [3:0] a;

input [1:0]b; input en;

wire [1:0]bb;

not(bb[1],b[1]),(bb[0],b[0]);

and(a[0],en, bb[1],bb[0]),(a[1],en, bb[1],b[0]),

(a[2],en, b[1],bb[0]),(a[3],en, b[1],b[0]);

endmodule

//test bench

module tst_dec2_4();

wire [3:0]a;

reg[1:0] b; reg en;

dec2_4 dec(a,b,en);

initial

begin

 {b,en} =3'b000;

#2{b,en} =3'b001;

#2{b,en} =3'b011;

#2{b,en} =3'b101;

#2{b,en} =3'b111;

end

initial

$monitor ($time , "output a = %b, input b = %b ", a, b);

endmodule

3-8 DECODER

module dec3_8(pp,q,enn); 

output[7:0]pp;

input[2:0]q;

input enn; 

wire qq; 

wire[7:0]p;

not(qq,q[2]);

dec2_4 g1(.a(p[3:0]),.b(q[1:0]),.en(qq)); 

dec2_4 g2(.a(p[7:4]),.b(q[1:0]),.en(q[2])); 

and g30(pp[0],p[0],enn); 

and g31(pp[1],p[1],enn); 

and g32(pp[2],p[2],enn); 

and g33(pp[3],p[3],enn); 

and g34(pp[4],p[4],enn); 

and g35(pp[5],p[5],enn); 

and g36(pp[6],p[6],enn); 

and g37(pp[7],p[7],enn); 

endmodule

4-16 DECODER

module dec4_16(m,n);

output[15:0]m;

input[3:0]n;

wire nn; 

//wire en; 

not(nn,n[3]);

dec3_8 g3(.pp(m[7:0]),.q(n[2:0]),.enn(nn)); 

dec3_8 g4(.pp(m[15:8]),.q(n[2:0]),.enn(n[3])); 

endmodule

//test-bench

module dec4_16_stimulus; 

wire[15:0]m;

//wire l,m,n; 

reg[3:0]n;

dec4_16 gg(m,n); 

initial
begin

 n=4'b0000;#2n=4'b0000;#2n=4'b0001; 

#2n=4'b0010;#2n=4'b0011;#2n=4'b0100;

#2n=4'b0101;#2n=4'b0110;#2n=4'b0111;

#2n=4'b1000;#2n=4'b1001;#2n=4'b1010;

#2n=4'b1011;#2n=4'b1100;#2n=4'b1101;

#2n=4'b1110;#2n=4'b1111;#2n=4'b1111;

end

initial $monitor($time," m = %b ,n = %b , gg.g3.qq = %b 

, gg.g4.g1.bb = %b " , m,n,gg.g3.qq,gg.g4.g1.bb);

initial #40 $stop ;

endmodule





No comments:

Post a Comment