正弦发生器模块方案

上传人:大米 文档编号:564769515 上传时间:2024-01-12 格式:DOC 页数:28 大小:1.57MB
返回 下载 相关 举报
正弦发生器模块方案_第1页
第1页 / 共28页
正弦发生器模块方案_第2页
第2页 / 共28页
正弦发生器模块方案_第3页
第3页 / 共28页
正弦发生器模块方案_第4页
第4页 / 共28页
正弦发生器模块方案_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《正弦发生器模块方案》由会员分享,可在线阅读,更多相关《正弦发生器模块方案(28页珍藏版)》请在金锄头文库上搜索。

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

2、弦波发生器模块的输出,送往D/A即可获得正弦波模拟输出信号。5.2.1建立设计模型1 )运行 Matlab, Matlab 的主窗口被分成 3 部分:Comma nd Win dow、 Workspace/Curre nt Directory 、Comma nd History 。 2 )建立工作目录。在建立一个新的 设计模型前,先要建立一个文件夹,作为工作目录,来保存相应的设计文件,在进行设计 之前要先切换到该文件夹下。新建和切换到工作目录可以在命令窗口中使用Matlab命令,也可以在 Current Directory 窗口中实现。3 )启动Simulink,建立模型。在命令窗口中, 键入

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

4、er。单击 Simulink库列表中的 Altera DSP,单击Altlab项,使之展开。选中 右侧窗口中的 Sig nalCompiler组件,按住鼠标左键拖放到新模型窗口中。也可以单击右键, 选择Add tountitled,这里untitled是指我们新建的未命名的模型文件。在选中SignalCompiler模块后,在Simulink窗口中的提示栏里会显示对应模块的说明,简单的功 能介绍。可以看到 SignalCompiler 的介绍为“Converts Model Files to VHDL files. 即为进行模型文件 mdl到VHDL文件的转换,所以 SignalCompile

5、r是进行任何 DSP系统设计必须 要添加的模块。选中SignalCompiler 选中 Help for the SignalCompiler block以了解怎样使用SignalCompiler的具体信息。也可以按照此方法获得其它的模块相应的帮助信息。5 )添加 In creme nt Decreme nt模块。In creme nt Decreme nt模块是 DSP Builder 库中Arithmetic子库中的模块。选中 Altera DSP Builder中的Arithmetic子库,然后在其中选择 In creme nt Decreme nt模块。然后按照添加 Sig nalCo

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

7、in起始值:步进值:结束值)H Block Parameters: SinLUTp? |fx |LUT llter&Elcck?et(liM)LUTStumm i Th*tus must bt urisicntdTh KATLAD Kmr rnr with i L truthUion ont-rrtfPtrmtttrlSinLUT70耐MtlttvjOutput number Qt biti,sLUT A derail ffid-thpw丄空些前灯iiU06?帀 Use LTK1s t e r Dataa ItBM ill! MB-I I 其中pi就是常数二,这是 Matlab中的语法。上式的

8、数值变化范围是-127+127,恰好是8位二进制数可以表示的最大值,所以8位的输出值位宽可以表示上式所描述的正弦波形。如果将SinLUT模块的总线数据类型设置为无符号整数Un sig ned In teger,且输出位宽改为10,若想得到完成满度的波形输出,应将表达式改为:511*sin(0:2*pi/2A6:2*pi+512选中” Use LPM ” LPM: Library of ParameterizedModules参数化模块),如果选中 ” Use LPM的话,Quartus II将利用目标器件中的嵌入式 RAM来构成SinLUT,即将生成的正弦波数据放在嵌入式RAM构成的ROM中,

9、这样可以节省大量的逻辑资源,否则SinLUT只能用芯片中的LCs来构成。选中” Register Address”,选中此选项会生成输入地址总线,如果目标器件是Straitix或者Cyclone ,并且选中了 LPM选项,用户必须选中 ” Register Address选项。eters: Delayr?TxDtla.7 Al t eYiElocJrStfm&Mk tl iiJi)De UrIiniii mt z & ptmntri dela?.r sDepthrUe C&M TCl I FloutsCl q ck Fluase Sal act iotl在Delay模块的参数设置的对话框中,参

10、数Depth是描述信号延时深度的参数。当Depth为1,模块传输函数为1/Z,通过Delay模块的信号被延时一个时钟周期;当 Depth为整 数n时,其传输函数为1 /Zn,通过Delay模块的信号将被延时n个时钟周期。Delay模块在硬件上采用寄存器来实现,所以Delay模块被放在Storage子库中。Clock PhaseSelection参数主要是控制采样的。当设置为1表示Delay模块总处于使能状态,所用的数据都通过Delay模块。如果设置为10则每隔一个脉冲处于使能状态,那么每隔一个的数据才能通过Delay模块。如设置为 0100,表示Delay模块在每4个时钟中第二个时钟是处于 使

11、能,那么每4个数据只有第二个数据可以通过。9 )添加断口 Sin Ctrl。在Altera DSPBuilder库中选择10 & BUS子库,找到 AltBus模块,拖放到新建模型窗口中。修改AltBus模块的名字为Sin Ctrl。Sin Ctrl是一个1位输入端口。双击 Sin Ctrl模块,打开模块参数设 置对话窗口。设置 SI nCtrl 的 Bus Type 为” Si ngle Bit, Node Type 参数为 ” In put Port。” 10 )添加Product乘法)模块。在 Altera DSP Builder 库中选择 Arithmetic 子库,找到 Produc

12、t 模块。将之拖放到新建模型窗口中去,这里Product有两个输入一个是经过Delay的SinLUT输出,另一个是一位端口Sin Ctrl,Product实现了 Sin Ctrl对Sin LUT查找表输出的控制。双击Product模块,打开Product模块参数设置对话框。其中Pipeline流水线)参数指定该乘法器模块使用几级流水线,即乘积延时几个时钟周期后输出,选中” Use LPM”表示使用参数化的模块库来实现,选择” Use Dedicated Circuitry表示可以使用FPGA中的专用模块来实现 (11添加输出端口 Out。在Altera DSP Builder库中,选择10 &

13、 BUS子库,找到 AltBus模块,拖放到信件模型窗口中,修改AltBus模块的名字为 Out。Out是一个8位输出端口,接到 FPGA的输出引脚,与片外的8位D/A转换器相接,D/A转换模块将数字信号转化成模拟信号。双击 Out模块,打开参数设置对话框,设置Out的Bus Type 为” Signed Integer” , Nod参数为 ” Output Port,然后单击 Apply,然后修改” Number of bits为8。Saturate选项如果被选中,则当输出大于要表达的值的最大正 值或负值,则输出被强制为最大的正值或负值。若此选项未被选中,则最高位MSB被截断。此选项对输入端

14、口和常数节点类型是无效的。12 )保存设计文件。放置完Out模块,把新建模型中的DSP Builder模块连接起来,这样就完成了一个正弦波发生器的DSP Builder模型设计。在进行仿真验证和SignalCompiler编译之前,先把设计保存起来。单击File菜单,选择Save操作,取名并保存。本例中,新建模型取名Sin out,生成模型文件Sinout.mdl。模型保存之后,先要对模型进行仿真验证,如通过验证,则使用SignalCompiler进行编译将 mdl文件转换为 VHDL文件。5.2.2 Simulink 模型仿真Matlab的Simulink环境具有强大的图形化仿真验证的功能。用DSP Builder模块设计好的模型,可以在simulink中进行算法级、系统级仿真验证。对一个模型进行仿真需要施加合 适的激励,在特定的观察点添加必须的观察模块。1.加入Step

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

当前位置:首页 > 商业/管理/HR > 商业计划书

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