2022年正弦发生器模块方案 .pdf
《2022年正弦发生器模块方案 .pdf》由会员分享,可在线阅读,更多相关《2022年正弦发生器模块方案 .pdf(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、个人资料整理仅限学习使用SinCtrlAlteraDSPBuilderProductSignalTapII通过本例的学习可以掌握DSP Builder 的使用方法。这个简单的正弦波发生器,主要由4部分构成: IncCount 是阶梯信号发生模块,产生一个按时钟线性递增的地址信号,送往SinLUT。SinLUT 是一个正弦函数值的查找表模块,由递增的地址获得正弦波的离散值输出。由 SinLUT 输出的 8 位正弦波数据经过一个延时模块Delay 后,送往 Product 乘法模块,与SinCtrl 相乘, SinCtrl 是一位输入,SinCtrl 通过 Product 完成对正弦波输出有无的控
2、制。SinOut 是整个正弦波发生器模块的输出,送往D/A 即可获得正弦波模拟输出信号。5.2.1 建立设计模型1 )运行 Matlab ,Matlab 的主窗口被分成3 部分: Command Window、Workspace/Current Directory、Command History。2 )建立工作目录。在建立一个新的设计模型前,先要建立一个文件夹,作为工作目录,来保存相应的设计文件,在进行设计之前要先切换到该文件夹下。新建和切换到工作目录可以在命令窗口中使用Matlab 命令,也可以在 Current Directory窗口中实现。 3 )启动 Simulink ,建立模型。在命
3、令窗口中,键入 Simulink ,按回车键,启动Matlab 图形化仿真工具Simulink ,出现了Simulink Library Browser窗口,在窗口的左侧为Simulink Library 列表,右侧窗口显示的则是,被选中的库中的组件、子模块列表。安装完DSP Builder 之后,在Simulink 库列表中可以看到 Altera DSP Builder的库出现在列表中。在下面设计中,主要使用该库中的组件、模块来完成各项设计,再使用Simulink 库来完成模型的仿真和验证。选择File 菜单,然后单击new,在弹出的子菜单中选择Model ,出现了一个未命名的模型窗口。4
4、)放置SignalCompiler 。单击 Simulink 库列表中的Altera DSP ,单击 Altlab 项,使之展开。选中右侧窗口中的SignalCompiler组件,按住鼠标左键拖放到新模型窗口中。也可以单击右键,选择 Add to untitled,这里 untitled是指我们新建的未命名的模型文件。在选中SignalCompiler模块后,在Simulink 窗口中的提示栏里会显示对应模块的说明,简单的功能介绍。可以看到SignalCompiler的介绍为“Converts Model Files to VHDL files.” 即为进行模型文件mdl 到 VHDL 文件的
5、转换,所以SignalCompiler是进行任何DSP 系统设计必须要添加的模块。选中SignalCompiler选中 Help for the SignalCompiler block。可以了解怎样使用 SignalCompiler的具体信息。也可以按照此方法获得其它的模块相应的帮助信息。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 24 页个人资料整理仅限学习使用5 )添加 Increment Decrement模块。 Increment Decrement模块是 DSP Builder 库中Arithmetic子库中的模块。选中
6、Altera DSP Builder中的 Arithmetic子库,然后在其中选择Increment Decrement模块。然后按照添加SignalCompiler的方法将Increment Decrement 添加到模型文件中。7 )添加正弦查找表。在Altera DSP Builder库的 Gate &Control子库中找到查找表模块LUT,把 LUT 拖放到新建模型窗口,将LUT 模块的名字修改为“ SinLUT ”。双击 SInLUT 模块,打开模块参数设置对话框“Block Parameters: SinLUT” 。把输出位宽设为8;查找表地址设为6;总线数据类型Bus Type
7、 选择为有符号整数 Signed Integer;在 Matlab Array编辑框中输入计算查找表内容的计算式。在这里使用sin 函数, sin 函数的调用格式为:sin 其中 pi 就是常数,这是 Matlab 中的语法。上式的数值变化范围是 -127+127 ,恰好是8 位二进制数可以表示的最大值,所以8 位的输出值位宽可以表示上式所描述的正弦波形。如果将SinLUT 模块的总线数据类型设置为无符号整数Unsigned Integer ,且输出位宽改为10,若想得到完成满度的波形输出,应将表达式改为:511*sin(0:2*pi/26:2*pi+512 选中 ” Use LPM ” LP
8、M: Library of Parameterized Modules 参数化模块),如果选中” Use LPM ”的话, Quartus II 将利用目标器件中的嵌入式RAM 来构成 SinLUT,即将生成的正弦波数据放在嵌入式RAM 构成的 ROM 中,这样可以节省大量的逻辑资源,否则SinLUT 只能用芯片中的LCs 来构成。选中”Register Address” ,选中此选项会生成输入地址总线,如果目标器件是Straitix 或者 Cyclone ,并且选中了LPM选项,用户必须选中”Register Address”选项。 8 )添加 Delay 模块。在Altera DSP Bu
9、ilder 库中,选中Storage 子库下的Delay 模块,拖放到新建模型窗口。Delay 模块可以实现延时的功能,在这里可以使用其默认参数设置。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 24 页个人资料整理仅限学习使用在 Delay 模块的参数设置的对话框中,参数Depth 是描述信号延时深度的参数。当Depth为 1,模块传输函数为1/Z ,通过 Delay 模块的信号被延时一个时钟周期;当Depth 为整数 n 时,其传输函数为1Zn,通过 Delay 模块的信号将被延时n 个时钟周期。 Delay 模块在硬件上采用寄存
10、器来实现,所以Delay 模块被放在Storage 子库中。 Clock Phase Selection 参数主要是控制采样的。当设置为1 表示 Delay 模块总处于使能状态,所用的数据都通过 Delay 模块。如果设置为10 则每隔一个脉冲处于使能状态,那么每隔一个的数据才能通过 Delay 模块。如设置为0100,表示 Delay 模块在每4 个时钟中第二个时钟是处于使能,那么每4 个数据只有第二个数据可以通过。9 )添加断口SinCtrl。在 Altera DSP Builder 库中选择IO & BUS 子库,找到AltBus 模块,拖放到新建模型窗口中。修改AltBus模块的名字为
11、SinCtrl 。SinCtrl 是一个 1 位输入端口。双击SinCtrl 模块,打开模块参数设置对话窗口。设置SInCtrl 的 Bus Type 为”Single Bit”,Node Type 参数为 ”Input Port”。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 24 页个人资料整理仅限学习使用10 )添加 Product 乘法)模块。在Altera DSP Builder库中选择 Arithmetic子库,找到Product 模块。将之拖放到新建模型窗口中去,这里Product 有两个输入一个是经过Delay 的 S
12、inLUT 输出,另一个是一位端口SinCtrl ,Product 实现了 SinCtrl 对 SinLUT 查找表输出的控制。双击Product 模块,打开Product 模块参数设置对话框。其中Pipeline 添加输出端口Out。在 Altera DSP Builder库中,选择IO & BUS 子库,找到AltBus 模块,拖放到信件模型窗口中,修改AltBus 模块的名字为Out。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 24 页个人资料整理仅限学习使用Out 是一个 8 位输出端口,接到FPGA的输出引脚,与片外的8
13、位 D/A 转换器相接, D/A转换模块将数字信号转化成模拟信号。双击Out 模块,打开参数设置对话框,设置Out 的Bus Type 为” Signed Integer” , Node Type参数为 ” Output Port”,然后单击Apply ,然后修改”Number of bits”为 8。 Saturate 选项如果被选中,则当输出大于要表达的值的最大正值或负值,则输出被强制为最大的正值或负值。若此选项未被选中,则最高位MSB 被截断。此选项对输入端口和常数节点类型是无效的。12 )保存设计文件。放置完Out 模块,把新建模型中的DSP Builder 模块连接起来,这样就完成了
14、一个正弦波发生器的DSP Builder模型设计。在进行仿真验证和SignalCompiler 编译之前,先把设计保存起来。单击File 菜单,选择Save 操作,取名并保存。本例中,新建模型取名Sinout ,生成模型文件Sinout.mdl 。模型保存之后,先要对模型进行仿真验证,如通过验证,则使用SignalCompiler进行编译将mdl 文件转换为VHDL 文件。 5.2.2 Simulink模型仿真Matlab 的 Simulink 环境具有强大的图形化仿真验证的功能。用DSP Builder 模块设计好的模型,可以在simulink 中进行算法级、系统级仿真验证。对一个模型进行仿
15、真需要施加合适的激励,在特定的观察点添加必须的观察模块。1. 加入 Step 模块本例中,先加入一个step 阶跃模块),来实现模拟SinCtrl 的按键使能操作。在simulink 的 simulink 基本库中,选择 Source 子库,把其中的Step 模块拖放到Sinout 模型窗口中去,并将其与SinCtrl 的输入端口相连。注意:凡是来自Altera DSP Builder库以外的模块,SignalCompiler都不能将其转换成硬件描述语言的模块。2. 添加波形观察模块在Simulink 中选择 Simulink 库,展开Simulink 库,选中其中的Sinks 子库,把Sco
16、pe 示波器)模块拖放到SinOut 模型窗口中去。双击该模块,打开的是一个Scope 窗口。如图5-11 所示,图中只有一个信号的波形观察窗口,若希望可以多观察记录信号,可以通过添加多个Scope 模块的方法来实现,也可以通过修改Scope 的参数来实现Scope 模块中的观察窗口数。3. Scope 模块参数设置用鼠标单击Scope 模块窗口上侧工具栏的第二个按钮:Parameters ,弹出参数设置对话框,以进行参数设置。在 Scope 参数设置对话框中有两个设置页:General 和 Data History 。在 General 页中,改变 Number of axes 为 2。在单
17、击OK 按钮后,可以看到Scope 窗口出现了两个波形观察窗。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 24 页个人资料整理仅限学习使用每个观察窗可以独立地观察信号波形。同时Scope 模块也多了一个输入端,将SinCtrl 的信号接到这一新增的输入端,作为参考信号。4. 设置仿真激励先设置模型的仿真激励。在SinOut 模型中,只有一个输入端口SinCtrl ,需要设置与之相连的Step 模块。双击Step 模块,在弹出的Step 模块参数设置对话框中设置对其输入端口SinCtrl 施加的激励。各参数值的含义如下:阶跃时刻Ste
18、p time ): Step 模块的输出在该时刻发生阶跃,默认值为 1,单位为秒。初始值Initial value):在阶跃时刻的之前的Step 模块的输出值,默认值为 0。终值 Final value ):在阶跃时刻之后Step 模块的输出值,默认值为1。采样时刻Sample time): Step 模块输出的采样频率。设置Step time为 30,则在 30 秒时该模块会发生输出值的阶跃。初始值设为0,那么在 30 秒时刻之前,不输出正弦波;终值设为1。Sample time设为 0,设为 0 的话,在大的和小的时间间隔都进行采样,设成0 的模块被称作连续采样;设成1 的话,则只在大的时
19、间间隔上采样。选中底部的两项选择:“ Interpret vector parameters as 1-D” 和 “ Enable zerocrossing detection” 在 SInOut 模型窗口中,单击Simulation 菜单,在下拉菜单中选择Simulation parameters。将弹出SinOut模型的仿真参数设置对话框:”Configuration Parameters: SinOut/configuration”。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 24 页个人资料整理仅限学习使用仿真参数设置对话框
20、共有7 个选项页: Solver、Data Import/Export、Optimization 、Diagnostics 、Hardware Implementation、 Model Referencing、Real-Time Workshop。其中”Solver ” 页中完成仿真时的基本时间设置、计算器和解算器:2*pi+128。然后将输出端口Out 的 Bus Type 改为 ” Unsigned integer”类型。修改完成之后,进行仿真,可以看到输出的波形都在0 以上。5.2.3 使用 SignalCompiler进行从算法到硬件实现在 Matlab 中完成仿真验证后,就要把设计
21、转换到硬件上加以实现。通过DSP Builder 可以获得针对特定FPGA芯片的 HDL 代码。 1. 分析模型双击SinOut 模型中的 ”SignalCompiler ”图标启动 DSP Builder ,出现如下的窗口:单击 ”Analyze”按钮, SignalCompiler将会对模精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 24 页个人资料整理仅限学习使用型进行分析,检查模型有无错误。如果设计存在错误,将会停止分析过程,并在Matlab 软件的命令窗口中给出相关信息。如果设计不存在错误,则在分析结束后打开”SignalC
22、ompiler ”窗口。 Simulink 具有强大的错误定位能力,对许多错误可以在simulink模型中直接定位,用不同的颜色来标示有错误的模块。如果SignalCompiler分析当前的DSP 模型有错误时,必须修改正确才能继续下面的设计流程。2. 设置 SignalCompiler 在 SignalCompiler 窗口中,要进行一些必要的设置。SignalCompiler窗口大致上可以分为3 个功能部分:左上为工程设置选项Project Setting Options ;右上为硬件的编译流程Hardware Compilation;下方为信息框Messages。精选学习资料 - - -
23、 - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 24 页个人资料整理仅限学习使用SingalCompiler的设置集中在工程设置选项部分。在Device 下拉选择框中选择目标器件的系列。这里只能选择器件的系列,不能指定具体的器件型号,这需要由Quartus II自动决定使用该器件系列中的某一个具体型号的器件,或在手动流程中由用户指定。在Synthesis 综合)下拉选择框中,可以选择综合器,共有3 个选项: Mentor 的LeonardoSpectrum综合器; Synplicity 的 Synplify 综合器; Altera 的 Quartus II ,
24、Quartus II 是 FPGA/CPLD 的集成开发环境,其内含综合功能。在Optimization优化)下拉选择框,指明在综合、适配过程中的优化策略,是优先对面积Area )优化还是速度优化Speed )的选择,即资源占用优先还是性能优先。工程设置选项部分的下部是一些选项页,包括下面的内容: Main Clock :系统主时钟的周期的设置;Reset:系统复位信号的设置;Signal Tap II :嵌入式逻辑分析仪的设置;Testbench :仿真测试文件生成的选择;SOPC info: SOPC相关设置。 Main Clock 的缺省值为20ns,即对应50MHz 的频率。如果要使用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年正弦发生器模块方案 2022 正弦 发生器 模块 方案
限制150内