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

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

?? iviterbi.bsv

?? MIT編寫的OFDM仿真程序
?? BSV
?? 第 1 頁 / 共 2 頁
字號:
           Vector#(ConvOutSz, VMetricSum) addMetrics = newVector;           for (Integer i = 0; i < conv_out_sz; i = i + 1)	     addMetrics[i] = zeroExtend(getMetric(expBits[i]) ^ recMetrics[i]); // |expMetric[i] - recMetrics[i]|           return inSum + fold(\+ , addMetrics);      endfunction            RadixEntry#(tEntry_T) outVec = newVector;//      MetricLUT metricLUT = getMetricLUT;      Bit#(TSub#(VStateSz, ConvInSz)) prevStatePrefix = tpl_1(split(tpl_1(inVec[0]))); // all input states must have the same prefix      RadixEntry#(tEntry_T) sumVec = newVector; // for calculating next result            for (Integer in_bits = 0; in_bits < radix_sz; in_bits = in_bits + 1)	begin	   Bit#(ConvInSz) inBits = fromInteger(in_bits);	   VState nextState = {inBits, prevStatePrefix};	   for (Integer prev_state_suffix = 0; prev_state_suffix < radix_sz; prev_state_suffix = prev_state_suffix + 1)	     begin//		Bit#(KSz) lutIdx = (zeroExtend(nextState) << fromInteger(conv_in_sz)) + fromInteger(prev_state_suffix);		sumVec[prev_state_suffix] = tuple3(tpl_1(inVec[prev_state_suffix]),  // same						   calcVMetricSum(tpl_2(inVec[prev_state_suffix]),								  getConvEncOutput(tpl_1(inVec[prev_state_suffix]), inBits),//								  metricLUT[lutIdx],								  inMetrics), // add 						   tpl_3(inVec[prev_state_suffix])); // same	     end	   let minRadix = fold(chooseMin, sumVec);	   let nextSum = tpl_2(minRadix);	   let nextT = getNextTEntry(tpl_1(minRadix), nextState, tpl_3(minRadix));	   outVec[in_bits] = tuple3(nextState, nextSum, nextT);	end // for (Integer in_bits = 0; in_bits < radix_sz; in_bits = in_bits + 1)      return outVec;endfunction // unmatched end(function|task|module|primitive)      function FwdEntry#(tEntry_T) fwdCompute(FwdEntry#(tEntry_T) inVec,					VInType inMetricsV,					function tEntry_T getNextTEntry(VState prevState,									VState nextState,									tEntry_T oldTEntry));            FwdEntry#(tEntry_T) outVec = inVec;      Integer no_radix = fwd_entry_sz / radix_sz;       for (Integer stage = 0; stage < fwd_steps; stage = stage + 1)	begin	   RadixEntry#(tEntry_T) radixVec = newVector;	   if (stage != 0)	     outVec = readSelect(conv_in_sz, stage, 0, outVec); // permute if not the first step	   for (Integer radix_idx = 0; radix_idx < no_radix; radix_idx = radix_idx + 1)	     begin		for (Integer k = 0; k < radix_sz; k = k + 1)		  radixVec[k] = outVec[radix_idx*radix_sz+k];	        radixVec = radixCompute(radixVec, inMetricsV[stage], getNextTEntry);		for (Integer k = 0; k < radix_sz; k = k + 1)		  outVec[radix_idx*radix_sz+k] = radixVec[k];	     end // for (Integer j = 0; j < noOfRadix; j = j + 1)	   if (stage != 0)	     outVec = reverseReadSelect(conv_in_sz, stage, 0, outVec); // reverse the permutation if not the first step	end // for (Integer i = 0; i < fwd_steps; i = i + 1)      return outVec;      endfunction // ForwardEntry// output the state with the minimum value and the new outentryfunction Tuple3#(VState, tEntry_T, VRegsOutEntry#(tEntry_T)) vRegsOutCompute(VRegsOutEntry#(tEntry_T) inVec,									     VInType inMetricsV,									     function tEntry_T getNextTEntry(VState prevState,													     VState nextState,													     tEntry_T oldTEntry));            VRegsOutEntry#(tEntry_T) outVec = newVector;      Integer no_fwd_unit = vregs_out_sz / fwd_entry_sz;      FwdEntry#(tEntry_T) fwdVec = newVector;      for (Integer fwd_idx = 0; fwd_idx < no_fwd_unit; fwd_idx = fwd_idx + 1)	begin	   for (Integer k = 0; k < fwd_entry_sz; k = k + 1)	     fwdVec[k] = inVec[fwd_idx * fwd_entry_sz + k];	   fwdVec = fwdCompute(fwdVec, inMetricsV, getNextTEntry);	   for (Integer k = 0; k < fwd_entry_sz; k = k + 1)	     outVec[fwd_idx * fwd_entry_sz + k] = fwdVec[k];	end // for (Integer j = 0; j < noOfRadix; j = j + 1)      let minPrimEntry = fold(chooseMin, outVec);      VState minState = tpl_1(minPrimEntry);      tEntry_T minTEntry = tpl_3(minPrimEntry);      return tuple3(minState, minTEntry, outVec);      endfunction // ForwardEntry(* noinline *)function Tuple3#(VState, VTrellisEntry, VRegsOutEntry#(VTrellisEntry)) vRegsOutComputeTBPath(VRegsOutEntry#(VTrellisEntry) inVec,											     VInType inMetricsV);            return vRegsOutCompute(inVec, inMetricsV, getNextTrellisEntry);      endfunction(* noinline *)function Tuple3#(VState, VTBEntry, VRegsOutEntry#(VTBEntry)) vRegsOutComputeTB(VRegsOutEntry#(VTBEntry) inVec,									       VInType inMetricsV);            return vRegsOutCompute(inVec, inMetricsV, getNextTB);      endfunctionfunction Vector#(VRegsOutSz, VState) getNextStates(Bit#(VRegsSubIdxSz) stage);      Vector#(VRegsOutSz, VState) outVec = newVector;      VState subIdx = zeroExtend(stage) << fromInteger(valueOf(VRegsOutIdxSz));      for (Integer i = 0; i < valueOf(VRegsOutSz); i = i + 1)	outVec[i] = subIdx + fromInteger(i);      return outVec;      endfunction // Vector            /////////////////////////////////////////////////////////// Begin of Viterbi Module /////////////////////////////////////////////////////////(*synthesize*)module mkIViterbiTBPath (IViterbi);   // states   FIFO#(VInType) inQ <- mkLFIFO;   FIFO#(VOutType) outQ <- mkSizedFIFO(2);   VRegFile#(VRegsSubIdxSz,VRegsOutSz,VMetricSum) metricSums <- mkMetricSums;   VRegFile#(VRegsSubIdxSz,VRegsOutSz,VTrellisEntry) trellis <- mkTrellis;   Reg#(Bit#(VRegsSubIdxSz)) stage <- mkReg(0);   Reg#(Bit#(1)) colIdx <- mkReg(0);   Reg#(VState)  curMinState <- mkReg(0);   Reg#(VTrellisEntry) curMinPath <- mkRegU;   Reg#(TBStageIdx)   tbStage <- mkReg(0); // keep track of whether we can output TB result yet      rule processInput(True);   begin      let nextMSums = metricSums.sub(colIdx, stage);      let nextTrellis = trellis.sub(colIdx, stage);      let nextStates = getNextStates(stage);      let vRegsOutEntry = zip3(nextStates, nextMSums, nextTrellis);      let vRegsOutNew = vRegsOutComputeTBPath(vRegsOutEntry, inQ.first);      let minState = tpl_1(vRegsOutNew);      let minPath = tpl_2(vRegsOutNew);      let newMinState = (stage == 0 || minState < curMinState) ? minState : curMinState;      let newMinPath = (stage == 0 || minState < curMinState) ? minPath : curMinPath;      let newMSums = map(tpl_2, tpl_3(vRegsOutNew));      let newTrellis = map(tpl_3, tpl_3(vRegsOutNew));      Bit#(VStateSuffixSz) out = tpl_2(split(newMinPath));      VOutType vOut = unpack(out);      curMinState <= newMinState; // new min      curMinPath <= newMinPath;      stage <= stage + 1;      metricSums.upd(colIdx+1, stage, newMSums);      trellis.upd(colIdx+1, stage, newTrellis);      `ifdef isDebug         $display ("viterbi return: colIdx=%d stage=%d newMinState=%d, newMinPath=%h", colIdx, stage, newMinState, newMinPath);         $write ("viterbi return: newMSums=");         for (Integer i = 0; i < no_states; i = i + 1)	   begin	      $write ("%d: %d ", tpl_1(tpl_3(vRegsOutNew)[i]), newMSums[i]);	   end         $display ("");         $write ("viterbi return: newTrellis=");	 for (Integer i = 0; i < no_states; i = i + 1)	   begin	      $write ("%d: %h ", tpl_1(tpl_3(vRegsOutNew)[i]), newTrellis[i]);	   end	 $display ("");      `endif      if (stage == maxBound) // last stage, output trace back	begin	   inQ.deq;	   if (tbStage == fromInteger(no_tbstage-1))	     outQ.enq(vOut);	   else	     tbStage <= tbStage + 1;	   colIdx <= colIdx + 1;	end   end   endrule      method Action putData (VInType dataIn);      inQ.enq(dataIn);   endmethod   method ActionValue#(VOutType) getResult ();      outQ.deq;      return outQ.first;   endmethod   endmodule(*synthesize*)module mkIViterbiTB (IViterbi);   // states   FIFO#(VInType) inQ <- mkLFIFO;   FIFO#(VOutType) outQ <- mkSizedFIFO(2);   VRegFile#(VRegsSubIdxSz,VRegsOutSz,VMetricSum) metricSums <- mkMetricSums;   Reg#(Vector#(VTotalStates, Bit#(1))) tbcol <- mkRegU; // save tb col   Reg#(Bit#(VRegsSubIdxSz)) stage <- mkReg(0);   Reg#(Bit#(1)) colIdx <- mkReg(0);   Reg#(VState)  curMinState <- mkReg(0);   Reg#(TBStageIdx)   tbStage <- mkReg(0); // keep track of whether we can output TB result yet   Traceback  tbu <- mkTraceback;   rule performACS(True);   begin      let nextMSums = metricSums.sub(colIdx, stage);      let nextTBEntry = newVector;      let nextStates = getNextStates(stage);      let vRegsOutEntry = zip3(nextStates, nextMSums, nextTBEntry);      let vRegsOutNew = vRegsOutComputeTB(vRegsOutEntry, inQ.first);      let minState = tpl_1(vRegsOutNew);      let newMinState = (stage == 0 || minState < curMinState) ? minState : curMinState;      let newMSums = map(tpl_2, tpl_3(vRegsOutNew));      let newTBEntry = map(tpl_3, tpl_3(vRegsOutNew));      let newTBCol = writeSelect(stage, tbcol, newTBEntry);      curMinState <= newMinState; // new min      stage <= stage + 1;      metricSums.upd(colIdx+1, stage, newMSums);      tbcol <= newTBCol;       `ifdef isDebug         $display ("viterbi return: colIdx=%d stage=%d newMinState=%d", colIdx, stage, newMinState);         $write ("viterbi return: newMSums=");         for (Integer i = 0; i < no_states; i = i + 1)	   begin	      $write ("%d: %d ", tpl_1(tpl_3(vRegsOutNew)[i]), newMSums[i]);	   end         $display ("");         $write ("viterbi return: newTBEntry=");	 for (Integer i = 0; i < no_states; i = i + 1)	   begin	      $write ("%d: %h ", tpl_1(tpl_3(vRegsOutNew)[i]), newTBEntry[i]);	   end	 $display ("");      `endif      if (stage == maxBound) // last stage, output trace back	begin	   inQ.deq;	   colIdx <= colIdx + 1;	   tbu.updateMemory(vPermute(conv_in_sz, fwd_steps, newTBCol), newMinState); // put to traceback	end   end   endrule   rule performTB(True);   begin      let result <- tbu.getDecodedOutput; //get result from tb      outQ.enq(unpack(pack(result)));   end   endrule      method Action putData (VInType dataIn);      inQ.enq(dataIn);   endmethod   method ActionValue#(VOutType) getResult ();      outQ.deq;      return outQ.first;   endmethod   endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区国产| 欧美视频一区二区三区在线观看| 国产精品亚洲综合一区在线观看| 久久亚洲精精品中文字幕早川悠里| 久久精品国产成人一区二区三区| 欧美激情一区二区三区在线| 91久久精品一区二区| 国产最新精品精品你懂的| 日本一区二区三区视频视频| 欧美日韩一区在线观看| av电影天堂一区二区在线| 美腿丝袜亚洲色图| 亚洲v精品v日韩v欧美v专区| 中文字幕av在线一区二区三区| 欧美精品xxxxbbbb| 在线欧美一区二区| 99久久精品国产网站| 国产麻豆成人精品| 国模冰冰炮一区二区| 久久国产三级精品| 另类综合日韩欧美亚洲| 婷婷综合另类小说色区| 亚洲综合激情网| 欧美激情在线一区二区三区| 欧美mv和日韩mv国产网站| 欧美精品久久99| 欧美一区二区在线免费观看| 欧美日韩激情一区二区三区| 欧美日韩亚洲综合一区二区三区| 91麻豆.com| 欧美在线观看视频一区二区| 91在线观看一区二区| 色综合一个色综合亚洲| 日本高清不卡在线观看| 欧美久久久久久久久| 91精品蜜臀在线一区尤物| 欧美大片免费久久精品三p| 日韩美女一区二区三区四区| 久久久久久免费网| 中文字幕亚洲综合久久菠萝蜜| 亚洲日本青草视频在线怡红院| 亚洲综合在线五月| 三级一区在线视频先锋| 国产乱码精品一品二品| www.欧美亚洲| 欧美一区二区精品| 中文字幕一区二区视频| 亚洲二区在线观看| 国产精品一区二区久激情瑜伽| 色综合久久99| 精品国产亚洲一区二区三区在线观看| 国产亚洲美州欧州综合国| 一区二区欧美视频| 国产盗摄一区二区三区| 欧美剧情片在线观看| 中文字幕在线免费不卡| 日本va欧美va欧美va精品| 波多野结衣在线一区| 欧美岛国在线观看| 午夜精品福利一区二区三区av| 国产寡妇亲子伦一区二区| 欧美精品欧美精品系列| 亚洲视频图片小说| 大胆欧美人体老妇| 欧美精品一区二区久久久| 亚洲三级电影全部在线观看高清| 欧美经典一区二区| 亚洲一区二区三区美女| 成人av网站在线| 国产精品久久久久久久久久久免费看| 亚洲gay无套男同| 欧美性猛交xxxx黑人交| 亚洲精品久久7777| 色综合天天综合网天天狠天天| 久久久久久久久久电影| 极品少妇一区二区| 日韩欧美成人午夜| 久久精品国产99久久6| 日韩欧美专区在线| 国产一区二区三区四| 精品剧情v国产在线观看在线| 男女激情视频一区| 日韩一二三区视频| 国产精品乡下勾搭老头1| 久久久天堂av| av一区二区不卡| 亚洲精选免费视频| 69堂亚洲精品首页| 美女高潮久久久| 国产欧美va欧美不卡在线| 成人app软件下载大全免费| 亚洲欧美日韩人成在线播放| 日本精品一级二级| 毛片av一区二区三区| 久久影院午夜论| 在线观看网站黄不卡| 蜜桃一区二区三区四区| 国产精品久久久久久一区二区三区| 91在线视频官网| 精彩视频一区二区| 欧美激情在线看| 欧美一级理论片| 成人成人成人在线视频| 日韩精品乱码免费| 亚洲天堂中文字幕| 久久亚洲精品小早川怜子| 欧美亚日韩国产aⅴ精品中极品| 国产在线视频一区二区三区| 一区二区久久久| 国产欧美日韩精品a在线观看| 欧美精品丝袜中出| 91免费视频网| 国产精品1区2区| 久久99国内精品| 天天色图综合网| 午夜伊人狠狠久久| 中文字幕在线观看一区二区| 精品少妇一区二区三区在线视频| 色一区在线观看| av成人老司机| 97久久精品人人澡人人爽| 国产乱子伦一区二区三区国色天香| 一区二区视频在线看| 中文欧美字幕免费| 亚洲精品一区二区三区影院| 欧美剧情片在线观看| 欧美日韩大陆一区二区| 日本高清免费不卡视频| 在线精品视频一区二区三四| 成人免费高清在线| 国产福利一区二区三区视频在线| 美脚の诱脚舐め脚责91| 亚洲成a人在线观看| 尤物视频一区二区| 亚洲成人激情社区| 蜜桃精品在线观看| 国产尤物一区二区| 国产盗摄一区二区三区| 色婷婷综合久久久久中文| 欧美性大战xxxxx久久久| 91色porny| 国产福利精品导航| 捆绑调教一区二区三区| 精品综合免费视频观看| 国产99久久久国产精品潘金| 色综合久久久久久久| 6080日韩午夜伦伦午夜伦| 久久综合99re88久久爱| 一区二区三区在线观看视频| 青青草原综合久久大伊人精品优势 | 国产一区在线观看视频| 不卡av电影在线播放| 欧美日本在线播放| 精品国产乱码久久久久久图片| 久久久久久黄色| 首页国产丝袜综合| 国产99一区视频免费| 在线成人小视频| 国产精品久久久久久久浪潮网站| 亚洲国产人成综合网站| 经典三级视频一区| 欧美老女人第四色| 最新国产精品久久精品| 国内精品写真在线观看| 色美美综合视频| 国产精品久久久一本精品| 美女精品一区二区| 欧美一区午夜精品| 亚洲国产精品影院| 91丝袜高跟美女视频| 国产精品久线在线观看| 琪琪久久久久日韩精品| 欧美精品久久99久久在免费线 | 国产精品每日更新在线播放网址| 蜜桃传媒麻豆第一区在线观看| 欧美亚洲国产一卡| 亚洲欧美国产高清| 不卡一区二区在线| 日韩毛片精品高清免费| 成人午夜电影久久影院| 国产精品美女久久久久久久 | 日产国产欧美视频一区精品| 在线观看区一区二| 亚洲色欲色欲www| 99久久久久久| 国产精品乱码一区二三区小蝌蚪| 成人免费视频免费观看| 欧美—级在线免费片| 99v久久综合狠狠综合久久| 最新久久zyz资源站| 精品1区2区3区| 久久精品国产一区二区三| 久久伊99综合婷婷久久伊| 国产九色sp调教91| 亚洲精品国产a| 精品国产精品网麻豆系列| 处破女av一区二区| 亚洲第一久久影院| 日韩欧美在线不卡| 成人午夜激情影院|