CENTRALSOUTHUNIVERSITY数字信号处理实验报告题目正弦信号发生器学生姓名张杰学院物理与电子学院专业班级电子信息科学与技术1303班学号1402130326完成时间2015年12月21日实验一正弦信号发生器1实验一正弦信号发生器一、实验仪器:PC机一台,JQ-SOPC-2C35实验箱一台及辅助软件(DSPBuilder、Matlab/Simulink、QuartusII、Modelsim)。二、实验目的:1、初步了解JQ-NIOS-2C35实验箱的基本结构;2、学习和熟悉基于DSPBuilder开发数字信号处理实验的流程。三、实验原理:正弦波是一种基本信号,任何复杂信号都可由许多频率、幅度各不相同的正弦波复合而成。已知正弦波存在如下的关系:sin)2sin(由以上公式可知,正弦波存在周期性,本实验就是根据正弦波的这一特性进行正弦波发生。在AlteraDSPBuilder库中,有一名为IncrementDecrement的模块,根据参数设置的不同,IncrementDecrement会不断从0计数到设定值,然后清0,接着又从0开始计数。图3-1显示的是IncrementDecrement的参数设置界面,以图中参数为例,numberofbits设置为6,即从0开始计数到2^6,然后清0,接着又从0开始计数。在LUT(LookUpTable)查找表模块中事先存入一个周期的正弦波的抽样值,利用IncrementDecrement模块不断计数,根据计数值找到查找表的地址取出里面的值进行输出,因为IncrementDecrement模块的输出具有周期性,则从LUT的输出也具有了周期性,这样,就产生了正弦波。四、实验步骤:(1)打开MATLAB。(2)从MATLAB界面打开点simulink,从跳出的SimulinkLibraryBrowser界面新建一个model文件。图1-1正弦发生器模型(model文件)(3)在AlteraDSPBuilder中的Arithmetic库,找到IncrementDecrement模块加入到新建的model中;双击该模块并设置参数,BusType:SignedInteger、numberofbits:6,确认退出。(4)在AlteraDSPBuilder中的Storage库,找到LUT模块加入到新建的model中;双击该模块并设置参数,DataType:SignedInteger、AddressWidth:6、numberofbits:8、MATLABArray:127*sin([0:2*pi/(2^6):2*pi]),确认退出。实验一正弦信号发生器2(5)在AlteraDSPBuilder中的Storage库,找到Delay模块加入到新建的model中。(6)在AlteraDSPBuilder中的Arithmetic库,找到Product模块加入到新建的model中,双击该模块并设置参数,Optionalportsandsettings中的UseLPM选项前打勾,确认退出。(7)在AlteraDSPBuilder中的IO&Bus库,找到Input和Output模块加入到新建的model中。双击Input模块并设置参数,BusType:SingleBit,确认退出。双击Output模块并设置参数,BusType:SignedIntege、numberofbits:8,确认退出。(8)在Simulink中的Sinks库,找到Scope模块加入到新建的model中。双击Scope模块并设置参数,点击菜单栏中的,将numberofaxes设为2,确认退出。(9)在Simulink中的Source库,找到Step模块加入到新建的model中。双击Step模块并设置参数,Steptime:50、Initialvalue:50、Finaltime:1、Sampletime:1,确认退出。(10)在AlteraDSPBuilder中的AltLab库,找到SignalCompiler和TestBenchOn模块加入到新建的model中。执行File-Save保存文件,将其命名为sinwave.mdl。(11)执行Simulation-ConfigurationParameters,将solver设为discrete,Type设为Fixed-step,StopTime设为500。(12)点击菜单栏中的,启动simulation,simulation结束后,双击Scope模块,打开波形观察界面,在波形上点击鼠标右键,选择Autoscale,即可观察simulation后的正弦波形。(13)点击TestBenchOn模块,打开模块参数界面,在Advanced选项卡中,点选LauchGUI,并依次点击GenerateHDL,RunSimulink和RunModelsim,启动RTL级仿真。(14)随后显示的界面即为ModelsimRTL级仿真的波形图。选中tb_sinwave/dut/output信号,点击鼠标右键,选中Propertyties选项,选择Format为analog,将Height设为100,Scale设为0.4,点击【OK】确认。在信号上点击鼠标右键,选择ZoomFull,即可看到RTL级仿真波形。(15)点击SignalCompiler模块,打开参数设置页面,器件系列选择cyloneII,点击compile,结束后,关闭该页面。(16)关闭MATLAB。在位置“D:\ProgramFiles\MATLAB71\work\sinwave_dspbuilder”(MATLAB安装目录下的work\sinwave_dspbuilder)打开文件sinwave.qpf。(17)工具栏中点击Assignments,选中Device,在器件family中选择CycloneⅡ,选择下拉菜单中的EP2C35F672C6.,点击finish。(18)执行AssignmetsAssignmentEditor,将Category设为Pin,并按照下图对Pin进行设置并保存图1-2管脚设置(19)执行ToolsSignalTapⅡLogicAnalyzer,选中Data,在Data窗口中的空白处双击,在弹出的对话框中将Fiter设为Pins:all®isters:postfittings,点击List,将Output添加至右边实验一正弦信号发生器3的窗口中,点击【OK】确认。(20)在右边的对话框中将Clock设为Clock信号,Sampledepth设为1K,点选Triggerin,Source设为Clock信号,Pattern设为Risingedge。保存,若弹出对话框询问是否将文件添加至工程,选择Yes。点击菜单栏中的(紫色三角形),重新对工程进行编译。(21)打开实验箱,接入电源,用USBBlaster线将电脑和实验箱连接起来,选择菜单栏中的图标。(22)点击HardwareSetup,选择USB-0,点击【Close】确认。选中sinwave.sof文件,点击Start,将文件下载到实验板上。(23)执行ToolsSignalTapⅡLogicAnalyzer,选择Hardware右边的Setup,将其设为USB-Blaster[USB-0]。(24)将实验箱上的开关SW[3]和SW[4]拨至高电平,点击工具栏的(红色图标)图标,启动数据采集,一段时间(约10s)后点击图标停止数据采集,点击SignalTap中的data窗口,右键点击Output,选择BusDisplayFormatSignedLineChart,即可看到硬件实现的波形。如图6所示:五、实验结果:(1)Simulink仿真波形:(2)RTL级仿真波形实验一正弦信号发生器4(3)硬件实现波形六、讨论分析:(1)实验中遇到的问题和解决方法。问题:无法直接找到管脚解决方案:选中pinplanner,直接可以将编译过程中的管脚给出,只需定位。(2)总结DSPBuilder开发数字信号处理实验的基本流程(文字叙述或者画出流程图)。第一步:打开MATLAB,设计硬件仿真电路并Simulink仿真。第二步:启动RTL级仿真。点击TestBenchOn模块,打开模块参数界面,在Advanced选项卡中,点选LauchGUI,并依次点击GenerateHDL,RunSimulink和RunModelsim。第三步:将软件下载到硬件上。看实际波形效果。