📄 eqns.js
字号:
for (i=0; i<clk[signal].length; i++) { if (i>0) str += nlTabStr + operator["OR"] + spcStr; str += retPterm(clk[signal][i]); } str += operator["ENDLN"]; } else if (gblclk[signal]) { if (fStr.indexOf("L") != -1) { if (clkNegs[signal]) str += operator["LE"]; else str += operator["LH"]; } else { if ((fStr.indexOf("TD") != -1) || (fStr.indexOf("DD") != -1)) str += operator["DCLK"]; else str += operator["CLKF"]; } str += spcStr + operator["EQUAL"] + spcStr; if (clkNegs[signal]) str += operator["NOT"]; for (i=0; i<gblclk[signal].length; i++) { if (i>0) str += nlTabStr + operator["OR"] + spcStr; str += retPterm(gblclk[signal][i]); } str += operator["ENDLN"] + tabStr + cClrS + operator["COMMENT"] + spcStr + operator["GCK_COM"] + cClrE; } return str;}function retRst(signal) { var str = nlTabStr; if (eqnType == 0) str += retSigName(signal) + "."; if (rst[signal]) { str += operator["RSTF"] + spcStr + operator["EQUAL"]; if (rstNegs[signal]) str += operator["NOT"]; for (i=0; i<rst[signal].length; i++) { if (i>0) str += nlTabStr + operator["OR"] + spcStr; str += retPterm(rst[signal][i]); } str += operator["ENDLN"]; } else if (gblrst[signal]) { str += operator["RSTF"] + spcStr + operator["EQUAL"]; if (rstNegs[signal]) str += operator["NOT"]; for (i=0; i<gblrst[signal].length; i++) { if (i>0) str += nlTabStr + operator["OR"] + spcStr; str += retPterm(gblrst[signal][i]); } str += operator["ENDLN"] + tabStr + cClrS + operator["COMMENT"] + spcStr + operator["GSR_COM"] + cClrE; } return str;}function retSet(signal) { var str = nlTabStr; if (eqnType == 0) str += retSigName(signal) + "."; if (set[signal]) { var tmpStr = ""; for (i=0; i<set[signal].length; i++) { if (i>0) str += nlTabStr + operator["OR"] + spcStr; tmpStr += retPterm(set[signal][i]); } if (tmpStr != "") { str += operator["SETF"] + spcStr + operator["EQUAL"]; if (setNegs[signal]) str += operator["NOT"]; str += tmpStr; str += operator["ENDLN"]; } } else if (gblset[signal]) { str += operator["SETF"] + spcStr + operator["EQUAL"]; if (setNegs[signal]) str += operator["NOT"]; for (i=0; i<gblset[signal].length; i++) { if (i>0) str += nlTabStr + operator["OR"] + spcStr; str += retPterm(gblset[signal][i]); } str += operator["ENDLN"] + tabStr + cClrS + operator["COMMENT"] + spcStr + operator["GSR_COM"] + cClrE; } return str;}function retCE(signal) { var str = nlTabStr; if (eqnType == 0) str += retSigName(signal) + "."; if (ce[signal]) { str += operator["CE"] + spcStr + operator["EQUAL"]; if (ceNegs[signal]) str += operator["NOT"]; for (i=0; i<ce[signal].length; i++) { if (i>0) str += nlTabStr + operator["OR"] + spcStr; str += retPterm(ce[signal][i]); } str += operator["ENDLN"]; } return str;}function retTrst(signal) { var sigStr = retSigName(signal); var eqnStr = retD1D2(signal); var trstStr = ""; var isNeg = false; if (trst[signal]) { if (trstNegs[signal]) isNeg = true; if (isNeg && eqnType == 0) trstStr += operator["NOT"]; for (i=0; i<trst[signal].length; i++) { if (i>0) trstStr += nlTabStr + operator["OR"] + spcStr; trstStr += retTrstPterm(isNeg, trst[signal][i]); } } else if (gbltrst[signal]) { if (trstNegs[signal]) isNeg = true; if (isNeg && eqnType == 0) trstStr += operator["NOT"]; for (i=0; i<gbltrst[signal].length; i++) { if (i>0) str += nlTabStr + operator["OR"] + spcStr; trstStr += retTrstPterm(isNeg,gbltrst[signal][i]); } } var str = ""; if (eqnType == 0) str += sigStr + spcStr + operator["COMB"] + spcStr + eqnStr + nlTabStr + sigStr + "." + operator["OE"] + spcStr + operator["EQUAL"] + trstStr + ";" + tabStr + cClrS + operator["COMMENT"] + spcStr + operator["GTS_COM"] + cClrE; else if (eqnType == 1) { str += sigStr + spcStr + operator["COMB"] + spcStr + eqnStr + spcStr + operator["OE"] + spcStr + "(" + trstStr + spcStr + rClrS + ") else" + rClrE +" 'Z'"; } else { str += sigStr + spcStr + operator["COMB"] + spcStr + "(" + trstStr + ")" + operator["OE"] + spcStr + eqnStr + ":" + spcStr; if (trstNegs[signal]) str += "0'bz"; else str += "1'bz"; } str += ";"; return str;}function retFbnand(signal) { var str = operator["COMMENT"] + spcStr + "Foldback NAND"; str += nlStr + retSigName(signal) + spcStr + operator["COMB"] + 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 retEqn(signal) { if (trst[signal] || gbltrst[signal]) return retTrst(signal); if (!clk[signal] && !gblclk[signal]) return retComb(signal); if (fbnand[signal]) return retFbnand(signal); var str = ""; var dtStr = ""; if (inreg[signal]) { str += operator["COMMENT"] + spcStr + "Input Register"; dtStr += retSigName(inreg[signal]); } else { if (eqnType == 0) dtStr = retSigName(signal); else { if (d1[signal] && d2[signal]) dtStr = "d"; else if (d1[signal]) dtStr = "d1"; else if (d2[signal]) dtStr = "d2"; } str += dtStr + spcStr + operator["COMB"]; str += retD1D2(signal) + ";"; } var index = retSigIndex(signal); var fStr = retSigType(index); if (rst[signal] || gblrst[signal]) fStr += "C"; if (set[signal] || gblset[signal]) fStr += "P"; if (ce[signal]) fStr += "E"; if (eqnType == 1) str += nlStr + fStr + index + ":" + spcStr + fStr + " port map ("; else if (eqnType == 2) str += nlStr + fStr + spcStr + fStr + index + " ("; if (eqnType != 0) { if ((fStr.indexOf("FD") != -1) || (fStr.indexOf("LD") != -1)) str += nlTabStr + operator["D"] + spcStr + operator["EQUAL"] + dtStr + operator["ENDLN"]; else if (fStr.indexOf("FT") != -1) str += nlTabStr + operator["T"] + spcStr + operator["EQUAL"] + dtStr + operator["ENDLN"]; else if (fStr.indexOf("Q") != -1) { str += nlTabStr + operator["D"] + spcStr + operator["EQUAL"]; if (d1[signal] && d2[signal]) str += "d"; else if (d1[signal]) str += "d1"; else if (d2[signal]) str += "d2"; else str += operator["GND"]; str += operator["ENDLN"]; } } if (clk[signal] || gblclk[signal]) str += retClk(signal, fStr); if (rst[signal] || gblrst[signal]) str += retRst(signal); if (set[signal] || gblset[signal]) str += retSet(signal); if (ce[signal]) str += retCE(signal); if (eqnType == 1) { str += nlTabStr + "Q" + spcStr + operator["EQUAL"]; if (inreg[signal]) str += "reg_input"; else str += retSigName(signal); str += operator["ENDLN"] + nlStr + ");"; } else if (eqnType == 2) { str += nlTabStr + ".Q" + spcStr + operator["EQUAL"]; if (inreg[signal]) str += "reg_input"; else str += retSigName(signal); str += operator["ENDLN"] + nlStr + ");"; } return str;}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 retSigType(s) { var sigType = sigTypes[s]; if (sigType == "D") return "FD"; if (sigType == "T") return "FT"; if (sigType.indexOf("LATCH") != -1) return "LD"; if (sigType.indexOf("DDEFF") != -1) return "FDD"; if (sigType.indexOf("DEFF") != -1) return "FD"; if (sigType.indexOf("DDFF") != -1) return "FDD"; if (sigType.indexOf("TDFF") != -1) return "FTD"; if (sigType.indexOf("DFF") != -1) return "FD"; if (sigType.indexOf("TFF") != -1) return "FT"; return "Q";}function retPrefix(signal, sigType) { if ((sigType == "T") || (sigType == "LATCH") || (sigType == "TFF") || (sigType == "Q")) return ""; var str = "FD"; if ((sigType == "DDEFF") || (sigType == "DDFF")) str += "D"; if (set[signal] || rst[signal]) str += "C"; if (prld[signal]) str += "P"; if (ce[signal]) str += "E"; 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["COMB"]; str += retUimPterm(signal) + ";"; return str;}function showLegend(url) { parent.leftnav.showLegend(url, 650, 350); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -