亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? genmathvhdl.cpp

?? 產(chǎn)生你所需要的FIR濾波器
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
//////////////////////////////////////////////////////////////////// Automatic Multiplier Generator Tool                      // This module generates VHDL code for mathematical expressions//// Writer      : Boris Kipnis// Last Update : 5/5/2005//#include "GenMathVHDL.h"#include <math.h>GenMathVHDL::GenMathVHDL(string fname) : GenVHDL(fname) {  tempCount = 0;}/////////////////////////////////////////////           ADD Variable                /////////////////////////////////////////////MathVHDL_var* GenMathVHDL::AddVariable(string nameIn, int type, int from=0, int to=0,			      int mathVarType=0,int shift=0,int sign=0,int termNum=0,                  int pipeStage=0,string str_label="",void* attach=NULL) {  MathVHDL_var* var;  int i;  string name;  name = nameIn;  for (i=0;i<pipeStage;i++) name+= "_d";  var = new MathVHDL_var(name,type,from,to,mathVarType,shift,sign,termNum,(-1),str_label,attach);  m_varList.push_back(var);  AddBaseVariable(var);  return(var);}MathVHDL_var* GenMathVHDL::AddVariable(MathVHDL_var* varIn,int pipeStage=0) {  string name;  int i;  MathVHDL_var* var;  name = varIn->GetVarName();  for (i=0;i<pipeStage;i++) name+= "_d";  var = new MathVHDL_var(name,varIn->GetVarType(),varIn->GetRangeFrom(),varIn->GetRangeTo(),			 varIn->GetMathVarType(),varIn->GetShift(),varIn->GetSign(),var->GetTermNum(),             varIn->GetPortType(),varIn->GetLabel(),varIn->GetAttachment());  m_varList.push_back(var);  AddBaseVariable(var);  return(var);}////////////////////////////////////////////////////////////                  Get Variable                        ////               from variables list                    ////////////////////////////////////////////////////////////MathVHDL_var* GenMathVHDL::GetVariable(string name) {  int i;  MathVHDL_var* var;    var = NULL;  for (i=0;i<m_varList.size();i++) {    if (name.compare(m_varList[i]->GetVarName()) == 0) { // scan variables      var = m_varList[i];    }    // if (name.compare(m_ioList[i]->GetVarName()) == 0) {  // scan IO ports    //     var = m_ioList[i];    // }  }  return(var);}MathVHDL_var* GenMathVHDL::GetVariable(string baseName,int pipeStage) {  for (int i=0;i<pipeStage;i++) baseName+="_d";  return(GetVariable(baseName));}vector<MathVHDL_var*> GenMathVHDL::GetVarList() {	return(m_varList);}void GenMathVHDL::SetVarList(vector<MathVHDL_var*> var) {	m_varList = var;}int GenMathVHDL::GetNextTemp() {  tempCount++;  return(tempCount-1);}int GenMathVHDL::GetCurTemp() {  return(tempCount);}string GenMathVHDL::GetNextTempName() {  int num;  char myChar[200];  num = GetNextTemp();  sprintf(myChar,"Temp%d",num);  return(myChar);}/////////////////////////////////////////////////////////////////////////////////////////  Generate Mathematics Variable From Multipliers Script                            /////////////////////////////////////////////////////////////////////////////////////////MathVHDL_var* GenMathVHDL::Script2MathVar(mult_s s,MathVHDL_var* DIn,vector<MathVHDL_var*> TermList) {  MathVHDL_var* var;  int sign;  int shift;  string name;  char myChar[200];  int termNum;  int type;  int i;    shift = s.shift;  termNum = s.termNum;  type = 0;  switch(s.type) {    case TERMT_PP :    case TERMT_PM :      var = new MathVHDL_var(TermList[termNum]);      break;     case TERMT_MM :    case TERMT_MP :      var = new MathVHDL_var(TermList[termNum]);      var->MultMinus1();      break;     case SIG_P    :      var = new MathVHDL_var(DIn);      break;     case SIG_M    :      var = new MathVHDL_var(DIn);      var->MultMinus1();      break;    default :      cout << "\r\nError at : GenMathVHDL::Script2MathVar\r\n";      var = NULL; // Generate System Error      break;  }   // update Shift  // Shift = (Original Variable Shift) + (Script Shift)  shift += var->GetShift();  var->SetShift(shift);    //printf("Script2MathVar Sign=%d Sign=%d\r\n",var->GetSign(),sign);  //cout << "Script2MathVar Label" << var->GetLabel() << "\r\n";  return(var);}// /////////////////////////////////////////////////////////// // Find variable by Name// MathVHDL_var* GenMathVHDL::FindVar(string name) {//   MathVHDL_var* var;////   var = NULL;//   for (int i=0;i<m_varList.size();i++) {//     if (!(name.compare(m_varList[i]->GetVarName()))) {//       var = m_varList[i];//     }//   }//   return(var);// }////////////////////////////////////////////////////////////////////////////////////////////////string GenMathVHDL::codeGen_ExtendBitSize(string varName,int addBits) {    int i;    ostringstream str_s;    str_s.clear();    //cout << "AddBits:" << addBits << "\r\n";	for (i=0;i<addBits;i++) {	   str_s << varName << "(" << varName << "'high) & ";	}	return(str_s.str());}string GenMathVHDL::codeGen_VarDownto(string varName,int downto) {    ostringstream str_s;	str_s << varName << "(" << varName << "'high downto " << downto << ")";	return(str_s.str());}string GenMathVHDL::codeGen_VarUp(string varName,int upTo) {    ostringstream str_s;	str_s << varName << "(" << upTo << " downto 0)";	return(str_s.str());}// Generate A +/- B VHDL codestring GenMathVHDL::codeGen_A_pm_B(MathVHDL_var* a,MathVHDL_var* b,MathVHDL_var* dest,int sign) {    ostringstream str_s;    int i;    	string aName,bName,destName;	int aShift,bShift,destShift;	int aSize,bSize,destSize;	int aTotalSize,bTotalSize,destTotalSize;	int aExtand,bExtand;	int delta,mDelta;	string sign_str;        aName      = a->GetVarName();    aShift     = a->GetShift();    aSize      = a->GetVarBitSize();    aTotalSize = aSize + aShift;	        bName      = b->GetVarName();    bShift     = b->GetShift();    bSize      = b->GetVarBitSize();	        bTotalSize = bSize + bShift;    destName      = dest->GetVarName();    destShift     = dest->GetShift();    destSize      = dest->GetVarBitSize();    destTotalSize = destSize + destShift;    aExtand = destTotalSize - aTotalSize; // calculate extansion from left    bExtand = destTotalSize - bTotalSize;    delta   = aShift-bShift;    mDelta  = bShift-aShift;    //cout << destName << " TotalSize=" << destTotalSize << " A_Extand:" << aExtand << " B_Extand:" << bExtand << " Delta:" << delta <<"\r\n";        if (delta<0) delta=0;    // don't use delta if bShift>aShift        // decrement common delta    //aExtand -= delta;    //bExtand -= delta;        // xbit + xbits = xbits + 1    //aExtand++;    //bExtand++;    if (sign>0) {       cout << "GenMathVHDL::codeGen_A_pm_B + \r\n";    	// + operation       str_s << "  -- " << destName << " = " << aName << "<<" << aShift << '+' << bName << "<<" << bShift << "\r\n";       str_s << "  " << destName << " <= (";       str_s << "(" << codeGen_ExtendBitSize(aName,aExtand) << aName << ") + \r\n"; // a(a'high) & a       str_s << "           ";       str_s << "(" << codeGen_ExtendBitSize(bName,bExtand) << codeGen_VarDownto(bName,delta);       if (mDelta>0) {       	  str_s << " & \"";       	  for (i=0;i<mDelta;i++) {       	  	str_s << "0";       	  }       	  str_s << "\"";       }       str_s << ")";       if (delta>0) str_s << " & " << codeGen_VarUp(bName,delta-1);       str_s << ");\r\n";       str_s << "\r\n";          } else {       cout << "GenMathVHDL::codeGen_A_pm_B - \r\n";       str_s << "  -- " << destName << " = " << aName << "<<" << aShift << '-' << bName << "<<" << bShift << "\r\n";       str_s << "  " << destName << " <= (";       str_s << "(" << codeGen_ExtendBitSize(aName,aExtand) << aName;       if (delta>0) {       	  str_s << " & \"";       	  for (i=0;i<delta;i++) {       	  	str_s << "0";       	  }       	  str_s << "\"";       }       str_s << ") - \r\n"; // a(a'high) & a       str_s << "           ";       str_s << "(" << codeGen_ExtendBitSize(bName,bExtand) << bName;       if (mDelta>0) {       	  str_s << " & \"";       	  for (i=0;i<mDelta;i++) {       	  	str_s << "0";       	  }       	  str_s << "\"";       }       str_s << ")";       str_s << ");\r\n";       str_s << "\r\n";    }        //cout << str_s.str();    return(str_s.str()); }string GenMathVHDL::codeGen_finalizeTerm(MathVHDL_var* a,MathVHDL_var* dest) {    int i;    string varName;    ostringstream str_s;        varName = dest->GetVarName();    varName = codeGen_ExtendBitSize(varName,dest->GetShift()-a->GetShift()) + varName;    if (a->GetShift()>0) {      varName += " & """;      for (i=0;i<a->GetShift();i++) {      	varName += "0";      }      varName += """";    }    varName += ";";     if (a->GetSign()>0) {       str_s << "-- Finalize: " << dest->GetVarName() << " = " << a->GetVarName() << "<<" << a->GetShift() << "\r\n";	       str_s << dest->GetVarName() << " <= " << varName;    } else {       str_s << "-- Finalize: " << dest->GetVarName() << " = (-1) * " << a->GetVarName() << "<<" << a->GetShift() << "\r\n";	       //str_s << dest->GetVarName() << " <= ";       str_s << dest->GetVarName() << " <= (not(" << varName << ")+1);" ;    }    return(str_s.str());}coreGen_element_s* GenMathVHDL::Gen_ZERO_Output() {   int destType;   string destName;   int termNum;   MathVHDL_var* destVar;	   coreGen_element_s *ret;	   destType = MatVHDL_var_TERM;   destName = GetNextTempName();   termNum  = GetCurTemp();          destVar = new MathVHDL_var(destName,VHDL_var_std_logic_vector,0,0,                    destType,0,1,termNum,                    0,"",NULL);   m_varList.push_back(destVar);   AddBaseVariable(destVar);   ret = new coreGen_element_s;      ret->a = destVar;    ret->b = destVar;    ret->dest = destVar;   ret->code = destVar->GetVarName() + " <= \"0\"; ";   ret->cmd = CMD_ZERO;   return(ret);}coreGen_element_s* GenMathVHDL::Gen_Lim_VHDL(MathVHDL_var* var,int NewBitSize) {	MathVHDL_var* destVar;	coreGen_element_s *ret;    ostringstream str_s;    int termNum;    int destType;    string destName;    string code;	//zzz	    destType = MatVHDL_var_TERM;    destName = GetNextTempName();    termNum  = GetCurTemp();        if (var->GetVarBitSize()<NewBitSize) {        NewBitSize = var->GetVarBitSize();    }            destVar = new MathVHDL_var(destName,VHDL_var_std_logic_vector,NewBitSize-1,0,                          destType,var->GetShift(),var->GetSign(),termNum,                          0,var->GetLabel(),var->GetAttachment());    m_varList.push_back(destVar);    AddBaseVariable(destVar);    str_s.clear();    str_s << "  " << destVar->GetVarName() << " <= " << var->GetVarName() << "(" << NewBitSize-1 << " downto 0); -- LIM \r\n";    code = str_s.str();// + "--- test --- \r\n";	ret = new coreGen_element_s;	ret->a = NULL;	ret->b = NULL;	ret->dest = destVar;	ret->cmd = CMD_LIM;	ret->code = code;    return(ret);}coreGen_element_s* GenMathVHDL::Gen_A_op_B_VHDL(int cmd,MathVHDL_var* aIn,MathVHDL_var* bIn=NULL,MathVHDL_var* DestIn=NULL) {	string code;	MathVHDL_var* destVar;	MathVHDL_var* tempVar;	coreGen_element_s *ret;		int aBitSize,bBitSize;	string aName,bName;	int aShift,bShift;	int aSize,bSize;	int aTotalSize,bTotalSize;	int aSign,bSign;	int destTotalSize,destShift,destSize,destSign;    int termNum;    int destType;    string destName;        int    tempInt;    string tempStr;	MathVHDL_var* a;	MathVHDL_var* b;	    int sign;	ret = new coreGen_element_s;		ret->cmd = cmd;	ret->a   = aIn;	ret->b   = bIn;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re亚洲国产精品| 久久亚洲一区二区三区四区| www.日本不卡| 国产毛片精品国产一区二区三区| 久久国产精品色| 精品一区二区三区免费观看| 久久不见久久见免费视频7 | 亚洲精品成人在线| 日韩一区在线免费观看| 1024亚洲合集| 亚洲欧美激情一区二区| 亚洲六月丁香色婷婷综合久久| 国产精品久久久久精k8| 亚洲嫩草精品久久| 亚洲午夜影视影院在线观看| 亚洲国产日韩a在线播放性色| 午夜久久久久久久久| 丝袜美腿成人在线| 麻豆成人久久精品二区三区红| 奇米精品一区二区三区在线观看一 | 一区二区三区四区在线播放 | 国产精品视频线看| 欧美国产丝袜视频| 亚洲视频 欧洲视频| 亚洲香蕉伊在人在线观| 国产iv一区二区三区| www.日韩精品| 欧美三电影在线| 日韩三级免费观看| 久久久久国产成人精品亚洲午夜| 国产精品麻豆一区二区 | 国产精品123区| 色综合天天综合网天天看片| 欧美日韩你懂的| 久久久久综合网| 一区二区三区精品视频在线| 蜜臀av一级做a爰片久久| 成人涩涩免费视频| 欧美三级电影在线看| 日韩欧美黄色影院| 国产精品系列在线| 亚洲成av人**亚洲成av**| 韩国v欧美v日本v亚洲v| 91免费国产视频网站| 欧美一级在线视频| 欧美激情一区在线| 天堂久久久久va久久久久| 国产成人综合在线播放| 欧美专区在线观看一区| 久久综合色之久久综合| 亚洲伦理在线精品| 久久91精品久久久久久秒播| 91在线看国产| 26uuu久久天堂性欧美| 亚洲精品国产一区二区精华液| 久久精品免费观看| 一本色道a无线码一区v| 欧美电影免费观看完整版| 亚洲欧美日韩人成在线播放| 久久国产福利国产秒拍| 91成人免费在线| 国产日产欧产精品推荐色 | 色婷婷av一区二区| 久久这里都是精品| 午夜婷婷国产麻豆精品| 成人动漫精品一区二区| 日韩欧美一级二级三级久久久| 亚洲视频1区2区| 国产一区二区三区久久悠悠色av| 欧美日韩一区二区三区四区五区| 国产网站一区二区三区| 蜜桃视频免费观看一区| 在线观看av一区二区| 国产精品欧美一级免费| 久久99国产精品成人| 欧美午夜不卡视频| 国产精品全国免费观看高清| 韩国毛片一区二区三区| 51午夜精品国产| 亚洲影院免费观看| 91在线国内视频| 亚洲国产成人私人影院tom| 久久疯狂做爰流白浆xx| 9191国产精品| 亚洲一区二区三区四区的| www.色精品| 欧美激情综合五月色丁香小说| 激情文学综合网| 日韩免费一区二区| 日日摸夜夜添夜夜添亚洲女人| 在线观看网站黄不卡| 综合色中文字幕| www.欧美色图| 中文字幕一区二区三区蜜月| 国产成人a级片| 青青草一区二区三区| 欧美视频一区二区在线观看| 亚洲一区视频在线观看视频| 91亚洲国产成人精品一区二区三| 国产精品久久久久婷婷 | 亚洲精品在线电影| 激情综合色综合久久| 欧美电影免费观看高清完整版在线 | 精品国产精品一区二区夜夜嗨| 毛片av一区二区| 日韩精品一区二区三区视频播放 | 91蜜桃网址入口| 亚洲免费电影在线| 一本大道久久精品懂色aⅴ| 亚洲日本在线a| 日本韩国精品在线| 亚洲综合激情网| 欧美精品一卡两卡| 免费三级欧美电影| 精品国产乱码久久久久久久久| 国产精品自在在线| 日本一区二区三区国色天香| 成人免费视频播放| 亚洲色图制服诱惑| 欧美视频一区二区在线观看| 亚洲bdsm女犯bdsm网站| 日韩午夜在线观看| 国产在线视频一区二区三区| 欧美经典三级视频一区二区三区| 99久久婷婷国产| 亚洲国产精品一区二区久久| 这里只有精品电影| 国内精品视频一区二区三区八戒| 久久久91精品国产一区二区三区| 成人av电影在线播放| 亚洲综合小说图片| 欧美一区二区三区播放老司机| 极品美女销魂一区二区三区免费| 欧美国产视频在线| 欧美性猛交xxxxxx富婆| 日本怡春院一区二区| 久久婷婷久久一区二区三区| 91免费看视频| 日本特黄久久久高潮| 国产欧美一区二区三区鸳鸯浴| 91在线视频18| 免费黄网站欧美| 中文字幕亚洲欧美在线不卡| 国产精品蜜臀av| 欧美日韩高清一区| 国产精品一区二区三区99| 亚洲人午夜精品天堂一二香蕉| 欧美日本在线看| 国产成人日日夜夜| 亚洲成人av中文| 国产日韩影视精品| 欧美亚洲综合一区| 蜜臀av一级做a爰片久久| 国产精品沙发午睡系列990531| 欧美日韩一区二区电影| 国产成人综合在线播放| 亚洲国产日韩综合久久精品| 国产午夜精品久久久久久免费视| 91福利资源站| 国产成人日日夜夜| 亚洲成人三级小说| 国产精品久久久久一区| 日韩一卡二卡三卡四卡| 91一区二区三区在线播放| 精品亚洲成a人| 亚洲午夜精品17c| 国产精品国模大尺度视频| 欧美一级免费大片| 91丨九色丨尤物| 国产精品自拍三区| 婷婷夜色潮精品综合在线| 国产精品成人网| 精品国产乱码久久久久久久| 欧美日韩久久一区二区| 不卡在线视频中文字幕| 国模少妇一区二区三区| 亚洲h在线观看| 亚洲欧美国产高清| 国产欧美一区在线| 精品免费日韩av| 欧美年轻男男videosbes| 波多野结衣中文一区| 国产一区二区三区日韩| 全国精品久久少妇| 亚洲午夜一二三区视频| 17c精品麻豆一区二区免费| 国产午夜精品一区二区三区嫩草 | 亚洲激情图片一区| 中文欧美字幕免费| 久久综合久久久久88| 91麻豆精品国产| 欧美日韩一区二区电影| 91久久精品午夜一区二区| www.欧美.com| www.色综合.com| av爱爱亚洲一区| 成人国产精品免费观看视频| 国产精品伊人色| 国产精品一区二区三区乱码| 国产一区二区不卡|