📄 eqns.js
字号:
currImp = retFBMC(rst[signal][i]); str += nlStr + operator["IMPORT"] + currImp; } } if (i>0) str += nlTabStr + operator["OR"] + spcStr; str += retPterm(rst[signal][i]); } if (rstNegs[signal]) str += operator["CLOSE_NEGATE"]; str += operator["ENDLN"]; } } else if (gblrst[signal]) { if (gblrst[signal].length == 1) { if (rstNegs[signal]) str += operator["NOT"]; str += retPterm(gblrst[signal][0]); } else { if (rstNegs[signal]) str += operator["NOT"] + operator["OPEN_NEGATE"]; for (i=0; i<gblrst[signal].length; i++) { if (i>0) str += nlTabStr + operator["OR"] + spcStr; str += retPterm(gblrst[signal][i]); } if (rstNegs[signal]) str += operator["CLOSE_NEGATE"]; str += operator["ENDLN"] + tabStr + cClrS + operator["COMMENT"] + spcStr + operator["GSR_COM"] + cClrE; } } else if (eqnType) str += operator["B0"]; return str;}function retSet(signal) { var str = ""; if (set[signal]) { if (set[signal].length == 1) { var currImp = ""; if (!eqnType && setimp[signal] && (setimp[signal][0] == "1")) { if (currImp != retFBMC(set[signal][0])) { currImp = retFBMC(set[signal][0]); str += nlStr + operator["IMPORT"] + currImp; } } if (setNegs[signal]) str += operator["NOT"]; str += retPterm(set[signal][0]); } else { var currImp = ""; if (setNegs[signal]) str += operator["NOT"] + operator["OPEN_NEGATE"]; for (i=0; i<set[signal].length; i++) { if (!eqnType && setimp[signal] && (setimp[signal][i] == "1")) { if (currImp != retFBMC(set[signal][i])) { currImp = retFBMC(set[signal][i]); str += nlStr + operator["IMPORT"] + currImp; } } if (i>0) str += nlTabStr + operator["OR"] + spcStr; str += retPterm(set[signal][i]); } if (setNegs[signal]) str += operator["CLOSE_NEGATE"]; str += operator["ENDLN"]; } } else if (gblset[signal]) { if (gblset[signal].length == 1) { if (setNegs[signal]) str += operator["NOT"]; str += retPterm(gblset[signal][0]); } else { if (setNegs[signal]) str += operator["NOT"] + operator["OPEN_NEGATE"]; for (i=0; i<gblset[signal].length; i++) { if (i>0) str += nlTabStr + operator["OR"] + spcStr; str += retPterm(gblset[signal][i]); } if (setNegs[signal]) str += operator["CLOSE_NEGATE"]; str += operator["ENDLN"] + tabStr + cClrS + operator["COMMENT"] + spcStr + operator["GSR_COM"] + cClrE; } } else if (eqnType) str += operator["B0"]; return str;}function retCE(signal) { var str = ""; if (ce[signal]) { if (ce[signal].length == 1) { var currImp = ""; if (!eqnType && ceimp[signal] && (ceimp[signal][0] == "1")) { if (currImp != retFBMC(ce[signal][0])) { currImp = retFBMC(ce[signal][0]); str += nlStr + operator["IMPORT"] + currImp; } } if (ceNegs[signal]) str += operator["NOT"]; str += retPterm(ce[signal][0]); } else { var currImp = ""; if (ceNegs[signal]) str += operator["NOT"] + operator["OPEN_NEGATE"]; for (i=0; i<ce[signal].length; i++) { if (!eqnType && ceimp[signal] && (ceimp[signal][i] == "1")) { if (currImp != retFBMC(ce[signal][i])) { currImp = retFBMC(ce[signal][i]); str += nlStr + operator["IMPORT"] + currImp; } } if (i>0) str += nlTabStr + operator["OR"] + spcStr; str += retPterm(ce[signal][i]); } if (ceNegs[signal]) str += operator["CLOSE_NEGATE"]; str += operator["ENDLN"]; } } else if (eqnType) str += operator["B1"]; return str;}function retTrst(signal) { var str = ""; if (trst[signal]) { if (trstNegs[signal]) str += operator["NOT"] + operator["OPEN_NEGATE"]; for (i=0; i<trst[signal].length; i++) { var currImp = ""; if (!eqnType && trstimp[signal] && (trstimp[signal][0] == "1")) { if (currImp != retFBMC(trst[signal][0])) { currImp = retFBMC(trst[signal][0]); str += nlStr + operator["IMPORT"] + currImp; } } if (i>0) str += nlTabStr + operator["OR"] + spcStr; str += retPterm(trst[signal][i]); } if (trstNegs[signal]) str += operator["CLOSE_NEGATE"]; } else if (gbltrst[signal]) { if (trstNegs[signal]) str += operator["NOT"] + operator["OPEN_NEGATE"]; for (i=0; i<gbltrst[signal].length; i++) { if (i>0) str += nlTabStr + operator["OR"] + spcStr; str += retPterm(gbltrst[signal][i]); } if (trstNegs[signal]) str += operator["CLOSE_NEGATE"]; } str += operator["ENDLN"]; return str;}function retEqn(signal) { var str = inregStr = ""; var iStr = qStr = ""; var dStr = dEqn = ""; var cStr = cEqn = ""; var clrStr = clrEqn = ""; var preStr = preEqn = ""; var ceStr = ceEqn = ""; var oeStr = oeEqn = ""; var sigName = retSigName(signal); var type = retSigType(retSigIndex(signal)); if (gbltrst[signal] || trst[signal]) iStr = operator["_I"]; if (eqnType) qStr = updateName(sigName, iStr); if (inreg[signal]) { if (!eqnType) inregStr = operator["COMMENT"] + " Direct Input Register" + nlStr; dStr = retSigName(inreg[signal][0]); } else dStr = retD1D2(signal); if (eqnType && !dOneLit) { dEqn = dStr; dStr = dStr.substring(0,dStr.indexOf(operator["EQUAL_COLON"])); } else if (!eqnType) { if (!dOneLit) dStr = dStr.substring(dStr.indexOf(operator["EQUAL_COLON"])+2); if (sigNegs[retSigIndex(signal)] == "ON") dEqn += operator["NOT"]; dEqn += sigName; if ((type == operator["FT"]) || (type == operator["FTD"])) dEqn += operator["_T"]; else if ((type == operator["FD"]) || (type == operator["FTD"])|| (type == operator["LD"])) dEqn += operator["_D"]; dEqn += " "; if ((type != operator["Q"]) && (type != operator["LD"])) dEqn += operator["EQUAL_COLON"]; else dEqn += operator["EQUAL"]; dEqn += dStr; if (dOneLit) dEqn += operator["ENDLN"]; } cStr = retClk(signal); if (eqnType && !isOneLiteral(cStr)){ cEqn = cStr; if (cEqn.indexOf(operator["ENDLN"]) == -1) cEqn += operator["ENDLN"]; cStr = updateName(sigName, operator["_C"]); } else if (!eqnType && cStr) { cEqn += cStr; cStr = tabStr + sigName; if (type == operator["LD"]) cStr += operator["_LH"]; else if (type == operator["FDD"]) cStr += operator["_DEC"]; else cStr += operator["_C"]; if (cEqn.indexOf(operator["ENDLN"]) == -1) cEqn += operator["ENDLN"]; if (gblclk[signal]) cEqn += tabStr + operator["COMMENT"] + " " + operator["GCK_COM"]; } clrStr = retRst(signal); if (eqnType && !isOneLiteral(clrStr)){ clrEqn = clrStr; if (cEqn.indexOf(operator["ENDLN"]) == -1) clrEqn += operator["ENDLN"]; clrStr = updateName(sigName, operator["_CLR"]); } else if (!eqnType && clrStr) { clrEqn += clrStr; clrStr = tabStr + sigName + operator["_CLR"]; if (clrEqn.indexOf(operator["ENDLN"]) == -1) clrEqn += operator["ENDLN"]; if (gblrst[signal]) clrEqn += tabStr + operator["COMMENT"] + " " + operator["GSR_COM"]; } preStr = retSet(signal); if (eqnType && !isOneLiteral(preStr)){ preEqn = preStr; if (cEqn.indexOf(operator["ENDLN"]) == -1) preEqn += operator["ENDLN"]; preStr = updateName(sigName, operator["_PRE"]); } else if (!eqnType && preStr) { preEqn += preStr; preStr = tabStr + sigName + operator["_PRE"]; if (preEqn.indexOf(operator["ENDLN"]) == -1) preEqn += operator["ENDLN"]; if (gblset[signal]) preEqn += tabStr + operator["COMMENT"] + " " + operator["GSR_COM"]; } if (!is9500()) { ceStr = retCE(signal); if (eqnType && !isOneLiteral(ceStr)){ ceEqn = ceStr; if (cEqn.indexOf(operator["ENDLN"]) == -1) ceEqn += operator["ENDLN"]; ceStr = updateName(sigName, operator["_CE"]); } else if (!eqnType && ceStr) { ceEqn += ceStr; ceStr = tabStr + sigName + operator["_CE"]; if (ceEqn.indexOf(operator["ENDLN"]) == -1) ceEqn += operator["ENDLN"]; } } if (eqnType && trst[signal]) oeEqn = retTrst(signal) else if (!eqnType && (trst[signal] || gbltrst[signal])) oeEqn = retTrst(signal); var newline = false; if (type == "") { str += operator["ASSIGN"] + qStr + " " + operator["EQUAL"]; if (dOneLit) str += dStr; else str += dEqn.substring(dEqn.indexOf(operator["EQUAL"])+2); if (oeEqn != "") { var oeStr = updateName(sigName, operator["_OE"]); if (eqnType == 1) { str += nlStr + sigName + operator["OE_START"] + qStr + operator["OE_WHEN"] + oeStr + operator["OE_EQUAL"] + operator["B1"] + operator["OE_ELSE"] + operator["OE_EQUAL"] + operator["BZ"] + operator["ENDLN"]; } else if (eqnType == 2) { str += nlStr + operator["ASSIGN"] + sigName + operator["OE_START"] + oeStr + operator["OE_WHEN"] + qStr + operator["OE_ELSE"] + operator["BZ"] + operator["ENDLN"]; } str += nlStr + operator["ASSIGN"] + oeStr + " " + operator["EQUAL"] + " " + oeEqn; } } else { if (eqnType == 1) { str += type + "_" + removePar(retSigName(signal)) + ": " + type + " " + operator["START_EQN"] + qStr + ", " + dStr + ", " + cStr + ", " + clrStr + ", " + preStr; if (!is9500() && (type != operator["LD"])) str += ", " + ceStr; str += operator["END_EQN"] + operator["ENDLN"]; newline = true; } else if (eqnType == 2) { str += type + " " + type + "_" + removePar(retSigName(signal)) + operator["START_EQN"] + qStr + ", " + dStr + ", " + cStr + ", " + clrStr + ", " + preStr; if (!is9500() && (type != operator["LD"])) str += ", " + ceStr; str += operator["END_EQN"] + operator["ENDLN"]; newline = true; } if (dEqn != "") { if (newline) str += nlStr; if (inregStr) str += inregStr; str += operator["ASSIGN"] + dEqn; } if (cEqn != "") { if (newline || !eqnType) str += nlStr; str += operator["ASSIGN"] + cStr + " " + operator["EQUAL"] + " " + cEqn; } if (clrEqn != "") { if (newline || !eqnType) str += nlStr; str += operator["ASSIGN"] + clrStr + " " + operator["EQUAL"] + " " + clrEqn; } if (preEqn != "") { if (newline || !eqnType) str += nlStr; str += operator["ASSIGN"] + preStr + " " + operator["EQUAL"] + " " + preEqn; } if (ceEqn != "") { if (newline || !eqnType) str += nlStr; str += operator["ASSIGN"] + ceStr + " " + operator["EQUAL"] + " " + ceEqn; } if (oeEqn != "") { if (eqnType == 1) { var oeStr = updateName(sigName, operator["_OE"]); str += nlStr + sigName + operator["OE_START"] + qStr + operator["OE_WHEN"] + oeStr + operator["OE_EQUAL"] + operator["B1"] + operator["OE_ELSE"] + operator["OE_EQUAL"] + operator["BZ"] + operator["ENDLN"]; str += nlStr + oeStr + " " + operator["EQUAL"] + " " + oeEqn; } else if (eqnType == 2) { var oeStr = updateName(sigName, operator["_OE"]); str += nlStr + operator["ASSIGN"] + sigName + operator["OE_START"] + oeStr + operator["OE_WHEN"] + qStr + operator["OE_ELSE"] + operator["BZ"] + operator["ENDLN"]; str += nlStr + operator["ASSIGN"] + oeStr + " " + operator["EQUAL"] + " " + oeEqn; } else { var oeStr = sigName + operator["_OE"]; if (gbltrst[signal]) oeEqn += tabStr + operator["COMMENT"] + " " + operator["GTS_COM"]; str += nlStr + tabStr + oeStr + " " + operator["EQUAL"] + " " + oeEqn; } } } return str;}function retFamily() { var family = "xc9500"; if (device.indexOf("XC2C") != -1) { if (device.indexOf("S") != -1) family = "cr2s"; else family = "xbr"; } else if (device.indexOf("XCR3") != -1) family = "xpla3"; else { if (device.indexOf("XL") != -1) family = "xc9500xl"; if (device.indexOf("XV") != -1) family = "xc9500xv"; } return family;}function retDesign() { return design; }function getPterm(pt, type) { if (type) return type + " = " + retPterm(pt); return "PT" + pt.substring(pt.indexOf('_')+1,pt.length) + " = " + retPterm(pt);}function getPRLDName(prld) { if (eqnType != 0) return prld; else if (prld == "VCC") return "S"; return "R";}function retFbnand(signal) { var str = operator["COMMENT"] + spcStr + "Foldback NAND"; str += nlStr + retSigName(signal) + spcStr + operator["EQUAL"] + spcStr; for (i=0; i<fbnand[signal].length; i++) { if (i>0) str += nlTabStr + operator["OR"] + spcStr; str += retPterm(fbnand[signal][i]); } return str;}function getEqn(signal) { return retEqn(signal); }function retUimPterm(pt) { var str = ""; if (!uimPterms[pt]) return pt; for (p=0; p<uimPterms[pt].length; p++) { if (p>0) str += spcStr + operator["AND"] + spcStr; var sig = uimPterms[pt][p]; if (sig.indexOf("/") != -1) sig = sig.substring(1, sig.length); str += retSigName(sig); } return str;}function retUimEqn(signal) { var str = operator["COMMENT"] + spcStr + "FC Node" + nlStr; var neg = 0; if (uimSigNegs[s] == "ON") str += operator["NOT"]; str += retSigName(signal) + spcStr + operator["EQUAL"]; str += retUimPterm(signal) + ";"; return str;}function retLegend(url) { var str = ""; if (!eqnType && !isXC95()) { str = "Legend: " + "<" + "signame" + ">" + ".COMB = combinational node mapped to "; str += "the same physical macrocell as the FastInput \"signal\" (not logically related)"; } else if (eqnType) { str = "Register Legend:"; if (is9500()) { str += nlTabStr + "FDCPE (Q,D,C,CLR,PRE);"; str += nlTabStr + "FTCPE (Q,D,C,CLR,PRE);"; str += nlTabStr + "LDCP (Q,D,G,CLR,PRE);"; } else if (retFamily() == "xbr") { str += nlTabStr + "FDCPE (Q,D,C,CLR,PRE,CE);"; str += nlTabStr + "FDDCPE (Q,D,C,CLR,PRE,CE);"; str += nlTabStr + "FTCPE (Q,D,C,CLR,PRE,CE);"; str += nlTabStr + "FTDCPE (Q,D,C,CLR,PRE,CE);"; str += nlTabStr + "LDCP (Q,D,G,CLR,PRE);"; } else { str += nlTabStr + "FDCPE (Q,D,C,CLR,PRE,CE);"; str += nlTabStr + "FTCPE (Q,D,C,CLR,PRE,CE);"; str += nlTabStr + "LDCP (Q,D,G,CLR,PRE);"; } } return str;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -