OFDM解调器
解调时域OFDM样本和返回自定义通信协议的子载波
- 库:
无线HDL工具箱/调制
描述
的OFDM解调器块解调时域正交频分复用(OFDM)样本,并根据OFDM参数输出子载波。该区块支持5G新无线电(NR)标准,长期演进(LTE)[1],无线局域网(WLAN 802.11a/g/n/ac)[2]WiMAX、数字视频广播(DVB)和数字音频广播(DAB)标准。
该块接受输入数据以及有效的控制信号和这些OFDM参数:FFT长度,CP长度和左右保护子载波的数量。该模块输出解调数据以及有效和就绪的控制信号。该块启用准备好了当这些OFDM参数通过输入端口提供给块时,只有输出端口。只有当准备好了端口是1
(高)和第一个有效的每个OFDM符号的端口为1
(高)。
该块支持标量和向量输入。您可以使用矢量输入来提高数据吞吐量并实现每秒千兆采样(GSPS)吞吐量。该模块提供了适合于HDL代码生成和硬件部署的接口和体系结构。
港口
输入
数据
-输入数据
标量|列向量
输入数据,指定为实数或复数值的标量或列向量。向量大小必须是2的幂,范围在1到64之间,并且小于或等于FFT长度。
双
而且单
数据类型支持模拟,但不支持HDL代码生成。
数据类型:单
|双
|int8
|int16
|int32
|有符号不动点
复数支持:是的
有效的
—有效的输入数据
标量
指示指定为标量的有效输入数据。
这个端口是一个控制信号,表明当样品从数据输入端口有效。当此值为1
的值时,该块捕获数据输入端口。当此值为0
的值时,块忽略数据输入端口。
数据类型:布尔
FFTLen
- FFT长度
标量
FFT的长度,指定为标量。FFT长度必须为2的幂,范围为8 ~ 65,536。该值必须小于或等于FFT最大长度参数值。
为了支持最小FFT长度为8,使用FFTLen数据类型必须为fixdt (0 k 0)
,在那里k大于等于4。
依赖关系
若要启用此端口,请设置OFDM参数源参数输入端口
.
数据类型:单
|双
|uint8
|uint16
|uint32
|无符号固定点
CPLen
—循环前缀长度
标量
循环前缀的长度,指定为0到范围内的标量FFTLen.
为了支持最小FFT长度为8,使用CPLen数据类型必须为fixdt (0 k 0)
,在那里k大于等于4。
依赖关系
若要启用此端口,请设置OFDM参数源参数输入端口
.
数据类型:单
|双
|uint8
|uint16
|uint32
|无符号固定点
numLgSc
- OFDM符号左护载波数
标量
OFDM符号的左保护载波数,指定为0到(FFTLen/2) - 1。
为了支持最小FFT长度为8,使用numLgSc数据类型必须为fixdt (0 k 0)
,在那里k大于等于2。
依赖关系
若要启用此端口,请设置OFDM参数源参数输入端口
.
数据类型:单
|双
|uint8
|uint16
|uint32
|无符号固定点
numRgSc
- OFDM符号右护载波数
标量
OFDM符号的右保护载波数,指定为0到()之间的标量。FFTLen/2) - 1。
为了支持最小FFT长度为8,使用numRgSc数据类型必须为fixdt (0 k 0)
,在那里k大于等于2。
依赖关系
若要启用此端口,请设置OFDM参数源参数输入端口
.
数据类型:单
|双
|uint8
|uint16
|uint32
|无符号固定点
重置
-明确内部状态
标量
清除指定为标量的内部状态。当此值为1
(true),块停止当前计算并清除所有内部状态。
依赖关系
要启用此端口,请选择开启复位输入端口参数。
数据类型:布尔
输出
数据
-输出数据解调
标量|列向量
解调输出数据,作为复值标量或列向量返回。输出数据类型取决于输入的数据类型数据端口。
当你设置OFDM参数源参数
财产
清除将蝴蝶输出除以二参数时,输出字长按对数递增2(FFT长度)位。当你设置OFDM参数源参数
输入端口
清除将蝴蝶输出除以二参数时,输出字长按对数递增2(FFT最大长度)位。
为避免溢出,请选择将蝴蝶输出除以二参数。
数据类型:单
|双
|int8
|int16
|int32
|有符号不动点
复数支持:是的
有效的
—有效的输出数据
标量
指示作为标量返回的有效输入数据。
此端口是一个控制信号,用于指示何时启动数据输出端口有效。块将此值设置为1
当数据样本可用时数据输出端口。当你选择移除直流子载波参数时,此值设置为0
在输出样本的中心,以排除直流载波。
数据类型:布尔
准备好了
—表示block已经就绪
标量
控制信号,指示块何时准备好接收新的输入数据。当此值为1
,块在下一个时间步中接受输入数据。当此值为0
时,块将忽略下一个时间步中的输入数据。
依赖关系
若要启用此端口,请设置OFDM参数源参数输入端口
.
数据类型:布尔
参数
主要
OFDM参数源
—OFDM参数来源
财产
(默认)|输入端口
您可以通过输入端口或选择参数值来设置OFDM参数。
选择财产
要启用FFT长度,循环前缀长度,左警卫副载波数,右护卫子载波数参数。
选择输入端口
要启用FFTLen,CPLen,numLgSc,numRgSc输入端口和FFT最大长度参数。的FFT最大长度属性的有效值范围的上限FFTLen输入端口。
FFT最大长度
- FFT最大长度
64
(默认)| 2的幂,范围为8到65,536
指定FFT的最大长度。
依赖关系
若要启用此参数,请设置OFDM参数源参数输入端口
.
FFT长度
- FFT长度
64
(默认)| 2的幂,范围为8到65,536
指定FFT长度。当你设置OFDM参数源参数财产
,块使用这个FFT长度值作为最大FFT长度。
依赖关系
若要启用此参数,请设置OFDM参数源参数财产
.
循环前缀长度
—循环前缀长度
16
(默认值)|整数,取值范围为0 ~FFT长度
指定循环前缀的长度。
依赖关系
若要启用此参数,请设置OFDM参数源参数财产
.
左警卫副载波数
- OFDM符号左端保护带子载波数
6
(默认值)|整数,取值范围为0 ~ (FFT长度/2) - 1
指定左保护子载波数。
依赖关系
若要启用此参数,请设置OFDM参数源参数财产
.
右护卫子载波数
- OFDM符号右端保护频带子载波数
5
(默认值)|整数,取值范围为0 ~ (FFT长度/2) - 1
指定右护卫子载波数。
依赖关系
若要启用此参数,请设置OFDM参数源参数财产
.
启用CP分数
—CP分数使能器
从
(默认)|在
选择此参数可启用CP分数参数。
CP分数
-需要移除的循环前缀百分比
0.55
(默认)|的取值范围为0 ~ 1
循环前缀分数,指定为从0到1的值,包括。此参数指定块从OFDM符号开始移除的CP样本的百分比。块将剩余的CP样本移到OFDM符号的末尾。
当此参数为0.55
,该块从符号的开头移去55%的CP,并将45%移到符号的末尾。当将该参数设置为时1
时,该块从OFDM符号的开头移除100%的CP,并且不将任何样本移到末尾。
依赖关系
要启用此参数,请选择启用CP分数参数。
移除直流子载波
—不包括直流子载波
在
(默认)|从
当选择此参数时,块通过将输出有效信号设置为来排除输出中的直流子载波0
为输出子载波的中心。
开启复位输入端口
-复位信号
从
(默认)|在
选择此参数可启用重置输入端口。
FFT参数
将蝴蝶输出除以二
-将FFT蝴蝶输出除二
从
(默认)|在
控件的伸缩选项FFT块内部的OFDM解调器块。
当选择此参数时,FFT总体实现1/N比例因子是将每只蝴蝶的输出再乘以二。这种调整使FFT的输出保持在与其输入相同的振幅范围内。如果清除此参数,则在每次蝴蝶乘法之后,该块通过将字长增加一位来避免溢出。
舍入方法
-内部定点计算的舍入模式
地板上
(默认)|天花板
|收敛
|最近的
|轮
|零
此参数指定内部定点计算的舍入模式类型。有关舍入模式的详细信息,请参见舍入模式.当输入为任意整数数据类型或定点数据类型时,FFT算法使用定点算法进行内部计算。当输入为数据类型时,此参数不应用单
或双
.舍入适用于旋转因子乘法和缩放操作。
算法
的OFDM解调器块操作序列使用这些块实现:就绪发生器,循环前缀去除器,采样中继器,FFT移位器,FFT,下采样器和子载波选择器。图中显示的参数配置块的行为。
准备好了发电机
此块启用准备好了端口时设置OFDM参数源参数输入端口
.这准备好了端口根据最大FFT长度控制输入样本。
适用于下列方程。
Nh=
装天花板
((Nr+FFTLen+CPLen) /vecLen)Nl=
装天花板
((Nr+FFT最大长度+CPLen) /vecLen) - - -Nh
在这些方程中,
Nh是高准备时钟周期的数量
Nl低就绪时钟周期的数量
Nr为上一个OFDM符号的剩余样本数。最初,这个值是
0
.在后续的操作中,块计算Nr利用方程,(Nr+FFTLen+CPLen) - (地板上
((Nr+FFTLen+CPLen) /vecLen) xvecLen)vecLen向量的长度是多少
循环前缀去除器
该块从OFDM符号中移除CP样本,用于提取星座符号。block根据以下参数执行CP移除:CP长度,CP分数(启用时),以及FFT长度.
该块通过实现分数循环前缀去除来支持窗口传输。开窗减少带外辐射。发射机通过将每个OFDM符号的尾部与下一个OFDM符号的头部重叠来执行窗口。接收机在FFT计算中必须避免这些重叠样本。分数CP通过删除符号开头的部分CP和符号结尾的剩余CP来解决这个问题。实现CP-fraction算法也使该块对定时偏移不那么敏感。
块分两个阶段处理CP。首先,该块计算要移除的CP样本数量,Nr,并将这些样本从输入样本中移除。在这种情况下,Nr=CP分数xCP长度.
接下来,该块计算要移动的样本数量,N年代,并将这些样本在时域内移动到OFDM符号的末端。在那里,N年代=CP长度- (CP分数xCP长度).
这两段一起构成了循环前缀的总长度,Ncp=N年代+Nr.的CP分数参数控制块在符号开头删除多少个样本。该块将循环前缀的剩余部分从符号的开头移动到符号的末尾。块量化CP分数参数,fi(0, 11日,10)
.为了获得整数个数的样本,块进行计算Nr=地板上
(NcpxCP分数).
例如,如果FFT长度为128,CP长度为10,则块接收128个样本加上循环前缀大小。
样本中继器
该块重复FFT长度的样本数量,直到形成最大FFT长度。对于这个操作,块首先缓冲输入样本,然后根据最大FFT长度值重复样本。这种重复机制有助于避免在FFT块输入时缩放。此块是可选的,仅当您设置OFDM参数源参数输入端口
.当你设置OFDM参数源参数财产
,块掩码中提供的FFT长度值被设置为最大FFT长度。在这个上下文中,块不需要重复示例。
例如,如果FFT长度为128,最大FFT长度为2048,则每个OFDM符号由128个样本组成。该块通过重复128个样本16次,将这128个样本转换为2048个样本。该块生成2048个数据样本后,向下一个块发送数据和有效输入信号。
时域FFT移位器
通常,接收机在频域执行FFT移位。然而,这种方法需要内存,并引入与FFT大小相关的延迟。相反,接收机可以利用傅里叶变换的频移特性在时域内执行相同的操作。在一个定义域移动一个函数对应于在另一个定义域乘以一个复指数函数。为了减少硬件资源和延迟,该块通过将时域样本乘以复指数函数来执行FFT移位。
这些方程描述了FFT位移。a的方程N点FFT是
的FFT位移N/2个载波在任意方向,替换 ,导致
这个方程化简为
自 等于 , ,则方程化简为
最后的方程表明,时域中的FFT位移简化为乘以(-1)n.结果,该块通过将时域样本乘以+1或-1来实现FFT移位。
FFT
该块根据为块提供的最大FFT长度将时域信号转换为频域信号。可以通过参数或输入端口提供FFT长度值。FFT移位子系统的输出被馈送到一个FFT块。该块计算所有FFT长度和CP长度值的最大FFT。
的将蝴蝶输出除以二参数设置FFT是否实现总体1/N比例因子是将每只蝴蝶的输出再乘以二。这种调整使FFT的输出保持在与其输入相同的振幅范围内。当你清除将蝴蝶输出除以二参数时,该块通过在每次蝴蝶乘法后将字长增加一位来避免溢出。
下采样器
这将样本的最大fft长度数量限制为样本的fft长度数量。此块是可选的,仅当您设置OFDM参数源参数输入端口
.当你设置OFDM参数源参数财产
,块掩码中提供的FFT长度值设置最大FFT长度。在这种情况下,块不需要降低样本的采样。
例如,如果FFT长度为128,最大FFT长度为2048,则输入是2048个样本,并且必须对FFT长度为128进行下采样。在这种情况下,每16个样本抽取1个样本。
副载波选择器
输出子载波分为数据子载波、DC子载波和保护子载波。数据子载波包含有用的数据。该块通过移除为该块提供的左守护子载波和右守护子载波的数量来选择子载波。警戒子载波的数量根据不同的标准而不同。
如果您选择移除直流子载波参数时,该块将直流子载波从输出中排除。块排除直流子载波通过设置有效的港口0
(false)为输出子载波的中心周期。
延迟
该块根据输入类型(标量或向量)在有效周期捕获输出数据。
的示例输出和延迟OFDM解调器块指定标量输入时,设置OFDM参数源参数财产
并对其他块参数使用默认设置。在本例中,FFTLen参数设置为64
,循环前缀长度参数设置为16
,左警卫副载波数参数设置为6
,右护卫子载波数参数设置为5
.
在本例中,块的延迟计算公式如下:循环前缀长度+FFTLatency+左警卫副载波数+ 12,其中FFTLatency的延迟FFTblock表示指定的FFT长度,12是管道延迟数。
经过计算,该块的时延为207个时钟周期,如下图所示。
属性时,此图显示了块的示例输出和延迟OFDM参数源参数输入端口
.在本例中,FFTLen端口设置为64
,CPLen端口设置为16
,numLgSc端口设置为6
而且numRgSc端口设置为5
,FFT最大长度参数设置为128
.
使用公式计算块的延迟CPLen+FFTLen+FFTLatency+numLgScx (FFT最大长度/FFTLen) + 25,其中FFTLatency的延迟FFTblock表示指定的最大FFT长度,25为管道延迟数。
经过计算,该块的时延为424个时钟周期,如图所示。
块只接受输入时准备好了是1
(高)。在这种情况下,块在输入时的第一个周期捕获参数有效的端口是1
(高)。
的示例输出和延迟OFDM解调器块时,指定两元素列向量输入并设置OFDM参数源参数财产
并对其他块参数使用默认设置。FFTLen设置为64
,循环前缀长度设置为16
,左警卫副载波数而且右护卫子载波数设置为6
而且5
,分别。
在本例中,块的延迟计算公式如下:地板上
(循环前缀长度/vecLen) +vecFFTLatency+地板上
(左警卫副载波数/vecLen) + 12,其中vecFFTLatency的延迟FFT块为指定的FFT长度和向量长度,vecLen是向量的长度,12是管道延迟的数量。
由此计算可知,该块的延迟时间为142个时钟周期,如图所示。
属性时,此图显示了块的示例输出和延迟OFDM参数源参数输入端口
.在这个例子中,FFTLen设置为64
,CPLen设置为16
,numLgSc设置为6
,numRgSc设置为5
,FFT最大长度设置为128
.
在本例中,块的延迟计算公式如下:地板上
(CPLen/vecLen) +FFTLen/vecLen+vecFFTLatency+地板上
(numLgSc/vecLen) x (FFT最大长度/FFTLen) + 26,其中vecFFTLatency的延迟FFT块为指定的最大FFT长度和向量长度,vecLen是向量的长度,26是管道延迟的数量。
经过计算,该块的时延为266个时钟周期,如图所示。
块只接受输入时准备好了是1
(高)。在这种情况下,块在输入时的第一个周期捕获参数有效的端口是1
(高)。
性能
合成HDL代码的性能因目标和合成选项而异。本例中用于生成HDL代码的输入数据类型为fixdt(14) 1日16日
.
此表显示了在使用块时对默认配置值使用标量或两元素列向量输入时的资源和性能数据综合结果。生成的HDL是针对Xilinx的®Zynq®—7000 ZC706评估板。
输入数据 | 片附近地区 | 片寄存器 | 需求方 | 块内存 | 最大频率(MHz) |
---|---|---|---|---|---|
标量 | 2434 | 4161 | 8 | 1 | 340 |
向量 | 4890 | 7764 | 16 | 0 | 235 |
参考文献
[1] 3GPP TS 36.211版本14.2.0发布14。“物理通道和调制。”LTE -演进通用地面无线电接入(E-UTRA).
[2]无线局域网介质访问控制(MAC)和物理层(PHY)规范。IEEE标准802.11 - 2012。
Stefania Sesia, Issam Toufik和Matthew baker。LTE - UMTS从理论到实践的长期演进.
Erik Dahlman, Stefan Parkvall和Johan Skold。4G - LTE/LTE -高级移动宽带第二版.
扩展功能
C/ c++代码生成
使用Simulink®Coder™生成C和c++代码。
此块支持Simulink的C/ c++代码生成®加速器和快速加速器模式以及用于DPI组件生成。
HDL代码生成
使用HDL Coder™为FPGA和ASIC设计生成Verilog和VHDL代码。
HDL Coder™提供了影响HDL实现和合成逻辑的额外配置选项。
此块没有任何HDL块属性。
版本历史
R2019b引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。