主要内容

HDL OFDM接收机

本示例展示了如何使用针对HDL代码生成和硬件实现进行优化的Simulink®块实现基于ofdm的无线接收器。

本例中所示的模型接收数据并基于正交频分复用(OFDM)进行解码。本例的主要目的是建模一个定制的HDL OFDM无线通信接收器,该接收器可以在实时场景中恢复信息,并支持高达3mbps的数据速率。该模型使您能够配置参数:符号调制类型,如BSPK, QPSK, 16-QAM和64-QAM,码率1/2,2/3,3/4和5/6通过穿孔卷积编码。该模型使您能够控制诸如载波频率偏移(CFO),载波相位偏移(CPO)和瑞利衰落信道等损害,这些损害会严重影响基于ofdm的通信系统。

中的接收器与发射器一起工作HDL OFDM发送器的例子。本例中的接收机具有MATLAB®浮点等效函数HDL OFDM MATLAB参考资料的例子。

模型架构

下图显示了OFDM接收机的结构。接收器以1.92 Msps采样输入。这些样本流入Rx过滤器。Rx滤波器的输出流进入频率估计器和频率校正器。频率估计器和频率校正器分别对CFO进行估计和校正,并将样本送入同步序列检测器。SS检测器的输出用于时间同步。时间同步的采样流进OFDM解调器,OFDM解调器对输入进行解调并产生频域子载波。子载波解析器解析信道引用子载波、报头子载波和数据子载波。信道参考子载波流入信道估计器,信道估计器估计信道频率响应。信道均衡器使用这些估计来均衡频域中的报头和数据子载波。 The Header Recovery recovers the header information using the channel-equalized header subcarriers. The CPE Estimator estimates the common phase error (CPE) in the data sub carriers that get corrected by CPE Corrector. The Data Recovery uses the header information and the CPE-corrected data subcarriers to decode the data bits.

文件结构

使用两个Simulink模型和三个MATLAB文件来构建该示例。

  • whdlOFDMReceiver.slx-顶级OFDM接收机Simulink模型

  • whdlOFDMRx.slx—使用的参考模型whdlOFDMReceiver.slx模型

  • whdlexamples.OFDMReceiverInit.m初始化脚本whdlOFDMReceiver.slx在模型中初始化InitFcn回调。

  • whdlexamples.OFDMRxParameters.m-初始化函数whdlOFDMRx.slx在模型工作区和模型中初始化InitFcn回调

  • whdlexamples.OFDMTx.mMATLAB浮点等效发射机函数,用于生成发射机波形。生成的发射机波形用于whdlexamples.OFDMReceiverInit.m脚本

接收接口

该图显示了本例中的顶级模型。

模型的输入

  • dataIn—输入数据,指定为16位复签名信号,采样频率为1.92 Msps。

  • validIn-控制信号验证dataIn,指定为布尔标量。

  • impairmentControl-总线信号控制信道损伤。

impairmentControl总线包括以下信号:

  • frequencyOffsetCorrectionType—控制信号,表示是否选择使用内部估计的频率偏移使用外部提供的频率偏移偏移量校正选项,指定为布尔标量。

  • externalFrequencyOffset-真正签名的14位CFO,范围从- 7400hz到7400hz,外部提供CFO校正。

  • channelEqualizerControl—控制信号,表示是否开启或关闭通道均衡,以布尔标量指定。

  • CPECorrectionControl-控制信号,用于指示是否启用或禁用CPE校正,以布尔标量指定。

模型输出

  • dataOut-解码后的输出数据位,作为布尔标量返回。

  • validOut-控制信号验证dataOut,作为布尔标量返回。

  • diagBus-具有诊断输出的状态信号,作为总线信号返回。

接管人的结构

OFDM接收子系统按顺序执行一组操作。这个子系统使用whdlOFDMRx.slx参考模型。这个参考模型在它的模型工作区和模型中被初始化InitFcn回调,使用whdlexamples。OFDMRxParameters函数。下图显示了参考模型中的顶级子系统。

同步和OFDM解调

同步和OFDM解调子系统执行频率和时间同步和OFDM解调。

频率与时间同步子系统包括时序调整子系统和CFO估计与校正及SS检测子系统。

CFO估计与校正与SS检测子系统包括CFO估计与SS检测子系统和频率校正Nx子系统,对输入信号进行频率校正。从CFO估计和SS检测子系统的估计被用于频率校正,如果frequencyOffsetCorrectionType信号在顶级模型接口上被设置为使用内部估计的频率偏移.的externalFrequencyOffset用于频率校正,如果frequencyOffsetCorrectionType信号设置为使用外部提供的频率偏移

CFO估计与SS检测子系统包括CFO估计子系统、Start Controller子系统、同步信号搜索子系统和对输入信号进行频率校正的频率校正1x子系统。

CFO估计子系统采用循环前缀相关技术对输入信号的CFO进行估计。CyclicPrefixCorrelator子系统通过平均六个OFDM符号中的所有估计值来估计每六个OFDM符号的一个CFO值。AngleAtMaximum子系统为每六个OFDM符号选择最强相关峰并记录其相位角。AngleFilter子系统实现了一个平均滤波器,在12毫秒的持续时间内平均所有记录的相角。得到的相位角作为最终的CFO估计。

同步信号搜索子系统实现SS相关。SS检测是通过在时域内将接收到的信号与SS信号连续交叉相关来实现的。此外,在每个时间步长上计算相关器跨度内信号的能量,然后缩放以产生阈值。最大峰值搜索子系统在12 ms后开始搜索最大相关峰,每3 ms时间窗搜索一次。子系统记录同步的时间偏移量。开始控制器功能块向最大峰值搜索子系统指示12毫秒持续时间的结束。

最大峰值搜索器在最大相关值处记录的定时偏移被传送到定时调整子系统以同步定时。

OFDM解调器块解调同步样本并产生子载波。

信道和CPE估计和校正

信道和CPE估计和校正子系统估计信道频率响应,均衡信道,执行CPE估计和校正CPE。

参考信号解析MATLAB函数块分离为计算信道估计保留的OFDM符号。

保留用于计算信道估计的OFDM符号通过信道估计子系统进行流传输。的OFDM信道估计器Block对两个符号的估计进行平均,并输出最终的信道估计。信道均衡子系统将估计值存储在RAM中,并使用OFDM均衡器帧中所有剩余的OFDM符号的块。

报头和数据解析MATLAB功能块分离OFDM符号对应的报头和数据符号。

频域信道均衡数据子载波通过共相位误差估计与校正子系统。在频率估计过程中,由于信道的损伤,估计误差总是很小的。这种估计误差会在信道均衡子载波中产生残余频率偏移。这导致在OFDM符号中的所有子载波中都有CPE,并且从符号到符号变化。CPE估计子系统使用12个导频子载波估计每个OFDM符号上的CPE。导频是已知的子载波,利用导频估计接收符号中的任何相位旋转。从同一符号中得出的估计值被平均以得到最终估计值。在估计期间,符号存储在符号缓冲区MATLAB函数块中。一旦估计值准备好了,就从这个缓冲块中读取符号,然后CPE校正子系统用该估计值校正数据子载波中的CPE。

标头和数据恢复

报头和数据恢复子系统恢复报头信息和数据位。

报头恢复子系统恢复报头信息来解码数据位。频域信道均衡的报头子载波流入报头恢复子系统。的LTE符号解调器块执行BPSK软符号解调。信道编码子系统配备了去交织器子系统和维特比译码器块。去交织器子系统以最大块大小执行去交织72列数是18.Viterbi解码器块执行1/2速率的Viterbi解码。有关去交织器子系统的详细信息,请参见HDL交织器和去交织器的例子。的通用CRC综合征检测器HDL优化块使用16位CRC校验和来验证来自Viterbi解码器块的解码位。如果CRC校验和失败,通用CRC综合征检测器HDL优化块产生一个错误信号。

数据恢复子系统使用报头信息解码数据位。头信息存储在寄存器中。这些寄存器用于访问标头信息。的LTE符号解调器块执行软比特BPSK、QPSK、16-QAM或64-QAM符号解调,与从报头信息中检索到的调制类型相关联。信道编码子系统配备了去交织器;Depuncturer,维特比译码器块。每个码率被分配一个预定义的穿孔矢量模式。信道编码子系统根据从报头信息中检索到的码率进行去交错和去穿刺,然后进行维特比解码。有关去交织器块的详细信息,请参见HDL交织器和去交织器的例子。解码后的比特流通过解码器子系统。的通用CRC综合征检测器HDL优化块使用32位的CRC校验和来验证解扰的位。如果CRC校验和失败,通用CRC综合征检测器HDL优化块产生一个错误信号。

诊断总线形成

诊断总线形成子系统为接收机的一些状态信号创建一个总线信号。该总线可用于分析部署到硬件上的接收器。

数据位在数据恢复子系统中解码。解码的比特流从接收器流出,并存储到顶级接收器模型中的捕获数据比特子系统的工作空间中。诊断解码器子系统对源编码的报头信息进行解码,并对在诊断总线形成子系统中形成的总线信号中同步帧的个数、报头CRC通过和失败的个数、数据CRC通过和失败的个数进行计数。Simulink显示块显示诊断解码器信息。

运行接收器

连接接收器背靠背与发射器在HDL OFDM发送器示例并运行Simulink模型。有关如何连接发射器和接收器的更多信息,请参阅HDL OFDM MATLAB参考资料的例子。

下面的文件描述了初始化、生成输入、运行和验证的过程whdlOFDMReceiver.slx模型whdlexamples.OFDMReceiverInit.m初始化脚本。您可以从这些文件中的自定义帧配置部分选择自定义发射器波形和信道损害。

  • OFDMRxRealTimeSimulationDisplay.m—此脚本模拟实时场景中的通道。您可以选择任何可用的通道损害并运行该脚本。该脚本显示输出并生成估计频率偏移和SS相关性的图。

  • OFDMRxFadingChannelResponseDisplay.m-这个脚本只模拟衰落信道。您可以只选择衰落信道损害并运行该脚本。该脚本显示输出并生成通道脉冲响应图以及估计频率响应与由脉冲响应导出的频率响应的比较。

请注意:这些文件在MATLAB搜索路径上不可用。要将这些文件本地复制到用户路径,必须打开此示例。

验证与结果

whdlexamples.OFDMRx.mscript是一个等效的MATLAB浮点参考模型whdlOFDMRx.slx.文中对Simulink模型和MATLAB浮点等效脚本进行了比较HDL OFDM MATLAB参考资料的例子。

运行OFDMRxRealTimeSimulationDisplay.m运行接收器的脚本。

> > OFDMRxRealTimeSimulationDisplay
###启动串行模型参考仿真构建### whdlOFDMRx模型参考仿真目标是最新的。构建总结构建1个模型中的0个(1个模型已经更新)构建持续时间:0小时0分钟4.893秒头CRC失败数= 0 / 4比特错误数= 0 / 15208

运行OFDMRxFadingChannelResponseDisplay.m运行接收器的脚本。

> > OFDMRxFadingChannelResponseDisplay
###启动串行模型参考仿真构建### whdlOFDMRx模型参考仿真目标是最新的。构建总结构建1个模型中的0个(1个模型已经更新)构建持续时间:0小时0分钟0.928秒报头CRC失败的数量= 0 / 1比特错误的数量= 0 / 3162

你可以在星座范围上看到星座图。控件中的Control Scope按钮可以激活作用域whdlOFDMReceiver.slx模型。

HDL代码生成

要为本例生成HDL代码,必须使用HDL Coder™。使用makehdlmakehdltb命令生成了OFDM接收子系统的HDL代码和HDL测试台。试验台生成时间取决于仿真时间。

合成的HDL代码用于Xilinx®Zynq®-7000 ZC706评估板。岗位地点和路线资源利用情况见下表。最大工作频率为202mhz。

资源使用情况_______________ _____片注册46642片LUT 38457 RAMB36 14 RAMB18 12 DSP48 88

另请参阅

相关的话题

Baidu
map