主要内容

高密度脂蛋白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的通信系统。

本例中的接收器与接收器中的发射机协同工作高密度脂蛋白OFDM发射机的例子。本例中的接收器具有MATLAB®浮点等效函数HDL OFDM MATLAB参考资料的例子。

模型架构

下图展示了OFDM接收机的结构。接收器在1.92 Msps采样输入。这些样品流进Rx过滤器。输出从Rx滤波器流进入频率估计器和频率校正器。频率估计器和频率校正器分别估计和校正CFO,样品流进入同步序列(SS)检测器。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-输入数据,指定为在1.92 Msps采样的复带符号16位信号。

  • 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估计子系统、启动控制器子系统、同步信号搜索子系统和频率校正1x子系统,对输入信号进行频率校正。

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

同步信号搜索子系统实现了SS相关性。SS检测是通过在时域内不断地将接收信号与SS信号相互关联来实现的。此外,在每个时间步长上计算相关器跨度内信号的能量,然后缩放以生成阈值。最大峰值搜索器子系统在12毫秒后开始搜索最大相关峰值,并每3毫秒搜索一次。子系统记录同步的定时偏移量。Start Controller功能块向Max Peak Searcher子系统指示12毫秒持续时间的结束。

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

OFDM解调器Block对同步样本进行解调,生成子载波。

通道和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.维特比译码器块执行1/2速率维特比译码。有关Deinterleaver子系统的更多信息,请参见HDL交织器和去交织器的例子。的通用CRC综合征检测器HDL优化块使用16位CRC校验和来验证从Viterbi Decoder块中解码的位。如果CRC校验和失败,通用CRC综合征检测器HDL优化块生成一个错误信号。

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

诊断总线形成

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

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

运行接收器

将接收器与发射器背对背连接高密度脂蛋白OFDM发射机实例,并运行Simulink模型。有关如何连接发射机和接收器Simulink模型背靠背的更多信息,请参阅HDL OFDM MATLAB参考资料的例子。

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

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

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

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

验证和结果

whdlexamples.OFDMRx.m脚本是MATLAB中等效的浮点参考模型whdlOFDMRx.slx.比较了Simulink模型和MATLAB的浮点等价脚本HDL OFDM MATLAB参考资料的例子。

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

> > OFDMRxRealTimeSimulationDisplay
启动串行模型参考仿真构建whdlOFDMRx的模型参考仿真目标是最新的。Build Summary 0 of 1 models built (1 models已经更新)Build duration: 0h 0m 4.893s报头CRC失败数= 0 / 4位错误数= 0 / 15208

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

> > OFDMRxFadingChannelResponseDisplay
启动串行模型参考仿真构建whdlOFDMRx的模型参考仿真目标是最新的。Build Summary 0 of 1 models built (1 models已经更新)Build duration: 0h 0m 0.928s报头CRC失败数= 0 / 1比特错误数= 0 / 3162

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

HDL代码生成

要为这个示例生成HDL代码,您必须拥有HDL Coder™。使用makehdl而且makehdltb命令为OFDM接收器子系统生成HDL代码和HDL测试台。测试台生成时间取决于模拟时间。

由此产生的HDL代码合成了Xilinx®Zynq®-7000 ZC706评估板。驿站地点和路线资源利用情况如下表所示。最大工作频率为202兆赫。

资源使用情况_______________ _____ Slice寄存器46642 Slice LUT 38457 RAMB36 14 RAMB18 12 DSP48 88

另请参阅

相关的话题

Baidu
map