diff --git a/gates/predefined/and_gate.v b/gates/predefined/and_gate.v new file mode 100644 index 0000000..e2eed18 --- /dev/null +++ b/gates/predefined/and_gate.v @@ -0,0 +1,12 @@ +module and_gate(a, b, y); + input a, b; + output y; + + always @ (a or b)begin + if(a==1'b1 and b==1'b1)begin + y=1'b1; + end + else + y=0'b0; + end +endmodule \ No newline at end of file diff --git a/gates/predefined/nor_gate.v b/gates/predefined/nor_gate.v new file mode 100644 index 0000000..559a647 --- /dev/null +++ b/gates/predefined/nor_gate.v @@ -0,0 +1,13 @@ +include "or_gate.v" +include "not_gate.v" + +module nor_gate(a, b, y); + input a, b; + output y; + logic sel; + + always @ (a or b)begin + or_gate(a, b, sel); + not_gate(sel, y); + end +endmodule \ No newline at end of file diff --git a/gates/predefined/not_gate.v b/gates/predefined/not_gate.v new file mode 100644 index 0000000..c09aeff --- /dev/null +++ b/gates/predefined/not_gate.v @@ -0,0 +1,12 @@ +module not_gate(a, y); + input a; + output y; + + always @ (a)begin + if(a==1'b1)begin + y=0'b0; + end + else + y=1'b1; + end +endmodule \ No newline at end of file diff --git a/gates/predefined/or_gate.v b/gates/predefined/or_gate.v new file mode 100644 index 0000000..7803962 --- /dev/null +++ b/gates/predefined/or_gate.v @@ -0,0 +1,12 @@ +module or_gate(a, b, y); + input a, b; + output y; + + always @ (a or b)begin + if(a==0'b0 and b==0'b0)begin + y=0'b0; + end + else + y=1'b1; + end +endmodule \ No newline at end of file diff --git a/gates/predefined/xnor_gate.v b/gates/predefined/xnor_gate.v new file mode 100644 index 0000000..b254c8f --- /dev/null +++ b/gates/predefined/xnor_gate.v @@ -0,0 +1,17 @@ +include "and_gate.v" +include "xnor_gate.v" +include "not_gate.v" + +module xnor_gate(a, b, y); + input a, b; + output y; + logic selA, selB, tmpXnorA, tmpXnorB; + + always @ (a or b)begin + not_gate(a, selA); + not_gate(b, selB); + and_gate(a, selB, tmpXnorA) + and_gate(selA, b, tmpXnorB) + xnor_gate(tmpXnorA, tmpXnorB, y) + end +endmodule \ No newline at end of file diff --git a/gates/predefined/xor_gate.v b/gates/predefined/xor_gate.v new file mode 100644 index 0000000..dbcd889 --- /dev/null +++ b/gates/predefined/xor_gate.v @@ -0,0 +1,17 @@ +include "and_gate.v" +include "xor_gate.v" +include "not_gate.v" + +module xnor_gate(a, b, y); + input a, b; + output y; + logic selA, selB, tmpXorA, tmpXorB; + + always @ (a or b)begin + not_gate(a, selA); + not_gate(b, selB); + and_gate(a, selB, tmpXnorA); + and_gate(selA, b, tmpXnorB); + xor_gate(tmpXorA, tmpXorB, y); + end +endmodule \ No newline at end of file diff --git a/gates/testbench/and_tb.v b/gates/testbench/and_tb.v new file mode 100644 index 0000000..3f00b03 --- /dev/null +++ b/gates/testbench/and_tb.v @@ -0,0 +1 @@ +include "gates/and.v" \ No newline at end of file