传输线
计算快速傅里叶反变换(IFFT)
库:
DSP HDL工具箱/变换
描述
的传输线block为FPGA和ASIC应用提供了两种实现算法的架构。您可以选择针对吞吐量或面积进行优化的体系结构。
流的基数2^2
—用于高吞吐量应用。该体系结构支持标量或矢量输入数据。金宝app您可以使用矢量输入实现每秒千兆样本(GSPS)的吞吐量。爆发基数2
-使用这种架构来实现最小的资源,特别是对于大的快速傅里叶变换(FFT)大小。您的系统必须能够容忍突发数据和更高的延迟。该体系结构仅支持标量输入数据。金宝app
的传输线接受真实或复杂的数据,提供硬件友好的控制信号,可选输出帧控制信号。
例子
港口
输入
数据- - - - - -输入数据
实值或复值的标量或列向量
输入数据,指定为实数或复数值的标量或列向量。只有流的基数2^2
架构支持矢量输入。金宝app向量大小必须是2的幂,在1到64的范围内,并且小于或等于FFT长度.
软件支持金宝app双
和单
数据类型的模拟,但不是为HDL代码生成。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|不动点
复数支持:金宝app是的
有效的- - - - - -指示有效的输入数据
标量
指示输入数据是否有效的控制信号。当有效的是1
(真正的
),该块从输入中捕获值数据端口。当有效的是0
(假
),块会忽略输入的值数据端口。
当你设置体系结构参数爆发基数2
,必须应用输入数据和有效的只有当准备好了是1
(真正的)。该块忽略输入数据和有效的信号时准备好了是0
(假)。
数据类型:布尔
输出
数据- - - - - -信道输出数据
实值或复值的标量或列向量
当输入为定点数据类型并启用缩放时,输出数据类型与输入数据类型相同。当输入为整数类型并启用缩放时,输出为与输入整数具有相同字长的定点类型。默认情况下,输出顺序是位反转的。如果禁用缩放,则输出字长会增加以避免溢出。只有流的基数2^2
架构支持矢量输入和输出。金宝app有关更多信息,请参见将蝴蝶输出除以2参数。
数据类型:不动点
|双
|单
复数支持:金宝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个加法器
.实现速度取决于您使用的合成工具和目标设备。
以位反转顺序输出- - - - - -输出数据的顺序
打开(默认)|关闭
此参数以位反转顺序返回输出元素。
选择此参数时,输出元素是位反转的。若要按线性顺序返回输出元素,请清除此参数。
IFFT算法以与输入相反的顺序计算输出。如果指定输出与输入的顺序相同,则算法会执行额外的反转操作。有关更多信息,请参见线性和位反转输出顺序.
以位反转顺序输入- - - - - -输入数据的预期顺序
关闭(默认)|打开
当您选择此参数时,块期望以位反转顺序输入数据。默认情况下,复选框将被清除,输入将按照线性顺序进行。
IFFT算法以与输入相反的顺序计算输出。如果指定输出与输入的顺序相同,则算法会执行额外的反转操作。有关更多信息,请参见线性和位反转输出顺序.
将蝴蝶输出除以2- - - - - -FFT扩展
打开(默认)|关闭
当您选择此参数时,块实现一个整体的1/N通过将每只蝴蝶的乘法输出除以2来确定比例因子。这种调整使IFFT的输出保持在与其输入相同的幅度范围内。如果禁用缩放,则块通过在每次蝴蝶乘法后增加1位的字长来避免溢出。这两种体系结构的位增长是相同的。
数据类型
舍入方法- - - - - -内部定点计算的舍入模式
地板上
(默认)|天花板
|收敛
|最近的
|轮
|零
此参数允许您为内部定点计算选择舍入模式的类型。有关舍入模式的详细信息,请参见舍入模式.当输入是任何整数或定点数据类型时,IFFT算法使用定点算法进行内部计算。当输入为时,此选项不适用单
或双
类型。四舍五入适用于旋转因子乘法和缩放操作。
控制端口
使能复位输入端口- - - - - -可选复位信号
关闭(默认)|打开
该参数启用复位输入端口。选择此参数时,输入重置端口显示在块图标上。
启用启动输出端口- - - - - -可选控制信号,指示数据的开始
关闭(默认)|打开
该参数启用一个端口,该端口表示输出数据的开始。选择此参数时,输出开始端口显示在块图标上。
开启端输出端口- - - - - -可选控制信号,指示数据结束
关闭(默认)|打开
该参数启用用于表示输出数据结束的端口。选择此参数时,输出结束端口显示在块图标上。
算法
流的基数2^2
流Radix 2^2架构实现了低延迟架构。通过对FFT方程进行分解和分组,与流Radix 2实现相比,它节省了资源。架构有日志4(N)阶段。每个级包含两个带有内存控制器的单路径延迟反馈(SDF)蝴蝶。当您使用矢量输入时,每个级操作较少的输入样本,因此一些级减少为简单的蝴蝶,没有SDF。
第一个SDF阶段是一个普通的蝴蝶。第二阶段将第一阶段的输出乘以- j.为了避免硬件乘法器,该块交换输入的实部和虚部,并再次交换输出的虚部。每个阶段将旋转因子乘法的结果舍入到输入字的长度。旋转因子有两个整数位,其余的位用于小数位。旋转因子与输入数据具有相同的位宽,王.旋转因子有两个整数位,和王-2个小数位。
如果启用缩放,算法会将每个蝴蝶阶段的结果除以2。每个阶段的缩放避免了溢出,保持单词长度与输入相同,并导致整体缩放因子为1/N.如果禁用缩放,则算法通过在每个阶段增加1位的字长来避免溢出。该图显示了每个阶段的蝴蝶和内部单词长度,不包括内存。
爆发基数2
突发基数2架构通过使用单个复杂蝴蝶乘法器实现FFT。算法在存储完整个输入帧后才能启动,并且在计算完成之前不能接受下一帧。输出准备好了Port表示算法何时准备好接收新数据。该图显示了带有管道寄存器的突发体系结构。
使用此体系结构时,输入数据必须符合准备好了反压力信号。
控制信号
该算法只处理输入数据有效的端口为1。输出数据只有在以下情况下才有效有效的端口为1。
当可选输入重置Port为1时,算法停止当前计算并清除所有内部状态。算法开始新的计算重置端口为0,输入有效的端口开始一个新帧。
这个图显示了输入和输出有效的连续标量输入数据的端口值,流radix2架构,FFT长度为1024,矢量大小为16。
该图还显示了可选的开始和结束表示帧边界的端口值。如果启用开始港口,开始端口值脉冲一个周期,帧的第一个有效输出。如果启用结束港口,开始端口值脉冲一个周期与帧的最后一个有效输出。
如果应用连续输入帧,那么在初始延迟之后输出也将是连续的。
输入有效的端口可以不连续。带有输入的数据有效的端口到达时进行处理,结果数据被存储,直到一个帧被填充。的帧中返回连续的输出样本N(FFT长度)周期。该图显示了FFT长度为512和矢量大小为16时的不连续输入和连续输出。
当您使用突发架构时,在内存空间可用之前无法提供下一帧输入数据。的准备好了信号表示算法何时可以接受新的输入数据。必须应用输入数据和有效的只有当准备好了是1
(真正的)。该算法忽略任何输入数据和有效的信号时准备好了是0
(假)。
延迟
延迟时间随时间而变化FFT长度输入向量的大小。更新模型后,块图标显示延迟。显示的延迟是第一个有效输入和第一个有效输出之间的周期数,假设输入是连续的。要以编程方式获得此延迟,请参见FFT块延迟的自动匹配.
当使用具有连续输入的突发架构时,如果您的设计等待准备好了输出0
在取消断言输入之前有效的,然后一个额外的数据循环到达输入。这个数据样本是下一帧的第一个样本。该算法在处理当前帧的同时可以节省一个采样。由于这一个样本的进步,观察到后面的帧(从输入)的延迟有效的输出有效的)比报告的延迟短一个周期。延迟从输入时的第一个周期开始测量有效的当输出时,是1的第一个周期吗有效的是1。之间的循环次数准备好了端口为0,输出有效的端口为1是always延迟- - - - - -FFTLength.
性能
这些资源和性能数据是针对赛灵思生成的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位输入采样时,该设计可实现316mhz时钟频率。延迟时间为600个周期。设计使用了这些资源。
资源 | 使用数量 |
---|---|
附近地区 | 7653 |
FFS | 9322 |
赛灵思LogiCORE DSP48 |
24 |
块RAM (16K) | 8 |
该块仅在实现突发基数金宝app2架构时支持标量输入数据。突发设计达到309mhz时钟频率。延迟是5811个周期。设计使用了这些资源。
资源 | 使用数量 |
---|---|
附近地区 | 971 |
FFS | 1254 |
赛灵思LogiCORE DSP48 |
3. |
块RAM (16K) | 6 |
扩展功能
C/ c++代码生成
使用Simulink®Coder™生成C和c++代码。金宝app
该模块支持Simuli金宝appnk的C/ c++代码生成金宝app®加速器和快速加速器模式和DPI组件生成。
HDL代码生成
使用HDL Coder™为FPGA和ASIC设计生成Verilog和VHDL代码。
HDL编码器提供了影响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)的2次方3.)至216.
MATLAB编程
在MATLAB中,该函数对应于一个最基本的函数:
在MATLAB中,用MATLAB编写了仿真程序。Los navegadores web no admit commandos de MATLAB。
你亦可选择下列网址:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。