主要内容

高密度脂蛋白OFDM接收机

此示例显示如何通过使用针对HDL代码生成和硬件实现优化的Simulink®块来实现基于OFDM的无线接收器。金宝app

本例中所示的模型接收数据并基于正交频分复用(OFDM)对其进行解码。本示例的主要目的是为一个定制的HDL OFDM无线通信接收器建模,该接收器可以在实时场景中恢复信息,并支持高达3mbps的数据速率。金宝app通过穿孔卷积编码,可以配置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检测器的输出用于时间同步。时间同步的样本流进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.

文件结构

利用两个金宝appSimulink模型和三个MATLAB文件构建了该实例。

  • whdlOFDMReceiver.slx- 顶级OFDM接收器Simulink模型金宝app

  • whdlofdmrx.slx.-使用的参考模型whdlOFDMReceiver.slx模型

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

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

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

接收接口

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

模型的输入

  • dat—输入数据,指定为以1.92 Msps采样的16位复带符号信号。

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

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

impairmentControl巴士包括以下信号:

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

  • externalFrequencyOffset-外部提供的14位Real signed 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信号连续相互关联来实现的。此外,在每个时间步长上计算信号在相关器跨度内的能量,然后将其缩放生成一个阈值。Max Peak Searcher子系统在12ms之后开始搜索最大相关峰值,并每3ms时间窗搜索一次。子系统记录同步的时间偏移。Start Controller功能块表示12ms持续时间的结束。

Max Peak Searcher在最大相关值处记录的时间偏移被传输到timing Adjust子系统进行时间同步。

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

频道和CPE估计和校正

信道和CPE估计和校正子系统对信道的频率响应进行估计、信道均衡、CPE估计和CPE校正。

参考信号解析MATLAB功能块将保留的OFDM符号分开以进行计算信道估计。

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

头部和数据解析MATLAB函数块分离头部和数据符号对应的OFDM符号。

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

报头和数据恢复

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

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

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

诊断总线形成

诊断总线组成子系统为接收器的某些状态信号创建总线信号。当部署到硬件上时,此总线可用于分析接收器。

数据位在数据恢复子系统中解码。解码位从接收器中流出并存储到顶级接收机模型中的捕获数据位子系统中的工作空间。诊断解码器子系统解码源编码的报头信息,并计数同步帧的数量,头部CRC的数量和故障,以及在诊断总线形成子系统中形成的总线信号中的数据CRC的数量和故障。Simu金宝applink显示块显示诊断解码器信息。

运行接收者

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

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

  • OFDMRxRealTimeSimulationDisplay.m- 此脚本在实时方案中模拟了一个频道。您可以选择任何可用的频道障碍并运行脚本。该脚本显示输出并生成估计频率偏移和SS相关的曲线。

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

笔记:Matlab搜索路径上不可用这些文件。要在本地复制到用户路径,必须打开此示例。

验证和结果

Whdlexamples.ofdmrx.m.脚本是一个相当于参考模型的Matlab浮点whdlofdmrx.slx..文中比较金宝app了Simulink模型和MATLAB浮点等值脚本HDL OFDM MATLAB参考的例子。

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

> > OFDMRxRealTimeSimulationDisplay
###启动串行模型引用仿真构建###成功更新模型引用仿真目标:whdlOFDMRx build Summary simulation targets built: model Action Rebuild Reason ================================================================================ whdlOFDMRx Code generated and compiled whdlOFDMRx_msfMexa64并不存在。1 of 1 models built (0 models already up to date) Build duration: 0h 9m 59.551s header CRC failed = 0 per 4 bit errors = 0 per 15208

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

> > OFDMRxFadingChannelResponseDisplay
###启动串行模型参考仿真构建构建构建摘要0中构建的1个模型(已最新的1型号)构建持续时间:0h 4m 27.854s标题CRC数量失败= 0每1个位错误= 0每3162

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

HDL代码生成

要为此示例生成HDL代码,则必须具有HDL编码器™。用makehdlmakehdltb命令来生成OFDM接收机子系统的HDL代码和HDL测试平台。测试台的生成时间取决于模拟时间。

由此产生的HDL码为Xilinx®Zynq®-7000 ZC706评估板合成。邮政局和路由资源利用率,如下表所示。操作的最大频率为202 MHz。

资源使用_______________ _____ Slice register 46642 Slice LUT 38457 RAMB36 14 RAMB18 12 DSP48 88

另请参阅

相关的话题