基于FPGA的数字信号处理方法简介_第1页
基于FPGA的数字信号处理方法简介_第2页
基于FPGA的数字信号处理方法简介_第3页
基于FPGA的数字信号处理方法简介_第4页
基于FPGA的数字信号处理方法简介_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、基于FPGA的数字信号处理方法简介1 引言数字信号处理就是用数值计算的方式对信号进行加工的理论和技术,主要研究有关数字滤波技术、离散变换快速算法以及谱分析方法。现场可编程门阵列(Field Programmable Gate Arrays, FPGA)以其丰富的逻辑资源和I/O引脚、低功耗、高可靠性以及可重构等特点,与通用DSP解决方案相比,FPGA器件在不牺牲灵活性的条件下,提供了更高的性能,逐步成为较为理想的实现平台。FPGA的设计描述通常分为四个抽象级,由低到高依次为:物理级、寄存器传输级(Register TransferLevel, RTL)、行为级和系统级。传统的FPGA设计基于自

2、顶向下设计方法采用硬件描述语言(Hardware Description Language, HDL)与Verilog HDL进行。随着FPGA在性能和密度上的发展十分迅猛,传统开发方法出现不足,高层次综合(High Level Synthesis, HLS)应运而生最近几年其相关技术日趋成熟且被广泛使用。这种高层次综合可以使算法和软件工程师们在无需拥有HDL和硬件知识的基础上,使用FPGA进行算法验证、移植和计算加速。本文主要介绍基于FPGA的数字信号处理的传统设计方法、高层次综合设计VIVADO HLS、OpenCL、System Generator、DSP Builder以及NI专用La

3、bVIEW FPGA的设计工具。2 高层次设计方法高层次综合的概念最早在20世纪70年代被提出,是在一定的约束下,将系统层和算法层转化成RTL级描述的方法和过程。系统层和算法层可以用相比于HDL更高级的编程语言,如Java、C、C+、Matlab等进行更加简洁、直观描述。为了便于设计者进行高层次、系统级的设计,所以需要将底层的综合过程交给开发工具进行。90年代中期的时候,Synopsys、Cadence和Mentor Graphics等EDA公司推出了商业化的、基于HDL语言的HLS开发工具,但是不成熟技术导致了市场化的失败。近年来,基于高级编程语言的HLS开发工具在解决了前一代开发工具的不足

4、的基础上,迅速发展,已在FPGA设计的市场中占有了一席之地,基于高层次综合的FPGA设计也已经逐步进入市场化和商业化。2.1 基于C/C+的工具简介Xilinx VIVADO HLS 编译器为我们提供了与面向标准处理器或专用处理器的应用开发的编译器相类似的集成编译支持环境,Xilinx VIVADO HLS与其他各种处理器编译器在对C语言程序或C+语言程序的编译、分析和优化拥有相同的关键技术,而区别在于应用所面向的执行目标。通过把FPGA作为执行目标,Xilinx VIVADO HLS使得软件开发工程师能够借助它来实现代码的优化,并且不受单一存储空间或者有限的开发资源这些开发瓶颈的限制,从而使

5、得计算量密集型软件算法得以被实际应用。Xilinx VIVADO HLS所使用的应用代码同其他处理器编译器一样面向的范畴一样,通过操作语句、条件语句、循环语句、以及函数等4个范畴来分析程序。在HLS中,循环和函数之间的主要区别是相关的术语。系统的循环和函数并行执行。而循环中,因为在循环迭代和运算符间有一个清晰的结构差异,这种转换通常称为流水线。对函数而言,外循环和内循环相处于同一层次,这导致如果长期使用它可能会出现流水线混乱。在使用HLS时,我们可以避免这种混乱,因为函数调用执行的并行化可以使得数据流优化。数据流优化指令使得HLS在给定的程序层次结构中对所有的函数创建独立的硬件模块。这些独立的

6、硬件模块可以并行执行并且具有独立的同步数据传输过程。除了Xilinx Vivado HLS外Altera公司针对自己的器件也有OpenCL工具进行对C等高级语言设计自动编译。2.2 基于MATLAB的工具简介Altera DSP Builder将The MathWorks MATLAB和Simulink系统级设计工具的算法开发、仿真和验证功能与VHDL综合、仿真和Altera开发工具整合在一起,实现了这些工具的集成。DSP Builder在算法友好的开发环境中帮助设计人员生成DSP设计硬件表征,从而缩短了DSP设计周期。已有的MATLAB函数和Simulink模块可以和Altera DSP B

7、uilder模块以及Altera知识产权(IP) MegaCore功能相结合,将系统级设计实现和DSP算法开发相链接。DSP Builder支持系统、算法和硬件设计共享一个公共开发平台。设计人员可以使用DSP Builder模块迅速生成Simulink系统建模硬件。DSP Builder包括比特和周期精度的Simulink模块,涵盖了算法和存储功能等基本操作。可以使用DSP Builder模型中的MegaCore功能实现复杂功能的集成。DSP Builder是一个系统级(或算法级)设计工具,它构架在多个软件工具之上,并把系统级和RTL级两个设计领域的设计工具连接起来,最大程度地发挥了两种工具的

8、优势。DSP Builder依赖于Math Works公司的数学分析工具Matlab/Simulink,以Simulink的Blockset出现,可以在Simulink中进行图形化设计和仿真,同时又通过Signal Compiler可以把Matlab/Simulink的设计文件(*.mdl)转成相应的硬件描述语言设计文件(*.v),以及用于控制综合与编译的TCL脚本。而对后者的处理可以由FPGA/CPLD开发工具Quartus II来完成。当选择Xilinx的FGPA进行设计时,可以选择Xilinx System Generator工具结合MATLAB进行设计。2.2.1 DSP Builde

9、r系统级设计流程DSP Builder是一个系统级(或算法级)设计工具,它构架在多个软件工具之上,并把系统级和RTL级两个设计领域的设计工具连接起来,最大程度地发挥了两种工具的优势。DSP Builder依赖于Math Works公司的数学分析工具Matlab/Simulink,以Simulink的Blockset出现,可以在Simulink中进行图形化设计和仿真,同时又通过Signal Compiler可以把Matlab/Simulink的设计文件(.mdl)转成相应的硬件描述语言VHDL/Verilog设计文件(.vhd/.v),以及用于控制综合与编译的TCL脚本。而对后者的处理可以由FP

10、GA/CPLD开发工具Quartus II来完成。DSP Builder系统级设计流程如图3-1所示:图3-1 DSP Builder系统级设计流程图DSP Builder设计流程的第一步是在Matlab/Simulink中设计输入,即在Matlab的Simulink环境中建立一个mdl模型文件,用图形方式调用Altera DSP Builder和其它Simulink库中的图形模块,构建系统级或算法级设计框图(或称Simulink设计模型)。在设计FIR滤波器时可以使用FDATool进行辅助设计,使得滤波器的设计更加简单方便。第二步是利用Simulink强大的图形化仿真、分析功能,分析此设计模

11、型的正确性,完成模型仿真。在这里与一般的Matlab Simulink建模过程几乎没有什么区别,所不同的是设计模型库采用Altera DSP Builder的Simulink库。第三步是DSP Builder设计实现的关键一步,通过SignalCompiler把Simulink的模型文件(后缀为.mdl)转化成通用的硬件描述语言VHDL文件(后缀为.vhd)或Verilog文件。由于EDA工具软件(诸如Quartus II、ModelSim)不能直接处理Matlab的.mdl文件,这就需要一个转换过程。转换获得的HDL文件是基于RTL级(寄存器传输级)的VHDL描述。再接下来的几个步骤是对以上

12、设计产生的VHDL的RTL代码和仿真文件进行综合、编译适配以及仿真。为了针对不同用户的设计目的和设计要求,DSP Builder提供了两种不同的设计流程,主要可以分为自动流程和手动流程。如果采用DSP Builder的自动流程,几乎可以忽略硬件的具体实现过程,可以选择让DSP Builder自动调用Quartus II等EDA设计软件,完成综合(Synthesis)、网表(ATOM Netlist)生成和Quartus II适配,甚至在Matlab中完成FPGA的配置下载过程。如果希望使用其它第三方的VHDL综合器和仿真器(除Synplify、LeonardoSpectrum和Quartus

13、II综合器及ModelSim外),或是希望完成特定的适配设置,如逻辑锁定、时序驱动编译、ESB特定功能应用等,可以选用手动流程设计。在手动流程中,设计者可以灵活地指定综合、适配条件。不过,需要手动地调用VHDL综合器进行综合,调用Quartus II进行适配,调用ModelSim或者Quartus II进行仿真,最后用Quartus II产生相应的编程文件用于FPGA的配置。采用手动流程时,除了行为级仿真验证和设计输入外,其它过程与标准的基于VHDL的EDA设计流程是完全一致的。由上一步DSP Builder设计流程得到的VHDL文件(由Simulink模型文件*.mdl通过SignalCom

14、piler转换而成的),送入综合器进行综合。综合器可以是Synplify PRO,也可以是LeonardoSpectrum,或者是Altera自己的Quartus II。在综合时,可以需要对综合器进行配置或者提供综合的约束条件。由于这个过程操作可能比较繁琐,所以DSP Builder的SignalCompiler相应提供了一个接口,针对设计,自动产生一个TCL脚本与综合器Synplify或LeonardoSpectrum相接。综合器在综合操作后会产生一个网表文件,以供下一个流程使用。这里产生的网表文件成为ATOM网表文件,主要是EDIF网表文件(.edf电子设计交换格式文件)或VQM(.vqm

15、 Verilog Quartus Mapping File),它们是一种参数可设置的,并含有具体器件系列的硬件特征(如逻辑宏单元LCs、I/O单元、乘积项、嵌入式系统块ESB等)的网表文件。Quartus II可以利用这些ATOM网表文件针对特定的具体器件进行适配,包括布线、布局、结构优化等操作,最后产生时序仿真文件和FPGA目标器件的编程和配置文件。在这一步,设计者可以在Quartus II中完成对Pin(引脚)的锁定,更改一些约束条件。如果用DSP Builder产生的DSP模块只是庞大设计中的一个子模块,则可以在设计中调用DSP Builder产生的VHDL文件,以构成完整的设计。同时,

16、一样可以使用Quartus II强大的逻辑锁定功能和SignalTap测试技术。在DSP Builder设计流程的最后一步,可以在DSP Builder中直接下载到FPGA用户开发板上,或者通过Quartus II完成硬件的下载、测试。在图3-1的流程中,其中有个流程在DSP设计中是不可或缺的,那就是HDL仿真。与DSP Builder可以配合使用的HDL仿真器是ModelSim。DSP Builder在生成VHDL代码或Verilog代码时,可以同时生成用于测试DSP模块的TestBench(测试平台)文件,DSP Builder生成的TestBench文件采用相同硬件描述语言,测试向量与该

17、DSP模块在Simulink中的仿真激励相一致。通过ModelSim仿真生成的TestBench可以验证生成的VHDL代码或Verilog代码与Simulink中DSP模型的一致性。另外,DSP Builder在产生TestBench的同时,还产生了针对ModelSim仿真的Tcl脚本文件来简化用户的操作,掩盖了ModelSim仿真时的复杂性。在大部分情况下,Quartus II对DSP模块适配后,需要再次验证适配后网表与Simulink中建立的DSP模型的一致性。这就需要再次使用ModelSim进行仿真,这是仿真采用Quartus II适配后带延时信息的网表文件(EDIF格式或VHDL、Ve

18、rilog格式)。2.2.2 Matlab的FDATool简介在这里使用Matlab的FDATool工具箱进行滤波器辅助设计,及滤波器性能的验证。FDATool(Filter Design and Analysis Tool)是MATLAB 信号处理工具箱提供的一种综合、简便的图形用户工具。通过该工具提供的先进可视化滤波器集成设计环境,用户可以方便地设计几乎所有的常规滤波器,包括FIR 和IIR 的各种设计方法。如图3-2所示,这是FDATool的启动界面。图3-2 FDATool的启动界面FDATool 的界面分上、下两个部分:上面部分显示有关滤波器的信息,下面部分用来指定设计指标参数。在

19、Response type 下可以选择滤波器类型,包括低通、高通、带通、带阻、微分器、Hilbert 变换器、多带、任意频率响应、升余弦等(如果安装了滤波器设计工具箱,则会有更多选项)。在 Design Method 下可以选择设计IIR 或FIR 滤波器,每种滤波器又可以选择不同的设计方法(例如,IIR 滤波器的设计方法包括巴特沃斯、切比雪夫、椭圆滤波器、最大扁平、最小P阶范数等;FIR 滤波器的设计方法包括等波纹、最小均方、窗函数、最大扁平、最小P阶范数等)。在 Filter Order 下可以选择滤波器阶数,可以使用满足要求的最小滤波器阶数或直接指定滤波器的阶数。根据前面两步中选择的设计

20、方法,Options 下会显示与该方法对应的可调节参数。例如选择FIR 等波纹设计法时,Options 面板的Window 中可设置密度系数的大小。选择滤波器的类型、设计方法和滤波器阶数时,相应的设计指标及其含义会在Filter Specifications 中用图形直观地显示出来以供设计参考。这些设计指标的具体参数需要在Frequency Specifications 和Magnitude Specifications 下明确指定。指定所有的设计指标后,单击FDATool 最下面的Design Filter 按钮即可完成滤波器设计。(设计完成后Design Filter 按钮变为不可用,除非

21、再次修改了设计指标)。FIR 滤波器设计时的参数设置主要包括响应类型、滤波器阶次、频率参数、幅度参数及密度因子等其他选项。1) 响应类型在滤波器设计与分析工具 FDATool 中FIR 滤波器响应类型可以设置为低通、高通、带阻、微分器、Hilbert 变换器、多带滤波器、任意幅度响应、升余弦、任意群延迟、半带低通、半带高通、奈奎斯特、逆sinc 低通或逆sinc 高通滤波器。2) 设计方法FIR 滤波器的设计方法可以选择为等波纹、最小均方、窗函数、最大扁平、最小P 阶范数或约束等波纹。3) 滤波器阶次FIR 滤波器的阶次可以由用户指定,也可以选择最小滤波器阶次。4) 频率参数频率参数设置包括频

22、率单位、采样频率、带通频率、带阻频率等。其中采样频率,带通频率,带阻频率可以由用户根据实际制定,而频率单位可以通过面板上的频率单位下拉框进行选择,主要包括归一化频率(0-1)、Hz、kHz、MHz 和GHz 五种选项。5) 幅度参数设计低通、高通滤波器时,需要指定通带、阻带频率;设计带通滤波器时,需要指定阻带1、通带、阻带2 的频率;设计带阻滤波器时,需要指定通带1、阻带、通带2 的频率。2.3 DSP Builder设计FIR滤波器本节使用DSP Builder设计一个FIR滤波器,设计过程如下1、选择窗函数、设计滤波器系数。在这里使用FDATool工具辅助设计FIR滤波器,滤波器参数如下:

23、低通滤波器;采用汉明窗的设计方法;阶数:N=32;数据位宽为16bit,输出数据位宽为16bit;采样速率fs=1MHz;通带截止频率200kHz,衰减-6dB。基本步骤如下:1) 在 MATLAB 命令窗口下输入“fdatool”命令,“回车”调出滤波器设计界面;2) 在 Respone Type 中选择低通滤波器(Lowpass);3) 在 Design Method 中选择FIR,同时在滤波器设计方法下拉框中选择窗函数(Window)设计方法;4) 在 Filter Order 中选择特定滤波器阶次(Specify Order),设置为32;5) Options 中Window 选择汉明

24、窗(Hamming);6) 在 Frequency Specification 中指定采样频率Fs=1MHz,带通截至频率Fc=200kHz,滤波器基本参数设置如图3-3所示;图3-3 滤波器基本参数设置7) 在设置量化系数(Set quantization parameters)中指定滤波器算法为固定点(Fiixed-points),并设置相应的系数和输入输出数据长度,量化系数设置如图3-4所示;图3-4 量化滤波器系数8) 单击“Design Filter”即可完成滤波器设计。9) 最后,使用菜单【File/Export】可导出或保存滤波器系数h(n)。2、完成模型设计、仿真验证FDATo

25、ol 不仅提供了滤波器设计工具,而且还提供了滤波器时域与频域的特性分析工具。接下来将对设计的滤波器的幅度响应、相位响应、群延迟响应、相位延迟、脉冲响应、阶跃响应、零极点图、滤波器系数,以及滤波器信息等进行分析。1) 幅度响应单击 FDATool 窗口界面快捷工具栏的【Magnitude Response】按钮,或者选择菜单栏【Analysis/Magnitude Response】选项,就可以得到图3-5所示该型滤波器的幅度响应曲线。图3-5 滤波器的幅度响应曲线2)相位响应单击 FDATool 窗口界面快捷工具栏的【Phase Response】按钮,或者选择菜单栏【Analysis/Pha

26、se Response】选项,就可以得到图3-6 所示该型滤波器的相位响应曲线。图3-6 滤波器的相位响应曲线3)幅度与相位响应单击 FDATool 窗口界面快捷工具栏的【Magnitude and Phase Responses】按钮,或者选择菜单栏【Analysis/Magnitude and Phase Response】选项,就可以得到图3-7所示该型滤波器的幅度与相位响应曲线。图3-7 滤波器的幅度与相位响应曲线4)群延迟单击 FDATool 窗口界面快捷工具栏的【Group Delay Response】按钮,或者选择菜单栏【Analysis/ Group Delay Respon

27、se】选项,就可以得到图3-8所示该型滤波器的群延迟曲线。图3-8 滤波器的群延迟曲线5)相位延迟单击 FDATool 窗口界面快捷工具栏的【Phase Delay】按钮,或者选择菜单栏【Analysis/Phase Delay】选项,就可以得到图3-9 所示该型滤波器的相位延迟曲线。图3-9 滤波器的相位延迟曲线6)冲击响应单击 FDATool 窗口界面快捷工具栏的【Impulse Response】按钮,或者选择菜单栏【Analysis/Impulse Response】选项,就可以得到图3-10 所示该型滤波器的冲击响应曲线。图3-10 滤波器的冲击响应曲线7)阶跃响应单击 FDAToo

28、l 窗口界面快捷工具栏的【Step Response】按钮,或者选择菜单栏【Analysis/Step Response】选项,就可以得到图3-11 所示该型滤波器的阶跃响应曲线。图3-11滤波器的阶跃响应曲线8)零极点图单击 FDATool 窗口界面快捷工具栏的【Pole/Zero Plot】按钮,或者选择菜单栏【Analysis/Pole/Zero Plot】选项,就可以得到图3-12 所示该型滤波器的零极点图。图3-12滤波器的零极点图9)滤波器系数单击 FDATool 窗口界面快捷工具栏的【Filter Coefficient】按钮,或者选择菜单栏【Analysis/ Filter Coefficient】选项,就可以得到图3-13 所示该型滤波器的系数。图3-13滤波器的系数10)滤波器信息单击 FDATool 窗口界面快捷工具栏的【Filter Information】按钮,或者选择菜单栏【Analysis/ Filter Information】选项,就可以得到图3-14 所示该型滤波器的信息。图3-14滤波器的信息11)滤波器对信号进行处理假设有一信号 x=sin(25000*2*pi*t)+sin(300000*2*pi*t)+ sin(20000

温馨提示

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

评论

0/150

提交评论