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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? genmultcode.cpp

?? 產生你所需要的FIR濾波器
?? CPP
字號:
////////////////////////////////////////////// Automatic Multiplier Generator Tool    //// Generate Multipplyers Code (VHDL)      //// from Script                            ////////////////////////////////////////////////// Writer      : Boris Kipnis// Last Update : 5/5/2005// Last Update : 9/6/2005//#include "GenMultCode.h"////////////////////////////////////////////// Create I/O Ports                       //////////////////////////////////////////////void GenMultCode::GenIOPort(int inDataWidth) {  int i;  string s;  char myChar[200];  if (!m_AsyncMult) m_code->AddPort("Clk",VHDL_var_std_logic,1,0,0,NULL);  if ((!m_AsyncMult)&&(m_ClkEn)) m_code->AddPort("CLK_EN",VHDL_var_std_logic,1,0,0,NULL);  m_code->AddPort("DIn",VHDL_var_std_logic_vector,1,inDataWidth-1,0,NULL);}////////////////////////////////////////////// Generate VHDL common                   //////////////////////////////////////////////MathVHDL_var* GenMultCode::GenCommon(int inDataWidth) {  MathVHDL_var* var;  var = m_code->AddVariable("DInReg",VHDL_var_std_logic_vector,inDataWidth-1,0,0,0,1,0,0,"",NULL); // "DInReg" add variable  m_code->AddCodeTitle("Common Code");  if (m_AsyncMult) m_code->AddVHDLCode("DInReg <= DIn;");              else m_code->AddVHDLCodeClk("DInReg <= DIn;",m_ClkEn);     return(var);}////////////////////////////// Sort script            //////////////////////////////vector<MathVHDL_var*> GenMultCode::SortVarScript(vector<MathVHDL_var*> scriptIn) {  vector<MathVHDL_var*> script;  int i,j;  MathVHDL_var* tempMult;  script = scriptIn;  for (i=0;i<script.size();i++) {    for (j=0;j<script.size()-1;j++) {      if (script[j]->GetShift() < script[j+1]->GetShift()) {        // XChange	    tempMult    = script[j];        script[j]   = script[j+1];        script[j+1] = tempMult;      }    }  }  return(script);}////////////////////////////////////////////// Generate Single Multiplier             //////////////////////////////////////////////MathExpresionVHDL* GenMultCode::GenSingle_pMult(vector<mult_s> script,MathVHDL_var* DIn,vector<MathVHDL_var*> TermList) {  MathVHDL_var* var;  vector<MathVHDL_var*> varScript;  vector<MathVHDL_var*> newScript;  coreGen_element_s* codeElement;  MathExpresionVHDL* codeArray;  int i;  codeArray = new MathExpresionVHDL();    ////////////////////////////  // Convert Script 2 var  for (i=0;i<script.size();i++) {    var = m_code->Script2MathVar(script[i],DIn,TermList);    varScript.push_back(var);  }  ////////////////////////////  // Sort script  varScript = SortVarScript(varScript);    //printf("----------------\r\n");  //printMultScript(script);  //cout << "GenSingle_pMult varScript.size()=" << varScript.size() << "\r\n";   // ZERO output  if (varScript.size()==0) {     codeElement = m_code->Gen_ZERO_Output();     codeArray->Add(*codeElement);     var = codeElement->dest;  } else {     ////////////////////////////////     // Generate Herachical Multiplier     while (varScript.size()>2) {        varScript = SortVarScript(varScript);        newScript.clear();        //////////////////////////////////////        // Scan by 2 step jumps        for (i=0;i<varScript.size();i+=2) {          if (i!=(varScript.size()-1) ) { // Regular scan (step=2)             codeElement = m_code->Gen_A_op_B_VHDL(CMD_A_pm_B,varScript[i],varScript[i+1],NULL);             codeArray->Add(*codeElement);             var = codeElement->dest;             newScript.push_back(var);          } else {                        // Last Element             newScript.push_back(varScript[i]);          }       }       varScript = newScript;     }     var = NULL;     if (varScript.size()==2) {        codeElement = m_code->Gen_A_op_B_VHDL(CMD_A_pm_B,varScript[0],varScript[1],NULL);        codeArray->Add(*codeElement);        var = codeElement->dest;     }     if (varScript.size()==1) {     	//cout << "varScript.size()==1\r\n";        codeElement = m_code->Gen_A_op_B_VHDL(CMD_EQUAL,varScript[0],NULL,NULL);        codeArray->Add(*codeElement);        var = varScript[0];     }  }  // cout << "varScript Label:" << var->GetLabel() <<"\r\n";  if (var==NULL) {    printf("Internal ERROR GenMultCode->GenSingle_pMult\r\n");    printf("Return value = NULL\r\n");  }  //cout << "GenSingle_pMult Finish\r\n";  return(codeArray);}////////////////////////////////////////////// Generate Multipliers Array             /////////////////////////////////////////////vector<MathVHDL_var*> GenMultCode::Gen_pMult(vector<vector<mult_s> > script, MathVHDL_var* DIn, vector<MathVHDL_var*> TermList) {  int i,j,ii,jj;  vector<MathExpresionVHDL*> ComplexMultArray;  MathExpresionVHDL* ComplexMult;  vector<MathVHDL_var*> pMultArray;  GenOptimizeVHDL *mOptimize;  MathExpresionVHDL* ComplexMult_a;  MathExpresionVHDL* ComplexMult_b;  coreGen_element_s el_a,el_b;    ComplexMultArray.clear();  pMultArray.clear();    cout << "Gen_pMult: ";  cout << "Script.size()=" << script.size() << " ";  cout << "\r\n";      for (i=0;i<script.size();i++) {  	cout << "@#";    ComplexMult = GenSingle_pMult(script[i],DIn,TermList); // Execute Single Multiply function    ComplexMultArray.push_back(ComplexMult);               // Save Complex Multiply to vector (Code+Var)    pMultArray.push_back(ComplexMult->GetDest());  }  cout << "\r\n";  //cout << "ComplexMultArray.size:" << ComplexMultArray.size() << "\r\n";  //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  //@@ ADD OPTIMIZATION  HERE                       @@  //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  cout << "################## Optimization ##################\r\n";  mOptimize = new GenOptimizeVHDL(m_code,ComplexMultArray,m_code->GetVarList());  ComplexMultArray = mOptimize->GetNewCode();  //m_code->SetVarList(mOptimize->GetNewVarList());  //////////////////////////////////////////////////////////  // Save Code to VHDL  for (i=0;i<ComplexMultArray.size();i++) {    m_code->AddVHDLCode("-----------------------------------");    m_code->AddVHDLCode((ComplexMultArray[i])->GetCode());    m_code->AddVHDLCode("");  }  //////////////////////////////////////////////////////////  // Extract multiplication array  pMultArray.clear();  for (i=0;i<ComplexMultArray.size();i++) {    pMultArray.push_back(ComplexMultArray[i]->GetDest());  }  return(pMultArray);}///////////////////////////////////////////// Final Stage Multipliers Resample      /////////////////////////////////////////////vector<MathVHDL_var*> GenMultCode::Gen_FinalStage(vector<MathVHDL_var*> pMult) {  char myChar[200];  int i,numOfMults;  vector<string> code;  string str,mult_name;  vector<MathVHDL_var*> multOut;  MathVHDL_var* mult;  m_code->AddCodeTitle("Final Stage Multipliers Resample");  code.clear();  numOfMults = pMult.size();   for (i=0;i<numOfMults;i++) {    //cout << "GetLabel:" << ((pMult[i])->GetLabel()) << "\r\n";        sprintf(myChar,"Mult%d",i);    mult_name = myChar;    // Create Output Port    m_code->AddPort(myChar,VHDL_var_std_logic_vector,0,pMult[i]->GetRangeFrom(),pMult[i]->GetRangeTo(),NULL);      str  = myChar;    str += " <= ";    str += pMult[i]->GetVarName();    str += ";";    code.push_back(str);        mult = new MathVHDL_var(mult_name,VHDL_var_std_logic_vector,               pMult[i]->GetRangeFrom(),pMult[i]->GetRangeTo(),                MatVHDL_var_MULT,0,1,i,                0,pMult[i]->GetLabel(),                pMult[i]->GetAttachment());    multOut.push_back(mult);                  }  //code.push_back("");  if (m_AsyncMult) m_code->AddVHDLCode(code);              else m_code->AddVHDLCodeClk(code,m_ClkEn);  return(multOut);}////////////////////////////////////////////// Constructor:                           //////////////////////////////////////////////GenMultCode::GenMultCode(vector<vector<mult_s> > term,vector<vector<mult_s> > script,int inDataWidth,string fname,vector<int> mult_array,int ClkEn,int Async,string comments) {	GenMultCode_construct(term,script,inDataWidth,fname,mult_array,ClkEn,Async,comments);}void GenMultCode::GenMultCode_construct(vector<vector<mult_s> > term,vector<vector<mult_s> > script,int inDataWidth,string fname,vector<int> mult_array,int ClkEn,int Async,string comments) {  int numOfMultipliers;  vector<MathVHDL_var*> pTerm;  vector<MathVHDL_var*> pMult;  MathVHDL_var* pDIn;  vector<MathVHDL_var*> Mult;    int i;  char str[80];  vector<string> str_label;//  VarContainer* mTerm;//  codeScript.clear();    m_ClkEn = ClkEn;  m_AsyncMult = Async;    m_code = new GenMathVHDL(fname); // create new VHDL file    m_code->AddComments("Multipliers Array Generator (v1.0)");  m_code->AddComments("");    for (i=0;i<mult_array.size();i++) {  	//sprintf(str,"Mult%d=%d",i,mult_array[i]);  	sprintf(str,"Mult%d=%d",i,mult_array[i]);  	m_code->AddComments(str);  	sprintf(str,"Mult_%d",mult_array[i]);  	str_label.push_back(str);  }  m_code->AddComments(comments);  numOfMultipliers = script.size();  printf("GenIoPort\r\n");  GenIOPort(inDataWidth);  printf("GenCommon\r\n");  GenCommon(inDataWidth);  // Create Pointer to Din  pDIn = new MathVHDL_var("DIn",VHDL_var_std_logic_vector,inDataWidth-1,0,MatVHDL_var_DIN,0,1,0,1,"",0);  cout << "############### Generate Terms ###################\r\n";  m_code->AddCodeTitle("Generate Terms");  pTerm = Gen_pMult(term,pDIn,pTerm);    cout << "############### Generate Code ####################\r\n";  m_code->AddCodeTitle("Copy Terms Result from Temp to Term");  cout << "Copy Terms\r\n";  pTerm = m_code->CopyToNewArray(pTerm,"Term",0);  m_code->AddCodeTitle("Sample Terms");  cout << "Resample Terms\r\n";  if (!m_AsyncMult) pTerm = m_code->ResampleArray(pTerm,m_ClkEn);  m_code->AddCodeTitle("Generate Multipliers Array");  //cout << "ScriptSize:" << script.size() << "\r\n";  cout << "Run Gen_pMult\r\n";  pMult = Gen_pMult(script,pDIn,pTerm);  //cout << "pMult Final Size:" << pMult.size() << "\r\n";  cout << "############### Final Stage ######################\r\n";  m_code->AddCodeTitle("Final Stage Multipliers");  for(i=0;i<pMult.size();i++) {    Mult.push_back(m_code->Gen_FinalOut(pMult[i],"",0,mult_array[i],inDataWidth));  }//  for (i=0;i<str_label.size();i++) {//  	cout << "GM label :" << Mult[i]->GetLabel() << "\r\n";//  }  mult_out_vector = Gen_FinalStage(Mult);}GenMultCode::~GenMultCode() {  delete(m_code);              // Close File, generate code}vector<MathVHDL_var*> GenMultCode::GetOutVector() {	return(mult_out_vector);}// This function generates component for implemintationstring GenMultCode::GetComponent() {	vector<string> strV;	string str;	int i;    strV = m_code->GetComponent();    str = "";    for (i=0;i<strV.size();i++)        str += ("  "+strV[i]+"\r\n");            return(str);    }string GenMultCode::GetPortMapCon(string ImplementName, string ClkName, MathVHDL_var* DIn, vector<MathVHDL_var*> MultOut) {	string str;	vector<MathVHDL_var*> OutVector;	int i;		OutVector = GetOutVector();     if (MultOut.size() != OutVector.size()) {    	return("ERROR MultOut Size <> OutVector Size");    }	str =  (ImplementName + ":" + m_code->GetFileName() + " port map (\r\n");	str += ("     CLK   => " + ClkName + ",\r\n");	str += ("     DIn   => " + DIn->GetVarName() + ",\r\n");		for (i=0;i<OutVector.size();i++) {	     str += ("     " + (OutVector[i])->GetVarName() + " => " + (MultOut[i])->GetVarName());	     if (i<OutVector.size()-1) str+=",";	     str +=  + "\r\n";	}	str += "  );\r\n";	return(str);}string GenMultCode::GetPortMapCon_ClkEn(string ImplementName, string ClkName, string ClkEnName, MathVHDL_var* DIn, vector<MathVHDL_var*> MultOut) {	string str;	vector<MathVHDL_var*> OutVector;	int i;		OutVector = GetOutVector();     if (MultOut.size() != OutVector.size()) {    	return("ERROR MultOut Size <> OutVector Size");    }	str =  (ImplementName + ":" + m_code->GetFileName() + " port map (\r\n");	str += ("     CLK   => " + ClkName + ",\r\n");	str += ("     CLK_EN   => " + ClkEnName + ",\r\n");	str += ("     DIn   => " + DIn->GetVarName() + ",\r\n");		for (i=0;i<OutVector.size();i++) {	     str += ("     " + (OutVector[i])->GetVarName() + " => " + (MultOut[i])->GetVarName());	     if (i<OutVector.size()-1) str+=",";	     str +=  + "\r\n";	}	str += "  );\r\n";	return(str);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆免费在线观看| 亚洲国产视频一区| 国产一区二区三区蝌蚪| 日韩一区二区三区在线| 日韩av午夜在线观看| 欧美一区二区三区免费观看视频| 视频一区二区三区在线| 欧美一级在线视频| 国产一区久久久| 国产精品欧美久久久久无广告 | 日韩午夜av一区| 奇米影视在线99精品| 日韩三级视频在线看| 韩国在线一区二区| 亚洲国产精品黑人久久久| 成人黄色电影在线| 亚洲一区二区视频| 日韩三级视频在线看| 国产一区二区三区免费在线观看| 欧美国产一区二区在线观看| 色婷婷久久99综合精品jk白丝| 亚洲一区二区三区四区在线免费观看 | 国产精品国产三级国产有无不卡 | 一区二区欧美在线观看| 欧美男女性生活在线直播观看| 蜜桃av一区二区在线观看| 久久香蕉国产线看观看99| 成人在线视频一区| 亚洲在线成人精品| 精品电影一区二区| 91在线免费播放| 青娱乐精品视频在线| 国产精品色婷婷久久58| 欧美色网一区二区| 国产黄人亚洲片| 亚洲影视在线观看| 久久综合久久鬼色| 欧美午夜电影网| 国产麻豆精品在线| 亚洲丰满少妇videoshd| 国产亚洲一区字幕| 欧美久久久久久久久中文字幕| 国产乱码精品一区二区三区忘忧草| 亚洲另类在线视频| 久久午夜羞羞影院免费观看| 91国产免费观看| 国产精品影视网| 日本成人在线电影网| 最近中文字幕一区二区三区| 日韩精品专区在线影院观看| 色视频欧美一区二区三区| 韩国视频一区二区| 丝袜国产日韩另类美女| 国产精品久久久久久久久动漫 | 久久青草欧美一区二区三区| 欧美午夜片在线看| av在线不卡观看免费观看| 国内精品第一页| 日韩高清在线不卡| 亚洲一区二三区| 国产精品毛片大码女人| xnxx国产精品| 欧美一区二区三区免费| 欧美色图第一页| 色综合天天综合狠狠| 国产精品一区二区久激情瑜伽| 日本成人在线不卡视频| 亚洲成av人片在线| 一区二区三区精品在线| 亚洲欧洲一区二区在线播放| 久久精品视频在线免费观看| 亚洲精品一区二区在线观看| 欧美一区三区二区| 7777精品久久久大香线蕉| 欧美综合在线视频| 日本韩国欧美一区| 色又黄又爽网站www久久| 99久久免费精品高清特色大片| 成a人片国产精品| 成人黄色免费短视频| 成人av网站在线| 99久久夜色精品国产网站| 波多野结衣精品在线| 波多野结衣中文字幕一区二区三区| 国产精品一二三在| 国产a级毛片一区| 成人精品视频.| youjizz国产精品| 91丨九色丨蝌蚪丨老版| 色婷婷久久一区二区三区麻豆| 色视频成人在线观看免| 欧美性色aⅴ视频一区日韩精品| 色呦呦国产精品| 欧美写真视频网站| 日韩一区二区在线观看| 精品日韩在线观看| 欧美肥胖老妇做爰| 日韩精品欧美精品| 亚洲国产精品影院| 亚洲福利国产精品| 蜜桃精品视频在线| 国产99精品视频| 成人av网址在线观看| 91性感美女视频| 精品视频1区2区| 日韩欧美专区在线| 国产欧美精品一区| 亚洲综合在线免费观看| 日韩电影在线免费观看| 精品一区二区三区免费视频| 国产·精品毛片| 91精品办公室少妇高潮对白| 在线不卡欧美精品一区二区三区| 欧美成人国产一区二区| 中文字幕国产一区| 亚洲图片一区二区| 卡一卡二国产精品| 成人国产视频在线观看| 欧美吞精做爰啪啪高潮| wwww国产精品欧美| 亚洲精品五月天| 久久精品国产一区二区三区免费看| 国产成人精品免费在线| 91麻豆福利精品推荐| 日韩精品一区在线观看| 亚洲另类在线一区| 久久成人免费网| 欧亚洲嫩模精品一区三区| 欧美精品一区二区三区视频| 一区二区三区日韩欧美精品| 精品一区精品二区高清| 色先锋久久av资源部| 精品第一国产综合精品aⅴ| 亚洲va欧美va人人爽| 国产91精品久久久久久久网曝门 | 午夜欧美视频在线观看| 国产乱人伦偷精品视频免下载| 在线观看91精品国产入口| 国产亚洲欧美一区在线观看| 亚洲国产一区二区在线播放| 成人午夜在线视频| 精品日韩一区二区三区免费视频| 亚洲狠狠丁香婷婷综合久久久| 国产激情视频一区二区三区欧美| 制服丝袜国产精品| 亚洲天堂av一区| 久久不见久久见免费视频1| 欧美亚洲免费在线一区| 亚洲天堂免费看| 丁香亚洲综合激情啪啪综合| 欧美大片顶级少妇| 亚洲国产日韩a在线播放性色| 成人国产亚洲欧美成人综合网| 欧美本精品男人aⅴ天堂| 亚洲v中文字幕| 色婷婷久久久综合中文字幕| 国产精品的网站| 国产aⅴ精品一区二区三区色成熟| 欧美xxxxx牲另类人与| 日韩福利电影在线观看| 欧美精品在线观看一区二区| 亚洲午夜成aⅴ人片| 欧美亚洲综合久久| 亚洲欧美韩国综合色| 99vv1com这只有精品| 国产精品免费久久| 成人三级伦理片| 国产精品系列在线| 成人免费毛片高清视频| 国产视频一区二区在线观看| 国产福利91精品| 国产亚洲女人久久久久毛片| 国产老肥熟一区二区三区| 久久蜜桃av一区二区天堂| 一本大道久久a久久综合婷婷| 国产精品成人午夜| 91蝌蚪porny成人天涯| 亚洲天堂中文字幕| 欧洲在线/亚洲| 亚洲国产wwwccc36天堂| 欧美日韩aaa| 麻豆一区二区在线| 久久只精品国产| 国产suv精品一区二区883| 国产精品国产三级国产aⅴ入口| 成人av资源在线| 亚洲六月丁香色婷婷综合久久| 日本乱人伦一区| 婷婷综合另类小说色区| 欧美一级黄色大片| 国产成人精品影院| 成人欧美一区二区三区视频网页| 91视频观看视频| 日日夜夜精品视频天天综合网| 91精品国产91热久久久做人人| 国产综合久久久久久久久久久久| 中文字幕乱码久久午夜不卡 | 亚洲欧洲精品一区二区三区| 91国偷自产一区二区三区观看| 日韩国产欧美在线视频|