资源描述
数字信号处理实验报告
实验1 正弦信号发生器实验
2 AM系统
学院:学院
班级:
学号:
姓名:
2012.6.2
实验一 正弦信号发生器
一、实验仪器:PC机一台,JQ-SOPC-2C35实验箱一台及辅助软件(DSP Builder、Matlab/Simulink、Quartus II、Modelsim)。
二、实验目的:
1. 初步了解JQ-NIOS-2C35实验箱的基本结构;
2。 学习和熟悉基于DSP Builder开发数字信号处理实验的流程。
三、实验原理:
正弦波是一种基本信号,任何复杂信号都可由许多频率、幅度各不相同的正弦波复合而成。已知正弦波存在如下的关系:
由以上公式可知,正弦波存在周期性,本实验就是根据正弦波的这一特性进行正弦波发生。
在Altera DSP Builder库中,有一名为Increment Decrement的模块,根据参数设置的不同,Increment Decrement会不断从0计数到设定值,然后清0,接着又从0开始计数。图3-1显示的是Increment Decrement的参数设置界面,以图中参数为例,number of bits设置为6,即从0开始计数到2^6,然后清0,接着又从0开始计数。
在LUT(Look Up Table)查找表模块中事先存入一个周期的正弦波的抽样值,利用Increment Decrement模块不断计数,根据计数值找到查找表的地址取出里面的值进行输出,因为Increment Decrement模块的输出具有周期性,则从LUT的输出也具有了周期性,这样,就产生了正弦波。
四、实验步骤:
本实验的操作步骤如下:
1.点击桌面上的Matlab图标,进入Matlab主界面,并将工作目录设为Matlab安装目录下的work文件夹,如图1所示:
2.点击菜单栏中的File->New->Model,新建一个模型,在Matlab命令窗口中输入simulink命令,调出simulink工具栏,如图2所示:
3.双击simulink工具栏中的Altera DSP Builder中的Arithmetic库,找到
Increment Decrement模块,选中它并按住鼠标左键将其拖到新建的模型文件中。
4.双击模型文件中的Increment Decrement模块,打开模块参数对话框,将Bus Type设为Signed Integer,number of bits设为6,保持其他参数不变,点击【OK】按钮确认。点击模块下面的文本,将其重命名为IncCount。
5.双击simulink工具栏中的Altera DSP Builder中的Storage库,找到LUT模块,选中它并按住鼠标左键将其拖到新建的模型文件中。双击模型文件中的LUT模块,打开模块参数对话框,将Data Type设为Signed Integer,Address Width设为6,number of bits设为8,MATLAB Array设为127*sin( [0:2*pi/(2^6):2*pi] )。保持其他参数不变,点击【OK】按钮确认。点击模块下面的文本,将其重命名为SinLut。
6.双击simulink工具栏中的Altera DSP Builder中的Storage库,找到Delay模块,选中它并按住鼠标左键将其拖到新建的模型文件中。
7.双击simulink工具栏中的Altera DSP Builder中的Arithmetic库,找到其中的Product模块,选中它并按住鼠标左键将其拖到新建的模型文件中,双击该模块,打开模块参数对话框,在Optional ports and settings中的Use LPM选项前打勾。
保持其他参数不变,点击【OK】按钮确认。
8.双击simulink工具栏中的Altera DSP Builder中的IO&Bus库,找到其中的Input和Output模块,选中它们并按住鼠标左键将其拖到新建的模型文件中,双击Input模块,打开模块参数设置界面,将Bus Type设为Single Bit,保持其他参数不变,点击【OK】按钮确认。双击Output模块,打开模块参数设置界面,Bus Type设为Signed Integer,number of bits设为8,保持其他参数不变,点击【OK】按钮确认。
9.双击simulink工具栏中的Simulink中的Sinks库,找到Scope模块,选中它并按住鼠标左键将其拖到新建的模型文件中,双击Scope模块,打开模块参数设置界面,点击菜单栏中的Parameters,将number of axes 设为2。点击【OK】确认,关闭模块参数设置界面。
10.双击simulink工具栏中的Simulink中的Source库,找到Step模块,选中它并按住鼠标左键将其拖到新建的模型文件中,双击Step模块,打开模块参数界面,将Step time 设为50,Initial value设为50,Final time 设为1,Sample time 设为1。保持其他参数不变,点击【OK】确认。
11.连接模块,连接后的模型如图4所示:
图4 正弦发生器模型
12.双击simulink工具栏中的Altera DSP Builder中的AltLab库,找到其中的Signal Compiler和TestBenchOn模块,选中它们并按住鼠标左键将其拖到新建的模型文件中,执行File->Save 保存文件,将其命名为sinwave.mdl。
13.执行Simulation->Configuration Parameters,将solver设为discrete,Type设为Fixed-step,Stop Time设为500。
14.点击菜单栏中的黑色小三角,启动simulation,simulation结束后,双击Scope模块,打开波形观察界面,在波形上点击鼠标右键,选择Autoscale,即可观察simulation后的正弦波形。
15.点击TestBenchOn模块,打开模块参数界面,在Advanced选项卡中,点选Lauch GUI,并依次点击Generate HDL,Run Simulink和Run Modelsim,启动RTL级仿真。
16.随后显示的界面即为Modelsim RTL级仿真的波形图。选中tb_sinwave/dut/output信号,点击鼠标右键,选中Propertyties选项,选择Format为analog,将Height设为100,Scale设为0.4,点击【OK】确认。
17.在信号上点击鼠标右键,选择Zoom Full,即可看到RTL级仿真波形。
18.点击Signal Compiler模块,打开参数设置页面,器件系列选择cylone II,点击compile,结束后,关闭该页面。
19.点击桌面上的 Quartus 图标,执行File->New Project Wizard,创建新的工程,将工程路径设置成模型文件所在路径,对project命名为sinwave。
20.点击next,添加文件,将.tcl和.vhd文件添加进工程中,点击next,在器件family中选择Cyclone Ⅱ,选择下拉菜单中的EP2C35F672C6.,点击finish。
21.点击菜单栏中的紫色小三角,对创建的文件进行编译。
22.编译成功后执行File->New->Vector Waveform File,点击【OK】确认。
23.执行Edit->Insert->Time Node or Bus,在弹出的对话框中选择Node Finder,再点击List,从左边弹出的管脚名中选择Clock,aclr,Input和Output添加到右边,点击【OK】确认。
24.选中aclr信号,选择左边工具栏的图标,选中Input信号,同样设为。通过执行菜单栏Edit->End Time设置仿真结束时间为1毫秒。选中Clock信号,点击,将周期设为20,单位纳秒,仿真结束时间为1毫秒,点击【OK】确认。保存该文件,将其命名为sinwave。
25.执行Assignmets->Settings,选择Simulator Settings,Simulation mode选为Functional,在右边的对话框中将保存的波形文件添加到Simulation Input中,点击【OK】确认。执行菜单栏的Processing->Generate Functional Simulation Netlists进行功能仿真。
26.执行菜单栏Assignmets->Settings,选择Simulator Settings,Simulation mode选为Timing,在右边的对话框中将保存的波形文件添加到Simulation Input中,点击【OK】确认。点击菜单工具栏中的图标,对工程进行时序仿真。仿真完成后,选中Output信号,单击鼠标右键,选择Display Format中的Analog Waveform,若弹出对话框询问是否覆盖原文件,选择Yes。再次选中Output信号,单击鼠标右键,选择Display Format中的Analog Waveform,将Display Style设为Step,Display Height设为4,点击【OK】确认。即可观察到时序仿真波形。
27.执行Assignmets->Assignment Editor,将Category设为Pin,并按照下图对Pin进行设置:
图5 管脚设置
按照实验箱中的用户指南28页中的图4-5所示将aclr、Input分配给开关PIN_AE14,PIN_AF14,按照37页图4-8将Clock分配为PIN_N2管脚,按照52页图4-10将Output总管脚及其如Output[0]……Output[7]的分管脚进行分配,并保存。
28.执行Tools->SignalTap Ⅱ Logic Analyzer,在Data窗口中的空白处双击,在弹出的对话框中将Fiter设为all®isters:post fittings,点击List,将Output添加至右边的窗口中,点击【OK】确认。
29.在右边的对话框中将Clock设为Clock信号,Sample depth设为1K,点选Trigger in,Source设为Clock信号,Pattern设为Rising edge。保存,若弹出对话框询问是否将文件添加至工程,选择Yes。点击菜单栏中的,重新对工程进行编译。
30.打开实验箱,接入电源,用USB Blaster线将电脑和实验箱连接起来,选择菜单栏中的图标。
31.点击Hardware Setup,选择USB-0,点击【OK】确认。选中sinwave.sof文件,点击Start,将文件下载到实验板上。在Signaltap II界面点击Hardware右边的Setup,将其设为USB-Blaster[USB-0]。
32.将实验箱上的开关SW[3]和SW[4]拨至高电平,点击工具栏的图标,启动数据采集,一段时间后点击图标停止数据采集,点击SignalTap中的data窗口,即可看到硬件实现的波形。
五、实验结果:
matlab Scope 波形:
Modelsim RTL级仿真的波形:
Quartus功能仿真
时序仿真波形。
硬件实现的波形
实验二 AM系统
一、实验仪器:PC机一台,JQ-NIOS-2C35实验箱一台及辅助软件(DSP Builder、Matlab/Simulink、Quartus II、Modelsim)
二、实验目的:
1、初步了解JQ-NIOS-2C35实验箱的基本结构。
2、学习和熟悉基于DSP Builder开发数字信号处理实验的流程。
3、理解AM系统设计的原理和方法。
三、 实验原理:
在常规双边带调幅中,输出已调制的信号的包络与输入调制信号成正比,其时间波形可表达为:
(4-11)
式中,为外加的直流分量。为调制信号,它可以是确知信号,也可以是随机信号,但通常认为平均值为0。为载波信号的频率。为载波信号的起始相位。
对于幅度调制信号,在波形上,它的幅度随基带信号规律而变化。 由于频谱的搬移是线性的,因此幅度调制通常又称为线性调制。
四、实验步骤:
本实验的操作步骤如下:
1、 点击桌面上的Matlab图标,进入Matlab主界面,并将工作目录设为Matlab安装目录下的work文件夹。
2、点击菜单栏中的File->New->Model,新建一个模型,在Matlab命令窗口中输入simulink命令,调出simulink工具栏,并执行File->Save 保存文件,将其命名为AM。
3、在Altera DSP Builder Blockset中的IO&Bus下选择Altbus模块将其添加到文件中。打开模块参数对话框,将Bus Type设置为Signed Integer,number of Bits设置为16,然后单击【OK】按钮确认。
4、在Altera DSP Builder Blockset中的Arithmetic下选择Pipelined Adder模块将其添加到文件中。设置Bus Type为Signed Integer;[number of bits].[]为16;Number of Pipeline Stages为2。单击【OK】确认。点击模块下文本,将其重命名为“Pipelined Adder3”。
5、在Altera DSP Builder Blockset中的Storage下选择Delay模块将其添加到文件中。
6、在Altera DSP Builder Blockset中的IO&Bus下选择Bus conversion模块将其添加到文件中。打开模块对话框,将Bus Type设置为Signed Integer,Input设置为16,output设置为8,Input Bit Connected to Output LSB设置为8,然后点击【OK】确认。
7、在Altera DSP Builder Blockset中的Storage下选择LUT模块将其添加到文件中。将Data Type设置为Signed Integer;number of bits设置为8;LUT Address Width设置为8;MATLAB Array查找表中存储数据的内容,设置为127*sin([0:2*pi/(2^8):2*pi]),然后点击【OK】确认。
8、在Altera DSP Builder Blockset中的IO&Bus下选择Constant模块将其添加到文件中。打开模块参数对话框,设置Constant Value为100;将Bus Type设置为Signed Integer;number of bits设置为8;其它参数设置保持不变,然后点击【OK】确认。
9、按照图2-1连接模块。
10、将图2-1的所有模块选中,单击鼠标右键,点击Creat Subsystem,点击子系统下文本,将其重命名为“DDS”。
11、重复步骤3-10,将AltBus的number of Bits设置为32;Constant模块的Constant Value为88234567,number of Bits设为32;Bus conversion的Input设置为32,output设置为10,Input Bit Connected to Output LSB设置为22;LUT模块的Data Type设置为Signed Integer;number of bits设置为10;LUT Address Width设置为10;MATLAB Array查找表中存储数据的内容,设置为511*sin([0:2*pi/(2^10):2*pi]),同样创建为子系统,然后点击子系统的文本,将其命名为“DDS1”
12(为后面准备)、在Altera DSP Builder Blockset中的IO&Bus下选择Input添加到模型文件中。设置Bus Type为Unsigned Integer;设置[number of bits].[]为3;勾选Specify Clock,并在Clock下写入Clock;然后点击【OK】确认。
13(为后面准备)、在Altera DSP Builder Blockset中的IO&Bus下选择Output添加到模型文件中。设置Bus Type为Signed Integer;设置[number of bits].[]为10;其它参数设置不变;然后点击【OK】确认。
14、在Altera DSP Builder Blockset中的Gate&Control下选择Multiplexer添加到模型文件中。将其Number of Input Data Lines设置为8,然后点击【OK】确认。如图2-2所示连接,并建立子系统。
图2-2 Mux子系统连接图
Constant5的设置如图2-3所示。
图2-3 Constant5参数对话框
Constant6~Constant12的Constant Value分别为:0.79688,0.69922,0.59766,0.5,0.39844,0.19824,0.097656。其它设置如图2-3保持不变。
15、 在Altera DSP Builder Blockset中的Arithmetic下选择两个Product模块添加到模型文件中分别命名为Product和Product1,bus type 设为Inferred。
16、 在Altera DSP Builder Blockset中的IO&Bus下选择两个Constant模块将其添加到文件中分别命名为Constant1和Constant2。打开模块参数对话框,设置Constant1 Value为1;将Bus Type设置为Signed Integer;number of bits设置为8;其它参数设置保持不变,然后点击【OK】确认,Constant2Value为1;将Bus Type设置为Signed Integer;number of bits设置为10;其它参数设置保持不变,然后点击【OK】确认。
17、在Altera DSP Builder Blockset中的Arithmetic下选择两个Pipelined Adder模块将其添加到文件中分别命名为Pipelined Adder和Pipelined Adder1。对Pipelined Adder设置Bus Type为Signed Integer;[number of bits].[]为8;Number of Pipeline Stages为2。单击【OK】确认。对Pipelined Adder1设置Bus Type为Signed Integer;[number of bits].[]为10;Number of Pipeline Stages为2。单击【OK】确认。
18、在Altera DSP Builder Blockset中的IO&Bus下选择Bus conversion模块将其添加到文件中。打开模块对话框,将Bus Type设置为Signed Integer,Input设置为18,output设置为10,Input Bit Connected to Output LSB设置为8,然后点下面的文本,将其命名为“Bus conversion1”,然后点击【OK】确认。
19、在Altera DSP Builder Blockset中的Rate Change下选择Clock模块将其添加到文件中。将Simulink Sample Time设置为2e-8,其它参数保持不变,然后点击【OK】确认。
20、在Altera DSP Builder Blockset中的AltLab下选择Signal Compiler模块和TestBench模块将其添加到文件中。
21、在Simulink中的Sinks下选择Scope模块添加到文件中。
22、在Simulink中的Sources下选择Constant模块添加到文件中。
23、按照图2-4连接AM系统。
24、执行Simulation->Configuration Parameters,将solver设为discrete,Type设为Fixed-step,Tasking mode for periodic sample times设为:Single Tasking,Stop Time设为1e-4。Fixed-steptime设为auto。
25、点击菜单栏中的黑色小三角,启动simulation,simulation结束后,双击Scope模块,打开波形观察界面,在波形上点击鼠标右键,选择Autoscale,即可观察simulation后的幅度调制的仿真波形。
26、点击Signal Compiler模块,打开参数设置页面,将器件family设置成Cylone II,点击compile,结束后,关闭该页面。
27、点击TestBenchOn模块,打开模块参数界面,在Advanced选项卡中,点选Lauch GUI,并依次点击Generate HDL,Run Simulink和Run Modelsim,启动RTL级仿真。
28、随后显示的界面即为Modelsim RTL级仿真的波形图。点击wave-default中的unlock 按钮选中tb_am/dut/output信号,点击鼠标右键,选中Propertyties选项,选择Format的Analog,将Height设为100,Scale设为0.2,点击【OK】确认。
29、在信号上点击鼠标右键,选择Zoom Full,即可看到RTL级仿真波形。
30、点击桌面上的 Quartus 图标,执行File->New Project Wizard,创建新的工程,将工程路径设置成模型文件所在路径,对project命名为AM。
31、点击next,将.tcl和.vhd文件添加至工程中,点击next,在器件family中选择Cyclone Ⅱ,选择下拉菜单中的EP2C35F672C6.,点击Finish。
32、点击菜单栏中的紫色小三角,对创建的文件进行编译。
33、编译成功后执行File->New->Vector Waveform File,点击【OK】确认。
34、执行Edit->Insert->Time Node or Bus,在弹出的对话框中选择Node Finder,再点击List,从左边弹出的管脚名中选择Clock,aclr,Input和Output添加到右边,点击【OK】确认。
35、选中aclr信号,选择左边工具栏的图标;选中Clock信号,点击,将周期设置为20ns,然后对弹出的对话框点击【OK】确认;同时在Edit→End Time设置为100us,点击【OK】确认;右键选中信号Input,选择property->radix为unsigned decimal;右键选中信号Input,选择value->count value,start value 设为0,increcment by设为1,设置Timing选项点选at absolute times,count every 设为10us;最后保存该文件,将其命名为AM。
36、执行Assignmets->Settings,选择Simulator Settings,在右边的对话框中将保存的波形文件添加到Simulation Input中,点击【OK】确认。
37、点击菜单工具栏中的图标,对工程进行时序仿真。仿真完成后,选中Output信号,单击鼠标右键,选择Display Format中的Analog Waveform,若弹出对话框询问是否覆盖原文件,选择Yes。再次选中Output信号,单击鼠标右键,选择Display Format中的Analog Waveform,将Display Style设为Step,Display Height设为10,点击【OK】确认。再次单击鼠标右键在Zoom→Fit in Window,即可观察到时序仿真波形。
38、执行Assignmets→Pin Planner,用Zoom Tool放大引脚分配图,可以选择需要分配的引脚,拖拽到对应引脚分配图上。按照表2-1对引脚进行设置,并保存。
39、执行Assignmets->Assignment Editor,在To栏中双击空白格,在下拉菜单中利用Node Finder将Output添加到设置中,并将其引脚设置为:PIN_D25,然后保存设置。
表2-1 AM系统引脚分配图
Node Name
Location
Node Namen
Location
aclr
PIN_N25
Output[4]
PIN_K26
Clock
PIN_N2
Output[5]
PIN_K25
Input[0]
PIN_AE14
Output[6]
PIN_K24
Output[0]
PIN_H26
Output[7]
PIN_K23
Output[1]
PIN_H25
Output[8]
PIN_J24
Output[2]
PIN_H24
Output[9]
PIN_J23
Output[3]
PIN_H23
Output
PIN_D25
Input[1]
PIN_P25
Input[2]
PIN_N26
40、执行Tools->SignalTap Ⅱ Logic Analyzer,在Data窗口中的空白处双击,在弹出的对话框中将Fiter设为all®isters:post fittings,点击List,将Output添加至右边的窗口中,点击【OK】确认。
41、在右边的对话框中将Clock设为Clock信号;点选Trigger in,Source设为Clock信号,Pattern设为Rising edge;Sample depth设置为2K。保存该文件,若弹出对话框询问是否将文件添加至工程,选择Yes。点击菜单栏中的,重新对工程进行编程。
42、打开实验箱,接入电源,用USB Blaster线将电脑和实验箱连接起来,选择菜单栏中的图标,
43、点击Hardware Setup,选择USB-0,点击【OK】确认。选中AM.sof文件,点击Start,将文件下载到实验板上。在SignalTap Ⅱ Logic Analyzer文件(.stp)中的右上角的Hardware的Setup下添加USB-Blaster[USB-0]。
44、将实验箱上的开关SW[0]拨至高电平,SW[3]、SW[2]、SW[1]分别拨至0、0、0,点击开始运行工程,点击结束运行。SignalTap中的data窗口,即可看到硬件实现的波形;再依次将SW[3]、SW[2]、SW[1]分别拨至001~111,以同样的方法即可观察到另外几种幅度的AM输出调制波。
五、实验结果
Simulink仿真波形与RTL级仿真波形以及时序仿真波形和硬件实现结果都应是幅度调制以后的波形。
六、注意事项
1、 应该先将电源接上载用USB电缆将电脑和实验箱相连。实验结束,先拔掉USB与PC机的连接线,再拔电源。
2、时钟的设置一定要与模型的Clock的名字在大小写方面一致,不然仿真会出错。
3、子系统的创建时一定要选择好子系统构建区域,包括模块的连接线。
展开阅读全文