Professional Documents
Culture Documents
Asignment 6 2
Asignment 6 2
Asignment 6 2
Dataflow Modeling
Write verilog code for the following, perform functional verification
Code:
module logic_gates (input a,b, output y,z,c,d,e,f,g); //port declarations
assign y= a&b; //And logic
assign z= a|b; // OR logic
assign c= ~a; // NOT logic
assign d= ~(a&b); // Nand logic
assign e= ~(a|b); //Nor logic
assign f= a^b; // Ex-or logic
assign g= ~(a^b); // Ex-nor logic
endmodule
Simulation:
Code :
// implementation of 4bit binary to gray code converter
module bin2gray(input [3:0] bin,output [3:0] g_out); //port declaration
assign g_out[3]=bin[3]; // take input as same
assign g_out[2]=bin[3]^bin[2]; // do ex-or operation with 4th and 3rd bit
assign g_out[1]=bin[2]^bin[1]; // ex-or operation of 3rd and 2nd bit
assign g_out[0]=bin[1]^bin[0]; // ex-or operation of 2nd and 1st bit
endmodule
simulation:
Simulation:
Code:
module bit1_comp (input a,b,output l,e,g);
assign l= (((~a))&b);
assign e= ~(a^b);
assign g= (a&(~b));
endmodule
Simulation:
Code:
module bit2_comp(input a0,a1,b0,b1,output l,e,g);
Copyright CoreEL Technologies (I) Pvt. Ltd.
assign l=(((~a0)&(~a1)&(~b0)&b1)|(a0&(~a1)&b0&b1)|((~a0)&b0&(~b1))|
((~a0)&a1&b0));
assign e=(((~a0)&(~a1)&(~b0)&(~b1))|(a0&(~a1)&b0&(~b1))|((~a0)&a1&(~b0)&b1)|
(a0&a1&b0&b1));
assign g=((a1&(~b0)&(~b1))|(a0&a1&(~b1))|(a0&(~b0)));
endmodule
Simulation:
Code:
module bit8_comp(input [3:0]a,b,output [2:0] y);
assign y[0]= a>b;
assign y[1]= (a==b);
assign y[2]= a<b;
endmodule
Simulation:
Code:
// implementation of half adder
module half_adder (input a,b,output sum,carry); //port decleration
assign sum= a^b; //sum logic
assign carry= a&b; //carry logic
endmodule
Simulation:
Code:
Copyright CoreEL Technologies (I) Pvt. Ltd.
module full_adder (input a,b,c_in,output sum,c_out);
//assign sum= a^b^c_in;
//assign c_out= (a&b)| (b&c_in) | (c_in&a);
Code:
module half_subtractor(input a,b, output d,b_out);
assign d= a^b;
assign b_out=((~a)&b);
endmodule
Simulation:
Code:
module half_subtractor(input a,b, output d,b_out);
assign d= a^b;
assign b_out=((~a)&b);
endmodule
Simulation:
16. 4 x 1 mux
Code:
module mux4_1(input i0,i1,i2,i3,
input [1:0]s,
output y);
assign y=(i0 & ~s[1] & ~s[0])| (i1 & ~s[1] & s[0])| (i2 & s[1] & ~s[0])|
(i3 & s[1] & s[0]);
// assign y=(s==2'b11)?i3:(s==2'b10)?i2:(s==2'b01)?i1:i0;
// assign y=s[1]?(s[0]?i3:i2):(s[0]?i1:i0);
Endmodule
Simulation: