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

下载本文档

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

文档简介

基于 FPGA 的数字信号处理方法简介姬耀1 引言数字信号处理就是用数值计算的方式对信号进行加工的理论和技术,主要研究有关数字滤波技术、离散变换快速算法以及谱分析方法。现场可编程门阵列(Field Programmable Gate Arrays, FPGA)以其丰富的逻辑资源和 I/O 引脚、低功耗、高可靠性以及可重构等特点,与通用 DSP 解决方案相比,FPGA 器件在不牺牲灵活性的条件下,提供了更高的性能,逐步成为较为理想的实现平台。FPGA 的设计描述通常分为四个抽象级,由低到高依次为:物理级、寄存器传输级(Register TransferLevel, RTL) 、行为级和系统级。传统的 FPGA 设计基于自顶向下设计方法采用硬件描述语言(Hardware Description Language, HDL)与 Verilog HDL 进行 。随着 FPGA 在性能和密度上的发展十分迅猛,传统开发方法出现不足,高层次综合(High Level Synthesis, HLS)应运而生最近几年其相关技术日趋成熟且被广泛使用。这种高层次综合可以使算法和软件工程师们在无需拥有 HDL 和硬件知识的基础上,使用 FPGA 进行算法验证、移植和计算加速。本文主要介绍基于 FPGA 的数字信号处理的传统设计方法、高层次综合设计 VIVADO HLS、OpenCL、System Generator、DSP Builder 以及 NI 专用LabVIEW FPGA 的设计工具。2 高层次设计方法高层次综合的概念最早在 20 世纪 70 年代被提出,是在一定的约束下,将系统层和算法层转化成 RTL 级描述的方法和过程。系统层和算法层可以用相比于 HDL 更高级的编程语言,如 Java、C 、C+ 、Matlab 等进行更加简洁、直观描述。为了便于设计者进行高层次、系统级的设计,所以需要将底层的综合过程交给开发工具进行。90 年代中期的时候,Synopsys、Cadence 和 Mentor Graphics 等 EDA 公司推出了商业化的、基于 HDL 语言的 HLS 开发工具,但是不成熟技术导致了市场化的失败。近年来,基于高级编程语言的 HLS 开发工具在解决了前一代开发工具的不足的基础上,迅速发展,已在 FPGA 设计的市场中占有了一席之地,基于高层次综合的 FPGA 设计也已经逐步进入市场化和商业化。2.1 基于 C/C+的工具简介Xilinx VIVADO HLS 编译器为我们提供了与面向标准处理器或专用处理器的应用开发的编译器相类似的集成编译支持环境,Xilinx VIVADO HLS 与其他各种处理器编译器在对 C 语言程序或 C+语言程序的编译、分析和优化拥有相同的关键技术,而区别在于应用所面向的执行目标。通过把 FPGA 作为执行目标,Xilinx VIVADO HLS 使得软件开发工程师能够借助它来实现代码的优化,并且不受单一存储空间或者有限的开发资源这些开发瓶颈的限制,从而使得计算量密集型软件算法得以被实际应用。Xilinx VIVADO HLS 所使用的应用代码同其他处理器编译器一样面向的范畴一样,通过操作语句、条件语句、循环语句、以及函数等 4 个范畴来分析程序。在 HLS 中,循环和函数之间的主要区别是相关的术语。系统的循环和函数并行执行。而循环中,因为在循环迭代和运算符间有一个清晰的结构差异,这种转换通常称为流水线。对函数而言,外循环和内循环相处于同一层次,这导致如果长期使用它可能会出现流水线混乱。在使用 HLS 时,我们可以避免这种混乱,因为函数调用执行的并行化可以使得数据流优化。数据流优化指令使得 HLS 在给定的程序层次结构中对所有的函数创建独立的硬件模块。这些独立的硬件模块可以并行执行并且具有独立的同步数据传输过程。除了 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 Builder 模块以及 Altera 知识产权(IP) MegaCore 功能相结合,将系统级设计实现和 DSP 算法开发相链接。DSP Builder 支持系统、算法和硬件设计共享一个公共开发平台。设计人员可以使用 DSP Builder 模块迅速生成 Simulink 系统建模硬件。DSP Builder 包括比特和周期精度的 Simulink 模块,涵盖了算法和存储功能等基本操作。可以使用 DSP Builder 模型中的 MegaCore 功能实现复杂功能的集成。DSP Builder 是一个系统级(或算法级)设计工具,它构架在多个软件工具之上,并把系统级和 RTL 级两个设计领域的设计工具连接起来,最大程度地发挥了两种工具的优势。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 Builder 系统级设计流程DSP Builder 是一个系统级(或算法级)设计工具,它构架在多个软件工具之上,并把系统级和 RTL 级两个设计领域的设计工具连接起来,最大程度地发挥了两种工具的优势。DSP Builder 依赖于 Math Works 公司的数学分析工具Matlab/Simulink,以 Simulink 的 Blockset 出现,可以在 Simulink 中进行图形化设计和仿真,同时又通过 Signal Compiler 可以把 Matlab/Simulink 的设计文件(.mdl)转成相应的硬件描述语言 VHDL/Verilog 设计文件(.vhd/.v),以及用于控制综合与编译的 TCL 脚本。而对后者的处理可以由 FPGA/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 强大的图形化仿真、分析功能,分析此设计模型的正确性,完成模型仿真。在这里与一般的 Matlab Simulink 建模过程几乎没有什么区别,所不同的是设计模型库采用 Altera DSP Builder 的 Simulink 库。第三步是 DSP Builder 设计实现的关键一步,通过 SignalCompiler 把Simulink 的模型文件(后缀为.mdl)转化成通用的硬件描述语言 VHDL 文件(后缀为.vhd)或 Verilog 文件。由于 EDA 工具软件(诸如 Quartus II、ModelSim)不能直接处理 Matlab 的.mdl 文件,这就需要一个转换过程。转换获得的 HDL 文件是基于 RTL 级(寄存器传输级)的 VHDL 描述。再接下来的几个步骤是对以上设计产生的 VHDL 的 RTL 代码和仿真文件进行综合、编译适配以及仿真。为了针对不同用户的设计目的和设计要求,DSP Builder 提供了两种不同的设计流程,主要可以分为自动流程和手动流程。如果采用 DSP Builder 的自动流程,几乎可以忽略硬件的具体实现过程,可以选择让 DSP Builder 自动调用 Quartus II 等 EDA 设计软件,完成综合(Synthesis) 、网表(ATOM Netlist)生成和 Quartus II 适配,甚至在 Matlab 中完成 FPGA 的配置下载过程。如果希望使用其它第三方的 VHDL 综合器和仿真器(除Synplify、LeonardoSpectrum 和 Quartus II 综合器及 ModelSim 外) ,或是希望完成特定的适配设置,如逻辑锁定、时序驱动编译、ESB 特定功能应用等,可以选用手动流程设计。在手动流程中,设计者可以灵活地指定综合、适配条件。不过,需要手动地调用 VHDL 综合器进行综合,调用 Quartus II 进行适配,调用 ModelSim 或者Quartus II 进行仿真,最后用 Quartus II 产生相应的编程文件用于 FPGA 的配置。采用手动流程时,除了行为级仿真验证和设计输入外,其它过程与标准的基于 VHDL 的 EDA 设计流程是完全一致的。由上一步 DSP Builder 设计流程得到的 VHDL 文件(由 Simulink 模型文件*.mdl 通过 SignalCompiler 转换而成的) ,送入综合器进行综合。综合器可以是 Synplify PRO,也可以是LeonardoSpectrum,或者是 Altera 自己的 Quartus II。在综合时,可以需要对综合器进行配置或者提供综合的约束条件。由于这个过程操作可能比较繁琐,所以 DSP Builder 的 SignalCompiler 相应提供了一个接口,针对设计,自动产生一个 TCL 脚本与综合器 Synplify 或 LeonardoSpectrum 相接。综合器在综合操作后会产生一个网表文件,以供下一个流程使用。这里产生的网表文件成为 ATOM 网表文件,主要是 EDIF 网表文件(.edf 电子设计交换格式文件)或 VQM(.vqm Verilog Quartus Mapping File) ,它们是一种参数可设置的,并含有具体器件系列的硬件特征(如逻辑宏单元 LCs、I/O 单元、乘积项、嵌入式系统块 ESB 等)的网表文件。Quartus II 可以利用这些 ATOM 网表文件针对特定的具体器件进行适配,包括布线、布局、结构优化等操作,最后产生时序仿真文件和 FPGA 目标器件的编程和配置文件。在这一步,设计者可以在 Quartus II 中完成对 Pin(引脚)的锁定,更改一些约束条件。如果用 DSP Builder 产生的 DSP 模块只是庞大设计中的一个子模块,则可以在设计中调用 DSP Builder 产生的 VHDL 文件,以构成完整的设计。同时,一样可以使用 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 文件采用相同硬件描述语言,测试向量与该 DSP 模块在 Simulink 中的仿真激励相一致。通过ModelSim 仿真生成的 TestBench 可以验证生成的 VHDL 代码或 Verilog 代码与Simulink 中 DSP 模型的一致性。另外,DSP Builder 在产生 TestBench 的同时,还产生了针对 ModelSim 仿真的 Tcl 脚本文件来简化用户的操作,掩盖了ModelSim 仿真时的复杂性。在大部分情况下,Quartus II 对 DSP 模块适配后,需要再次验证适配后网表与 Simulink 中建立的 DSP 模型的一致性。这就需要再次使用 ModelSim 进行仿真,这是仿真采用 Quartus II 适配后带延时信息的网表文件(EDIF 格式或VHDL、Verilog 格式) 。2.2.2 Matlab 的 FDATool 简介在这里使用 Matlab 的 FDATool 工具箱进行滤波器辅助设计,及滤波器性能的验证。FDATool(Filter Design and Analysis Tool)是 MATLAB 信号处理工具箱提供的一种综合、简便的图形用户工具。通过该工具提供的先进可视化滤波器集成设计环境,用户可以方便地设计几乎所有的常规滤波器,包括 FIR 和IIR 的各种设计方法。如图 3-2 所示,这是 FDATool 的启动界面。图 3-2 FDATool 的启动界面FDATool 的界面分上、下两个部分:上面部分显示有关滤波器的信息,下面部分用来指定设计指标参数。在 Response type 下可以选择滤波器类型,包括低通、高通、带通、带阻、微分器、Hilbert 变换器、多带、任意频率响应、升余弦等(如果安装了滤波器设计工具箱,则会有更多选项) 。在 Design Method 下可以选择设计 IIR 或 FIR 滤波器,每种滤波器又可以选择不同的设计方法(例如,IIR 滤波器的设计方法包括巴特沃斯、切比雪夫、椭圆滤波器、最大扁平、最小 P 阶范数等;FIR 滤波器的设计方法包括等波纹、最小均方、窗函数、最大扁平、最小 P 阶范数等) 。在 Filter Order 下可以选择滤波器阶数,可以使用满足要求的最小滤波器阶数或直接指定滤波器的阶数。根据前面两步中选择的设计方法,Options 下会显示与该方法对应的可调节参数。例如选择 FIR 等波纹设计法时,Options 面板的 Window 中可设置密度系数的大小。选择滤波器的类型、设计方法和滤波器阶数时,相应的设计指标及其含义会在 Filter Specifications 中用图形直观地显示出来以供设计参考。这些设计指标的具体参数需要在 Frequency Specifications 和 Magnitude Specifications 下明确指定。指定所有的设计指标后,单击 FDATool 最下面的 Design Filter 按钮即可完成滤波器设计。(设计完成后 Design Filter 按钮变为不可用,除非再次修改了设计指标) 。FIR 滤波器设计时的参数设置主要包括响应类型、滤波器阶次、频率参数、幅度参数及密度因子等其他选项。1) 响应类型在滤波器设计与分析工具 FDATool 中 FIR 滤波器响应类型可以设置为低通、高通、带阻、微分器、Hilbert 变换器、多带滤波器、任意幅度响应、升余弦、任意群延迟、半带低通、半带高通、奈奎斯特、逆 sinc 低通或逆 sinc 高通滤波器。2) 设计方法FIR 滤波器的设计方法可以选择为等波纹、最小均方、窗函数、最大扁平、最小 P 阶范数或约束等波纹。3) 滤波器阶次FIR 滤波器的阶次可以由用户指定,也可以选择最小滤波器阶次。4) 频率参数频率参数设置包括频率单位、采样频率、带通频率、带阻频率等。其中采样频率,带通频率,带阻频率可以由用户根据实际制定,而频率单位可以通过面板上的频率单位下拉框进行选择,主要包括归一化频率(0-1) 、Hz、 kHz、MHz 和 GHz 五种选项。5) 幅度参数设计低通、高通滤波器时,需要指定通带、阻带频率;设计带通滤波器时,需要指定阻带 1、通带、阻带 2 的频率;设计带阻滤波器时,需要指定通带1、阻带、通带 2 的频率。2.3 DSP Builder 设计 FIR 滤波器本节使用 DSP Builder 设计一个 FIR 滤波器,设计过程如下1、选择窗函数、设计滤波器系数。在这里使用 FDATool 工具辅助设计 FIR 滤波器,滤波器参数如下:低通滤波器;采用汉明窗的设计方法;阶数: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 选择汉明窗( Hamming) ;6) 在 Frequency Specification 中指定采样频率 Fs=1MHz,带通截至频率Fc=200kHz,滤波器基本参数设置如图 3-3 所示;图 3-3 滤波器基本参数设置7) 在设置量化系数(Set

温馨提示

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

评论

0/150

提交评论