摘 要 摘要:大规模可编程逻辑器件是近年来为适应专用集成电路设计需求而迅速发展起来的一类新型可编程ASIC器件。随着它的不断应用和发展,也使电子设计的规模和集成度不断提高。同时,带来了电子系统设计方法和设计思想的不断推陈出新。 本设计使用能够满足较高速度要求的FPGA(现场可编程门阵列)来实现一个在数字信号分析和处理领域重要的变换工具—FFT。FFT的算法是基2时域8点的FFT。通过C语言的的浮点以及定点的程序模拟,最终通过verilog HDL在Xilinx ISE 5.1i环境下进行编程和仿真。 关键词: FFT verilog HDL FPGA 定点 浮点
Abstract Abstract:With the development of Application Specific Integrated Circuit, great process has been made in programmable large scale logic devices. The scale and integration of electronic system are being enlarged continuously. Hence the method and idea of electronic system designing are improved from time to time. This design use FPGA(Field Programmable Gate Array)which can satisfy the higher speed request to realize a transformation for at arithmetic figure signal analysis with handling realm importance tool — FFT. It is based on the Radix-2 DIT eight points algorithm. The arithmetic of FFT is described in language C using floating-point and fixing-point, and is described in Verilog, simulated under the Xilinx ISE at last. keyword: FFT, verilog HDL, FPGA, floating-point, fixing-point
本课题的目的和意义 数字信号处理是通信技术的重要组成部分,而在数字信号处理领域,离散傅立叶变换又是一个极其重要的变换工具,是对离散信号进行频域分析的基础。而对于大规模的频率变换而言,其计算量是庞大的,所以不满足实时高速处理的要求,所以衍生出FFT,就是使用快速算法来计算离散傅立叶变换。作为FFT算发的承载,器件必须适合FFT的要求,例如速度,FPGA以其多方面的指标是比较适合作为FFT算法载体的。这是本课题的物理基础。通过这个课题的设计,我们力求了解使用FPGA来处理通信范围的技术算法,通过这次课题设计掌握通过verilog这种硬件描述语言来进行具体数字应用开发的基础。通过这次课题设计去了解关于FFT的一些经典算法,例如基2时分。
本课题的设计步骤 在进行设计前,通过查阅各方面资料了解FFT的一些算法,了解其原理,决定选择一个算法,决定设计的点数。然后使用c语言进行算法浮点模拟,通过编译,得出结果,利用Matlab中所给的函数fft()对程序中输入的数据进行计算,用所得的结果和浮点C语言的结果进行比较,验证C语言fft源程序的正确性。一旦验证正确。然后再根据定点和浮点的关系,将该浮点C语言源程序改写成定点形式的,因为在FPGA涉及到的具体数据都是定点数,考虑到溢出和精度的问题所以使用这个中间步骤,这样用Verilog HDL实现时可以有个比较和验证,从而检查Verilog HDL的正确性。在证明浮点c程序的正确基础上,设置一些模拟的输入,得到正确的输出。而在编写c定点程序的时候可以以此组数据的定点结果作为检验标准,如果输出与标准数据相同就可以证明定点程序的正确性,一旦定点没问题,就可以按照定点C语言程序来写Verilog HDL程序。最后再利用软件如ModelSim和ISE等进行仿真和综合。 本毕业设计的重点是根据所选择的FFT算法分别写出浮点C语言源程序,定点C语言源程序和Verilog HDL源程序,并借助matlab,并一步步的验证。前步作为后一步的设计基础,直到正确的硬件输出结果。
目 录 绪 论 5 0.1电子设计自动化与现场可编程门阵列 5 0.2可编程逻辑器件的发展 5 0.3关于数字信号处理 6 0.4本课题的目的和意义 6 0.5本课题的设计步骤 6 第一章 FFT的引入 8 1.1 DFT的简介 8 1.2传统快速傅里叶变换算法的发展 8 1.3设计涉及的FFT—基-2时分的8点FFT 9 第二章 FFT的浮点C语言实现 12 2.1蝶形运算单元设计 12 2.2输入序列的比特逆序重排 14 2.3程序执行结果和分析 16 2.4使用基-2时分算法的理由 17 第三章 FFT的 c语言定点程序设计 18 3.1 C语言程序浮点转定点的基本思想 18 (毕业设计 ) 3.2转换中的关键步骤 19 3.3误差分析 20 第四章 FFT的Verilog HDL程序设计 22 4.1 Verilog的发展趋势和特点 22 4.2 Verilog HDL 语言的介绍 22 4.2.1模块(Module)概念 22 4.2.2基本数据类型 23 4.2.3基本操作数与表达式 24 4.2.4数据流描述方式 25 4.2.5行为描述方式 25 4.3 8点FFT的Verilog HDL实现 26 4.3.1分析 26 4.3.2设计 26 4.3.3设计心得及总结 26 第五章 设计的硬件平台FPGA 28 5.1关于可编程ASIC 28 5.2 FPGA 28 5.3设计选择FPGA的理由 30 5.4电路仿真和综合 30 第六章 结束语 32 6.1设计回顾 32 6.2设计展望 32 参考文献 33 致 谢 34 附 录 35 附录一:十六点基-2时分FFT算法的浮点C语言实现源程序 35 附录二:十六点基-2时分FFT算法的定点C语言实现源程序 38 附录三:十六点基-2时分FFT算法的浮点Verilog HDL源程序 41 |