传输线
计算快速傅里叶逆变换(IFFT)
- 库:
DSP HDL工具箱/转换
描述
的传输线block提供了两种实现FPGA和ASIC应用算法的架构。您可以选择针对吞吐量或面积进行优化的体系结构。
流基数2^2
—将此架构应用于高吞吐量应用。该体系结构支持标量或向量输入数据。金宝app您可以使用矢量输入实现每秒千兆样本(GSPS)的吞吐量。爆裂基数2
-使用这种架构实现最少的资源,特别是使用大的快速傅立叶变换(FFT)。您的系统必须能够容忍突发数据和更高的延迟。该体系结构只支持标量输入数据。金宝app
的传输线接受真实或复杂数据,提供硬件友好的控制信号,可选输出帧控制信号。
港口
输入
数据
-输入数据
实数或复数值的标量或列向量
输入数据,指定为实数或复数值的标量或列向量。只有流基数2^2
体系结构支持向量输入。金宝app向量大小必须为2的幂,取值范围为1 ~ 64,且小于或等于FFT长度.
双
而且单
数据类型支持模拟,但不支持HD金宝appL代码生成。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|不动点
复数支持:金宝app是的
有效的
—有效的输入数据
标量
指示输入数据是否有效的控制信号。当有效的是1
(真正的
),该块从输入中获取值数据端口。当有效的是0
(假
),块忽略输入的值数据端口。
当你设置体系结构参数爆裂基数2
,则必须应用输入数据而且有效的信号只在准备好了是1
(真正的)。该块忽略输入数据而且有效的信号时准备好了是0
(假)。
数据类型:布尔
输出
数据
-信道输出数据
实数或复数值的标量或列向量
当输入为定点数据类型且启用缩放时,输出数据类型与输入数据类型相同。当输入为整型且启用缩放时,输出为与输入整型字长相同的定点类型。默认情况下,输出顺序是反向的。如果禁用缩放,则输出字长会增加以避免溢出。只有流基数2^2
体系结构支持矢量输入和输出金宝app。有关更多信息,请参见将蝴蝶输出除以二参数。
数据类型:不动点
|双
|单
复数支持:金宝app是的
有效的
—有效的输出数据
标量
控制信号,表示数据是否从输出数据端口有效。当有效的是1
(真正的
),该块从输出中返回有效数据数据端口。当有效的是0
(假
),即输出的值数据端口无效。
数据类型:布尔
准备好了
-表示块已经为新的输入数据做好准备
标量
控制信号,表示该块已准备好在下一个周期进行新的输入数据采样。当准备好了是1
(真正的
),则可指定数据而且有效的下一个时间步骤的输入。当准备好了是0
(假
),该块将忽略下一个时间步中的任何输入数据。
有关显示此协议的波形,请参阅中的第三个图时间图部分。
依赖关系
若要启用此端口,请设置体系结构参数爆裂基数2
.
数据类型:布尔
开始
-表示输出帧的第一个有效周期
标量
指示输出帧的第一个有效周期的控制信号。当开始是1
(真正的
),块返回输出帧的第一个有效样本数据端口。
依赖关系
要启用此端口,请在控制端口选项卡,选择开启启动输出端口参数。
数据类型:布尔
结束
-输出帧的最后一个有效周期
标量
控制信号,指示输出帧的最后一个有效周期。当开始是1
(真正的
),该块返回输出帧的最后一个有效样本数据端口。
依赖关系
要启用此端口,请在控制端口选项卡,选择开启终端输出端口参数。
数据类型:布尔
参数
主要
FFT长度
-用于一次FFT计算的数据点数
1024
(默认)
此参数指定用于一次逆快速傅里叶变换(IFFT)计算的数据点数。对于HDL代码生成,FFT长度必须是2之间的2次幂2和216.
体系结构
—架构类型
流基数2^2
(默认)|爆裂基数2
此参数指定体系结构的类型。
流基数2^2
—低时延架构。这种体系结构类型在使用矢量输入时支持GSPS吞金宝app吐量。爆裂基数2
—配置最小资源架构。此体系结构类型不支持向量输入。金宝app使用此体系结构时,输入数据必须符合准备好了反压力信号。
对于HDL代码生成,FFT长度必须是2之间的2次幂2和216.
有关这些体系结构的详细信息,请参见算法.
复杂的乘法
- HDL实现
使用4个乘数和2个加法器
(默认)|使用3个乘数和5个加法器
此参数指定用于HDL实现的复杂乘法器类型。每个乘法都是用使用4个乘数和2个加法器
或与使用3个乘数和5个加法器
.实现速度取决于所使用的合成工具和目标设备。
按位反转顺序输出
-输出数据的顺序
On(默认)| off
该参数以位反转的顺序返回输出元素。
选择此参数时,输出元素是位反转的。若要以线性顺序返回输出元素,请清除此参数。
IFFT算法以与输入相反的顺序计算输出。如果指定输出与输入的顺序相同,算法将执行额外的反转操作。有关更多信息,请参见线性和位反转输出顺序.
按位反转顺序输入
-输入数据的预期顺序
Off(默认)| on
当您选择此参数时,块期望以位反转的顺序输入数据。默认情况下,该复选框被清除,并期望输入以线性顺序排列。
IFFT算法以与输入相反的顺序计算输出。如果指定输出与输入的顺序相同,算法将执行额外的反转操作。有关更多信息,请参见线性和位反转输出顺序.
将蝴蝶输出除以二
- FFT缩放
On(默认)| off
当您选择此参数时,块总体实现1/N比例因子是将每只蝴蝶的输出再乘以二。这种调整使IFFT的输出保持在与其输入相同的振幅范围内。如果禁用缩放,则在每次蝴蝶乘法之后,块通过将字长增加1位来避免溢出。对于这两种体系结构,比特增加是相同的。
数据类型
舍入方法
-内部定点计算的舍入模式
地板上
(默认)|天花板
|收敛
|最近的
|轮
|零
此参数允许您选择内部定点计算的舍入模式类型。有关舍入模式的详细信息,请参见舍入模式.当输入是任何整数或定点数据类型时,IFFT算法使用定点算法进行内部计算。当输入为时,此选项不应用单
或双
类型。舍入适用于旋转因子乘法和缩放运算。
控制端口
开启复位输入端口
-可选复位信号
Off(默认)| on
该参数使能复位输入端口。选择此参数时,输入重置端口出现在块图标上。
开启启动输出端口
-可选控制信号,指示数据开始
Off(默认)| on
此参数启用一个端口,该端口指示输出数据的开始。选择此参数时,输出开始端口出现在块图标上。
开启终端输出端口
-可选控制信号,显示数据结束
Off(默认)| on
此参数启用指示输出数据结束的端口。选择此参数时,输出结束端口出现在块图标上。
算法
流基数2^2
流式Radix 2^2架构实现了低延迟架构。与流式Radix 2实现相比,它通过分解和分组FFT方程节省了资源。架构有日志4(N)阶段。每个阶段包含两个带有内存控制器的单路径延迟反馈(SDF)蝴蝶。当您使用矢量输入时,每个阶段操作的输入样本更少,因此有些阶段减少为一个简单的蝴蝶,没有SDF。
第一个SDF阶段是一个普通的蝴蝶。第二阶段将第一阶段的输出乘以- j.为了避免硬件乘数,块交换输入的实部和虚部,然后再次交换结果输出的虚部。每个阶段将旋转因子乘法的结果舍入为输入单词长度。旋转因子有两个整数位,其余的位用于小数位。旋转因子与输入数据具有相同的位宽,王.旋转因子有两个整数位,和王-2个小数位。
如果启用缩放,算法将每个蝴蝶阶段的结果除以2。在每个阶段缩放避免溢出,保持单词长度与输入相同,并导致整体缩放因子为1/N.如果禁用缩放,算法通过在每个阶段增加1位的字长来避免溢出。该图显示了每个阶段的蝴蝶和内部单词长度,不包括内存。
爆裂基数2
突发的Radix 2架构通过使用一个复杂的蝴蝶倍增器实现FFT。算法在存储整个输入帧之前不能启动,在计算完成之前不能接受下一帧。输出准备好了Port表示算法何时可以接收新数据。该图显示了带有管道寄存器的突发体系结构。
使用此体系结构时,输入数据必须符合准备好了反压力信号。
控制信号
该算法仅在输入有效的端口为1。输出数据只有当输出有效的端口为1。
当可选输入重置端口为1时,算法停止当前计算,清除所有内部状态。算法开始新的计算时重置端口为0,为输入有效的端口开始一个新的帧。
这个图显示了输入和输出有效的用于连续标量输入数据的端口值,流Radix 2^2架构,FFT长度为1024,向量大小为16。
该图还显示了可选选项开始而且结束指示帧边界的端口值。如果您启用开始港口,开始端口值脉冲一个周期与帧的第一个有效输出。如果您启用结束港口,开始端口值脉冲一个周期与帧的最后一个有效输出。
如果应用连续的输入帧,在初始延迟后输出也将是连续的。
输入有效的端口可以不连续。带有输入的数据有效的端口在到达时被处理,结果数据被存储,直到一个帧被填充。然后算法在帧中返回连续的输出样本N(FFT长度)周期。该图显示了FFT长度为512和向量大小为16的不连续输入和连续输出。
当使用突发架构时,在内存空间可用之前不能提供下一帧输入数据。的准备好了信号表示算法何时可以接受新的输入数据。必须应用输入数据而且有效的信号只在准备好了是1
(真正的)。该算法忽略任何输入数据而且有效的信号时准备好了是0
(假)。
延迟
不同的时延也不同FFT长度以及输入向量的大小。在您更新模型之后,块图标将显示延迟。显示的延迟是第一个有效输入和第一个有效输出之间的周期数,假设输入是连续的。若要以编程方式获取此延迟,请参见FFT块时延自动匹配.
当使用带有连续输入的突发架构时,如果您的设计等待准备好了输出0
在去断言输入之前有效的,然后一个额外的数据周期到达输入。这个数据样本是下一帧的第一个样本。该算法在处理当前帧时可以保存一个样本。由于这一个样本的进步,观察到的延迟的后面帧(从输入有效的输出有效的)比报告的延迟时间短一个周期。延迟从输入时的第一个周期开始测量有效的输出时是1的第一个循环吗有效的是1。当之间的周期数准备好了端口为0,输出有效的Port is 1总是延迟- - - - - -FFTLength.
性能
此资源和性能数据是生成的针对Xilinx的HDL的综合结果®Virtex®-6 (xc6vlx75t-1ff484) fpga。表中的例子是这样配置的:
1024 FFT长度(默认)
4乘法器,2加法器的复杂乘法
启用输出缩放
自然顺序输入,位反转输出
16位复杂输入数据
时钟使最小化(HDL Coder™参数)
合成HDL代码的性能因目标和合成选项而异。例如,对自然顺序输出的重新排序比默认的位反转输出使用更多的RAM,而实际输入比复杂输入使用更少的RAM。
对于标量输入基数2^2配置,该设计实现了326 MHz的时钟频率。延迟为1116个周期。设计使用了这些资源。
资源 | 使用数量 |
---|---|
附近地区 | 4597 |
FFS | 5353 |
Xilinx LogiCORE®DSP48 |
12 |
块RAM (16K) | 6 |
当您对相同的Radix 2^2实现进行向量化以并行处理两个16位输入样本时,该设计达到了316 MHz的时钟频率。延迟为600个周期。设计使用了这些资源。
资源 | 使用数量 |
---|---|
附近地区 | 7653 |
FFS | 9322 |
Xilinx LogiCORE DSP48 |
24 |
块RAM (16K) | 8 |
该块仅在实现突发ra金宝appdix2架构时支持标量输入数据。突发设计达到309mhz时钟频率。时延为5811个周期。设计使用了这些资源。
资源 | 使用数量 |
---|---|
附近地区 | 971 |
FFS | 1254 |
Xilinx LogiCORE DSP48 |
3. |
块RAM (16K) | 6 |
扩展功能
C/ c++代码生成
使用Simulink®Coder™生成C和c++代码。金宝app
此块支持Simulin金宝appk的C/ c++代码生成金宝app®加速器和快速加速器模式以及用于DPI组件生成。
HDL代码生成
使用HDL Coder™为FPGA和ASIC设计生成Verilog和VHDL代码。
HDL Coder提供了影响HDL实现和合成逻辑的额外配置选项。
这个块有一个默认的HDL架构。
ConstrainedOutputPipeline | 通过在设计中移动现有延迟来放置在输出端的寄存器数量。分布式管道不会重新分发这些寄存器。默认为 |
InputPipeline | 要在生成的代码中插入的输入管道阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认为 |
OutputPipeline | 要在生成的代码中插入的输出管道阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认为 |
中不能为此块生成HDL代码启用子系统(金宝app模型).
版本历史
在R2014a中引入R2022a:搬到DSP HDL工具箱从DSP系统工具箱
在R2022a之前,该区块被命名IFFT HDL优化并包含在DSP系统工具箱™中DSP系统工具箱HDL支持金宝app图书馆。
R2022a:FFT长度为4
您现在可以将FFT长度设置为4 (2)2).在以前的版本中,FFT长度必须是8的2次方(23.)至216.
MATLAB-Befehl
你的身体和身体之间的联系MATLAB-Befehl
Führen Sie den Befehl durch Eingabe in das MATLAB-Befehlsfenster aus。web浏览器unterstützen keine MATLAB-Befehle。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。