diff --git a/src/main/dig/lib/74xx/arithmetic/74181.dig b/src/main/dig/lib/74xx/arithmetic/74181.dig new file mode 100644 index 000000000..9320675cc --- /dev/null +++ b/src/main/dig/lib/74xx/arithmetic/74181.dig @@ -0,0 +1,3453 @@ + + + 1 + + + isDIL + true + + + Description + 4-bit arithmetic logic unit + + + lockedMode + true + + + Width + 6 + + + + + In + + + rotation + + + + Label + ~B0 + + + pinNumber + 1 + + + + + + And + + + rotation + + + + + + + And + + + rotation + + + + + + + And + + + rotation + + + + Inputs + 3 + + + + + + And + + + rotation + + + + Inputs + 3 + + + + + + Not + + + rotation + + + + + + + NOr + + + rotation + + + + Inputs + 3 + + + + + + In + + + rotation + + + + Label + ~A0 + + + pinNumber + 2 + + + + + + NOr + + + rotation + + + + + + + And + + + rotation + + + + + + + And + + + rotation + + + + + + + And + + + rotation + + + + Inputs + 3 + + + + + + And + + + rotation + + + + Inputs + 3 + + + + + + NOr + + + rotation + + + + Inputs + 3 + + + + + + NOr + + + rotation + + + + + + + In + + + rotation + + + + Label + ~A1 + + + pinNumber + 23 + + + + + + Not + + + rotation + + + + + + + In + + + rotation + + + + Label + ~B1 + + + pinNumber + 22 + + + + + + And + + + rotation + + + + + + + And + + + rotation + + + + + + + And + + + rotation + + + + Inputs + 3 + + + + + + And + + + rotation + + + + Inputs + 3 + + + + + + NOr + + + rotation + + + + Inputs + 3 + + + + + + NOr + + + rotation + + + + + + + In + + + rotation + + + + Label + ~A2 + + + pinNumber + 21 + + + + + + Not + + + rotation + + + + + + + In + + + rotation + + + + Label + ~B2 + + + pinNumber + 20 + + + + + + And + + + rotation + + + + + + + And + + + rotation + + + + + + + And + + + rotation + + + + Inputs + 3 + + + + + + And + + + rotation + + + + Inputs + 3 + + + + + + NOr + + + rotation + + + + Inputs + 3 + + + + + + NOr + + + rotation + + + + + + + In + + + rotation + + + + Label + ~A3 + + + pinNumber + 19 + + + + + + Not + + + rotation + + + + + + + In + + + rotation + + + + Label + ~B3 + + + pinNumber + 18 + + + + + + In + + + rotation + + + + Label + S0 + + + pinNumber + 6 + + + + + + In + + + rotation + + + + Label + S1 + + + pinNumber + 5 + + + + + + In + + + rotation + + + + Label + S2 + + + pinNumber + 4 + + + + + + In + + + rotation + + + + Label + S3 + + + pinNumber + 3 + + + + + + Not + + + rotation + + + + + + + And + + + rotation + + + + + + + In + + + rotation + + + + Label + Cn + + + pinNumber + 7 + + + + + + In + + + rotation + + + + Label + M + + + pinNumber + 8 + + + + + + And + + + rotation + + + + + + + And + + + rotation + + + + Inputs + 3 + + + + + + XOr + + + rotation + + + + + + + NOr + + + rotation + + + + + + + XOr + + + rotation + + + + + + + Not + + + rotation + + + + + + + And + + + rotation + + + + + + + And + + + rotation + + + + + + + And + + + rotation + + + + Inputs + 3 + + + + + + And + + + rotation + + + + Inputs + 4 + + + + + + NOr + + + rotation + + + + Inputs + 3 + + + + + + XOr + + + rotation + + + + + + + Out + + + rotation + + + + Label + ~F0 + + + pinNumber + 9 + + + + + + Out + + + rotation + + + + Label + ~F1 + + + pinNumber + 10 + + + + + + And + + + rotation + + + + Inputs + 4 + + + + + + Out + + + rotation + + + + Label + A=B + + + pinNumber + 14 + + + + + + Out + + + rotation + + + + Label + ~F2 + + + pinNumber + 11 + + + + + + And + + + rotation + + + + + + + And + + + rotation + + + + Inputs + 3 + + + + + + And + + + rotation + + + + Inputs + 4 + + + + + + And + + + rotation + + + + Inputs + 5 + + + + + + NOr + + + rotation + + + + Inputs + 4 + + + + + + Not + + + rotation + + + + + + + And + + + rotation + + + + + + + XOr + + + rotation + + + + + + + Out + + + rotation + + + + Label + ~F3 + + + pinNumber + 13 + + + + + + And + + + rotation + + + + + + + Not + + + rotation + + + + + + + And + + + rotation + + + + Inputs + 4 + + + + + + And + + + rotation + + + + Inputs + 3 + + + + + + And + + + rotation + + + + + + + NAnd + + + rotation + + + + Inputs + 4 + + + + + + NAnd + + + rotation + + + + Inputs + 5 + + + + + + Out + + + rotation + + + + Label + ~P + + + pinNumber + 15 + + + + + + Or + + + rotation + + + + inverterConfig + + In_1 + In_2 + + + + + + + NOr + + + rotation + + + + Inputs + 4 + + + + + + Out + + + rotation + + + + Label + Cn+4 + + + pinNumber + 16 + + + + + + Out + + + rotation + + + + Label + ~G + + + pinNumber + 17 + + + + + + PowerSupply + + + + + In + + + Label + VCC + + + pinNumber + 24 + + + InDefault + + + + + + + In + + + Label + GND + + + pinNumber + 12 + + + + + + NAnd + + + rotation + + + + + + + Not + + + rotation + + + + + + + Testcase + + + Label + A (A0000) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# M=0, Cn=1 MEANS ARITHMETIC MODE +# A +repeat(16) 0 0 0 0 0 1 bits(4,n) X X X X bits(4,n) + + + + + + + + + Testcase + + + Label + A OR B (A0001) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# A OR B +loop(a,16) + loop(b,16) + 0 0 0 1 0 1 bits(4,a) bits(4,b) bits(4,a|b) + end loop +end loop + + + + + + + + Testcase + + + Label + A OR !B (A0010) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# A OR !B +loop(a,16) + loop(b,16) + 0 0 1 0 0 1 bits(4,a) bits(4,b) bits(4,a|~b) + end loop +end loop + + + + + + + + Testcase + + + Label + "minus 1" (A0011) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# MINUS 1 +0 0 1 1 0 1 X X X X X X X X 1 1 1 1 + + + + + + + + + Testcase + + + Label + A plus (A AND !B) (A0100) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# A plus (A AND !B) +#0 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 +loop(a,16) + loop(b,16) + 0 1 0 0 0 1 bits(4,a) bits(4,b) bits(4,a+(a&~b)) + end loop +end loop + + + + + + + + Text + + + textFontSize + 36 + + + Description + Arithmetic Tests + (M=0, Cn=1) + + + + + + Testcase + + + Label + (A OR B) plus (A AND !B) (A0101) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# (A OR B) plus (A AND !B) +loop(a,16) + loop(b,16) + 0 1 0 1 0 1 bits(4,a) bits(4,b) bits(4,(a|b)+(a&~b)) + end loop +end loop + + + + + + + + Testcase + + + Label + A minus B minus 1 (A0110) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# A minus B minus 1 +loop(a,16) + loop(b,16) + 0 1 1 0 0 1 bits(4,a) bits(4,b) bits(4,a-b-1) + end loop +end loop + + + + + + + + + Testcase + + + Label + (A AND !B) minus 1 (A0111) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# (A AND !B) minus 1 +loop(a,16) + loop(b,16) + 0 1 1 1 0 1 bits(4,a) bits(4,b) bits(4,(a&~b)-1) + end loop +end loop + + + + + + + + Testcase + + + Label + A plus (A AND B) (A1000) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# A plus (A AND B) +1 0 0 0 0 1 0 1 1 1 0 0 0 1 1 0 0 0 +loop(a,16) + loop(b,16) + 1 0 0 0 0 1 bits(4,a) bits(4,b) bits(4,a+(a&b)) + end loop +end loop + + + + + + + Testcase + + + Label + A plus B (A1001) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# A plus B +loop(a,16) + loop(b,16) + 1 0 0 1 0 1 bits(4,a) bits(4,b) bits(4,a+b) + end loop +end loop + + + + + + + + Testcase + + + Label + (A OR !B) plus (A AND B) (A1010) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# (A OR !B) plus (A AND B) +loop(a,16) + loop(b,16) + 1 0 1 0 0 1 bits(4,a) bits(4,b) bits(4,(a|~b)+(a&b)) + end loop +end loop + + + + + + + Testcase + + + Label + (A AND B) minus 1 (A1011) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# (A AND B) minus 1 +loop(a,16) + loop(b,16) + 1 0 1 1 0 1 bits(4,a) bits(4,b) bits(4,(a&b)-1) + end loop +end loop + + + + + + + Testcase + + + Label + A plus A (A1100) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# A plus A +loop(a,16) + 1 1 0 0 0 1 bits(4,a) X X X X bits(4,a+a) +end loop + + + + + + + Testcase + + + Label + (A OR B) plus A (A1101) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# (A OR B) plus A +loop(a,16) + loop(b,16) + 1 1 0 1 0 1 bits(4,a) bits(4,b) bits(4,(a|b)+a) + end loop +end loop + + + + + + + + + + Testcase + + + Label + (A OR !B) plus A (A1110) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# (A OR !B) plus A +loop(a,16) + loop(b,16) + 1 1 1 0 0 1 bits(4,a) bits(4,b) bits(4,(a|~b)+a) + end loop +end loop + + + + + + + + + + + Testcase + + + Label + A minus 1 (A1111) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# A minus 1 +loop(a,16) + 1 1 1 1 0 1 bits(4,a) X X X X bits(4,a-1) +end loop + + + + + + + + Testcase + + + Label + !A (L0000) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# M=1, Cn=X MEANS LOGIC MODE +# !A +loop(a,16) + 0 0 0 0 1 0 bits(4,a) X X X X bits(4,~a) +end loop + + + + + + + Testcase + + + Label + !A AND !B (L0001) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# !A AND !B +loop(a,16) + loop(b,16) + 0 0 0 1 1 0 bits(4,a) bits(4,b) bits(4,(~a)&(~b)) + end loop +end loop + + + + + + + + Testcase + + + Label + !A AND B (L0010) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# !A AND B +loop(a,16) + loop(b,16) + 0 0 1 0 1 0 bits(4,a) bits(4,b) bits(4,~a&b) + end loop +end loop + + + + + + + + Testcase + + + Label + "logic 0" (L0011) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# MINUS 1 +0 0 1 1 1 0 X X X X X X X X 0 0 0 0 + + + + + + + + + Testcase + + + Label + !(A AND B) (L0100) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# !(A AND B) +loop(a,16) + loop(b,16) + 0 1 0 0 1 0 bits(4,a) bits(4,b) bits(4,~(a&b)) + end loop +end loop + + + + + + + + Text + + + textFontSize + 36 + + + Description + Logic Tests + (M=1) + + + + + + Testcase + + + Label + !B (L0101) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# !B +loop(a,16) + loop(b,16) + 0 1 0 1 1 0 X X X X bits(4,b) bits(4,~b) + end loop +end loop + + + + + + + + Testcase + + + Label + A XOR B (L0110) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# A XOR B +loop(a,16) + loop(b,16) + 0 1 1 0 1 0 bits(4,a) bits(4,b) bits(4,a^b) + end loop +end loop + + + + + + + + + Testcase + + + Label + A AND !B (L0111) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# (A AND !B) +loop(a,16) + loop(b,16) + 0 1 1 1 1 0 bits(4,a) bits(4,b) bits(4,(a&~b)) + end loop +end loop + + + + + + + + Testcase + + + Label + !A OR B (L1000) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# !A OR B +loop(a,16) + loop(b,16) + 1 0 0 0 1 1 bits(4,a) bits(4,b) bits(4,~a|b) + end loop +end loop + + + + + + + Testcase + + + Label + !(A XOR B) (L1001) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# !(A XOR B) +loop(a,16) + loop(b,16) + 1 0 0 1 1 0 bits(4,a) bits(4,b) bits(4,~(a^b)) + end loop +end loop + + + + + + + + Testcase + + + Label + B (L1010) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# B +loop(a,16) + loop(b,16) + 1 0 1 0 1 0 X X X X bits(4,b) bits(4,b) + end loop +end loop + + + + + + + Testcase + + + Label + A AND B (L1011) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# A AND B +loop(a,16) + loop(b,16) + 1 0 1 1 1 0 bits(4,a) bits(4,b) bits(4,a&b) + end loop +end loop + + + + + + + Testcase + + + Label + "logic 1" (L1100) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# A plus A + + 1 1 0 0 1 0 X X X X X X X X 1 1 1 1 + + + + + + + + Testcase + + + Label + A OR !B (L1101) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# A OR !B +loop(a,16) + loop(b,16) + 1 1 0 1 1 0 bits(4,a) bits(4,b) bits(4,a|~b) + end loop +end loop + + + + + + + + + + Testcase + + + Label + A OR B (L1110) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# A OR B +loop(a,16) + loop(b,16) + 1 1 1 0 1 0 bits(4,a) bits(4,b) bits(4,a|b) + end loop +end loop + + + + + + + + + + + Testcase + + + Label + A (L1111) + + + Testdata + + S3 S2 S1 S0 M Cn ~A3 ~A2 ~A1 ~A0 ~B3 ~B2 ~B1 ~B0 ~F3 ~F2 ~F1 ~F0 +# A +loop(a,16) + 1 1 1 1 1 0 bits(4,a) X X X X bits(4,a) +end loop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/de/neemann/digital/integration/TestExamples.java b/src/test/java/de/neemann/digital/integration/TestExamples.java index c468acc92..753614bf5 100644 --- a/src/test/java/de/neemann/digital/integration/TestExamples.java +++ b/src/test/java/de/neemann/digital/integration/TestExamples.java @@ -29,8 +29,8 @@ public class TestExamples extends TestCase { */ public void testDistExamples() throws Exception { File examples = new File(Resources.getRoot().getParentFile().getParentFile(), "/main/dig"); - assertEquals(211, new FileScanner(this::check).scan(examples)); - assertEquals(127, testCasesInFiles); + assertEquals(212, new FileScanner(this::check).scan(examples)); + assertEquals(159, testCasesInFiles); } /**