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

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

?? iviterbi.bsv

?? MIT編寫的OFDM仿真程序
?? BSV
?? 第 1 頁 / 共 2 頁
字號:
//----------------------------------------------------------------------//// The MIT License // // Copyright (c) 2007 Alfred Man Cheuk Ng, mcn02@mit.edu // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use,// copy, modify, merge, publish, distribute, sublicense, and/or sell// copies of the Software, and to permit persons to whom the// Software is furnished to do so, subject to the following conditions:// // The above copyright notice and this permission notice shall be// included in all copies or substantial portions of the Software.// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR// OTHER DEALINGS IN THE SOFTWARE.//----------------------------------------------------------------------//import FIFO::*;import Monad::*;import Traceback::*;import Vector::*;import VParams::*;import VRegFile::*;import Parameters::*;//`define isDebug True // uncomment this line to display error// useful integers definitionsInteger radix_sz = valueOf(RadixSz);Integer no_states = valueOf(VTotalStates);Integer fwd_steps = valueOf(FwdSteps);Integer fwd_entry_sz = valueOf(FwdEntrySz);Integer conv_in_sz = valueOf(ConvInSz);Integer conv_out_sz = valueOf(ConvOutSz);Integer vregs_out_sz = valueOf(VRegsOutSz);Integer half_max_metric_sum = valueOf(TExp#(TLog#(TAdd#(VMaxMetricSum,1))));Integer no_tbstage = valueOf(NoOfTBStage);//////////////////////////////////////////////////////////// begin of interface definitions/////////////////////////////////////////////////////////interface IViterbi;  method Action putData (VInType dataIn);  method ActionValue#(VOutType) getResult ();endinterface/////////////////////////////////////////////////////////// Begin of library functions and modules/////////////////////////////////////////////////////////function VState getNextState(VState state, Bit#(ConvInSz) nextBits);  let tmp = {nextBits, state};  return tpl_1(split(tmp)); // drop LSBsendfunctionfunction VState getPrevState(VState state, Bit#(ConvInSz) prevBits);  let tmp = {state, prevBits};  return tpl_2(split(tmp)); // drop MSBsendfunction // ViterbiStatefunction Vector#(ConvOutSz, Bit#(KSz)) getConvVec();      Vector#(ConvOutSz, Bit#(KSz)) outVec = newVector();      outVec[0] = convEncoderG1;      outVec[1] = convEncoderG2;      return outVec;endfunction // Vector// get the output of the convolutional encoder. convention is// {b, a} - meaning a is the low bit and b is the high bitfunction Vector#(ConvOutSz, Bit#(1)) getConvEncOutput (VState state, 						       Bit#(ConvInSz) inBits);      Vector#(ConvOutSz, Bit#(KSz)) convVec = getConvVec();      Bit#(KSz) temp = {inBits, state};      Vector#(ConvOutSz, Bit#(1)) outVec = replicate(0);            for(Integer idx = 0; idx < valueOf(ConvOutSz); idx = idx + 1)	for(Integer bitNum = 0; bitNum < valueOf (KSz); bitNum = bitNum + 1)	  outVec[idx] = outVec[idx] + (temp[bitNum] & convVec[idx][bitNum]);      return outVec;endfunction// this is used to calculate the index of data that i need to readfunction Vector#(sz, Integer) getIdxLUT (Integer conv_in_sz, Integer stage);      Integer v_sz = valueOf(sz);      Integer shift_sz = conv_in_sz * stage;      Integer mul_val = exp(2, shift_sz);      Integer div_val = v_sz / mul_val;       Vector#(sz, Integer) outVec = newVector;      for (Integer i = 0; i < v_sz; i = i + 1)	   outVec[i] = ((i % div_val) * mul_val) + (i / div_val); // performing a circular right shift      return outVec;endfunction// this actually perform the permutationfunction Vector#(sz, val_t) vPermute (Integer conv_in_sz, Integer stage, Vector#(sz, val_t) inVec);            return map(select(inVec), getIdxLUT(conv_in_sz, stage));endfunction // Vector// this actually perform the reverse permutation function Vector#(sz, val_t) reverseVPermute (Integer conv_in_sz, Integer stage, Vector#(sz, val_t) inVec);      Integer v_sz = valueOf(sz);            Vector#(sz, val_t) outVec = newVector;      Vector#(sz, Integer) lut = getIdxLUT(conv_in_sz, stage);      for (Integer i = 0; i < v_sz; i = i + 1)	outVec[lut[i]] = inVec[i];      return outVec;endfunction // Vector// this function is passed as a parameter to mkVRegFilefunction Vector#(out_sz, value_T) readSelect (Integer conv_in_sz,					      Integer stage,					      Bit#(sub_idx_sz) sidx, 					      Vector#(row_sz, value_T) inVec)  provisos (Log#(out_sz, out_idx_sz),	    Log#(row_sz, row_idx_sz),	    Add#(sub_idx_sz, out_idx_sz, row_idx_sz));      Vector#(out_sz, value_T) outVec = newVector;      Vector#(row_sz, value_T) newInVec = vPermute(conv_in_sz, stage, inVec);      Nat shiftN = fromInteger(valueOf(out_idx_sz));      for (Integer i = 0; i < valueOf(out_sz); i = i + 1)	begin	   Bit#(out_idx_sz) idx1 = fromInteger(i);	   Bit#(row_idx_sz) idx2 = zeroExtend(idx1) + (zeroExtend(sidx) << shiftN);	   outVec[idx1] = newInVec[idx2];	end      return outVec;endfunction// this function is passed as a parameter to mkVRegFilefunction Vector#(row_sz, value_T) reverseReadSelect (Integer conv_in_sz,						     Integer stage,						     Bit#(sub_idx_sz) sidx, 						     Vector#(out_sz, value_T) inVec)  provisos (Log#(out_sz, out_idx_sz),	    Log#(row_sz, row_idx_sz),	    Add#(sub_idx_sz, out_idx_sz, row_idx_sz));      Vector#(row_sz, value_T) outVec = newVector;      Nat shiftN = fromInteger(valueOf(out_idx_sz));      for (Integer i = 0; i < valueOf(out_sz); i = i + 1)	begin	   Bit#(out_idx_sz) idx1 = fromInteger(i);	   Bit#(row_idx_sz) idx2 = zeroExtend(idx1) + (zeroExtend(sidx) << shiftN);	   outVec[idx2] = inVec[idx1];	end      outVec = reverseVPermute(conv_in_sz, stage, outVec);            return outVec;endfunction// this function passed as a parameter to mkVRegFilefunction Vector#(row_sz, value_T) writeSelect (Bit#(sub_idx_sz) sidx, 					       Vector#(row_sz, value_T) inVec1,					       Vector#(out_sz, value_T) inVec2)  provisos (Log#(out_sz, out_idx_sz),	    Log#(row_sz, row_idx_sz),	    Add#(sub_idx_sz, out_idx_sz, row_idx_sz));      Vector#(row_sz, value_T) outVec = inVec1;      Nat shiftN = fromInteger(valueOf(out_idx_sz));      for (Integer i = 0; i < valueOf(out_sz); i = i + 1)	begin	   Bit#(out_idx_sz) idx1 = fromInteger(i);	   Bit#(row_idx_sz) idx2 = zeroExtend(idx1) + (zeroExtend(sidx) << shiftN);	   outVec[idx2] = inVec2[idx1];	end      return outVec;endfunction				(* synthesize *)module mkMetricSums (VRegFile#(VRegsSubIdxSz,VRegsOutSz,VMetricSum));      let vRegFile <- mkVRegFile(readSelect(conv_in_sz, fwd_steps),writeSelect, 0);   return vRegFile;endmodule // mkVRegFileFull(* synthesize *)module mkTrellis (VRegFile#(VRegsSubIdxSz,VRegsOutSz,VTrellisEntry));   let vRegFile <- mkVRegFile(readSelect(conv_in_sz, fwd_steps),writeSelect, 0);   return vRegFile;endmodule // mkVRegFileFullfunction VMetric getMetric(Bit#(1) in);      return ((in == 0) ? 0 : maxBound);endfunction // Metric      // generate the metric look up table// table index = {nextState, prevStateSuffix}(* noinline *)function MetricLUT getMetricLUT();            MetricLUT outVec = newVector;      for (Integer next_state = 0; next_state < no_states; next_state = next_state + 1)	begin	   VState nextState = fromInteger(next_state);	   Tuple2#(Bit#(ConvInSz), Bit#(TSub#(VStateSz, ConvInSz))) nsTup = split(nextState);	   Bit#(ConvInSz) inBits = tpl_1(nsTup);	   Bit#(TSub#(VStateSz, ConvInSz)) prevStatePrefix = tpl_2(nsTup);	   for (Integer prev_state_suffix = 0; prev_state_suffix < radix_sz; prev_state_suffix = prev_state_suffix + 1)	     begin		Bit#(ConvInSz) prevStateSuffix = fromInteger(prev_state_suffix);		VState prevState = {prevStatePrefix, prevStateSuffix};		Vector#(ConvOutSz, Bit#(1)) convOut = getConvEncOutput(prevState, inBits);		outVec[next_state*radix_sz + prev_state_suffix] = map(getMetric, convOut);	     end	end // for (Integer next_state = 0; next_state < no_states; next_state = next_state + 1)      return outVec;endfunction	     function PrimEntry#(tEntry_T) chooseMin (PrimEntry#(tEntry_T) in1, 					 PrimEntry#(tEntry_T) in2);            return ((tpl_2(in1) - tpl_2(in2) < fromInteger(half_max_metric_sum)) ? in2 : in1); endfunction // Tuple3// used for create a TB pathfunction VTrellisEntry getNextTrellisEntry (VState prevState,					    VState nextState,					    VTrellisEntry oldTEntry);      Bit#(ConvInSz) inBit = tpl_1(split(nextState));      return tpl_1(split({inBit, oldTEntry})); // shift out LSBsendfunction // VTrellisEntry// used for create a TB col, MSB = oldest columnfunction Bit#(VStateSuffixSz) getNextTB (VState prevState,					 VState nextState,					 Bit#(VStateSuffixSz) oldTEntry);      Bit#(ConvInSz) inBit = tpl_2(split(prevState));      return tpl_1(split({inBit, oldTEntry})); // shift out LSBsendfunction // VTrellisEntryfunction RadixEntry#(tEntry_T) radixCompute(RadixEntry#(tEntry_T) inVec,					    Vector#(ConvOutSz, VMetric) inMetrics,					    function tEntry_T getNextTEntry(VState prevState,									    VState nextState,									    tEntry_T oldTEntry));      function VMetricSum calcVMetricSum (VMetricSum inSum,					  Vector#(ConvOutSz, Bit#(1)) expBits,					  Vector#(ConvOutSz, VMetric) recMetrics);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产不卡视频在线观看| 久久久99久久| 99久久久国产精品| 蜜臀99久久精品久久久久久软件| 一区二区在线看| 中文字幕制服丝袜成人av | 亚洲国产精品人人做人人爽| 国产精品日韩成人| 国产亚洲成aⅴ人片在线观看| 久久众筹精品私拍模特| 久久综合狠狠综合久久激情| 精品国产一区二区三区久久影院| 日韩精品在线一区| 欧美成人性战久久| 久久先锋影音av鲁色资源| 26uuu亚洲综合色| 国产视频亚洲色图| 日韩美女啊v在线免费观看| 亚洲欧美日韩成人高清在线一区| 亚洲一区二区三区四区五区中文| 亚洲成人自拍偷拍| 天天操天天色综合| 另类小说欧美激情| 国产一区二区女| 粉嫩aⅴ一区二区三区四区| 99久久精品久久久久久清纯| 色综合一个色综合亚洲| 欧美日韩国产另类不卡| 欧美成人一级视频| 国产日韩三级在线| 亚洲激情网站免费观看| 五月天激情综合网| 国产一区三区三区| 99久久精品免费看国产免费软件| 欧美日韩免费观看一区三区| 日韩免费成人网| 亚洲国产成人午夜在线一区| 亚洲一区二区中文在线| 日本欧洲一区二区| 粉嫩av一区二区三区在线播放| 99久久伊人久久99| 欧美精品视频www在线观看| 欧美成人video| 成人免费一区二区三区视频 | 蜜桃免费网站一区二区三区| 国产精品一区二区黑丝| 99久久久无码国产精品| 555www色欧美视频| 国产偷国产偷亚洲高清人白洁| 亚洲高清不卡在线观看| 国产精品99久久久久久似苏梦涵 | 国产精品综合二区| 日本精品视频一区二区三区| 欧美成人福利视频| 亚洲欧美乱综合| 国内成+人亚洲+欧美+综合在线| 91首页免费视频| 精品日产卡一卡二卡麻豆| 自拍av一区二区三区| 国产一区二区三区蝌蚪| 欧美性生活一区| 国产精品对白交换视频| 精品一区二区三区在线观看| 在线观看国产一区二区| 亚洲欧洲日韩一区二区三区| 国产一区二区三区四区在线观看| 欧美视频在线不卡| 中文字幕中文字幕在线一区 | 亚洲一区二区三区爽爽爽爽爽 | 日本不卡高清视频| 欧美天天综合网| 亚洲男同性视频| 成人的网站免费观看| 欧美sm美女调教| 日韩不卡免费视频| 欧美日韩精品一二三区| 亚洲视频免费看| 波多野结衣中文一区| 国产亚洲欧美日韩日本| 麻豆精品视频在线| 日韩无一区二区| 麻豆国产精品官网| 91精品国产综合久久久久久漫画| 亚洲国产日产av| 色呦呦国产精品| 亚洲黄色录像片| 在线观看视频91| 亚洲乱码中文字幕综合| 波多野结衣亚洲| 中文字幕制服丝袜成人av| a级高清视频欧美日韩| 国产精品电影院| 色妞www精品视频| 亚洲一区二区三区在线播放 | 成人丝袜视频网| 中文字幕不卡的av| 成人永久免费视频| 国产精品国产a级| 91黄色免费网站| 亚洲国产aⅴ天堂久久| 欧美精品久久久久久久多人混战| 视频在线在亚洲| 欧美成人猛片aaaaaaa| 国产99久久久国产精品免费看| 国产精品午夜在线| 在线观看成人免费视频| 日韩和欧美一区二区三区| 久久综合色8888| 一本色道**综合亚洲精品蜜桃冫| 亚洲国产成人va在线观看天堂| 日韩视频一区二区| 国产福利不卡视频| 亚洲精品国产精华液| 日韩欧美一区二区久久婷婷| 福利一区二区在线观看| 亚洲精品欧美专区| 欧美一区二区视频网站| 国产精品一区二区黑丝| 亚洲精品视频在线看| 日韩一区二区影院| 成人精品一区二区三区中文字幕 | 91精品在线免费观看| 日韩经典一区二区| 精品乱码亚洲一区二区不卡| 狠狠色丁香久久婷婷综| 91.麻豆视频| 免费不卡在线视频| 久久久久久久综合| 99re66热这里只有精品3直播| 亚洲国产成人av好男人在线观看| 欧美va亚洲va国产综合| 成人av片在线观看| 亚洲高清久久久| 久久久久久毛片| 日韩一级成人av| 97se亚洲国产综合自在线不卡| 一区二区三区国产精品| 在线播放国产精品二区一二区四区 | 奇米在线7777在线精品 | 欧美日韩美女一区二区| 毛片不卡一区二区| 亚洲午夜久久久久久久久久久| 日韩精品一区二区三区视频播放 | 国产精品久久久久久久久免费桃花| 欧美激情中文不卡| 欧美国产综合色视频| 狠狠色丁香婷婷综合| 国产日韩欧美精品电影三级在线| 色综合久久综合网97色综合 | 亚洲大片一区二区三区| 久久精品欧美日韩精品| 色婷婷国产精品| 国产在线不卡一区| 综合电影一区二区三区| 日韩精品一区二区三区视频 | 亚洲欧美另类综合偷拍| 日韩一区二区三区av| 精品一区二区在线视频| 亚洲一区二区三区三| 国产精品免费网站在线观看| 91天堂素人约啪| 黄一区二区三区| 五月天激情小说综合| 国产精品久久免费看| 欧美成人一区二区三区在线观看| 欧美色爱综合网| 色视频一区二区| 成人视屏免费看| 国产精品123| 国产一区中文字幕| 一区二区三区日韩欧美精品| **性色生活片久久毛片| www国产成人| 日韩精品一区在线| 欧美日韩一卡二卡三卡| 日本韩国精品一区二区在线观看| 成人免费三级在线| 国产尤物一区二区在线| 午夜精品福利一区二区蜜股av| 亚洲乱码国产乱码精品精98午夜 | 亚洲女性喷水在线观看一区| 精品国产一区二区亚洲人成毛片 | 欧美日韩一级黄| 91视视频在线直接观看在线看网页在线看 | 久久综合九色欧美综合狠狠| 91亚洲精品久久久蜜桃网站| 日韩欧美视频在线| 色屁屁一区二区| 欧美性做爰猛烈叫床潮| 欧美撒尿777hd撒尿| 色菇凉天天综合网| 国产成人自拍在线| 国产成人高清在线| 懂色av一区二区三区免费看| 成人免费福利片| 91黄视频在线| 欧美精品乱码久久久久久按摩 | 欧美亚洲综合网| 欧美第一区第二区| jiyouzz国产精品久久|