毕业设计报告-基于FPGA的FFT设计与实现.doc_第1页
毕业设计报告-基于FPGA的FFT设计与实现.doc_第2页
毕业设计报告-基于FPGA的FFT设计与实现.doc_第3页
毕业设计报告-基于FPGA的FFT设计与实现.doc_第4页
毕业设计报告-基于FPGA的FFT设计与实现.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息与通信工程学院综合实验(1)设计报告基于FPGA的FFT设计与实现学 号:S309080034专 业: 光学工程学生姓名:彭欢任课教师:钟志 副教授 2010年7月基于FPGA的FFT的设计与实现彭欢信息与通信工程学院摘 要:本文主要研究如何利用FPGA实现FFT处理器,包括算法选取、算法验证、系统结构设计、各个模块设计、FPGA实现和测试整个流程。设计采用基-2按时间抽取算法,以XILINX公司提供的ISE6.1为软件平台,利用Verilog HDL描述的方式实现了512点16bist复数块浮点结构的FFT系统,并以FPGA芯片场Virtex II XC2V1000为硬件平台,进行了仿真、综合等工作。仿真结果表明其计算结果达到了一定的精度,运算速度可以满足一般实时信号处理的要求。关键词:快速傅立叶变换,现场可编程门阵列,块浮点,Verilog HDL1 引言目前,FFT己广泛应用在频谱分析、匹配滤波、数字通信、图像处理、语音识别、雷达处理、遥感遥测、地质勘探和无线保密通讯等众多领域。在不同应用场合,需要不同性能要求的FFT处理器。在很多应用领域都要求FFT处理器具有高速度、高精度、大容量和实时处理的性能。因此,如何更快速、更灵活地实现FFT变得越来越重要。在过去很长一段时间,DSP处理器是DSP应用系统核心器件的唯一选择。尽管DSP处理器具有通过软件设计能适用于实现不同功能的灵活性,但面对当今速度变化的DSP应用市场,特别是面对现代通信技术的发展,DSP处理器在处理速度上早已力不从心。与DSP相比,FPGA实现FFT的主要优越性有:(1)、FPGA实现数字信号处理最显著的特点就是高速性能好。FPGA有内置的高速乘法器和加法器,尤其适合于乘法和累加等重复性的DSP任务。(2)、FPGA的存储量大。DSP内部一般没有大容量的存储器,但是FTF实时处理运算需要存储大量的数据,只能外接存储器,这样往往会使运算速度下降,同时电路也会更复杂和不稳定。目前,高档的FPGA中有巨量的高速存储器,不用外接存储器便可实现FFT实时处理运算,其速度更快,电路更简单,集成度和可靠性也大幅度提高。(3)、FPGA是硬件可编程的,比DSP更加灵活。DSP往往需要外部的接口和控制芯片配合工作,FPGA则不需要,这样使得硬件更简单和小型化。(4)、在比较FPGA和DSP时,一个极为重要的系统参数是输入/输出(1/0)带宽。除了一些专用引脚外,FPGA上几乎所有的引脚均可供用户使用,这使得FPGA信号处理方案具有非常高性能的FO带宽。大量的FO引脚和多块存储器可让系统在设计中获得优越的并行处理性能。2 现场可编程门阵列(FPGA)技术2.1 FPGA器件简介FPGA即现场可编程门阵列,它是作为ASIC领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA结合了微电子技术、电路技术、EDA技术,使设计者可以集中精力进行所需逻辑功能的设计,缩短设计周期,提高设计质量。FPGA己经在计算机硬件、工业控制、遥感遥测、雷达声纳、数据处理、智能仪器仪表、广播电视、医疗电子和现代通信等多种领域中得到广泛应用,FPAG开发技术,己经成为数字系统的教学实践、科研试验、样机调试和中小批量生产的首选方案。2.1.1 FPGA的基本结构FPGA采用了逻辑单元阵列LCA这样一个新概念,内部一般是由可配置逻辑模CLB、可编程输入/输出模块IOB和互连资源ICR及一个用于存放编程数据的静态存储器SRAM组成,以XILNIX公司的XC4000,基本结构如图2.1所示。图2.1 XC4000系列FPGA基本结构2.1.2 FPGA器件的性能特点FPGA器件的性能特点主要有:(1)、采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。(2)、FPGA提供丰富的I/O引脚和触发器,集成度远远高于可编程阵列逻辑(PAL)器件。(3)、FPGA器件结构灵活,内部的CLB、IOB和ICR均可以编程,可以实现多个变量的任意逻辑。(4)、某些器件提供片内高速RAM,可用于FIFO等设计。(5)、基于SRAM编程技术,具有高密度、高速度、高可靠性和低功耗的特性。(6)、FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。2.2 基于FPGA的系统开发以XILNIX为例,FPGA设计的一般流程包括设计输入、功能仿真、设计实现、时序仿真、器件编程与测试几个步骤。设计流程图如图2.2所示。图2.2 FPGA设计流程(l)、设计输入:主要输入方法有硬件描述语言和原理图,结构向导(Architrcture Wizard)和核生成器(Core Geneartor)可以辅助设计输入。(2)、功能仿真:功能仿真没有器件内部逻辑单元和连线的实际延时信息,只是初步验证系统的逻辑功能。(3)、设计实现:实现包括转换、映射、布局布线、时间参数提取,同时产生各种报告和文件。(4)、时序仿真:时序仿真中使用了电路延时的最坏情况,分析时序关系,检查和消除竞争冒险、并对器件的实际工作性能进行估计。(5)、器件编程与测试:设计实现以后,建立FPGA可识别文件,将编程数据下载到相应的FPGA器件中去。在FPGA设计的各个环节都有不同公司提供的不同的EDA工具。一般由FPGA厂商提供集成开发环境,如ALTERA公司的Quartus II和XILINX公司的ISE。为提高设计效率,优化设计结果,很多厂家提供了各种专业软件,用以配合FPGA/CPLD芯片厂家提供的工具进行更高效的设计。比较常见的使用方式是:集成开发环境,专业逻辑仿真软件和专业逻辑综合软件一起使用,进行多种EDA工具的协同设计。本设计采用ISE6.1+Modelsim5.7g+SynpliyfPor。2.3 硬件描述语言Verilog HDLHDL是硬件描述语言(Hardware Description Language)的缩写,是一种用形式方法来描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从抽到具体逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字统。随着EDA技术的发展,使用HDL设计FPGA已成为一种趋势。目前最主要HDL是VHDL和Verilog HDL,本设计采用Verilog HDL。作为硬件描述语言,Verilog HDL具有如下特点:(1)、能够在不同的抽象层次上,如系统级、行为级、寄存器传输级RTL、门级和开关级,对设计系统进行精确而简练的描述;(2)、能够在每个抽象层次的描述上对设计进行仿真验证,及时发现可能存在的设计错误,缩短设计周期,并保证整个设计过程的正确性;(3)、由于代码描述与具体工艺实现无关,因此易于设计标准化,提高了设计的重用性。如果有C语言的编程经验,只需很短的时间就能掌握Verilog HDL。使用HDL进行设计时,需要设计者完成的任务有编写电路描述和编写包含激励波形描述的测试平台文件,其激励用于进行电路功能测试,代测电路的行为特性由仿真器显示波形。3 FFT算法原理及其硬件结构设计3.1 FFT算法基本原理有限长序列及其频域表示可由以下离散傅立叶变换得出: (3.1) (3.2)其中,。式(3.1)称为离散傅立叶(正)变换,式(3.2)称为离散傅立叶反变换,x(n)与X(k)构成了离散傅立叶变换对。根据上述公式,计算一个X(k),需要N次复数乘法和N-1次复数加法,而计算全部X(k) (0kN-1),共需要N2次复数乘法和N(N-1)次复数加法。实现一次复数乘法需要四次实数乘法和两次实数加法,一次复数加法需要两次实数加法,因此直接计算全部X(k)共需要4N2次实数乘法和2N(2N-1)次实数加法。当N较大时,对实时信号处理来说,对处理器计算速度有十分苛刻的要求,于是如何减少计算离散傅里叶变换运算量的问题变得至关重要。为减少运算量,提高运算速度,就必须改进算法。计算DFT过程中需要完成的运算的系数里,存在相当多的对称性。通过研究这种对称性,可以简化计算过程中的运算,从而减少计算DFT所需的时间。具有周期性、对称性和可约性。利用其特性,将x(n)或X(k)序列按一定规律分解成短序列进行运算,这样可以避免大量的重复运算,提高计算DFT的运算速度。算法形式有很多种,但基本上可以分为两大类,即按时间抽取FFT算法和按频率抽取FFT算法。3.1.1 基-2时间抽取FFT算法如果序列x(n)的长度N=2M,其中M是整数(如果不满足此条件,可以人为地增补零值点来达到),在时域上按奇偶抽取分解成短序列的DFT,使最小DFT运算单元为2点。通常将FFT运算中最小DFT运算单元称为基(radix),因而把这种算法称为基-2时间抽取FFT(DIT-FFT)算法。若Xm(p)和Xm(q)为输入数据,Xm+1(p)和Xm+1(q)为输出数据,为旋转因子,则对于基-2DIF-FFT算法,蝶形运算的基本公式为: (3.3)其图形表示如图3.1所示,称Xm(p)为上结点,Xm(q)为下结点。图3.1 时间抽取蝶形运算单元3.1.2 基-2频率抽取FFT算法上述的基-2DIT-FFT算法是按奇偶原则对输入序列x(n)进行抽取分解,结果在频域使X(k)前后分组。如果在时域把x(n)分解成前后两组,那么在频域就会使X(k)形成奇偶抽取分组,称为频率抽取FFT(DIF-FFT)算法。若Xm(p)和Xm(q)为输入数据,Xm+1(p)和Xm+1(q)为输出数据,为旋转因子,则对于基-2DIF-FFT算法,蝶形运算的基本公式为: (3.4)其图形表示如图3.2所示,称Xm(p)为上结点,Xm(q)为下结点。图3.2 频率抽取蝶形运算单元DIT-FFT算法与DIF-FFT算法均为原位运算,而且运算量相同,不同之处在于:数据存放的方式不同,DIT为倒序输入、正序输出,而DIF为正序输入、倒序输出,运算完毕需进行整序操作;蝶形运算不同,DIT的复数乘法出现在(加)减法之前,而DIF的复数乘法出现在(加)减法之后。所以DIT-FFT算法和DIF-FFT算法是两种等价的FFT运算。参照DIT-FFT的数据地址产生规律,可总结出DIF-FFT的数据地址产生规律。3.2 FFT的硬件实现结构选择合适的系统结构,是提高FFT处理器性能的关键。以基-2DIT-FFT算法为例,本章将首先讨论几种常用FFT处理器的实现形式。(1)顺序处理顺序处理是FFT专用处理器的基本形式,蝶形运算单元在控制器的控制下,根据标准的FFT信号流图,按时间顺序依次进行运算。即从第1级开始,从上至下依次进行,第1级算完后,然后进行第2级,第3级,直至算完为止。顺序处理具有以下特点:只用一个蝶形运算单元;输入数据、中间数据和输出结果均使用同一组存储器;顺序执行次蝶形运算;如果一次蝶形运算时间为T,则总的运算时间为(2)流水线处理流水线处理是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程并行进行。对一个N点的FFT变换,每一级的N/2次蝶形运算安排一个独立的蝶形处理器按顺序完成,总共采用个蝶形运算单元同时进行工作,这种形式称为流水线处理或者级联处理。流水线处理具有以下特点:使用个蝶形运算单元;M个蝶形运算单元在各级间并行运算,即级与级之间是并行工作的;每个蝶形运算单元在每一级中顺序执行N/2个蝶形运算,即每一级运算的内部是串行工作的;如果一次蝶形运算时间为T,则理论上总的运算时间和每一级数据运算时间一样(没考虑级与级之间的数据缓冲),为。(3)并行迭代处理对于每一级中的N/2个蝶形运算,采用N/2个蝶形运算单元并行工作,级与级之间顺序进行计算,这种实现形式称为并行迭代处理。并行迭代处理具有以下特点:使用N/2个蝶形运算单元,在每一级中并行工作;各级间顺序处理工作;如果一次蝶形运算时间为T,则总的运算时间为。(4)阵列处理把流水线处理和并行迭代处理结合起来,采用个蝶形运算单元实现全并行工作,称为阵列处理。阵列处理具有以下特点:使用个蝶形运算单元并行完成全部蝶形运算;由于采用流水线工作方式,使单位时间内处理的数据增大了倍,也就是说数据的吞吐量增大了倍;总的运算时间理论上等于一次蝶形运算时间T。从空间复杂度和设备使用量上看,顺序处理最小,流水线处理次之,并行迭代和阵列处理则设备量最大,成本最昂贵。从处理速度上看,顺序处理最慢,流水线次之,并行迭代和阵列处理速度最快,可应用于实时性要求很高的场合(如雷达信号处理系统)。综上所述,处理速度的提高是以设备量和成本的增加为代价的。因此,在具体设计中,必须综合考虑和适当采用上述的各种形式的处理器,根据实际需求确定具体的实现方案,以取得“速度/成本”的最佳值。本设计采用最基本的顺序处理方案来实现512点16位复数的FFT运算系统。4 FFT处理器的FPGA的设计及实现4.1 FFT处理器总体设计基-2FFT模块设计主要由6部分组成:蝶形运算单元,存储单元,地址产生单元,功能切换单元,浮点单元和时序控制元,如图4.1所示。图4.1 FFT处理器结构框图各模块的功能概述如下:(l)、蝶形运算单元:采用DIT方式完成基-2蝶形运算,若数据从双口RAM1中读出,则计算结果存入双口RAMZ中,反之亦然;(2)、存储单元:主要用来存储输入数据、中间结果(RAM),预置旋转因子(ROM),以及最后的计算结果(RAM);(3)、地址产生单元:产生RAM的读、写地址和ROM的读地址;(4)、功能切换单元:完成RAMI与RAMZ间数据读写功能的切换;(5)、块浮点单元:记录蝶算单元输出数据的位信息,并完成蝶算单元输入数据的截位;(6)、时序控制单元:产生各模块的使能、控制信号,使整个流程正常工作。4.2 蝶形运算单元的设计FFT的核心操作是蝶形运算,蝶形运算直接影响着FFT处理器的速度,所以如何加快蝶形运算的处理速度是提高FFT处理器速度的关键问题。基-2时间抽取FFT运算可分解成: (4.1)其中p,q表示序列下标,R,I表示实部和虚部。并行结构如图4.2所示蝶形运算分3个阶段实现。4.2 蝶形运算并行结构在蝶形单元设计中,考虑到Virtex系列FPGA丰富的乘法器资源,采用了四个乘法器并行运算,使乘法运算在一个时钟周期内完成,提高了运算速度。在设计中为增大数据的动态范围,采用块浮点结构,蝶形运算单元输入数据为16位,输出数据为18位。同时,6次加(减)法运算分别用6个加(减)法器来实现。根据上述的设计原理对蝶形运算单元进行硬件实现。蝶形运算模块示意图如图4.3所示,其中,xl,y1,x2,y2分别表示上、下结点数据的实部和虚部输入,其位宽为16bist;wx,wy分别表示旋转因子的实部和虚部,其位宽为16bits;mx1,myl,mx2,my2分别表示蝶形运算上、下结点实部和虚部输出,其位宽为18bits;clk是时钟信号reset是复位信号。为了保证数据的同步性,在蝶形运算单元加入了使能信号start,使下结点数据和旋转因子同步进入乘法器。同时,上结点数据延迟2个时钟周期后与复乘结果进行加减运算。图4.3 蝶形运算模块示意图图4.4为该蝶形运算单元在Modelsim中的仿真波形图。图4.4 蝶形运算单元的Modelsim功能仿真波形图由图4.4所示仿真波形图可以看出,蝶形运算单元在使能信号start=1后的3个时钟周期内完成一次蝶形运算,且如果每个时钟来临输入新的操作数据,结果则连续输出,与理论值比较,计算结果正确。4.3 块浮点单元设计在FFT处理器设计中,若采用定点运算,插入定衰减系数的方法防止溢出,结构简单,但运算精度不高;若采用浮点运算,精度高,但运算复杂度增加,且速度降低。因此本设计采用介于定点和浮点之间的块浮点算法。这种算法相比定点运算,提高了精度,相比浮点运算,提高了速度,保证了FFT处理器处理器具有高精度、高速度的特点。蝶形运算单元和存储器RAM两者之间的数据流动必须经过块浮点单元。块浮点单元由溢出检测单元status_judge(有限状态机)、指数累加器accumulator和数据选择器mux组成,结构如图4.5所示,其中L表示数据位长,即在本系统中L=16,L+1:0表示数据位宽为L+2位。图4.5 块浮点单元结构图参加蝶形运算的4路18 bits数据从双口RAM中读出后,送入数据选择器,由数据选择器选择其中的16bits送入蝶形运算单元;经过蝶形运算后,将4路18bits的输出数据送入溢出检测单元,首先检测出绝对值最大的那个数据的高三位值,然后判断出本次蝶形运算的状态机,并将其寄存;这样依次进行处理一级中每个蝶形运算的结果,直至本级蝶形运算结束,此时溢出检测单元产生下一级的溢出控制,由此决定数据选择器在下一级运算中该如何进行工作,并将溢出结果送入指数累加器,累加溢出位数。这样循环进行,直至FFT运算结束。4.4 误差分析根据本设计所采用的FFT算法以及蝶形运算单元的实现结构,其最化误差分析模型如图4.6所示,其中,Q表示量化,表示移位。图4.6 DIT基-2蝶形运算误差分析模型现假设每级FFT蝶形运算发生一次溢出,且溢出由复加运算引入,数据格式为(b+1)bits的二进制补码,量化方法中引入的误差为舍入误差。对于舍入量化,当舍弃位数等于1bits时,其均值为Q/4,方差为Q2/16;当舍弃位数大于1bits时,其均值为Q,方差为Q2/12,Q=2-b为量化步长。根据图4.6所示的误差分析模型,可得出误差上限时最后一级输出中平均每个输出点的均方误差MSE。对于块浮点法有: (4.2)对于定点算法: (4.3)假设FFT输入数据x(n)为白色随机序列,x(n)对不同的n值无关,x(n)的实部、虚部均匀分布在-1,1)上且无关。根据式(4.2)和(4.3)可以得到平均每个FFT输出频点的噪信比NSR。对于块浮点算法有: (4.4)对于定点算法: (4.5)(a) N=512,NSR随数据位宽b的变化曲线 (b) b=16,NSR随FFT点数N的变化曲线图4.7 平均每个FFT输出频点的NSR根据式(4.4)和(4.5)可以画出误差上限时,每个FFT输出频点的信噪比NSR随数据位宽b的变化曲线,如图4.7所示。其中,图(a)为N=512,NSR随数据位宽b的变化曲线,图(b)为b=16,NSR随FFT点数N的变化曲线,其中,“-o-”表示块浮点的变化曲线,“-+-”表示定点的变化曲线。4.5 其它单元模块的设计包括地址产生单元,倒序输出地址单元设计,ROM设计,RAM设计,数据切换模块,时序控制单元模块,DCM模块等。在此不再一一赘述。5 FFT系统仿真与测试为了证明系统设计的正确性,需要对系统进行测试试验。将系统仿真结果在Modelsim中以数字和模拟形式显示,再把经过导出的数据与MATLAB中的价函数计算的理论值进行比较,完成对系统的测试工作。5.1 FPGA的仿真验证从硬件设计到芯片流片,整个过程都离不开仿真验证。仿真验证与设计流程相关,一般是通过仿真、时序分析、下载调试等来检验设计的正确性。在FPGA开发流程中,仿真验证主要包括功能仿真和时序仿真两个部分。功能仿真是为了检验设计功能是否正确。通过功能仿真,及时发现设计中的错误,加快设计的进度,提高设计的可靠性。时序仿真是为了保证设计满足时序要求,使数据能被正确地采样。准确高效的仿真验证可以最大限度地避免设计失误所造成的风险。为提高数字电路设计的仿真验证效率,可采取的主要措施一是提高仿真验证工具的速度和精度,二是改进仿真验证的设计方法。Modelsim是业界公认的专用EDA仿真工具,它可以对XLINIX公司的全部FPGA/CPLD产品进行高精度的仿真验证。Testbench是最基本的仿真验证手段,其主要作用是:例化待测试的设计;通过测试向量进行仿真;输出仿真结果。Testbench是一个具有独立结构的Verilog模块,其结构如图5.1所示,它包括激励生成和监视、待测系统和响应显示器三个部分。图5.1 Testbench 结构ISE软件具有辅助设计测试激励的功能。根据设计源文件的模块名称与输入输出端口生成测试激励文件模板,使用板写测试激励,省去了许多格式化部分,如文件头、测试激励模块名、测试激励端口信号、待测模块的调用和部分信号的初始化等部分。在本文所设计的FFT系统的功能验证中,FFT处理器的输入端口高达34个,且测试激励多次变化,同时还需要提供时钟信号。在这种情况下,考虑首先在测试代码中申明一个ROM,将所有测试激励作为一个二进制文件单独保存,在功能验证运行时,将此文件读入到此ROM中,然后由测试模块提供正确的时序信息,将此ROM的内容提供给待测模块的接口。这样将测试激励与时序明显分开,便于编写,也便于修改。5.2 正弦信号的仿真测试5.2.1 信号在matlab中的处理系统的输入函数为,点数N=512,采样频率为500Hz,即采样间隔为0.0025,采样的时间长度为0.002512s。在MATLAB中实现FFT处理的程序描述如下:N=512;n=0:511;t=0.002*n;p=n*500/N;x=20000*sin(2*pi*10*t);y=fft(x,N);r=real(y);i=imag(y);subplot(3,1,1);plot(t,x);title(orignal signal);subplot(3,1,2);plot(p,r);title(real);subPlot(3,1,3);plot(p,i);title(imag);图5.2 正弦信号512点F盯在MATLAB中实部与虚部结果5.2.2 信号在modelsim中的处理结果在ISE平台下编写Testbench波形测试文件,先将输入的原始数据存储在.bin文件(数据以补码二进制形式存储)中,作为测试激励文件,在波形仿真时调用该文件可完成输入。512点FFT的计算结果分别以文本文件和模拟波形文件形式输出。Testbench部分VerilogHDL描述如下:reg31:0rom255:0;initial $readmemb(test.bin,rom);initial fida=$fopen(dout_a,txt);initial fidba=$fopen(dout_b,txt);initial begin#1200 for(m=0;m256;m=m+1)#50 ina=romm31:16; inb=romm15:0;endalways begin#251050 for(i=0;i512;i=i+l)#50 $fwrite(fida,%bn,outa); $fwrite(fida,%bn,outb);end经过仿真运行,FFT计算结果的实部和虚部分别存储到dout_a.txt,dout_b.txt文本文件中。图5.3所示图为该正弦信号在Modelsim中生成的实部和虚部的模拟形式仿真图。图5.3 正弦信号在modelsim中的实部和虚部结果图5.4所示图为该正弦信号输出结果的总体仿真图,可以看出512点FFT系统分9级完成,在级数计数器cnt=0时,输出使能信号rd_en=1,输出最后结果;溢出指示count有7次为1,说明共有7次1bit溢出,故指数累加器accumulator最后显示7,输出数据乘以128便为实际的计算结果。图5.4 512点FFT在modelsim中的仿真图5.2.3 上述两种结果的比较图5.5所示图为该正弦信号通过FFT处理器处理后的结果在MATLAB中的仿真图形,其中,上图表示FFT处理后的模值,中图表示FFT处理后的实部值,下图FFT处理后的虚部值。图5.5 512点FFT处理器结果在MATLAB中的仿真结果比较图5.2和图5.5的,可以看出FFT处理器处理后的结果和MATLAB处理的结果基本一致。图5.6为FFT处理器结果和MATLAB理论值之间的相对误差曲线,其中上图表示实部误差,下图表示虚部误差。图5.6 FFT处理器结果和MATLAB理论值之间相对误差从图5.6可以看出,实部和虚部数据相对误差大部分控制在0.5%左右,有几个数据的相对误差在1.5%左右,稍微大一些,但总体上符合精度要求。这表明采用块浮点结构可以达到一定的处理精度。5.3 三角信号的仿真测试5.3.1 信号在MATLAB中的处理利用MATLAB产生一个三角信号,将此信号扩大100倍后输入到FFT处理器中。n=1:128;x(n)=n-1;x(n+128)=128-n;x(n+256)=n-1;x(n+384)=128-n;y=fft(x);r=real(y);i=imag(y);subplot(3,1,1);plot(x);subplot(3,1,2);plot(r);subplot(3,1,3);plot(i);图5.7 三角信号512点FFT在MATLAB中的结果该三角信号通过512点FFT的处理后结果如图5.7所示,其中,上图表示原信号,中图表示序列通过FFT处理后的实部值,下图表示序列通过FFT处理后的虚部值。5.3.2 信号在modelsim中处理图5.8 三角信号512点FFT在modelsim中的实部和虚部结果编写Testbench波形测试文件,将该三角信号的512点FFT处理器处理结果分别以文本文件和模拟波形文件输出,输出结果图如图5.8所示。图5.9为该三角信号输出结果总体仿真图,可以看出指数累加器accumulator最后显示为7,输出结果乘以128即为最后结果。图5.9 三角信号512点FFT在modelsim中的仿真图5.3.3 两种结果对比分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论