1) %%%% Basic Gates %%%%
1) %%%% Basic Gates %%%%
module gates(a,b,c,d,e,f,g,h,i);
input a,b;
output c,d,e,f,g,h,i;
and(c,a,b);
or(d,a,b);
not(e,a);
nand(f,a,b);
nor(g,a,b);
xor(h,a,b);
xnor(i,a,b);
endmodule
module ckt(a,b,c,d,e,f,g);
input a,b,c;
inout d,e,f;
output g;
and(d,a,b);
and(e,b,c);
and(f,c,a);
or(g,d,e,f);
endmodule
module halfadd(a,b,sum,carry);
input a, b;
output sum, carry;
assign sum = a ^ b;
assign carry = a & b;
endmodule
assign sum = x ^ y ^ z;
assign carry = (x & y) | (y & z) | (z & x);
endmodule
module onebitcomparator(a,b,abar,bbar,less,equal,greater);
input a,b;
inout abar,bbar;
output less,equal,greater;
not(abar,a);
not(bbar,b);
and(less,abar,b);
and(greater,a,bbar);
nor(equal,c,e);
endmodule
always @ (Code)
begin
if (Code == 0) Data = 8'b00000001; else
if (Code == 1) Data = 8'b00000010; else
if (Code == 2) Data = 8'b00000100; else
if (Code == 3) Data = 8'b00001000; else
if (Code == 4) Data = 8'b00010000; else
if (Code == 5) Data = 8'b00100000; else
if (Code == 6) Data = 8'b01000000; else
if (Code == 7) Data = 8'b10000000; else
Data = 8'bx;
end
endmodule
always @ (Data)
casex(Data)
8'b1xxxxxxx :Code =7;
8'b01xxxxxx :Code =6;
8'b001xxxxx :Code =5;
8'b0001xxxx :Code =4;
8'b00001xxx :Code =3;
8'b000001xx :Code =2;
8'b0000001x :Code =1;
8'b00000001 :Code =0;
default: Code =3'bx;
endcase
endmodule
always @ (sel)
if (sel == 0) y = a; else
if (sel == 1) y = b; else
if (sel == 2) y = c; else
if (sel == 3) y = d; else
y = 4'bx;
endmodule
9) JK-Flip Flop
assign qb = ~q;
begin
else
case ({j,k})
2'b00: q = q;
2'b01: q=1'b0;
2'b10: q=1'b1;
2'b11: q=~q;
endcase
end
endmodule