基于FPGA的数字信号处理方法2Word文档下载推荐.docx
- 文档编号:21150680
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:16
- 大小:1.06MB
基于FPGA的数字信号处理方法2Word文档下载推荐.docx
《基于FPGA的数字信号处理方法2Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于FPGA的数字信号处理方法2Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
XilinxVIVADOHLS编译器为我们提供了与面向标准处理器或专用处理器的应用开发的编译器相类似的集成编译支持环境,XilinxVIVADOHLS与其他各种处理器编译器在对C语言程序或C++语言程序的编译、分析和优化拥有相同的关键技术,而区别在于应用所面向的执行目标。
通过把FPGA作为执行目标,XilinxVIVADOHLS使得软件开发工程师能够借助它来实现代码的优化,并且不受单一存储空间或者有限的开发资源这些开发瓶颈的限制,从而使得计算量密集型软件算法得以被实际应用。
XilinxVIVADOHLS所使用的应用代码同其他处理器编译器一样面向的范畴一样,通过操作语句、条件语句、循环语句、以及函数等4个范畴来分析程序。
在HLS中,循环和函数之间的主要区别是相关的术语。
系统的循环和函数并行执行。
而循环中,因为在循环迭代和运算符间有一个清晰的结构差异,这种转换通常称为流水线。
对函数而言,外循环和内循环相处于同一层次,这导致如果长期使用它可能会出现流水线混乱。
在使用HLS时,我们可以避免这种混乱,因为函数调用执行的并行化可以使得数据流优化。
数据流优化指令使得HLS在给定的程序层次结构中对所有的函数创建独立的硬件模块。
这些独立的硬件模块可以并行执行并且具有独立的同步数据传输过程。
除了XilinxVivadoHLS外Altera公司针对自己的器件也有OpenCL工具进行对C等高级语言设计自动编译。
2.2基于MATLAB的工具简介
AlteraDSPBuilder将TheMathWorksMATLAB和Simulink系统级设计工具的算法开发、仿真和验证功能与VHDL综合、仿真和Altera开发工具整合在一起,实现了这些工具的集成。
DSPBuilder在算法友好的开发环境中帮助设计人员生成DSP设计硬件表征,从而缩短了DSP设计周期。
已有的MATLAB函数和Simulink模块可以和AlteraDSPBuilder模块以及Altera知识产权(IP)MegaCore功能相结合,将系统级设计实现和DSP算法开发相链接。
DSPBuilder支持系统、算法和硬件设计共享一个公共开发平台。
设计人员可以使用DSPBuilder模块迅速生成Simulink系统建模硬件。
DSPBuilder包括比特和周期精度的Simulink模块,涵盖了算法和存储功能等基本操作。
可以使用DSPBuilder模型中的MegaCore功能实现复杂功能的集成。
DSPBuilder是一个系统级(或算法级)设计工具,它构架在多个软件工具之上,并把系统级和RTL级两个设计领域的设计工具连接起来,最大程度地发挥了两种工具的优势。
DSPBuilder依赖于MathWorks公司的数学分析工具Matlab/Simulink,以Simulink的Blockset出现,可以在Simulink中进行图形化设计和仿真,同时又通过SignalCompiler可以把Matlab/Simulink的设计文件(*.mdl)转成相应的硬件描述语言设计文件(*.v),以及用于控制综合与编译的TCL脚本。
而对后者的处理可以由FPGA/CPLD开发工具QuartusII来完成。
当选择Xilinx的FGPA进行设计时,可以选择XilinxSystemGenerator工具结合MATLAB进行设计。
2.2.1DSPBuilder系统级设计流程
DSPBuilder依赖于MathWorks公司的数学分析工具Matlab/Simulink,以Simulink的Blockset出现,可以在Simulink中进行图形化设计和仿真,同时又通过SignalCompiler可以把Matlab/Simulink的设计文件(.mdl)转成相应的硬件描述语言VHDL/Verilog设计文件(.vhd/.v),以及用于控制综合与编译的TCL脚本。
DSPBuilder系统级设计流程如图3-1所示:
图3-1DSPBuilder系统级设计流程图
DSPBuilder设计流程的第一步是在Matlab/Simulink中设计输入,即在Matlab的Simulink环境中建立一个mdl模型文件,用图形方式调用AlteraDSPBuilder和其它Simulink库中的图形模块,构建系统级或算法级设计框图(或称Simulink设计模型)。
在设计FIR滤波器时可以使用FDATool进行辅助设计,使得滤波器的设计更加简单方便。
第二步是利用Simulink强大的图形化仿真、分析功能,分析此设计模型的正确性,完成模型仿真。
在这里与一般的MatlabSimulink建模过程几乎没有什么区别,所不同的是设计模型库采用AlteraDSPBuilder的Simulink库。
第三步是DSPBuilder设计实现的关键一步,通过SignalCompiler把Simulink的模型文件(后缀为.mdl)转化成通用的硬件描述语言VHDL文件(后缀为.vhd)或Verilog文件。
由于EDA工具软件(诸如QuartusII、ModelSim)不能直接处理Matlab的.mdl文件,这就需要一个转换过程。
转换获得的HDL文件是基于RTL级(寄存器传输级)的VHDL描述。
再接下来的几个步骤是对以上设计产生的VHDL的RTL代码和仿真文件进行综合、编译适配以及仿真。
为了针对不同用户的设计目的和设计要求,DSPBuilder提供了两种不同的设计流程,主要可以分为自动流程和手动流程。
如果采用DSPBuilder的自动流程,几乎可以忽略硬件的具体实现过程,可以选择让DSPBuilder自动调用QuartusII等EDA设计软件,完成综合(Synthesis)、网表(ATOMNetlist)生成和QuartusII适配,甚至在Matlab中完成FPGA的配置下载过程。
如果希望使用其它第三方的VHDL综合器和仿真器(除Synplify、LeonardoSpectrum和QuartusII综合器及ModelSim外),或是希望完成特定的适配设置,如逻辑锁定、时序驱动编译、ESB特定功能应用等,可以选用手动流程设计。
在手动流程中,设计者可以灵活地指定综合、适配条件。
不过,需要手动地调用VHDL综合器进行综合,调用QuartusII进行适配,调用ModelSim或者QuartusII进行仿真,最后用QuartusII产生相应的编程文件用于FPGA的配置。
采用手动流程时,除了行为级仿真验证和设计输入外,其它过程与标准的基于VHDL的EDA设计流程是完全一致的。
由上一步DSPBuilder设计流程得到的VHDL文件(由Simulink模型文件*.mdl通过SignalCompiler转换而成的),送入综合器进行综合。
综合器可以是SynplifyPRO,也可以是LeonardoSpectrum,或者是Altera自己的QuartusII。
在综合时,可以需要对综合器进行配置或者提供综合的约束条件。
由于这个过程操作可能比较繁琐,所以DSPBuilder的SignalCompiler相应提供了一个接口,针对设计,自动产生一个TCL脚本与综合器Synplify或LeonardoSpectrum相接。
综合器在综合操作后会产生一个网表文件,以供下一个流程使用。
这里产生的网表文件成为ATOM网表文件,主要是EDIF网表文件(.edf电子设计交换格式文件)或VQM(.vqmVerilogQuartusMappingFile),它们是一种参数可设置的,并含有具体器件系列的硬件特征(如逻辑宏单元LCs、I/O单元、乘积项、嵌入式系统块ESB等)的网表文件。
QuartusII可以利用这些ATOM网表文件针对特定的具体器件进行适配,包括布线、布局、结构优化等操作,最后产生时序仿真文件和FPGA目标器件的编程和配置文件。
在这一步,设计者可以在QuartusII中完成对Pin(引脚)的锁定,更改一些约束条件。
如果用DSPBuilder产生的DSP模块只是庞大设计中的一个子模块,则可以在设计中调用DSPBuilder产生的VHDL文件,以构成完整的设计。
同时,一样可以使用QuartusII强大的逻辑锁定功能和SignalTap测试技术。
在DSPBuilder设计流程的最后一步,可以在DSPBuilder中直接下载到FPGA用户开发板上,或者通过QuartusII完成硬件的下载、测试。
在图3-1的流程中,其中有个流程在DSP设计中是不可或缺的,那就是HDL仿真。
与DSPBuilder可以配合使用的HDL仿真器是ModelSim。
DSPBuilder在生成VHDL代码或Verilog代码时,可以同时生成用于测试DSP模块的TestBench(测试平台)文件,DSPBuilder生成的TestBench文件采用相同硬件描述语言,测试向量与该DSP模块在Simulink中的仿真激励相一致。
通过ModelSim仿真生成的TestBench可以验证生成的VHDL代码或Verilog代码与Simulink中DSP模型的一致性。
另外,DSPBuilder在产生TestBench的同时,还产生了针对ModelSim仿真的Tcl脚本文件来简化用户的操作,掩盖了ModelSim仿真时的复杂性。
在大部分情况下,QuartusII对DSP模块适配后,需要再次验证适配后网表与Simulink中建立的DSP模型的一致性。
这就需要再次使用ModelSim进行仿真,这是仿真采用QuartusII适配后带延时信息的网表文件(EDIF格式或VHDL、Verilog格式)。
2.2.2Matlab的FDATool简介
在这里使用Matlab的FDATool工具箱进行滤波器辅助设计,及滤波器性能的验证。
FDATool(FilterDesignandAnalysisTool)是MATLAB信号处理工具箱提供的一种综合、简便的图形用户工具。
通过该工具提供的先进可视化滤波器集成设计环境,用户可以方便地设计几乎所有的常规滤波器,包括FIR和IIR的各种设计方法。
如图3-2所示,这是FDATool的启动界面。
图3-2FDATool的启动界面
FDATool的界面分上、下两个部分:
上面部分显示有关滤波器的信息,下面部分用来指定设计指标参数。
在Responsetype下可以选择滤波器类型,包括低通、高通、带通、带阻、微分器、Hilbert变换器、多带、任意频率响应、升余弦等(如果安装了滤波器设计工具箱,则会有更多选项)。
在DesignMethod下可以选择设计IIR或FIR滤波器,每种滤波器又可以选择不同的设计方法(例如,IIR滤波器的设计方法包括巴特沃斯、切比雪夫、椭圆滤波器、最大扁平、最小P阶范数等;
FIR滤波器的设计方法包括等波纹、最小均方、窗函数、最大扁平、最小P阶范数等)。
在FilterOrder下可以选择滤波器阶数,可以使用满足要求的最小滤波器阶数或直接指定滤波器的阶数。
根据前面两步中选择的设计方法,Options下会显示与该方法对应的可调节参数。
例如选择FIR等波纹设计法时,Options面板的Window中可设置密度系数的大小。
选择滤波器的类型、设计方法和滤波器阶数时,相应的设计指标及其含义会在FilterSpecifications中用图形直观地显示出来以供设计参考。
这些设计指标的具体参数需要在FrequencySpecifications和MagnitudeSpecifications下明确指定。
指定所有的设计指标后,单击FDATool最下面的DesignFilter按钮即可完成滤波器设计。
(设计完成后DesignFilter按钮变为不可用,除非再次修改了设计指标)。
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.3DSPBuilder设计FIR滤波器
本节使用DSPBuilder设计一个FIR滤波器,设计过程如下
1、选择窗函数、设计滤波器系数。
在这里使用FDATool工具辅助设计FIR滤波器,滤波器参数如下:
低通滤波器;
采用汉明窗的设计方法;
;
阶数:
N=32;
数据位宽为16bit,输出数据位宽为16bit;
采样速率fs=1MHz;
通带截止频率200kHz,衰减-6dB。
基本步骤如下:
1)在MATLAB命令窗口下输入“fdatool”命令,“回车”调出滤波器设计界面;
2)在ResponeType中选择低通滤波器(Lowpass);
3)在DesignMethod中选择FIR,同时在滤波器设计方法下拉框中选择窗函数(Window)设计方法;
4)在FilterOrder中选择特定滤波器阶次(SpecifyOrder),设置为32;
5)Options中Window选择汉明窗(Hamming);
6)在FrequencySpecification中指定采样频率Fs=1MHz,带通截至频率Fc=200kHz,滤波器基本参数设置如图3-3所示;
图3-3滤波器基本参数设置
7)在设置量化系数(Setquantizationparameters)中指定滤波器算法为固定点(Fiixed-points),并设置相应的系数和输入输出数据长度,量化系数设置如图3-4所示;
图3-4量化滤波器系数
8)单击“DesignFilter”即可完成滤波器设计。
9)最后,使用菜单【File/Export】可导出或保存滤波器系数h(n)。
2、完成模型设计、仿真验证
FDATool不仅提供了滤波器设计工具,而且还提供了滤波器时域与频域的特性分析工具。
接下来将对设计的滤波器的幅度响应、相位响应、群延迟响应、相位延迟、脉冲响应、阶跃响应、零极点图、滤波器系数,以及滤波器信息等进行分析。
1)幅度响应
单击FDATool窗口界面快捷工具栏的【MagnitudeResponse】按钮,或者选择菜单栏【Analysis/MagnitudeResponse】选项,就可以得到图3-5所示该型滤波器的幅度响应曲线。
图3-5滤波器的幅度响应曲线
2)相位响应
单击FDATool窗口界面快捷工具栏的【PhaseResponse】按钮,或者选择菜单栏【Analysis/PhaseResponse】选项,就可以得到图3-6所示该型滤波器的相位响应曲线。
图3-6滤波器的相位响应曲线
3)幅度与相位响应
单击FDATool窗口界面快捷工具栏的【MagnitudeandPhaseResponses】按钮,或者选择菜单栏【Analysis/MagnitudeandPhaseResponse】选项,就可以得到图3-7所示该型滤波器的幅度与相位响应曲线。
图3-7滤波器的幅度与相位响应曲线
4)群延迟
单击FDATool窗口界面快捷工具栏的【GroupDelayResponse】按钮,或者选择菜单栏【Analysis/GroupDelayResponse】选项,就可以得到图3-8所示该型滤波器的群延迟曲线。
图3-8滤波器的群延迟曲线
5)相位延迟
单击FDATool窗口界面快捷工具栏的【PhaseDelay】按钮,或者选择菜单栏【Analysis/PhaseDelay】选项,就可以得到图3-9所示该型滤波器的相位延迟曲线。
图3-9滤波器的相位延迟曲线
6)冲击响应
单击FDATool窗口界面快捷工具栏的【ImpulseResponse】按钮,或者选择菜单栏【Analysis/ImpulseResponse】选项,就可以得到图3-10所示该型滤波器的冲击响应曲线。
图3-10滤波器的冲击响应曲线
7)阶跃响应
单击FDATool窗口界面快捷工具栏的【StepResponse】按钮,或者选择菜单栏【Analysis/StepResponse】选项,就可以得到图3-11所示该型滤波器的阶跃响应曲线。
图3-11滤波器的阶跃响应曲线
8)零极点图
单击FDATool窗口界面快捷工具栏的【Pole/ZeroPlot】按钮,或者选择菜单栏【Analysis/Pole/ZeroPlot】选项,就可以得到图3-12所示该型滤波器的零极点图。
图3-12滤波器的零极点图
9)滤波器系数
单击FDATool窗口界面快捷工具栏的【FilterCoefficient】按钮,或者选择菜单栏【Analysis/FilterCoefficient】选项,就可以得到图3-13所示该型滤波器的系数。
图3-13滤波器的系数
10)滤波器信息
单击FDATool窗口界面快捷工具栏的【FilterInformation】按钮,或者选择菜单栏【Analysis/FilterInformation】选项,就可以得到图3-14所示该型滤波器的信息。
图3-14滤波器的信息
11)滤波器对信号进行处理
假设有一信号x=sin(25000*2*pi*t)+sin(300000*2*pi*t)+sin(200000*2*pi*t),用我们设计好的FIR低通滤波器滤掉其高频部分,输出结果如图3-15所示。
图3-15滤波器输入和输出对比
从图3-15中的输出结果可以看出,在信号通过FIR低通滤波器后,通带内的25kHz信号没有衰减;
位于阻带内的300kHz信号,正如我们预先设计的,幅度几乎等于0;
位于通带截至频率上的200kHz信号衰减了大约6dB。
3.使用SingalCompiler直接生成VerilogHDL文件
如图3-16所示,直接在FDATool中生成VerilogHDL文件。
图3-16生成VerilogHDL文件
如图3-17所示,直接在FDATool中生成TestBench文件,并生成ModelSim与Simulink的联合仿真模型,如图3-18所示。
图3-17生成TestBench文件
3-18ModelSim与Simulink的联合仿真模型
使用Matlab中生成x=sin(25000*2*pi*t)+sin(400000*2*pi*t)信号,在ModelSim和Simulink中进行联合仿真,图3-19是Matlab输入和输出信号的频域表示,图3-20是ModelSim仿真结果,可以看出在ModelSim中的仿真结果与Matlab中的结果相符,高频信号被滤除。
图3-19Matlab输入和输出信号的频域表示
图3-20ModelSim仿真结果
4、使用QuartusII进行综合、烧写
5、使用SignalTapII对设计结果进行查看
在这里将在FDATool中生成的Verilog文件进行引脚和其它的设置,然后进行编译、综合,在下载到目标板子上之后,给予输入数据信号,使用SignalTapII对设计结果进行查看,过程与前面VIVADOHLS一样,这里不再叙述。
分析结果,使用DSPBuilder进行相关设计时,可以使用Matlab和Simulink提供的各种方便的图形化工具或者函数,使得模块或算法实现变得异常简单,并能在短时间内产生相关VHDL代码,且能达到相当的优化水平,大大缩短了开发时间和硬件描述语言的开发难度。
3参考学习
[1]《数字信号处理的FPGA实现》,UweMeyer-Baese著,清华大学出版社
[2]Xilinx官方网站
[3]Altera官方网站
[4]NI官方网站
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 数字信号 处理 方法