毕业论文vhdl-基于vhdl的快速信号处理器实现内容摘要:

=Y。 END PROCESS。 END ARCHITECTURE BEHAVIOR。 在一个系统中三种描述风格有可能都会用到。 主模块调用子模块时采用结构化描述:在一般模块的设计时,根据具体情况,可以用行为级描述,又可以用数据流描述。 要描述一个复杂的系统,很难用单一的描述方法实现,通常三种描述方法混合使用。 VHDL 语言开发环境 QuartusⅡ介绍 基于 VHDL 的快速信号处理器实现 10 Altera公司的 CPLD/FPGA设计工具软件 QuartusⅡ是适合单芯片可编程系统(SOPC)的设计环境。 QuartusⅡ开发工具支持 Altera 公司主流 FPGA 全部系列。 VHDL 语言能够在多种 EDA 工具设计环境中运行。 QuartusⅡ软件包含了 FPGA 设计过程中要用到的所有功能,为了将其它 EDA软件公司的先进技术引入到 QuartusⅡ软件中,使其能够与 QuartusⅡ联合使用,QuartusⅡ提供了与这些 EDA 工具连接的接口。 如综合工具 Synplify、仿真工具Modelsim 等。 使用 QuartusⅡ的设计者可以不精通器件内部结构,可以使用自己熟悉的设计工具建立设计, QuartusⅡ把这些设计自动转换成最终需要的格式。 QuartusⅡ结合各种系列器件的物理结构,提供了各种的优化措施,可以在提高工作速度和资源利用率之间给以平衡,为多数 设计提供了解决方案。 QuartusⅡ提供了原理图输入、文本输入和波形输入等多种设计输入,并可以把这些输入方式任意组合使用。 利用该工具所配备的编辑、编译、仿真、综合、芯片编程等功能,可将设计电路图或电路描述程序变成基本的逻辑单元写入到可编程的芯片中(如 FPGA 芯片),做成 ASIC 芯片。 用户首先对所做项目进行设计,明确设计目的、设计要求;然后利用原理图输入方式或文本输入方式进行设计输入;输入完成后,进行编译,若编译过程中发现错误,则检查设计输入,修改错误,直至没有错误发生;编译完成后,就可以进行仿真,检查设计 是否达到设计要求,否则的话,还需重新检查设计输入。 仿真结果达到要求后,就可以进行编程,把设计程序下载到目标文件中;最后把芯片放到实际系统中进行验证、测试。 图 QuartusⅡ 开发 FPGA流程图 Altera Quartus Ⅱ 设计 输入 编译 仿真 编程 验证 基于 VHDL 的快速信号处理器实现 11 3 数字信号处理的理论基础 傅立叶变换的几种形式 傅立叶变换是信号分析和处理的有力工具,在以快速傅立叶变换算法为代表的一系列有效算法出现后,傅立叶变换不但在信号处理领域起着支柱作用,而且在其它工程领域也获得了广泛的应用。 根据信号的连续性、离散性、周期性、非周期性,傅立叶变换可以分为四种不同的形式,形成四种不同的傅立叶变换对。 连续时间非周期信号 连续时间非周期信号 xt 在频域中得到的是连续非周期的频谱密度函数 X jw ,傅立叶变换对如下:     jwtX jw x t dte   ( 31)    12 jw tx t X jw dwe  ( 32) 这种类型信号的典型信号有指数衰减信号和高斯信号,这种类型信号的变换就称为傅立叶变换。 连续时间周期信号 连续时间周期信号 xt 当满足狄里赫利条件时在频域中得到的 是离散非周期的傅立叶级数,傅立叶级数的系数为  X jkw ,  X jkw 为离散非周期函数,xt 和  X jkw 组成的变换对如下:    221T jk wtTX jk w x t dtT e   ( 33) 离散时间非周期信号 离散时间非周期信号 xn也称为序列,序列的傅立叶变换对如下所示:    j t jn TnX x n Tee     ( 34) 基于 VHDL 的快速信号处理器实现 12    2 21 j T jn Tx n T X dee   ( 35) 这种信号的傅立叶变换称为离散时间傅立叶变换 离散时间周期信号 离散时间周期信号的傅立叶变换有时称为傅立叶级数,但最常被称为离散傅立叶变换。 离散傅立叶变换算法 声音图像等各种信号大都为模拟信号,要用计算机对这些信号进行数字信号处理,这些信号必须通过采样量化编码变成有限长的数字信号序列。 对于有限长序列,可以得出另外一种傅立叶变换,称为离散傅立叶变换(DFT)。 离散傅立叶变换本身是一个序列,而不是一个连续变量的函数,它相应于对信号的傅立叶变换进行频率的等间隔取样的样本。 离散傅里叶变换描述分析有限长序列,其本质是建立了以时间为自变量的信号与以频率为自变量的频谱函数之间的变换关系,换言之,离散傅里叶变换定义了时域与频域之间的一种变换或者说 是映射。 对于 DFT 时间和频率变量都取离散值。 下面讨论一下有限长序列的离散傅立叶变换。 设有限长序列 xn的长度为 N,即可以看成是周期为 N的周期序列。 从而有限长序列的傅立叶变换定义为 正变换:      10N nkNnX k D F T x n x n W  01kN   ( 36) 反变换:      101 N nkNnx n ID F T X k X kN W   01nN   ( 37) 其中, 2nk jkn NNWe 当 DFT 的直接计算时,且 xn为复数的话,则计算 DFT 每一个值就需要 N 次复数乘法和  1N 次复数加法。 N 个值总共需要 2N 次复数乘法和  1NN 次复数加法。 每个复数乘法需要 4次实数乘法和 2次实数加法。 所以,对于每一个 k值,直接计算 Xk就需要 4 2N 次实数乘法 和  2 2 1NN 次实数加法。 DFT 数字基于 VHDL 的快速信号处理器实现 13 计算还需要存储和读取 N 个复数输入序列值 xn以及复系数 nkNW 值的设备。 当N 值很大时直接计算 DFT 计算量特别大。 直到 1965 年库利和图基首次提出了计算 DFT 的一种快速算法,人们开始认识到 DFT 运算的一些内在规律,发展和完善了一套高效的运算方法, DFT 的运算在实际中才得到广泛的应用。 FFT 使复数乘法的次数从 2N 次减少到了 logNN次。 如 1024N 时运算量从 1048576 次减少到 5120 次,运算效率提高了 倍,为 DFT 乃至数字信号处理技术的实际应用特别是实时处理创造了良好的条件,大大地推动了数字信号处 理技术的发展。 FFT 算法基本思想 FFT 算法的基本思想:将长度为 N 的序列的离散傅里叶变换逐次分解为较短的离散傅里叶变换,直到两点的 FFT 为止,使得总的运算次数比直接计算 DFT运算量少得多,从而提高了运算速度。 快速傅立叶变换就是利用 nkNW 的特性,逐步地将 N 点序列分解成较短的序列,计算短序列的 DFT,然后组合成原序列的 DFT,使运算量明显减少。 有两类分解:一类是将时间序列 xn进行逐次分解,称为按时间抽取算法( Decimation In Time);另一类将傅立叶变换序列 Xk进行分解,称为按频率抽取算法( Decimation In Frenquency)。 本文主要介绍按时间抽取基 2 FFT 算法。 按时间抽取基 2 FFT 算法(库利 图基算法) FFT 算法主要是利用 nkNW 的性质,把序列分解为较短的序列来减小运算量。 nkNW 有以下三种性质: 性质 1: nkNW 的周期性  nk n k NNNWW 性质 2: nkNW 的对称性  nk nkNNWW  基于 VHDL 的快速信号处理器实现 14 性质 3: nkNW 的可约性 nk mnkN mNWW, nk nk mN N mWW 基二算法中,序列 xn的长度 N 为 2 的整数次幂,即 2MN ,其中 M 为正整数。 最初通过将 Xn分解为奇数项序列和偶数项序列的形式使 FFT 运算分为两组。 设:    1 2x r x r    2 21x r x r 0,1,..., 12Nr  ( ) 设  1Xk为 1xr的 DFT,  2Xk为 2xr的 DFT,利用 nkNW的性质可得 xn的 DFT 运算为:         12122kNkNX k X k X kNX k X k X kWW      0,1,..., 12Nk  ( 39) 上面式子的运算可用下图的蝶形信号流图符号表示: 图 时间抽取算法蝶形运算图 4 点 DFT 4 点 DFT x(0) x(2) x(4) x(6) x(1) x(3) x(5) x(7) X1(0) X1(1) X1(2) X1(3) X2(0) X2(1) X2(2) X2(3) X(0) X(1) X(2) X(3) X(4) X(5) X(6) X(7) 38W28W18W08W基于 VHDL 的快速信号处理器实现 15 图 8N 的时间抽取基 4 FFT算法流图 N 点 DFT 分解为两个 2N 点的 DFT,从而实现了运算量的减少,再经过逐次分解最终分解为 2 点的 DFT,实现了 FFT 运算。 FFT 运算的核心是蝶形运算,通过顺 序计算全部蝶形实现 FFT 算法的实现。 下面给出 8N 时的按时间抽取 FFT 流图。 图 8N 的时间抽取基 2 FFT算法流图 当 2MN 的 FFT,共有 M 级蝶形,每级由 2N 个蝶形运算单元,每个蝶形包括一次复乘、二次复加,则 M 级运算的运算量为 复数乘法:2log22NNMN   复数加法: 2logN M N N   则 FFT 算法与直接 DFT 算法相比运算量大为减少,当 1024N 时, DFT 所需的复数乘法运算次数为: 2 1048576N  次,而 FFT 所需的复数乘法运算次数仅为2log 51 202N N次。 可见 1024N 时 DFT 算法的运算量是 FFT 算法的运算量的2 2l og 1048 576 5120 204. 82NNN  倍,则 N 越大 FFT 算法的优越性越明显。 按时间抽取 FFT 算法的特点 2 点DFT 2 点DFT 2 点DFT 2 点DFT x(0) x(4) x(2) x(6) x(1) x(5) x(3) x(7) X3(0) X3(1) X4(0) X4(1) X5(0) X5(1) X6(0) X6(1) 08W28W08W28W X1(0) X1(1) X1(2) X1(3) X2(0) X2(1) X2(2) X2(3) 38W28W18W08WX(0) X(1) X(2) X(3) X(4) X(5) X(6) X(7) 基于 VHDL 的快速信号处理器实现 16 FFT 运算有两个特点:同址运算和倒位序规律。 特点 1:同址运算 长度为 N 的序列,将 N 个数据送到存储器后,经蝶形运算,其结果为另一列数据,它们以蝶形为单位仍存储在这同一组存储中,直到最后输出,中间无需其他存储器。 采用同址运算只需 N 个存储单元,大大节省了存储单元,从而降低了设计成本。 特点 2:倒位序规律 为了实现同址计算,输入序列不能按照原来的先后顺序存贮,这种输入数据存贮和读取的顺序称为倒位序。 我们注意到,对于已经讨论过的 8点流图,只需要用三位二进制码来标注整个数据。 若 2 1 0( , , )n n n 为序列 xn中标。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。