主要内容

HDL OFDM MATLAB参考资料

这个例子展示了如何在MATLAB®中建模OFDM发射机、加性高斯白噪声(AWGN)和OFDM接收器硬件算法,作为开发硬件的Simulink®实现的步骤。HDL OFDM的MATLAB参考示例在数学算法和硬件实现之间架起了桥梁。这个例子提供了HDL OFDM发射器,HDL AWGN和HDL OFDM接收器算法的MATLAB参考。您可以使用这些MATLAB参考来生成测试向量,以验证HDL的实现高密度脂蛋白OFDM发射机AWGN生成器的HDL实现,高密度脂蛋白OFDM接收机仿真软件模型。

HDL OFDM发射机MATLAB参考

本节介绍了HDL OFDM发射机的MATLAB参考。

这个MATLAB参考接受调制顺序、码率索引、帧数和要传输的数据位作为txParam结构或结构的数组。txParam这些字段。

  • modOrder—为“BPSK”、“QPSK”、“16QAM”和“64QAM”分别指定2、4、16或64。默认值是4 ('QPSK')。

  • codeRateIndex—将速率'1/2'、'2/3'、'3/4'和'5/6'分别指定为0、1、2或3。默认值是0('1/2')。

  • numFrames—请输入正整数。缺省值是5。

  • txDataBits—指定长度为行或列向量的二进制值trBlkSizextxParam.numFrames.默认值是一个列向量,包含随机生成的长度的二进制值trBlkSizextxParam.numFrames

计算传输块大小(trBlkSize)。

  • numSubCar-每个符号的子载波数

  • pilotsPerSym-每个符号的导频数

  • numDataOFDMSymbols—数据OFDM符号数

  • bitsPerModSym-每个调制符号的比特数

  • codeRate-破码率

  • dataConvK-卷积编码器的约束长度

  • dataCRCLen- - - - - - CRC长度

trBlkSize = ((numSubCar - pilotsPerSym) x numDataOFDMSymbols x bitsPerModSym x codeRate) - (dataConvK-1) - dataCRCLen

例如,使用传输块中的随机数据位生成调制方案为16QAM、码率为1/2的5帧时域OFDM发射机波形,将输入格式化为结构。

txParam。modOrder= 16;%调制顺序对应16-QAMtxParam。codeRateIndex = 0;对应1/2的码率索引txParam.numFrames= 5;生成的帧数使用参数计算传输块大小(trBlkSize)numSubCar = 72;每个符号的子载波数pilotsPerSym = 12;每个符号的导频数numDataOFDMSymbols = 32;数据OFDM符号的百分比bitsPerModSym = log2 (txParam.modOrder);每个调制符号的比特数codeRate = 1/2;%戳穿代码率dataConvK = 7;卷积码多项式的约束长度dataCRCLen = 32;数据CRC长度trBlkSize = ((numSubCar-pilotsPerSym) * numDataOFDMSymbols *...bitsPerModSym*codeRate - (dataConvK-1) - dataCRCLen;txParam。txDataBits = randi([0 1],txParam.numFrames*trBlkSize,1);生成复杂基带发射机波形流(' \ n -------------------------\ n ');流(\n正在传输%d帧…\n', txParam.numFrames);[txWaveform, txGrid txDiagnostics] = whdlexamples.OFDMTx (txParam);流(“\ n传输成功。\ n”);流(' \ n -------------------------\ n ');
------------------------- 发送5帧…传输成功。-------------------------

whdlexamples。OFDMTx函数返回参数txWaveformtxGrid,txDiagnostics

  • txWaveform生成的时域波形,并作为长度(()的列向量返回。fftLen+cpLen) xtxParam.numFramesxnumSymPerFrame),其中:

  1. fftLen为FFT长度。

  2. cpLen是循环前缀长度。

  3. txParam.numFrames为生成的OFDM帧数。

  4. numSymPerFrame为每帧OFDM符号的数量。

如果txParam是一个数组的结构,那么在表达式txParam.numFrames被替换成所有的和numFrames数组中出现的属性。所生成的时域波形的帧结构txWaveform类似于Simulink HDL OFDM发射器的输出波形。有关框架结构的详细说明,请参见高密度脂蛋白OFDM发射机的例子。

  • txGrid发射机网格是否输出并作为大小矩阵返回numSubCar————(txParam.numFramesxnumSymPerFrame),numSubCar是活跃子载波数。

  • txDiagnostics是一个结构或结构数组,由以下三个字段组成:

  1. headerBits将标题位表示为大小为14的列向量,其中包括3位用于FFT长度索引,2位用于符号调制类型,2位用于代码速率索引,以及7位备用。

  2. dataBits表示在给定帧数中传输的实际数据位(txParam.numFrames).该字段是一个二进制值的行或列向量,长度等于(txParam.numFramesxtrbBlkSize).是否dataBits行向量还是列向量取决于的维数txParam.dataBits.默认的大小是长度等于的列向量txParam.numFramesxtrbBlkSize

  3. ofdmModOut表示OFDM调制器输出为长度等于(的列向量fftLen+cpLen) xtxParam.numFramesxnumSymPerFrame

OFDMTx

whdlexamples。OFDMTx函数用于生成具有同步、参考、报头、导频和数据信号的OFDM发射机波形。这个函数返回txWaveformtxGrid,txDiagnostics使用发射机参数txParam.这个函数在内部调用这些单独的函数。

  • generateOFDMSyncSignal—生成同步信号SyncSignal.该函数使用根索引为25、长度为62的Zadoff-Chu序列。

  • generateOFDMRefSignal-该函数产生参考信号refSignal对于给定的FFT长度fftLen.该函数使用bpsk调制的伪随机二进制序列。

  • generateOFDMPilotSignal-该函数生成导频信号飞行员.该函数使用bpsk调制的伪随机二进制序列。

  • OFDMSymbolModulate—根据指定的调制方案BPSK、QPSK、16QAM、64QAM,将输入位调制成复杂的调制符号。

绘制发射机波形的资源网格。图中显示了每个资源网格元素的大小变化。

plotResourceGrid (txGrid);

HDL AWGN MATLAB参考

本节介绍HDL AWGN的MATLAB参考。

这个MATLAB参考是用来评估HDL OFDM发射和接收算法的性能。HDL AWGN MATLAB参考通过接受以分贝(dB)为单位的信噪比(SNR)和种子集生成AWGN。有关更多细节,请参见AWGN生成器的HDL实现.生成的AWGN被添加到HDL OFDM发射机输出中。

FFTLen = 128;CPLen = 32;usedSubCarr = 72;在128个子载波中,72个子载波加载了数据SNRdB = 30;SNRdBSimInput = SNRdB *的(长度(txWaveform) + 633, 1);种子surng1 = [121 719 511];tasurng1的种子种子surng2 = [2343 323 833];tasurng2的种子txScaleFactor = FFTLen /√(usedSubCarr);awgnNoise = whdlexamples.hdlawgn (SNRdBSimInput seedsURNG1 seedsURNG2);rx波形= tx波形+ (1/txScaleFactor)*awgnNoise(634:end);流('\n在%d dB处应用AWGN通道…\n', SNRdB);
应用AWGN通道在30分贝…

HDL OFDM接收机MATLAB参考

本节介绍了HDL OFDM接收机的MATLAB参考。

这个MATLAB参考包括时间同步,CFO估计和校正,OFDM解调,报头恢复,CPE估计和校正,数据恢复。

whdlexamples。OFDMRx函数接受rxWaveform,通过AWGN信道的传输波形。

whdlexamples。OFDMRx函数返回已解码的位rxBits以及一系列的结构,rxDiagnostics,由这八个字段组成。

  • estCFO-估计载波频率偏移

  • rxConstellationHeader-解调头星座符号

  • rxConstellationData-解调数据星座符号

  • softLLR-解调软LLR比特

  • decodedCodeRateIndex-从报头解码的码率索引

  • decodedModOrder-解码来自头部的调制命令

  • headerCRCErrorFlag—头部CRC状态

  • dataCRCErrorFlag—数据CRC状态

OFDMRx

whdlexamples。OFDMRx函数用于解调和解码接收到的数据rxWaveform.这个函数在内部调用这些单独的函数。

  • OFDMFrequencyOffset—该函数基于循环前缀(CP)技术估计载波频偏。接收到的时域波形的循环前缀部分与估计频率偏移有关。

  • OFDMFrequencyCorrect—该函数使用估计的频率偏移量校正接收波形上的载波频率偏移量。

  • OFDMFrameSync-该函数通过使用参考信号执行相关来同步接收到的波形。这一步在解调接收波形时减少了码间干扰。

  • OFDMDemodulation—该函数将时域波形转换为频域波形,以便进一步解码。的对象dsp。HDLFFT用于接收器的HDL实现。

  • OFDMChannelEstimation-该函数使用两个参考信号对信道进行估计。它采用最小二乘估计技术。LS估计平均,以提高信道估计精度。

  • OFDMChannelEqualization-该函数使用估计的通道执行零强制(ZF)均衡。然后,接收到的无通道的波形用于报头恢复和数据恢复。

  • OFDMHeaderRecovery—该函数通过符号解调、解交织和维特比解码来恢复报头信息。CRC状态表示报头信息恢复成功或失败。报头恢复CRC状态作为接收器的输出来指示帧丢失或恢复。当CRC检查失败时,头部CRC状态为1.否则,它是0

  • OFDMDataRecovery-该函数执行符号解调、解交织、解刺、维特比解码和解乱。该函数仅在头部CRC检查通过时处理数据。对解码后的数据进行解码器后,对恢复的数据位进行CRC检查,以指示数据包是否有错误。当CRC检查失败时,头部CRC状态为1.否则,它是0

流(\n接收过程开始…\n');[rxDataBits, rxDiagnostics] = whdlexamples.OFDMRx (rxWaveform);流(“\ n接待完成\ n \ n”);绘制标头和数据的星座散点图(rxDiagnostics.rxConstellationHeader (:) 1 0,“b”。)标题(“头星座”) axisObj = gca;axisObj。XColor =' w ';axisObj。YColor =' w ';散点图(rxDiagnostics.rxConstellationData (:) 1 0,“b”。)标题(“数据星座”);甘氨胆酸axisObj =;axisObj。XColor =' w ';axisObj。YColor =' w '
接收过程开始……估计载波频率偏移…前四帧用于载波频偏估计。估计载波频偏为-1.913549e-01 Hz。发现和处理框架5  ------------------------------------------ 头CRC通过调制:16 qam, codeRate = 1/2和FFT长度= 128 CRC传递数据解码完成  ------------------------------------------ 接收完成

用MATLAB参考软件验证Simulink模型

在本节中,以定点实现的Simulink HDL OFDM发射器、AWGN生成器和Simulink HDL OFDM接收器与以浮点实现的等效MATLAB HDL参考模型进行比较。

Simulink模型由OFDM发射器组成,该发射器为用户定义的调制顺序和码率生成时域波形。时域波形然后通过AWGN通道,引入所需信噪比(dB)的AWGN噪声。然后利用OFDM Receiver进行信息位的解调和解码。在每个阶段用MATLAB参考软件对Simulink模型的输出结果进行验证。

开放HDLOFDMTxRx;sim卡HDLOFDMTxRx
启动串行模型参考仿真构建whdlOFDMRx的模型参考仿真目标是最新的。whdlOFDMTx的模型参考模拟目标是最新的。构建总结0的2个模型(2个模型已经是最新的)构建持续时间:0h 0m 1.576s

用MATLAB验证Simulink HDL OFDM发射机

在本节中,绘制出HDL OFDM发射机的实部和虚部的MATLAB参考函数输出txWaveform并与输出比较高密度脂蛋白OFDM发射机块。

matlabTxWaveform = txWaveform;simulinkTxWaveform = simTxOut;图;情节(真实(matlabTxWaveform),“博”)举行情节(真实(simulinkTxWaveform(1:长度(matlabTxWaveform))),- r。)传说(MATLAB Tx波形的仿真软件Tx波形的);标题(MATLAB Tx与Simulink Tx(实部)的比较);ylim ([-0.2 - 0.2]);包含(“时域样本”);ylabel (“振幅”);图;情节(图像放大(matlabTxWaveform),“博”)举行情节(图像放大(simulinkTxWaveform(1:长度(matlabTxWaveform))),- r。)传说(MATLAB Tx波形的仿真软件Tx波形的);标题(“MATLAB Tx与Simulink Tx(虚部)的比较”);ylim ([-0.2 - 0.2]);包含(“时域样本”);ylabel (“振幅”);

用MATLAB的HDL AWGN验证Simulink HDL AWGN Generator

在本节中,将绘制MATLAB HDL AWGN的实部和虚部与Simulink AWGN Generator块的输出进行比较。

matlabChannelOut = rxWaveform;simulinkChannelOut = simChannelOut;图;情节(真实(matlabChannelOut),“博”);持有;情节(真实(simulinkChannelOut(1:长度(matlabChannelOut))),- r。);传奇(MATLAB通道输出的仿真软件通道输出的);标题(MATLAB通道与Simulink通道(实部)的比较);ylim ([-0.2 - 0.2]);包含(“时域样本”);ylabel (“振幅”);图;情节(图像放大(matlabChannelOut),“博”);持有;情节(图像放大(simulinkChannelOut(1:长度(matlabChannelOut))),- r。);传奇(MATLAB通道输出的仿真软件通道输出的);标题(《MATLAB通道与Simulink通道(虚部)的比较》);ylim ([-0.2 - 0.2]);包含(“时域样本”);ylabel (“振幅”);

用MATLAB HDL OFDM Receiver验证Simulink HDL OFDM Receiver

在本节中,绘制MATLAB接收机的解码位与Simulink接收机的解码位的比较图。

matlabRxOut = rxDataBits;simulinkRxOut = simRxDataBits;图;情节(rxDataBits“博”);持有;情节(simulinkRxOut(1:长度(rxDataBits)),- r。);传奇(“MATLAB Rx位”“仿真软件的处方位”);标题(“MATLAB和Simulink解码比特”);ylim ([-0.25 - 1.25]);包含(“时域样本”);ylabel (“振幅”);

相关的话题

Baidu
map