版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第5章章 基于基于fpga的的dsp开发技术开发技术vdsp builder可以帮助用户完成基于可以帮助用户完成基于fpga的的dsp系统设计,除了可以进行图形化的系统系统设计,除了可以进行图形化的系统建模外,建模外,dsp builder还可以自动完成大部还可以自动完成大部分的设计过程和仿真,直至把设计文件下载分的设计过程和仿真,直至把设计文件下载到到fpga芯片中。芯片中。v一方面,经由一方面,经由matlab/dsp builder和和 quartus ii软软件工具开发的件工具开发的dsp模块或其它功能模块可以成为单模块或其它功能模块可以成为单片片fpga电路系统的一个组成部分,可以
2、承担一定电路系统的一个组成部分,可以承担一定的功能;的功能;v另一方面可以通过另一方面可以通过matlab/dsp builder,为,为nios嵌嵌入式处理器设计各类加速器,并以指令的形式加入入式处理器设计各类加速器,并以指令的形式加入到到nios ii的指令系统,从而成为的指令系统,从而成为nios ii系统的一个系统的一个接口设备,与整个片内嵌入式系统融为一体,即利接口设备,与整个片内嵌入式系统融为一体,即利用用dsp builder和和nios ii cpu,用户可以根据项目,用户可以根据项目的具体要求,随心所欲地构建自己的的具体要求,随心所欲地构建自己的dsp处理器系处理器系统。统。
3、5.1 基于基于 matlabdsp builder的的dsp模块模块设计流程设计流程vdsp builder是一个系统级(算法级)设计是一个系统级(算法级)设计工具,但同时它把系统级(算法仿真建模)工具,但同时它把系统级(算法仿真建模)和和rtl级(硬件实现)的设计工具连接起来,级(硬件实现)的设计工具连接起来,使算法开发到硬件的实现可以无缝地过渡。使算法开发到硬件的实现可以无缝地过渡。使用使用matlab/dsp builder进行进行dsp系统的开系统的开发必须要安装发必须要安装matlab和和dsp builder软件。软件。vdsp builder设计包括两套流程:自动流程和手动流程
4、: 设计流程的第一步设计流程的第一步v在在matlab/simulink中进行设计输入,在中进行设计输入,在matlab/simulink中建立一个模型文件(中建立一个模型文件(mdl文件),用图形方式调用文件),用图形方式调用dsp builder和其和其它它simulink库中的模块,构成系统级或算法库中的模块,构成系统级或算法级设计框图。利用级设计框图。利用simulink的图形化仿真、的图形化仿真、分析功能,分析此设计模型的正确性,完成分析功能,分析此设计模型的正确性,完成模型仿真。第一步设计同一般的模型仿真。第一步设计同一般的matlab/simulink建模过程几乎没什么区别,建模
5、过程几乎没什么区别,所不同的是,设计采用了所不同的是,设计采用了dsp builder库。库。设计流程设计流程第二步v通过通过signalcompiler把把simulink的模型文件的模型文件转化为硬件描述语言文件,以供其它的转化为硬件描述语言文件,以供其它的eda(quartus ii、modelsim 等)软件处理,这等)软件处理,这些软件不能直接处理些软件不能直接处理matlab/simulink产生的产生的模型文件,那么模型文件,那么dsp builder中的中的signalcompiler模块用于完成模型文件到硬模块用于完成模型文件到硬件描述语言文件的转换,转换之后的件描述语言文件
6、的转换,转换之后的hdl文文件是件是rtl级(寄存器传输级,即可综合的格级(寄存器传输级,即可综合的格式)。式)。设计流程的第三步v执行执行rtl级的仿真,级的仿真,dsp builder 支持自动支持自动流程的流程的modelsim仿真。用户也可以利用第仿真。用户也可以利用第二步产生的二步产生的vhdl文件使用其它的仿真工具文件使用其它的仿真工具软件手动地进行仿真。软件手动地进行仿真。设计流程的第四步v使用第二步使用第二步signalcompiler产生的产生的vhdl文件进行文件进行rtl级的综合,网表产生和适配等处理,级的综合,网表产生和适配等处理,dsp builder支持自动流程和手
7、动流程两种方式:自动支持自动流程和手动流程两种方式:自动流程中可以选择让流程中可以选择让dsp builder自动调用自动调用quartus ii等等eda软件来完成相应的工作;手动模式允许用户软件来完成相应的工作;手动模式允许用户选择相应的软件来完成相应的工作,手动模式需要选择相应的软件来完成相应的工作,手动模式需要更多的干预,同时提供了更大的灵活性,用户可以更多的干预,同时提供了更大的灵活性,用户可以指定综合、适配等过程的条件。指定综合、适配等过程的条件。 v第三步和第四步可以不分先后。第三步和第四步可以不分先后。 设计流程的第五步v在在quartus ii中编译用户的设计,最后将设中编译
8、用户的设计,最后将设计下载,进行测试验证。计下载,进行测试验证。v经过测试、验证的设计可以单独执行相应的经过测试、验证的设计可以单独执行相应的dsp功能。如果功能。如果dsp builder产生的产生的dsp模模型只是整个设计中的一个子模块,那么可以型只是整个设计中的一个子模块,那么可以在设计中调用在设计中调用dsp builder产生的产生的vhdl文件,文件,以构成完成的设计。以构成完成的设计。5.2 正弦发生器模块的设计正弦发生器模块的设计v通过本例的学习可以掌握通过本例的学习可以掌握dsp builder的使用方法。的使用方法。这个简单的正弦波发生器,主要由这个简单的正弦波发生器,主要
9、由4部分构成:部分构成:inccount是阶梯信号发生模块,产生一个按时钟线是阶梯信号发生模块,产生一个按时钟线性递增的地址信号,送往性递增的地址信号,送往sinlut。sinlut是一个是一个正弦函数值的查找表模块,由递增的地址获得正弦正弦函数值的查找表模块,由递增的地址获得正弦波的离散值输出。由波的离散值输出。由sinlut输出的输出的8位正弦波数据位正弦波数据经过一个延时模块经过一个延时模块delay后,送往后,送往product乘法模块,乘法模块,与与sinctrl相乘,相乘,sinctrl是一位输入,是一位输入,sinctrl通过通过product完成对正弦波输出有无的控制。完成对正
10、弦波输出有无的控制。sinout是是整个正弦波发生器模块的输出,送往整个正弦波发生器模块的输出,送往d/a即可获得即可获得正弦波模拟输出信号。正弦波模拟输出信号。5.2.1 建立设计模型 v(1)运行)运行matlab,matlab的主窗口被分成的主窗口被分成3部分:部分:command window、workspace/current directory、command history。v(2)建立工作目录。在建立一个新的设计模型前,)建立工作目录。在建立一个新的设计模型前,先要建立一个文件夹,作为工作目录,来保存相应先要建立一个文件夹,作为工作目录,来保存相应的设计文件,在进行设计之前要先
11、切换到该文件夹的设计文件,在进行设计之前要先切换到该文件夹下。新建和切换到工作目录可以在命令窗口中使用下。新建和切换到工作目录可以在命令窗口中使用matlab 命令,也可以在命令,也可以在current directory窗口中窗口中实现。实现。v(3) 启动启动simulink,建立模型。,建立模型。v在命令窗口中,键入在命令窗口中,键入simulink,按回车键,启动,按回车键,启动matlab图图形化仿真工具形化仿真工具simulink,出现了,出现了simulink library browser窗口,在窗口的左侧为窗口,在窗口的左侧为simulink library 列表,右列表,右
12、侧窗口显示的则是,被选中的库中的组件、子模块列表。安侧窗口显示的则是,被选中的库中的组件、子模块列表。安装完装完dsp builder之后,在之后,在simulink 库列表中可以看到库列表中可以看到altera dsp builder的库出现在列表中。在下面设计中,主的库出现在列表中。在下面设计中,主要使用该库中的组件、模块来完成各项设计,再使用要使用该库中的组件、模块来完成各项设计,再使用simulink库来完成模型的仿真和验证。库来完成模型的仿真和验证。v 选择选择file菜单,然后单击菜单,然后单击new,在弹出的子菜单中选择,在弹出的子菜单中选择model,出现了一个未命名的模型窗口
13、。,出现了一个未命名的模型窗口。v(4) 放置放置 signalcompiler。单击。单击simulink库列表中的库列表中的altera dsp ,单击,单击altlab项,使之展开。选中右侧窗口中的项,使之展开。选中右侧窗口中的signalcompiler组件,按住鼠标左键拖放到新模型窗口中。组件,按住鼠标左键拖放到新模型窗口中。也可以单击右键,选择也可以单击右键,选择add to untitled,这里,这里untitled是指我们新建的未命名的模型文件。是指我们新建的未命名的模型文件。v在选中在选中signalcompiler模块后,在模块后,在simulink窗口中的提示窗口中的提
14、示栏里会显示对应模块的说明,简单的功能介绍。可以看到栏里会显示对应模块的说明,简单的功能介绍。可以看到signalcompiler的介绍为的介绍为 “converts model files to vhdl files.” 即为进行模型文件即为进行模型文件mdl到到vhdl文件的转换,文件的转换,所以所以signalcompiler是进行任何是进行任何dsp系统设计必须要添加系统设计必须要添加的模块。选中的模块。选中signalcompiler选中选中help for the signalcompiler block。可以了解怎样使用。可以了解怎样使用signalcompiler的具体信息。也
15、可以按照此方法获得其它的具体信息。也可以按照此方法获得其它的模块相应的帮助信息。的模块相应的帮助信息。v(5)添加)添加increment decrement模块。模块。increment decrement模块是模块是dsp builder库中库中arithmetic子库中的模块。选中子库中的模块。选中altera dsp builder中的中的arithmetic子库,然后在子库,然后在其中选择其中选择increment decrement模块。然后模块。然后按照添加按照添加signalcompiler的方法将的方法将increment decrement添加到模型文件中。添加到模型文件中
16、。v(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位,输出值位宽为8位的
17、正弦查找表模块,且输入地址总线为有符号数,所以设置起始值为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 parameter
18、ized 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子库下的delay模块,拖放到新建模型窗口
19、。delay模块可以实现延时的功能,在这里可以使用其默认参数设置。v在在delay模块的参数设置的对话框中,参数模块的参数设置的对话框中,参数depth是描述信是描述信号延时深度的参数。当号延时深度的参数。当depth为为1,模块传输函数为,模块传输函数为1/z,通,通过过delay模块的信号被延时一个时钟周期;当模块的信号被延时一个时钟周期;当depth为整数为整数n时,其传输函数为时,其传输函数为1zn,通过,通过delay模块的信号将被延时模块的信号将被延时n个时钟周期。个时钟周期。delay模块在硬件上采用寄存器来实现,所以模块在硬件上采用寄存器来实现,所以delay模块被放在模块被放
20、在storage子库中。子库中。vclock phase selection 参数主要是控制采样的。当设置为参数主要是控制采样的。当设置为1表示表示delay模块总处于使能状态,所用的数据都通过模块总处于使能状态,所用的数据都通过delay模块。如果设置为模块。如果设置为10则每隔一个脉冲处于使能状态,那么每则每隔一个脉冲处于使能状态,那么每隔一个的数据才能通过隔一个的数据才能通过delay模块。如设置为模块。如设置为0100,表示,表示delay模块在每模块在每4个时钟中第二个时钟是处于使能,那么每个时钟中第二个时钟是处于使能,那么每4个数据只有第二个数据可以通过。个数据只有第二个数据可以通
21、过。v(9)添加端口)添加端口sinctrl。在。在altera dsp builder库中选择库中选择io & bus子库,找到子库,找到altbus模块,拖放到新建模型窗口中。修改模块,拖放到新建模型窗口中。修改altbus模块的名字为模块的名字为sinctrl。sinctrl是一是一个个1位输入端口。双击位输入端口。双击sinctrl模块,打开模模块,打开模块参数设置对话窗口。设置块参数设置对话窗口。设置sinctrl的的bus type为为”single bit”,node type参数参数为为”input port”。v(10)添加)添加product(乘法)模块。在(乘法)模块。在
22、altera dsp builder库中选择库中选择arithmetic子子库,找到库,找到product模块。模块。v将之拖放到新建模型窗口中去,这里将之拖放到新建模型窗口中去,这里product有两有两个输入一个是经过个输入一个是经过delay的的sinlut输出,另一个是输出,另一个是一位端口一位端口sinctrl,product实现了实现了sinctrl对对sinlut查找表输出的控制。双击查找表输出的控制。双击product模块,打模块,打开开product模块参数设置对话框。其中模块参数设置对话框。其中pipeline(流水线)参数指定该乘法器模块使用几级流水线,(流水线)参数指定
23、该乘法器模块使用几级流水线,即乘积延时几个时钟周期后输出,选中即乘积延时几个时钟周期后输出,选中”use lpm”,表示使用参数化的模块库来实现,选,表示使用参数化的模块库来实现,选择择”use dedicated circuitry”表示可以使用表示可以使用fpga中的专用模块来实现中的专用模块来实现.v(11) 添加输出端口out。在altera dsp builder库中,选择io & bus子库,找到altbus模块,拖放到信件模型窗口中,修改altbus模块的名字为out。vout是一个是一个8位输出端口,接到位输出端口,接到fpga的输出引脚,的输出引脚,与片外的与片外的8位位d/
24、a转换器相接,转换器相接,d/a转换模块将数字转换模块将数字信号转化成模拟信号。双击信号转化成模拟信号。双击out模块,打开参数设模块,打开参数设置对话框,设置置对话框,设置out的的bus type为为”signed integer”, node type参数为参数为”output port”,然后,然后单击单击apply,然后修改,然后修改”number of bits”为为8。vsaturate选项如果被选中,则当输出大于要表达的选项如果被选中,则当输出大于要表达的值的最大正值或负值,则输出被强制为最大的正值值的最大正值或负值,则输出被强制为最大的正值或负值。若此选项未被选中,则最高位或
25、负值。若此选项未被选中,则最高位msb被截断。被截断。此选项对输入端口和常数节点类型是无效的。此选项对输入端口和常数节点类型是无效的。v(12)保存设计文件。放置完)保存设计文件。放置完out模块,把新建模模块,把新建模型中的型中的dsp builder模块连接起来,这样就完成了模块连接起来,这样就完成了一个正弦波发生器的一个正弦波发生器的dsp builder模型设计。在进模型设计。在进行仿真验证和行仿真验证和signalcompiler编译之前,先把设计编译之前,先把设计保存起来。单击保存起来。单击file菜单,选择菜单,选择save操作,取名并操作,取名并保存。本例中,新建模型取名保存。
26、本例中,新建模型取名sinout,生成模型文,生成模型文件件sinout.mdl。v模型保存之后,先要对模型进行仿真验证,如通过模型保存之后,先要对模型进行仿真验证,如通过验证,则使用验证,则使用signalcompiler进行编译将进行编译将mdl文件文件转换为转换为vhdl文件。文件。5.2.2 simulink模型仿真模型仿真vmatlab的的simulink环境具有强大的图形化仿环境具有强大的图形化仿真验证的功能。用真验证的功能。用dsp builder模块设计好模块设计好的模型,可以在的模型,可以在simulink中进行算法级、系中进行算法级、系统级仿真验证。对一个模型进行仿真需要施
27、统级仿真验证。对一个模型进行仿真需要施加合适的激励,在特定的观察点添加必须的加合适的激励,在特定的观察点添加必须的观察模块。观察模块。v1. 加入加入step模块模块v本例中,先加入一个本例中,先加入一个step(阶跃模块),来实现模(阶跃模块),来实现模拟拟sinctrl的按键使能操作。在的按键使能操作。在simulink的的simulink基本库中,选择基本库中,选择source子库,把其中的子库,把其中的step模块模块拖放到拖放到sinout模型窗口中去,并将其与模型窗口中去,并将其与sinctrl的输的输入端口相连。入端口相连。v注意:凡是来自注意:凡是来自altera dsp bu
28、ilder库以外的模块,库以外的模块,signalcompiler都不能将其转换成硬件描述语言的都不能将其转换成硬件描述语言的模块。模块。v2. 添加波形观察模块添加波形观察模块v在在simulink中选择中选择simulink库,展开库,展开simulink库,库,选中其中的选中其中的sinks子库,把子库,把scope(示波器)模块(示波器)模块拖放到拖放到sinout模型窗口中去。双击该模块,打开的模型窗口中去。双击该模块,打开的是一个是一个scope窗口。如图窗口。如图5-11所示,图中只有一个所示,图中只有一个信号的波形观察窗口,若希望可以多观察记录信号,信号的波形观察窗口,若希望可
29、以多观察记录信号,可以通过添加多个可以通过添加多个scope模块的方法来实现,也可模块的方法来实现,也可以通过修改以通过修改scope的参数来实现的参数来实现scope模块中的观模块中的观察窗口数。察窗口数。v 3. scope模块参数设置模块参数设置v用鼠标单击用鼠标单击scope模块窗口上侧工具栏的第模块窗口上侧工具栏的第二个按钮:二个按钮:parameters,弹出参数设置对话,弹出参数设置对话框,以进行参数设置。框,以进行参数设置。v在在scope参数设置对话框中有两个设置页:参数设置对话框中有两个设置页:general和和data history。在。在general页中,页中,改变
30、改变number of axes为为2。在单击。在单击ok按钮后,按钮后,可以看到可以看到scope窗口出现了两个波形观察窗。窗口出现了两个波形观察窗。每个观察窗可以独立地观察信号波形。同时每个观察窗可以独立地观察信号波形。同时scope模块也多了一个输入端,将模块也多了一个输入端,将sinctrl的的信号接到这一新增的输入端,作为参考信号。信号接到这一新增的输入端,作为参考信号。 v4. 设置仿真激励设置仿真激励v先设置模型的仿真激励。在先设置模型的仿真激励。在sinout模型中,模型中,只有一个输入端口只有一个输入端口sinctrl,需要设置与之相,需要设置与之相连的连的step模块。双击
31、模块。双击step模块,在弹出的模块,在弹出的step模块参数设置对话框中设置对其输入端模块参数设置对话框中设置对其输入端口口sinctrl施加的激励。施加的激励。v各参数值的含义如下:各参数值的含义如下:v阶跃时刻(阶跃时刻(step time):):step模块的输出在该时刻发生阶跃,默认值模块的输出在该时刻发生阶跃,默认值为为1,单位为秒。,单位为秒。v初始值(初始值(initial value):在阶跃时刻的之前的):在阶跃时刻的之前的step模块的输出值,默模块的输出值,默认值为认值为0。v终值(终值(final value):在阶跃时刻之后):在阶跃时刻之后step模块的输出值,默
32、认值为模块的输出值,默认值为1。v采样时刻(采样时刻(sample time):):step模块输出的采样频率。模块输出的采样频率。v设置设置step time为为30,则在,则在30秒时该模块会发生输出值的阶跃。初始值秒时该模块会发生输出值的阶跃。初始值设为设为0,那么在,那么在30秒时刻之前,不输出正弦波;终值设为秒时刻之前,不输出正弦波;终值设为1。sample time设为设为0,设为,设为0的话,在大的和小的时间间隔都进行采样,设成的话,在大的和小的时间间隔都进行采样,设成0的的模块被称作连续采样;设成模块被称作连续采样;设成1的话,则只在大的时间间隔上采样。选中的话,则只在大的时间间隔上采样。选中底部的两项选择:底部的两项选择:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版特色餐饮店铺出租管理协议3篇
- 2025版小额贷款抵押合同财务报告披露要求3篇
- 买卖合同纠纷代理词3篇
- 二零二五版荐知识产权担保交易合同集3篇
- 二零二五年度城市通勤车辆出租合作协议4篇
- 二零二五年度员工借款争议调解及劳动法执行合同
- 二零二五年度农业OEM产品种植与加工合同范本3篇
- 二零二五年度工业厂房租赁市场拓展合同范本3篇
- 二零二五年度光伏充电桩场地共享租赁合同3篇
- 2025年度仓储物流零星维修施工合同协议书3篇
- 湖北省黄石市阳新县2024-2025学年八年级上学期数学期末考试题 含答案
- 硝化棉是天然纤维素硝化棉制造行业分析报告
- 央视网2025亚冬会营销方案
- 《00541语言学概论》自考复习题库(含答案)
- 《无砟轨道施工与组织》 课件 第十讲双块式无砟轨道施工工艺
- 江苏省南京市、盐城市2023-2024学年高三上学期期末调研测试+英语+ 含答案
- 2024新版《药品管理法》培训课件
- 《阻燃材料与技术》课件 第7讲 阻燃橡胶材料
- 爆炸物运输安全保障方案
- 江苏省南京市2025届高三学业水平调研考试数学试卷(解析版)
- 2024年黑龙江省哈尔滨市中考数学试卷(附答案)
评论
0/150
提交评论