; set of examples of Microprogram ; used in this design { %NAME Adder %MAPS NODE:F1 Disabled1 NODE:F2 Enabled2 NODE:F3 Disabled1 NODE:F4 Disabled2 %MPTABLE 1:2: : : : :REG1: : : : : : : :A:X:X:X:X:X:X:X:X 2:3: : : : :REG2: : : : : : : :B:X:X:X:X:X:X:X:X 3:4:REG1:REG2: : : : :ADD: : :REG3: : : :X:X:X:X:X:X:X:X 4:END: : : : : : : : : : : :REG3: :X:X:X:X:X:X:X:X } { %NAME Subtractor %MAPS NODE:F4 Disabled2 NODE:F3 Disabled1 NODE:F2 Enabled2 NODE:F1 Enabled1 %MPTABLE 1:2: : : : :REG1: : : : : : : :A:X:X:X:X:X:X:X:X 2:3: : : : :REG2: : : : : : : :B:X:X:X:X:X:X:X:X 3:4:REG2:REG1: : : :NEG:ADD: : :REG2: : : :X:X:X:X:X:X:X:X 4:END: : : : : : : : : : : :REG2: :X:X:X:X:X:X:X:X %TESTTABLE 0:0:0:0 } { %NAME Subtractor - Low Cost %MAPS NODE:F4 Enabled2 NODE:F3 Disabled1 NODE:F2 Disabled2 NODE:F1 Disabled1 %MPTABLE 1:2: : : : :REG1: : : : : : : :A:X:X:X:X:X:X:X:X 2:3: : : : :REG2: : : : : : : :B:X:X:X:X:X:X:X:X 3:4: : :REG2: : : : : :NEG: :REG2: : :X:X:X:X:X:X:X:X 4:5: : :REG1:REG2: : : : :ADDC: :REG3: : :X:X:X:X:X:X:X:X 5:END: : : : : : : : : : : :REG3: :X:X:X:X:X:X:X:X %TESTTABLE 0:0:0:0 } { %NAME A+B/2 - Low cost %MAPS NODE:F4 Enabled2 NODE:F3 Disabled1 NODE:F2 Disabled2 NODE:F1 Disabled1 %MPTABLE 1:2: : : : :REG1: : : : : : : :A:X:X:X:X:X:X:X:X 2:3: : : : :REG2: : : : : : : :B:X:X:X:X:X:X:X:X 3:4: : :REG1:REG2: : : : :ADDC: :REG3: : :X:X:X:X:X:X:X:X 4:5: : :REG3: : : : : :SHR0: :REG3: : :X:X:X:X:X:X:X:X 5:END: : : : : : : : : : : :REG3: :X:X:X:X:X:X:X:X %TESTTABLE 10:9:0:0 14:6:0:0 4:14:0:0 1:12:0:0 3:5:0:0 4:1:0:0 10:2:0:0 9:1:0:0 9:15:0:0 15:2:0:0 } { %NAME A+B/2 %MAPS NODE:F4 Disabled2 NODE:F3 Enabled1 NODE:F2 Enabled2 NODE:F1 Disabled1 %MPTABLE 1:2: : : : :REG1: : : : : : : :A:X:X:X:X:X:X:X:X 2:3: : : : :REG2: : : : : : : :B:X:X:X:X:X:X:X:X 3:4:REG1:REG2: : : : :ADD:SHR0: :REG3: : : :X:X:X:X:X:X:X:X 4:END: : : : : : : : : : : :REG3: :X:X:X:X:X:X:X:X %TESTTABLE 10:9:0:0 14:6:0:0 4:14:0:0 1:12:0:0 3:5:0:0 4:1:0:0 10:2:0:0 9:1:0:0 9:15:0:0 15:2:0:0 } { %NAME GCD %MAPS NODE:c7eq cneq NODE:c7reg2 creg2 NODE:c7reg1 creg1 NODE:F4 Enabled2 NODE:F3 Enabled1 NODE:F2 Disabled2 NODE:F1 Enabled1 %MPTABLE 1:2: : : : :REG1: : : : : : : :A:X:X:X:X:X:X:X:X 2:3: : : : :REG2: : : : : : : :B:X:X:X:X:X:X:X:X 3:4:REG2: : : : :INV: :INC: :REG3: : : :X:X:X:X:X:X:X:X 4:5: : :REG1:REG3: : : : :ADDC: :REG4: : :X:X:X:X:X:X:1:X 4:END: : : : : : : : : : : :REG1: :X:X:X:X:X:X:0:X 5:4:REG4: : : : : : : : :REG1: : : :X:X:X:X:X:X:X:1 5:4:REG4: :REG4: : :INV: :INC: :REG2:REG3: : :X:X:X:X:X:X:X:0 %TESTTABLE 0:0:0:0 } { %NAME Square root %MAPS NODE:c6eq ceq NODE:c6reg1 creg5 NODE:F4 Enabled2 NODE:F3 Enabled1 NODE:F2 Disabled2 NODE:F1 Enabled1 %MPTABLE 1:2: : : : :REG1: : : : : : : :A:X:X:X:X:X:X:X:X 2:3: : : : :REG2: : : : : : : :0:X:X:X:X:X:X:X:X 3:4:REG2: : : : :SHL1: :SHL1: :REG3: : : :X:X:X:X:X:X:X:X 4:5:REG3: : : : :SHR1: :SHR0: :REG5: : : :X:X:X:X:X:X:X:X 5:6: : :REG1:REG3: : : : :ADDC: :REG4: : :X:X:X:X:X:X:X:X 6:END: : : : : : : : : : : :REG5: :X:X:X:X:X:X:X:1 6:7:REG2: :REG5: : :SHR1: :INC:DEC:REG2:REG5: : :X:X:X:X:X:X:X:0 7:END: : : : : : : : : : : :REG5: :X:X:X:X:X:1:X:0 7:8: : :REG1:REG2: : : : :ADDC: :REG4: : :X:X:X:X:X:X:X:X 8:6: : : : : : : : : : : : : :X:X:X:X:X:X:X:0 8:END: : : : : : : : : : : :REG5: :X:X:X:X:X:X:X:1 %TESTTABLE 0:0:0:0 } { %NAME Multiplier %MAPS NODE:F1 Enabled1 NODE:F2 Disabled2 NODE:F3 Disabled1 NODE:F4 Enabled2 NODE:c3reg1 creg3 NODE:c3bit1 cbit0 NODE:c3eq ceq NODE:c5reg1 creg3 NODE:c5eq ceq %MPTABLE 1:2: : : : :REG2: : : : : : : :A:X:X:X:X:X:X:X:X 2:3: : : : :REG3: : : : : : : :B:X:X:X:X:X:X:X:X 3:4:REG3: :REG1:REG2: :SHR0: : :ADDC:REG3:REG1: : :X:X:0:X:0:X:X:X 3:3:REG3: :REG2: : :SHR0: : :SHL0:REG3:REG2: : :X:X:1:X:0:X:X:X 3:END: : : : : : : : : : : :REG1: :X:X:X:X:1:X:X:X 4:3: : :REG2: : : : : :SHL0: :REG2: : :X:X:X:X:X:X:X:X %TESTTABLE 4:3:0:0 2:7:0:0 5:3:0:0 } { %NAME Multiplier - Low Cost %MAPS NODE:F1 Enabled1 NODE:F2 Disabled2 NODE:F3 Disabled1 NODE:F4 Enabled2 NODE:c3reg1 creg3 NODE:c3bit1 cbit0 NODE:c3eq ceq NODE:c5reg1 creg3 NODE:c5eq ceq %MPTABLE 1:2: : : : :REG2: : : : : : : :A:X:X:X:X:X:X:X:X 2:3: : : : :REG3: : : : : : : :B:X:X:X:X:X:X:X:X 3:4:REG3: :REG1:REG2: :SHR0: : :ADDC:REG3:REG1: : :X:X:0:X:0:X:X:X 3:3:REG3: :REG2:REG2: :SHR0: : :ADDC:REG3:REG2: : :X:X:1:X:0:X:X:X 3:END: : : : : : : : : : : :REG1: :X:X:X:X:1:X:X:X 4:3: : :REG2:REG2: : : : :ADDC: :REG2: : :X:X:X:X:X:X:X:X %TESTTABLE 4:3:0:0 2:7:0:0 5:3:0:0 } { %NAME Complement Code %MAPS NODE:F1 Enabled1 NODE:F2 Disabled2 NODE:F3 Disabled1 NODE:F4 Enabled2 NODE:c3eq ceq NODE:c3reg1 creg1 NODE:c3bit1 cbit0 NODE:c5reg1 creg2 NODE:c5eq ceq %MPTABLE 1:2: : : : :REG1: : : : : : : :A:X:X:X:X:X:X:X:X 2:3: : : : :REG2: : : : : : : :1:X:X:X:X:X:X:X:X 3:3:REG1: :REG2: : :SHR0: : :SHL0:REG1:REG2: : :X:X:1:X:0:X:X:X 3:4:REG1: :REG2: : :SHR1: : :SHL0:REG1:REG2: : :X:X:0:X:0:X:X:X 3:END: : : : : : : : : : : :REG1: :X:X:X:X:1:X:X:X 4:4:REG1: :REG2: : :SHR1: : :SHL0:REG1:REG2: : :X:X:1:X:0:X:X:X 4:4:REG1: :REG2: : :SHR0: : :SHL0:REG1:REG2: : :X:X:0:X:0:X:X:X 4:END: : : : : : : : : : : :REG1: :X:X:X:X:1:X:X:X %TESTTABLE 0:0:0:0 1:0:0:0 2:0:0:0 3:0:0:0 4:0:0:0 5:0:0:0 6:0:0:0 7:0:0:0 8:0:0:0 9:0:0:0 10:0:0:0 11:0:0:0 12:0:0:0 13:0:0:0 14:0:0:0 15:0:0:0 } { %NAME Divider %MAPS NODE:F1 Enabled1 NODE:F2 Disabled2 NODE:F3 Disabled1 NODE:F4 Enabled2 NODE:c3reg1 creg2 NODE:c3bit1 cbit3 NODE:c3eq ceq NODE:c5reg1 creg5 NODE:c5eq ceq %MPTABLE 1:2: : : : :REG1: : : : : : : :A:X:X:X:X:X:X:X:X 2:3: : : : :REG2: : : : : : : :B:X:X:X:X:X:X:X:X 3:3:REG2: :REG5: : :SHL0: : :SHL1:REG2:REG5: : :X:X:1:X:X:X:X:X 3:4:REG2: :REG2: : :NEG: : :SHR0:REG4:REG2: : :X:X:0:X:X:X:X:X 4:5: : :REG1:REG4: : : : :ADDC: :REG1: : :X:X:X:X:X:X:X:X 5:6:REG2: :REG3: : :NEG: : :SHL1:REG4:REG3: : :X:X:X:X:X:X:X:1 5:6:REG2: :REG3: : : : : :SHL0:REG4:REG3: : :X:X:X:X:X:X:X:0 6:4:REG2: :REG5: : :SHR0: : :SHR0:REG2:REG5: : :X:X:X:X:0:X:X:X 6:END: : : : : : : : : : : :REG3: :X:X:X:X:1:X:X:X %TESTTABLE 4:2:0:0 7:2:0:0 6:3:0:0 8:2:0:0 9:3:0:0 12:6:0:0 14:2:0:0 15:3:0:0 14:15:0:0 15:15:0:0 15:1:0:0 0:1:0:0 }