http://neil.franklin.ch/Projects/PDP-10/pdp10.lf - design of control, instr decoder, state machine random logic functions automatically grep-ed from pdp10.java, last generation 2002.11.13 buffer Mem-Addr16 = MAM-Addr.31 buffer Mem-Addr8 = MAM-Addr.32 buffer Mem-Addr4 = MAM-Addr.33 buffer Mem-Addr2 = MAM-Addr.34 buffer Mem-Addr1 = MAM-Addr.35 control ClkE-Mem = (~Mdrm-Mux=R)&MdwmClkE-Mem buffer Fmem-Addr8 = MAM-Addr.32 buffer Fmem-Addr4 = MAM-Addr.33 buffer Fmem-Addr2 = MAM-Addr.34 buffer Fmem-Addr1 = MAM-Addr.35 control ClkE-Fmem = Mdrm-Mux=R&MdwmClkE-Fmem control MDRM-Mux=Fmem = addr<020 -> OR of address bits 18..31 = 0 control MAM-Mux=PC = insMAM-Mux=PC control MAM-Mux=IR.X = insMAM-Mux=IR.X control MAM-Mux=MA = ...|atestMAM-Mux=MA|logicMAM-Mux=MA| hwordMAM-Mux=MA|btestMAM-Mux=MA|..|insMAM-Mux=MA this will grow with other instruction groups adding subparts control MAM-Mux=IR.AC = ...|atestMAM-Mux=IR.AC|logicMAM-Mux=IR.AC| hwordMAM-Mux=IR.AC|btestMAM-Mux=IR.AC|... this will grow with other instruction groups adding subparts control PC-Mux=PC+1 = insPC-Mux=PC+1|..|atestPC-Mux=PC+1|btestPC-Mux=PC+1|... this will grow when skip instructions are added carrygenerator PCcarry = PC-Mux=PC+1 control ClkE-PC = insClkE-PC|..|atestClkE-PC|btestClkE-PC|... this will grow when skip or jump instructions are added state insget = ...|atestinsget|logicinsget|hwordinsget|btestinsget|... this will grow with other instruction groups adding subparts detect insacc = IR.AC.0|IR.AC.1|IR.AC.2|IR.AC.3 detect insindex = IR.X.0|IR.X.1|IR.X.2|IR.X.3 state insexec = insget|insexec&(insindex|IR.I) detect insdecode = insexec&(~insindex)&(~IR.I) control IR-MuxselIndex = insindex control IR-MuxselIndir = (~insindex)&IR.I control ClkE-IR+MA = insget|insexec&(insindex|IR.I) control subpart insMAM-Mux=PC = insget control subpart insMAM-Mux=IR.X = insexec&insindex control subpart insMAM-Mux=MA = insexec&(~insindex)&IR.I control subpart insPC-Mux=PC+1 = insget control subpart insClkE-PC = insget control ClkE-MO = ...|atestClkE-MO|logicClkE-MO|hwordClkE-MO|btestClkE-MO|... this will grow with other instruction groups adding subparts control Imm-Mux=E = ...|atestImm-Mux=E|logicImm-Mux=E|hwordImm-Mux=E|btestImm-Mux=E|... this will grow with other instruction groups adding subparts buffer mdwm-Sel1 = IR.OP.2 buffer mdwm-Sel2 = IR.OP.1 buffer mdwm-Sel4 = IR.OP.0 control mdwmClkE-Mem = ...|atestClkE-Mem|logicClkE-Mem|hwordClkE-Mem|btestClkE-Mem|... this will grow with other instruction groups adding subparts decode atestinstr = insdecode&(~IR.OP.0)&IR.OP.1&IR.OP.2 decode atestcai = atestinstr&(~IR.OP.3)&(~IR.OP.4)&(~IR.OP.5) decode atestcam = atestinstr&(~IR.OP.3)&(~IR.OP.4)&IR.OP.5 state atestseccam = atestcam decode atestjump = atestinstr&(IR.OP.3|IR.OP.4)&(~IR.OP.5) decode atestskip = atestinstr&(IR.OP.3|IR.OP.4)&IR.OP.5 state atestwrmem = atestskip&IR.OP.3 state atestwracc = atestjump&IR.OP.3|atestskip&(~IR.OP.3)&insacc| atestwrmem&insacc state subpart atestinsget = atestcai|atestcam2|atestjump&(~IR.OP.3)| atestskip&(~IR.OP.3)&(~insacc)|atestwracc| atestwrmem&(~IR.OP.3) buffer atest-SelFunc1 = IR.OP.4 buffer atest-SelFunc2 = IR.OP.3 carrygenerator atest-carry = ~IR.OP.4 control ClkE-atestAR = atestjump|atestskip control subpart atestMAM-Mux=MA = atestcam|atestskip|atestwrmem control subpart atestMAM-Mux=IR.AC = atestcai|atestjump|atestcam2|atestwracc control subpart atestClkE-MO = atestcam control subpart atestImm-Mux=E = atestcai control subpart atestClkE-Mem = atestwracc|atestwrmem control subpart atestPC-Mux=PC+1 = atestcai|atestskip|atestcam2 test atestcond = atestneg&IR.OP.8|atestzero&IR.OP.7 control subpart atestClkE-PC = (atestPC-Mux=PC+1|atestjump)&(atestcond^IR.OP.6) decode logicinstr = insdecode&IR.OP.0&(~IR.OP.1)&(~IR.OP.2) decode logicimmed = logicinstr&(~IR.OP.7)&IR.OP.8 decode logicmem = logicinstr&(~((~IR.OP.7)&IR.OP.8)) state logicsecmem = logicmem state logicstoac = logicsecmem&(~(IR.OP.7&(~IR.OP.8)))|logicimmed state logicstomem = logicsecmem&IR.OP.7&(~IR.OP.8)|logicstoac&IR.OP.7&IR.OP.8 state subpart logicinsget = logicstoac&(~(IR.OP.7&IR.OP.8))|logicstomem buffer logic-Func8 = IR.OP.3 buffer logic-Func4 = IR.OP.4 buffer logic-Func2 = IR.OP.5 buffer logic-Func1 = IR.OP.6 control ClkE-logicAR = logicsecmem|logicimmed control subpart logicMAM-Mux=MA = logicmem|logicstomem control subpart logicMAM-Mux=IR.AC = logicsecmem|logicimmed|logicstoac control subpart logicClkE-MO = logicmem control subpart logicImm-Mux=E = logicimmed control subpart logicClkE-Mem = logicstoac|logicstomem decode hwordinstr = insdecode&IR.OP.0&(~IR.OP.1)&IR.OP.2 decode hwordimmed = logicinstr&(~IR.OP.7)&IR.OP.8 decode hwordac = howrdinstr&IR.OP.7&(~IR.OP.8) decode hwordmem = hwordinstr&((~IR.OP.7)&(~IR.OP.8)|IR.OP.7&IR.OP.8) state hwordsecmem = hwordinstr&IR.OP.7 state hwordsecac = hwordinstr&(~IR.OP.7)&(~IR.OP.8) state hwordstomem = hwordsecmem decode hworddoself = IR.OP.7&IR.OP.8&insacc state hwordstoac = hwordimmed|hwordsecac|hwordstomem&hworddoself state subpart hwordinsget = hwordstoac|hwordstomem&(~hworddoself) buffer hword-SelSwapped = IR.OP.6 control subpart hwordMAM-Mux=MA = hwordmem|hwordsecmem|hwordstomem control subpart hwordMAM-Mux=IR.AC = hwordimmed|hwordac|hwordsecac|hwordstoac control subpart hwordClkE-MO = hwordac|hwordmem control subpart hwordImm-Mux=E = hwordimmed control subpart hwordMdwmClkE-Mem = hwordstoac|howrdstomem buffer hword-SelMod1 = IR.OP.5 buffer hword-SelMod2 = IR.OP.4 buffer hword-SelDest = IR.OP.3 control ClkE-hwordAR = hwordimmed|hwordsecmem|hwordsecac decode btestinstr = insdecode&IR.OP.0&IR.OP.1&(~IR.OP.2) decode btestimmed = btestinstr&(~IR.OP.7)&IR.OP.8 decode btestmem = btestinstr&(~((~IR.OP.7)&IR.OP.8)) state btestsecmem = btestmem state bteststoac = (btestimmed|btestsecmem)&(IR.OP.3|IR.OP.4) state subpart btestinsget = (btestimmed|btestsecmem)&(~(IR.OP.3|IR.OP.4))|bteststoac buffer btest-SelSwapped = IR.OP.8 control subpart btestMAM-Mux=MA = btestmem control subpart atestMAM-Mux=IR.AC = btestimmed|btestsecmem|bteststoac control subpart btestClkE-MO = btestmem control subpart btestImm-Mux=E = btestimmed control subpart atestClkE-Mem = bteststoac buffer btest-SelMod1 = IR.OP.4 buffer btest-SelMod2 = IR.OP.3 control ClkE-btestAR = (btestimmed|btestsecmem)&(IR.OP.3|IR.OP.4) control subpart atestPC-Mux=PC+1 = btestimmed|btestsecmem control atestnow = atestPC-Mux=PC+1 control subpart btestClkE-PC = btestnow&((btestzero&IR.OP.7)^IR.OP.6)