11-Verilog HDL Coding and Summary of Module-3-12-06-2024
11-Verilog HDL Coding and Summary of Module-3-12-06-2024
module decoder_3x8en(a,b,c,en,d);
input a,b,c,en;
output [7:0]d;
assign d[0] = en & ~a & ~b & ~c;
assign d[1] = en &~a & ~b & c;
assign d[2] = en &~a & b & ~c;
assign d[3] = en &~a & b & c;
assign d[4] = en &a & ~b & ~c;
assign d[5] = en &a & ~b & c;
assign d[6] = en &a & b & ~c;
assign d[7] = en &a & b & c;
endmodule Digital System Design Lab 2
Test Bench
module decoder_3x8en_tb;
reg a,b,c,en; #20 en=1;a=1;b=1;c=1;
wire [7:0]d; #50 $stop;
decoder_3x8en d4(a,b,c,en,d); end
initial begin endmodule
// Initialize Inputs
#20 en=1;a=0;b=0;c=0;
#20 en=1;a=0;b=0;c=1;
#20 en=1;a=0;b=1;c=0;
#20 en=1;a=0;b=1;c=1;
#20 en=1;a=1;b=0;c=0;
#20 en=1;a=1;b=0;c=1;
#20 en=1;a=1;b=1;c=0; Digital System Design Lab 3
Decoder 4x16 using two 3x8 with enable
module decoder4x16u3x8en(a,b,c,en,d);
input a,b,c,en;
output [16:0]d;
wire nen;
assign nen=~en;
decoder_3x8en d1(a,b,c,nen,d[7:0]);
decoder_3x8en d2(a,b,c,en,d[15:8]);
endmodule
Module fa_decoder_3x8(a,b,c,sum,carry);
input a,b,c;
output sum,carry;
wire [7:0]d;
decoder_3x8 d1(a,b,c,d);
assign sum= d[1] | d[2] | d[4]| d[7];
assign carry= d[3] | d[5] | d[6]| d[7];
endmodule
Structural Modelling
module encoder_str
(d0,d1,d2,d3,d4,d5,d6,d7,q0,q1,q2);
input d0,d1,d2,d3,d4,d5,d6,d7:
output q0,q1,q2;
or g1(q0,d1,d3,d5,d7);
or g2(q1,d2,d3,d6,d7);
or g3(q2,d4,d5,d6,d7);
endmodule
Dataflow Modelling
module encoder83df(din, a, b, c);
input [0:7] din;
output a,b,c;
assign a=din[4] | din[5] | din[6] | din[7];
assign b=din[2] | din[3] | din[6] | din[7];
assign c=din[2] | din[4] | din[6] | din[7];
endmodule
Behavioural Modelling
module encoder _beh(din, dout);
input [7:0] din;
output [2:0] dout;
reg [2:0] dout;
always @(din)
begin
if (din ==8'b00000001) dout=3'b000;
else if (din==8'b00000010) dout=3'b001;
else if (din==8'b00000100) dout=3'b010;
else if (din==8'b00001000) dout=3'b011;
else if (din==8'b00010000) dout=3'b100;
else if (din ==8'b00100000) dout=3'b101;
else if (din==8'b01000000) dout=3'b110;
else if (din==8'b10000000) dout=3'b111;
else dout=3'bX;
end
endmodule
Digital System Design Lab 11
FULL SUBTRACTOR USING 4:1 MUX
module fS_mux(diff,Bout,a,b,Bin);
output diff,Bout;
input a,b,Bin;
wire x1;
not N1(x1,a);
m41_str M1(diff,a,x1,x1,a,cin,b);
m41_str M2(Bout,0,x1,x1,1,cin,b);
endmodule