关键字 |
FFT的DSP, FPGA, Fixed_Pkg Radix-2算法,STD_LOGIC_1164,合成,硬件描述语言(VHDL), Virtex-5。 |
介绍 |
本文提出的问题和解决方案的综合问题的DSP设计FPGA [6]。DSP算法设计在硬件描述语言(VHDL)不保证他们synthesizable FPGA [8]。是可能的,这些HDL设计做正确编译和模拟高密度脂蛋白模拟器和编译器,但仍是不确定他们是完全synthesizable FPGA [5]。有几个问题限制了这些代码从合成[7]。FPGA供应商提供的软件工具合成HDL代码。合成HDL设计、库和包必须支持使用这些工具[8]。数据类型用于HDL设计DSP算法的设计也是一个重要因素合成[3]。本文基于radix-2 32点快速傅里叶变换算法[4]是Virtex - 5 FPGA的合成。硬件描述语言(VHDL)的FFT设计用于合成是由以下两种不同的方式: |
1)使用IEEE定点的包,“fixed_pkg”[2]。 |
2)使用IEEE的包,“STD_LOGIC_1164”[5]。 |
数据类型的DSP算法大多是签署了真正的类型[3]。硬件描述语言(VHDL)提供各种定点和浮点数据类型代表真正的类型数据[1]。因为浮点数据类型不是有效的合成FPGA所以定点数据类型使用。实现DSP算法只使用IEEE包,“STD_LOGIC_1164”,一个方法是开发代表真实数据类型数组的碎片。所有真正的运算,如乘法,加法和减法是由专门的算法实现。这些算法操作bit_vector实现真正的算术。 |
RADIX-2算法 |
这是一个最简单的快速傅里叶变换算法中,一只蝴蝶结构复制到高阶FFT。 |
复制蝴蝶结构我们改变加权系数的值' w '根据蝴蝶的位置。Radix-2算法可以实现通过在时间或大量毁灭力量的频率。在时间算法大量毁灭我们洗牌的顺序输入的频率在大量毁灭我们洗牌输出算法。这里才实现32点FFT算法。 |
使用IEEE定点FFT设计方案的模拟,“FIXED_PKG” |
IEEE接受定点包;“fixed_pkg”硬件描述语言(vhdl) - 2008 [1]。这个包有强大的运营商和功能特别适合设计DSP算法。32点FFT, radix-2算法首先设计硬件描述语言(VHDL)使用这个包然后comiled HDL设计和模拟在ModelSim体育学生10.2版。 |
答:模拟蝴蝶STRUCTUREq |
(基于“增大化现实”技术,人工智能)和(br, bi)是两个不动点真正的输入和(yr0 yi0)和(yr1 yi1)蝴蝶结构的输出。(wr, wi)是蝴蝶结构的加权系数。蝴蝶组件的仿真结果如下图所示。 |
b . 32点FFT的模拟 |
在这32点FFT设计,以上模拟蝴蝶作为组件。蝴蝶组件是用于五个阶段,在每个阶段使用16个蝴蝶的实例。xr, xi的实部和虚部输入x。同样年,彝族和wr, wi的实部和虚部分别y和w。有32个复杂的输入,32个复杂的输出和17个不同的加权系数。32点FFT的仿真结果如下图所示。 |
c .合成这种设计上的问题 |
定点包,fixed_pkg硬件描述语言(vhdl)由IEEE - 2008。据说使用这个包将synthesizable设计。这个包中使用的所有数据结构是固定的。 |
这个包包含强大的运营商和功能使它在设计DSP算法非常有效。这个包,但仍然不是绝对synthesizable因为它不是完全支持由合成器的工具。 |
FFT的实现使用IEEE的包,“STD_LOGIC_1164” |
实现DSP算法使用IEEE的包,“STD_LOGIC_1164”,仅需要一个数据类型可以实现真正的和复杂的数字。它的真正的浮点数据类型,所以它不会synthesizable。所以开发一个方法代表了真实和复数“bit_vector”。 |
a表示真实和复数的“BIT_VECTOR” |
A是一个数组的长度“L”的M位代表和N位分数部分代表整体的部分。A = b (n - 1)……b2b1b0 b1…. . b (M - 1) bM数字N和M选择根据精度和范围的实数。这里重要的一点是,软件和FPGA比特将这个数组A作为一个简单的位向量长度“M + N”。 |
这个数据结构算法的算术运算 |
开发专门的算法将操作上面的数组数据结构和操作定义位以这样一种方式,他们将实现的功能复杂,实数。32点FFT计算,使用加法、减法和乘法算法。乘法器算法解释上下文。 |
c算法乘数 |
这个乘数FFT设计是专为乘法操作。需要两位向量作为输入,并给出了位向量与它的长度等于被乘数作为输出。 |
d合成和模拟使用IEEE的包FFT,“STD_LOGIC_1164” |
这些结果编译和模拟在Modelsim PE学生10.2版和合成Xilinx ISE 10.1设计套件。设计模拟Xilinx Virtex-5使用FPGA。 |
1。蝴蝶结构的模拟 |
仿真结果如下图所示。图1所示,它有两个复杂的输入,两个复杂的输出和一个复杂的加权系数。每个输入和输出都是23位的长度和系数是12位长度。最低有效10位是分数位。 |
2。蝴蝶结构的合成结果 |
蝴蝶的HDL设计合成与Xilinx ISE 10.1设计套件。蝴蝶的RTL视图结构如下图所示。这个RTL结构后自动生成合成Xilinx设计套件的设计。接下来是合成设计总结Virtex-5 FPGA的蝴蝶。 |
3所示。时间总结 |
最大组合路径延迟的FPGA设计FFT-32是95.814 ns。 |
4所示。32点FFT的模拟 |
在上面的32点FFT设计,描述蝴蝶设计用作组件。总计80蝴蝶在此设计中使用的实例。 |
5。32点FFT的合成 |
32-FFT块的提议设计合成使用Xilinx ISE 10.1设计套件。因此获得的RTL块后合成的设计如下所示。 |
从上面合成内部RTL架构明确表示,整体架构分为五个阶段,每个阶段包括十六个蝴蝶的实例,因此总八十实例的蝴蝶是可见的在上面显示RTL架构。 |
接下来是合成设计的总结32点FFT Virtex-5 FPGA,它显示的特性Virtex-5 Xilinx FPGA使用对提出的工作设计套件。最大组合路径延迟:466.732 ns。 |
比较的结果与MATLAB 7.11.0.584 |
模拟的结果synthesizable 32点FFT设计使用STD_logic_1164包与Matlab和误差百分比计算为每个输出。对比表如下所示。 |
结论 |
32点的HDL设计与IEEE定点FFT实现方案,“fixed_pkg”。这种设计在Modelsim但non-synthesizable能正常工作。一个新的数据结构设计,实际上是一个位向量,满足所有的复杂和真实的数据结构需要。这个数据结构是完全由IEEE定义包,STD_logic_1164。使用这个数据结构实现DSP算法的一些专门的算术算法设计。32点FFT再次使用这个数据结构和实现这种设计是绝对synthesizable。模拟的结果synthesizable 32点FFT设计与Matlab的结果相比,得到平均误差为0.1%。这表明这种方法的设计和实现DSP算法是非常有效的和完全synthesizable。 |
表乍一看 |
|
|
数据乍一看 |
|
|
|
|
|
图1 |
图2 |
图3 |
图4 |
图5 |
|
|
|
|
|
图6 |
图7 |
图8 |
图9 |
图10 |
|
|
引用 |
- IEEE标准1076 - 2008硬件描述语言(VHDL)语言参考手册,DOI: 10.1109 / IEEESTD.2009.4772740, 2009。
- 大卫•主教定点包用户指南。URL: www.vhdl.org/fphdl/Fixed_ug.pdf。
- 乌维Meyer-Base,数字信号处理和现场可编程门阵列3 e, 2007
- 约翰·g·Proakis,数字信号处理:原理、算法和应用程序,4 e, 2007。
- 使用硬件描述语言(VHDL)查尔斯·h·罗斯,数字系统设计,1998年。
- 道格拉斯·j·史密斯:实用指南设计、合成和模拟asic和fpga使用硬件描述语言(VHDL)或Verilog, 1996。
- 合成Xilinx的论坛,你的:http://forums.xilinx.com/t5/Synthesis/compilation-of-ieee-proposed-library- fails-ISE-13-2 / td-p / 200101。
- 软件手册Xilinx ISE设计套件。
|