Professional Documents
Culture Documents
1. 2 bit comparator
6. SR flip flop
module deco24(o,i,en);
input en;
input [1:0] i;
output [3:0] o;
reg [1:0] o;
always @ (en,i)
begin
if(en==1)
begin
o[0]= (~i[0])&(~i[1]);
o[1]= (~i[0])&i[1];
o[2]= i[0]&(~i[0]);
o[3]=i[0]&i[1];
end
end
endmodule
module deco38(o,i,en);
input en;
input [2:0] i;
output [7:0] o;
reg [1:0] o;
always @ (en,i)
begin
if(en==1)
begin
o[0]= (~i[0])&(~i[1])&(~i[2]);
o[1]= (~i[0])&(~i[1])&(i[2]);
o[2]= (~i[0])&(i[1])&(~i[2]);
o[3]= (~i[0])&(i[1])&(i[2]);
o[4]= (i[0])&(~i[1])&(~i[2]);
o[5]= (i[0])&(~i[1])&(i[2]);
o[6]= (i[0])&(i[1])&(~i[2]);
o[7]= (i[0])&(i[1])&(i[2]);
end
end
endmodule
module enco42(o,i,en);
input en;
input [3:0] i;
output [1:0] o;
reg [1:0] o;
always @ (en,i)
begin
if(en==1)
begin
o[1] = i[2]^i[3];
o[0]= i[1]^i[3];
end
end
endmodule
module enco83(o,i,en);
input en;
input [7:0] i;
output [2:0] o;
reg [1:0] o;
always @ (en,i)
begin
if(en==1)
begin
o[2]=i[4]^i[5]^i[6]^i[7];
o[1]= i[2]^i[3]^i[6]^i[7];
o[0]= i[1]^i[3]^i[5]^i[7];
end
end
endmodule
15. 4 bit serial adder
module sa(a,b,c,clk,s,c1);
input [3:0]a,b;
input clk,c;
output reg [3:0] s;
output reg c1;
always@(posedge clk)
begin
{c1,s}=a+b+c;
end
endmodule
module pa(a,b,c,s,c1);
input [3:0]a,b;
input c;
output reg [3:0]s;
output reg c1;
always @(*)
begin
{c1,s}=a+b+c;
end
endmodule
module cntr(q,clk,rst,load,inp);
input clk,rst,load;
input [3:0] inp;
output [3:0] q;
reg [3:0] q;
always @ (posedge clk or posedge rst)
begin
if(rst==1)
q=0;
else if(clk==1)
begin
if(load==1)
q=inp;
else
q=q+1;
end
end
endmodule
module bcdex3(b1,b2,b3,b0,e0,e1,e2,e3);
input b0,b1,b2,b3;
output e0,e1,e2,e3;
assign e0=~b0;
assign e1= ( (~b1) & (~b0)) | ( b1 & b0) ;
assign e2= ( b2 & (~b1) & (~b0)) | ((~b2) &( b0 | b1));
assign e3 = b3 | ( b2 & (b0 | b1));
endmodule
module b2g(b1,b2,b3,b0,g0,g1,g2,g3);
input b0,b1,b2,b3;
output g0,g1,g2,g3;
assign g0 = ( b1^ b0) ;
assign g1 = ( b2 ^ b1);
assign g2 = ( b3 ^ b2 );
assign g3 = b3;
endmodule
module eq1(a,b,c,d,f);
input a,b,c,d;
output f;
assign f=((~b)&(~c)&d)|(b&c&d)|((~a)&b&(~c)&(~d));
6. Equation solving F(A,B,C,D)=∑(0,2,,5,6,7)
module eq2(a,b,c,d,f);
input a,b,c,d;
output f;
assign f=((~a)&(~b)&(~d))|((~a)&b&d)|((~a)&b&c);
endmodule
module eq3(a,b,c,d,f);
input a,b,c,d;
output f;
assign f=c&((~b)|d);
endmodule
8. Mux 8:1
module mux81(i,s1,s2,s3,y);
input [7:0]i;
input s1,s2,s3;
output y;
wire ns1,ns2,ns3;
assign ns1=~s1;
assign ns2=~s2;
assign ns3=~s3;
assign y=(i[0]&ns1&ns2&ns3)|
(i[1]&ns1&ns2&s3)|
(i[2]&ns1&s2&ns3)|
(i[3]&ns1&s2&s3)|
(i[4]&s1&ns2&ns3)|
(i[5]&s1&ns2&s3)|
(i[6]&s1&s2&ns3)|
(i[7]&s1&s2&s3);
endmodule
9. DeMux 1:8
module demux18(d,s1,s2,s3,y);
input s1,s2,s3,d;
output [7:0]y;
wire ns1,ns2,ns3;
assign ns1=~s1;
assign ns2=~s2;
assign ns3=~s3;
assign y[0]=d&ns1&ns2&ns3;
assign y[1]=d&ns1&ns2&s3;
assign y[2]=d&ns1&s2&ns3;
assign y[3]=d&ns1&s2&s3;
assign y[4]=d&s1&ns2&ns3;
assign y[5]=d&s1&ns2&s3;
assign y[6]=d&s1&s2&ns3;
assign y[7]=d&s1&s2&s3;
endmodule
nand #2
(q, qBar, set),
(qBar, q, reset);
endmodule
nor #2
(q, qBar, set),
(qBar, q, reset);
endmodule
Schematic method
S=((~a)&(~b)&c) |((~a)&b&(~c))|(a&(~b)&(~c))|(a&b&c)
Cout=(a&b)|(a&c)|(b&c)
2. Full Subractor using Nand gate only Schematic
d=((~a)&(~b)&c) |((~a)&b&(~c))|(a&(~b)&(~c))|(a&b&c)
bout=((~a)&b)|((~a)&c)|(b&c)
Traffic light controller
1. Four way traffic light controller
else
begin
sig=sig+1;
case(sig[5:0])
6 'b000000:begin //path1 & 3 green(SG & LG)
p1=5 'b00100;
p2=5 'b00100;
p3=5 'b00100;
p4=5 'b00100;
pl=4 'b1111;
pm=~pl;
end
6 'b000010: begin //path1 & 3 yellow
p1=5 'b01000;
end
6 'b100000: begin
p3=5'b01000;
p4=5'b01000;
end
6 'b100010: begin
p3=5'b00100;
p4=5'b10011;
end
6 'b101010: begin
p4=5'b01000;
end
6 'b101100: begin
p4=5'b00100;
end
6 'b101110: begin
pl=4'b0000;
pm=~pl;
end
6 'b111000: begin
pl=4'b1111;
pm=~pl;
end
6 'b111010:sig=6 'b111111;
default:begin
end
endcase
end
end
endmodule
///
#PACE: Start of Constraints generated by PACE
P1NORTH
P2WEST.
P3SOUTH.
P4EAST.
BIT 4 3 2 1 0
LOCATION
LIGHT Straight yellow Red Left Right
green green green