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

📄 receiver.bsv

📁 基于MATLAB的OFDM发送
💻 BSV
字号:
//----------------------------------------------------------------------//// 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 Controls::*;import DataTypes::*;import Interfaces::*;import Parameters::*;import Synchronizer::*;import Unserializer::*;import FFTIFFT::*;import ChannelEstimator::*;import Demapper::*;import Interleaver::*;import Decoder::*;import Descrambler::*;import Connectable::*;import GetPut::*;import LibraryFunctions::*;(* synthesize *)module mkSynchronizerInstance   (Synchronizer#(SyncIntPrec,SyncFractPrec));   Synchronizer#(SyncIntPrec,SyncFractPrec) block <- mkSynchronizer;   return block;endmodule(* synthesize *)module mkUnserializerInstance   (Unserializer#(UnserialOutDataSz,RXFPIPrec,RXFPFPrec));   Unserializer#(UnserialOutDataSz,RXFPIPrec,RXFPFPrec) block <- mkUnserializer;   return block;endmodule(* synthesize *)module mkReceiverPreFFTInstance   (ReceiverPreFFT#(UnserialOutDataSz,RXFPIPrec,RXFPFPrec));      // state elements   let synchronizer <- mkSynchronizerInstance;   let unserializer <- mkUnserializerInstance;      // connections   mkConnectionPrint("Sync -> Unse",synchronizer.out,unserializer.in);//     mkConnection(synchroinzer.out,unserializer.in);      // methods   interface in = synchronizer.in;   interface out = unserializer.out;endmodule		     (* synthesize *)module [Module] mkFFTInstance   (FFT#(RXGlobalCtrl,FFTIFFTSz,RXFPIPrec,RXFPFPrec));   FFT#(RXGlobalCtrl,FFTIFFTSz,RXFPIPrec,RXFPFPrec) block <- mkFFT;   return block;endmodule(* synthesize *)module mkChannelEstimatorInstance   (ChannelEstimator#(RXGlobalCtrl,CEstInDataSz,		      CEstOutDataSz,RXFPIPrec,RXFPFPrec));   ChannelEstimator#(RXGlobalCtrl,CEstInDataSz,		     CEstOutDataSz,RXFPIPrec,RXFPFPrec) block;   block <- mkChannelEstimator(pilotRemover);   return block;endmodule(* synthesize *)module mkDemapperInstance   (Demapper#(RXGlobalCtrl,DemapperInDataSz,DemapperOutDataSz,	      RXFPIPrec,RXFPFPrec,ViterbiMetric));   Demapper#(RXGlobalCtrl,DemapperInDataSz,DemapperOutDataSz,	     RXFPIPrec,RXFPFPrec,ViterbiMetric) block;   block <- mkDemapper(modulationMapCtrl,demapperNegateOutput);   return block;endmodule(* synthesize *)module mkDeinterleaverInstance   (Deinterleaver#(RXGlobalCtrl,DeinterleaverDataSz,		   DeinterleaverDataSz,ViterbiMetric,MinNcbps));   Deinterleaver#(RXGlobalCtrl,DeinterleaverDataSz,		  DeinterleaverDataSz, ViterbiMetric,MinNcbps) block;   block <- mkDeinterleaver(modulationMapCtrl,deinterleaverGetIndex);   return block;endmodule(* synthesize *)module mkDecoderInstance   (Decoder#(RXGlobalCtrl,DecoderInDataSz,ViterbiMetric,	     DecoderOutDataSz,Bit#(1)));   Decoder#(RXGlobalCtrl,DecoderInDataSz,ViterbiMetric,	    DecoderOutDataSz,Bit#(1)) block;   block <- mkDecoder;   return block;endmodule    (* synthesize *)module mkReceiverPreDescramblerInstance   (ReceiverPreDescrambler#(RXGlobalCtrl,FFTIFFTSz,RXFPIPrec,			    RXFPFPrec,DecoderOutDataSz,Bit#(1)));    // state elements    let fft <- mkFFTInstance;    let channelEstimator <- mkChannelEstimatorInstance;    let demapper <- mkDemapperInstance;    let deinterleaver <- mkDeinterleaverInstance;    let decoder <- mkDecoderInstance;        // connections    mkConnectionPrint("FFT  -> CEst",fft.out,channelEstimator.in);    mkConnectionPrint("CEst -> Dmap",channelEstimator.out,demapper.in);    mkConnectionPrint("Dmap -> Dint",demapper.out,deinterleaver.in);    mkConnectionPrint("Dint -> Deco",deinterleaver.out,decoder.in);    //     mkConnection(synchroinzer.out,unserializer.in);        // methods    interface in = fft.in;    interface out = decoder.out;endmodule(* synthesize *)module mkDescramblerInstance   (Descrambler#(RXDescramblerAndGlobalCtrl,		 DescramblerDataSz,DescramblerDataSz));   Descrambler#(RXDescramblerAndGlobalCtrl,		DescramblerDataSz,DescramblerDataSz) block;   block <- mkDescrambler(descramblerMapCtrl,			  descramblerGenPoly);   return block;endmodule// (* synthesize *)// module mkDescramblerInstance//    (Descrambler#(RXDescramblerAndGlobalCtrl,// 		 DescramblerDataSz,DescramblerDataSz));//    Descrambler#(RXDescramblerAndGlobalCtrl,// 		DescramblerDataSz,DescramblerDataSz) block;//    block <- mkScrambler(descramblerMapCtrl,// 			descramblerConvertCtrl,// 			descramblerGenPoly);//    return block;// endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -