第5章基于FPGA的DSP开发(一)

上传人:qiuji****ngye 文档编号:46054670 上传时间:2018-06-21 格式:PPT 页数:48 大小:445KB
返回 下载 相关 举报
第5章基于FPGA的DSP开发(一)_第1页
第1页 / 共48页
第5章基于FPGA的DSP开发(一)_第2页
第2页 / 共48页
第5章基于FPGA的DSP开发(一)_第3页
第3页 / 共48页
第5章基于FPGA的DSP开发(一)_第4页
第4页 / 共48页
第5章基于FPGA的DSP开发(一)_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《第5章基于FPGA的DSP开发(一)》由会员分享,可在线阅读,更多相关《第5章基于FPGA的DSP开发(一)(48页珍藏版)》请在金锄头文库上搜索。

1、第5章 基于FPGA的DSP开发技术vDSP Builder可以帮助用户完成基于FPGA的 DSP系统设计,除了可以进行图形化的系统 建模外,DSP Builder还可以自动完成大部 分的设计过程和仿真,直至把设计文件下载 到FPGA芯片中。v一方面,经由Matlab/DSP Builder和 Quartus II软 件工具开发的DSP模块或其它功能模块可以成为单 片FPGA电路系统的一个组成部分,可以承担一定 的功能;v另一方面可以通过Matlab/DSP Builder,为Nios嵌 入式处理器设计各类加速器,并以指令的形式加入 到NIOS II的指令系统,从而成为Nios II系统的一个

2、 接口设备,与整个片内嵌入式系统融为一体,即利 用DSP Builder和Nios II CPU,用户可以根据项目 的具体要求,随心所欲地构建自己的DSP处理器系 统。5.1 基于 MATLABDSP Builder的DSP模块 设计流程vDSP Builder是一个系统级(算法级)设计 工具,但同时它把系统级(算法仿真建模) 和RTL级(硬件实现)的设计工具连接起来 ,使算法开发到硬件的实现可以无缝地过渡 。使用Matlab/DSP Builder进行DSP系统的 开发必须要安装Matlab和DSP Builder软件 。vDSP Builder设计包括两套流程:自动流程和 手动流程: 设计

3、流程的第一步v在Matlab/Simulink中进行设计输入,在 Matlab/Simulink中建立一个模型文件(mdl 文件),用图形方式调用DSP Builder和其 它Simulink库中的模块,构成系统级或算法 级设计框图。利用Simulink的图形化仿真、 分析功能,分析此设计模型的正确性,完成 模型仿真。第一步设计同一般的 Matlab/Simulink建模过程几乎没什么区别, 所不同的是,设计采用了DSP Builder库。设计流程第二步v通过SignalCompiler把Simulink的模型文件 转化为硬件描述语言文件,以供其它的EDA (Quartus II、ModelS

4、im 等)软件处理,这 些软件不能直接处理Matlab/Simulink产生的 模型文件,那么DSP Builder中的 SignalCompiler模块用于完成模型文件到硬 件描述语言文件的转换,转换之后的HDL文 件是RTL级(寄存器传输级,即可综合的格 式)。设计流程的第三步v执行RTL级的仿真,DSP Builder 支持自动 流程的ModelSim仿真。用户也可以利用第二 步产生的VHDL文件使用其它的仿真工具软 件手动地进行仿真。设计流程的第四步v使用第二步SignalCompiler产生的VHDL文件进行 RTL级的综合,网表产生和适配等处理,DSP Builder支持自动流程和

5、手动流程两种方式:自动流 程中可以选择让DSP Builder自动调用Quartus II等 EDA软件来完成相应的工作;手动模式允许用户选 择相应的软件来完成相应的工作,手动模式需要更 多的干预,同时提供了更大的灵活性,用户可以指 定综合、适配等过程的条件。 v第三步和第四步可以不分先后。 设计流程的第五步v在Quartus II中编译用户的设计,最后将设计 下载,进行测试验证。v经过测试、验证的设计可以单独执行相应的 DSP功能。如果DSP Builder产生的DSP模 型只是整个设计中的一个子模块,那么可以 在设计中调用DSP Builder产生的VHDL文件 ,以构成完成的设计。5.2

6、 正弦发生器模块的设计v通过本例的学习可以掌握DSP Builder的使用方法 。这个简单的正弦波发生器,主要由4部分构成: IncCount是阶梯信号发生模块,产生一个按时钟线 性递增的地址信号,送往SinLUT。SinLUT是一个 正弦函数值的查找表模块,由递增的地址获得正弦 波的离散值输出。由SinLUT输出的8位正弦波数据 经过一个延时模块Delay后,送往Product乘法模块 ,与SinCtrl相乘,SinCtrl是一位输入,SinCtrl通 过Product完成对正弦波输出有无的控制。SinOut 是整个正弦波发生器模块的输出,送往D/A即可获 得正弦波模拟输出信号。5.2.1

7、建立设计模型 v(1)运行Matlab,Matlab的主窗口被分成3部分: Command Window、Workspace/Current Directory、Command History。v(2)建立工作目录。在建立一个新的设计模型前 ,先要建立一个文件夹,作为工作目录,来保存相 应的设计文件,在进行设计之前要先切换到该文件 夹下。新建和切换到工作目录可以在命令窗口中使 用Matlab 命令,也可以在Current Directory窗口 中实现。v(3) 启动Simulink,建立模型。v在命令窗口中,键入Simulink,按回车键,启动Matlab图 形化仿真工具Simulink,出

8、现了Simulink Library Browser 窗口,在窗口的左侧为Simulink Library 列表,右侧窗口显 示的则是,被选中的库中的组件、子模块列表。安装完DSP Builder之后,在Simulink 库列表中可以看到Altera DSP Builder的库出现在列表中。在下面设计中,主要使用该库 中的组件、模块来完成各项设计,再使用Simulink库来完成 模型的仿真和验证。v 选择File菜单,然后单击new,在弹出的子菜单中选择 Model,出现了一个未命名的模型窗口。v(4) 放置 SignalCompiler。单击Simulink库列表中的 Altera DSP

9、,单击Altlab项,使之展开。选中右侧窗口中的 SignalCompiler组件,按住鼠标左键拖放到新模型窗口中 。也可以单击右键,选择Add to untitled,这里untitled 是指我们新建的未命名的模型文件。v在选中SignalCompiler模块后,在Simulink窗口中的提示 栏里会显示对应模块的说明,简单的功能介绍。可以看到 SignalCompiler的介绍为 “Converts Model Files to VHDL files.” 即为进行模型文件mdl到VHDL文件的转换, 所以SignalCompiler是进行任何DSP系统设计必须要添加 的模块。选中Sign

10、alCompiler选中Help for the SignalCompiler block。可以了解怎样使用 SignalCompiler的具体信息。也可以按照此方法获得其它 的模块相应的帮助信息。v(5)添加Increment Decrement模块。 Increment Decrement模块是DSP Builder 库中Arithmetic子库中的模块。选中Altera DSP Builder中的Arithmetic子库,然后在其 中选择Increment Decrement模块。然后按 照添加SignalCompiler的方法将Increment Decrement添加到模型文件中。v

11、(7)添加正弦查找表。在Altera DSP Builder库的Gate &Control子库中找到查找表 模块LUT,把LUT拖放到新建模型窗口,将 LUT模块的名字修改为“SinLUT”。v双击SInLUT模块,打开模块参数设置对话框 “Block Parameters: SinLUT”。把输出位宽 设为8;查找表地址设为6;总线数据类型 Bus Type选择为有符号整数 Signed Integer ;在Matlab Array编辑框中输入计算查找表内 容的计算式。在这里使用sin函数,sin函数的 调用格式为:sin(起始值:步进值:结束值)vSinLUT是一个输入地址为6位,输出值位

12、宽为8位的正弦查找表模块,且 输入地址总线为有符号数,所以设置起始值为0,结束值为2,步进值 为,计算式可写成:127*sin(0:2*pi/26:2*pi)v其中pi就是常数,这是Matlab中的语法。上式的数值变化范围是-127 +127,恰好是8位二进制数可以表示的最大值,所以8位的输出值位宽可 以表示上式所描述的正弦波形。v如果将SinLUT模块的总线数据类型设置为无符号整数Unsigned Integer ,且输出位宽改为10,若想得到完成满度的波形输出,应将表达式改为 :511*sin(0:2*pi/26:2*pi)+512v选中”Use LPM”(LPM: Library of

13、Parameterized Modules 参数化模块 ),如果选中”Use LPM”的话,Quartus II 将利用目标器件中的嵌入式 RAM来构成SinLUT,即将生成的正弦波数据放在嵌入式RAM构成的 ROM中,这样可以节省大量的逻辑资源,否则SinLUT只能用芯片中的 LCs来构成。v选中”Register Address”,选中此选项会生成输入地址总线,如果目标器 件是Straitix或者Cyclone,并且选中了LPM选项,用户必须选中 ”Register Address”选项。v(8)添加Delay模块。在Altera DSP Builder 库中,选中Storage子库下的D

14、elay模块,拖 放到新建模型窗口。Delay模块可以实现延时 的功能,在这里可以使用其默认参数设置。v在Delay模块的参数设置的对话框中,参数Depth是描述信 号延时深度的参数。当Depth为1,模块传输函数为1/Z,通 过Delay模块的信号被延时一个时钟周期;当Depth为整数n 时,其传输函数为1Zn,通过Delay模块的信号将被延时n 个时钟周期。Delay模块在硬件上采用寄存器来实现,所以 Delay模块被放在Storage子库中。vClock Phase Selection 参数主要是控制采样的。当设置为 1表示Delay模块总处于使能状态,所用的数据都通过Delay 模块。

15、如果设置为10则每隔一个脉冲处于使能状态,那么每 隔一个的数据才能通过Delay模块。如设置为0100,表示 Delay模块在每4个时钟中第二个时钟是处于使能,那么每4 个数据只有第二个数据可以通过。v(9)添加端口SinCtrl。在Altera DSP Builder库中选择IO & BUS子库,找到 AltBus模块,拖放到新建模型窗口中。修改 AltBus模块的名字为SinCtrl。SinCtrl是一 个1位输入端口。双击SinCtrl模块,打开模 块参数设置对话窗口。设置SInCtrl的Bus Type为”Single Bit”,Node Type参数为 ”Input Port”。v(

16、10)添加Product(乘法)模块。在 Altera DSP Builder库中选择Arithmetic子 库,找到Product模块。v将之拖放到新建模型窗口中去,这里Product有两 个输入一个是经过Delay的SinLUT输出,另一个是 一位端口SinCtrl,Product实现了SinCtrl对 SinLUT查找表输出的控制。双击Product模块,打 开Product模块参数设置对话框。其中Pipeline( 流水线)参数指定该乘法器模块使用几级流水线, 即乘积延时几个时钟周期后输出,选中”Use LPM” ,表示使用参数化的模块库来实现,选择”Use Dedicated Circuitry”表示可以使用FPGA中的专用 模块来实现.v(11) 添加输出端口Out。在Altera DSP Builder库中,选择IO & BUS子库,找到 AltBus模块,拖放到信件模型窗口中,修改 AltBus模块的名字为Out。vOut是一个8位输出端口,接到FPGA的输出引脚, 与片外的8位D/A转换器相接,D/A

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号