⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eqns.js

📁 用VHDL编写的串口异步通信的例子
💻 JS
📖 第 1 页 / 共 2 页
字号:
            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: " + "&lt;" + "signame" + "&gt;" + ".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 + -