ImageVerifierCode 换一换
格式:DOC , 页数:80 ,大小:4.65MB ,
资源ID:988356      下载积分:20 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-988356.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(正弦信号发生器+DAC输出2010(DE2-70版).doc)为本站会员(风****)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

正弦信号发生器+DAC输出2010(DE2-70版).doc

1、硬件系统课程设计实验指导书 原基于FPGA的嵌入式系统设计与实践 Embedded System Design and Practice Based on FPGA实验一、正弦信号发生器DE270平台本实验指导书阐述了一个简单的正弦信号发生器在QUARTUS上的实现。通过这个文档,旨在演示利用QUARTUS开发数字电路的基本流程和QUARTUS软件的相关操作,并借此介绍QUARUTS的软件界面。我们还针对NIOS的实验板,实现了本文档所示硬件模块的相关配置工作以及下载和实现。实验条件: 目录二、实验步骤:71、工程创建72、sin信号发生器顶层模块的设计173、定制ROM存储sin波形数据23

2、3.1 建立.mif文件233.2 ROM数据的生成243.3 定制ROM元件253.3.1 调用Mega Wizard Plug-In Manager263.3.2 设置LPM_ROM模块273.3.3 添加文件到工程344、编译、综合等375、仿真385.1 编辑波形文件395.2 配置仿真参数515.3 进行仿真566、内部电路观察587、生成symbol628、管脚分配679、下载6710、利用SignalTapII 观察波7111、利用外设DAC观察输出波形7412作业81一、设计原理:下图所示为正弦信号发生器的结构,共有4个部分组成:VHDL顶层设计 singt.vhd6位计数器(

3、地址发生器)Sin数据存储ROM8位DAC顶层文件singt.vhd在FPGA中实现两个部分:1、6位计数器产生地址信号;2、存储正弦信号(6bits地址线,8bits数据线)的ROM,有LPM_ROM模块实现,LPM_ROM模块底层由FPGA的EAB、ESB或M4K来实现。地址发生器的时钟频率CLK假设为f0,这里我们设定的地址发生器为6bit,则周期为2664,所以一个正弦周期内可以采样64个点,DAC后的输出频率f为:我们可以如下生成sin数据以用于查找表,双、单极性Sin(x)数据波形可如下:x = round(sin(linspace(0,2*pi,64)+1)*127.5); 所要

4、得到的单极性信号波形。二、实验步骤:1、工程创建建立工程进入QUARTUS开发软件,选择“File”点击“New Project Wizard”。弹出工程向导对话框,选择“Next”输入存放工程及其相关设计文件的文件夹:指定“工程名”和工程对应的“顶层设计实体名”。这里我们将工程名和顶层设计实体名都取作“singt1”,再点击Next。注意:工程路径中不要包含中文接下来点击“Add”将先期已经输入的设计文件(*.bdf;*.vhd;*.v等)添加到工程中,这里我们没有事先输入好的文件,因此不用添加,即使点击Add All,也没有文件可以加入。接着点击“User Liberary Pathnam

5、e”指定用户自定义元件库的路径,这里我们没有要用的用户自定义元件库,也忽略跳过,直接进入下一步。如有已经输入完毕的设计文件,我们可以参照下述方式建立新工程: 打开此文件,正弦信号发生器的VHDL格式的设计文件已在文件框中;指定目标器件。由于本实验所用的Altera套件是用“Cyclone II”系列的“EP2C70F896C6”。在实际实验中,可以通过查看开发板参考手册,或者直接观察开发板来获得所使用的器件具体型号。接下来指定“设计输入,综合,仿真,时序分析”用到的工具,QUARTUS对第三方工具的支持比较完善,这里我们不选择,直接点击“Next”,QUARTUS将使用默认的“设计输入,综合,

6、仿真,时序分析”工具。上图给出了所创建工程的主要的信息。点击“Finish”,工程新建完成,工程相关的基本配置工作也完成,这些已经配置的参数,在开发工作进行的过程中,仍然可以通过菜单“Assignments”“Settings”来修改。2、sin信号发生器顶层模块的设计新工程设计文件输入(建立顶层设计文件)模式:新建文件,打开File菜单点击New命令,选择“Device Design Files”子类中的“VHDL File”,点击“OK”,创建一个vhdl文件作为顶层设计文件,顶层设计利用VHDL语言方式输入。我们刚才已经用拷贝文件方式新建了顶层设计文件保存,这是工程新建的第一个文件,系统

7、会默认保存为顶层设计实体的名字,在本实例中,也就是“singt1”,点击“保存”,这样,就新建好了顶层设计实体的输入文件。下面我们介绍的是如何输入VHDL格式来建立我们所需模块的实现代码,没有兴趣的同学可以跳过此节。注意: Quartus给我们提供了很多的帮助,比如对VHDL不熟悉或某些语法生疏的情况下,该软件提供了如下图的模板生成代码:(模块的设计及其输入)在singt.vhd文件中我们可以输入模块对应的实现代码!代码在“所需文件文”件夹:在该文件中我们完成了6位计数器的设计工作,调用了sin波形数据存储文件data_rom.vhd,并加以了优化。下面我们具体的给出该文件的编写方式!3、定制

8、ROM存储sin波形数据构成ROM中初始化数据文件的方式有两种:Memory Initialization File(.mif)格式和Hexadecimal(Intel-Format)File(.hex)格式。下面我们仅仅以mif格式的文件为例来讲解ROM初始化数据文件的生成!3.1 建立.mif文件点击Quartus II的FileNew -Memory Files项,选择Memory Initialization File,点击OK,出现一个参数设置框!这里Number of words对应查找表中查找项的个数,为64,Word size对应sin输出波形的数据宽度,为8。点击OK出现如下

9、表格:3.2 ROM数据的生成表格中的数据即为sin输出点所对应的8bits的幅度,我们可以在Matlab下生成这些数据:x = round(sin(linspace(0,2*pi,64)+1)*127.5);reshape(x,8,8)ans = 128 140 153 165 177 188 199 209 219 227 235 241 246 250 253 255 255 254 252 248 244 238 231 223 214 204 194 183 171 159 147 134 121 108 96 84 72 61 51 41 32 24 17 11 7 3 1 0 0

10、 2 5 9 14 20 28 36 46 56 67 78 90 102 115 127复制这些数据可以很容易的在mif表格中进行粘贴,如图。当然我们可以手工输入这些数据,也可以通过excel得到这些数据,也可以编程得到这些数据。最方便的方式则是在Matlab/Simulink的DSPBuilder下完成ROM波形数据文件的编写。我们将文件保存为singt.mif 。3.3 定制ROM元件下面我们对初始化数据文件加载到一定的硬件模块中,本例中,我们将之加载于LPM_ROM模块,步骤如下。3.3.1 调用Mega Wizard Plug-In Manager 3.3.2 设置LPM_ROM模块

11、选择 Create a new custom megafunction variation,点击Next。这里我们设置器件为Cyclone II,输出文件的格式为vhdl,输出文件名为data_rom.vhd,选择 Memory Complier中的ROM:1-PORT。点击Next。在Page 3 of 7我们进一步设置ROM:1-PORT的相关参数,如下图:其中器件为上一页面所选的Cyclone II,rom输出的总线宽度为8bits,该查找表共有64格查找项,RAM block的类型由quartus进行自动的选择(如ACEX1K为EAB,APEX20K为ESB,Cyclone为M4K),

12、选择Daul Clock方式,inclock为地址锁存控制信号。点击Next!取消掉qoutput port 选项点击next!内存初始化的数据文件指定为我们刚才创建的singt.mif,选择All In-System Memory Content Editor to ,表示允许Quartus II将能通过JTAg口对下载于FPGA中的此ROM进行在系统的测试和读写,这种读写不影响FPGA中系统的工作。点击next!点击Finish!再点击Finish3.3.3 添加文件到工程我们必须将刚才生成的所有文件添加到工程中。选择Quartus的Files选项,右键点击Add/Remove Files

13、 in Project。点击右图的Add AlL - OK打开data_rom.vhd,修改绝对路径为相对路径! “singt.mif”- “./singt.mif”4、编译、综合等Quartus II编译器由一系列处理模块组成,如设计工程的查错、逻辑的综合、结构的综合、输出结果的编辑配置、时序分析等。在编译前,我们可以设置一些参数使得编译器采取一些特别的综合和适配技术(如时序驱动技术等),也可提高工程编译的速度,优化器件的资源利用率等。 我们简单的点击 Start Compilation 进行全程编译。编译的时候,Quartus II会给出编译的一些相关信息,如果出错,则根据这些提示进行排错

14、,直至无误。编译完成后出现如下框图。并给出编译报告,如图!5、仿真 对工程的编译通过后必须进行功能和时序的仿真,以便了解系统是否满足要求。步骤如下:5.1 编辑波形文件File - New - Verification/Debugging Files Vector Waveform File设置仿真时间:保存波形文件:导入singt工程的相关节点:出现:点击List会列出所有的输入输出管脚,如图:也可在波形向量文件编辑器左侧空白处双击左键或者右键“Insert Node or Bus”弹出“Insert Node or Bus”对话框,在对话框中输入名字插入需要仿真的Node和Bus(也就是设

15、计输入文件中的Pin或者Signal),也可直接点击“Node Finder”,让编辑器列出已知的Node和Bus。点击Node Finder,就调出对话框。选择所需的pin到观察列表,如图:设置CLK的输入波形:我们可以通过左侧的放大镜进行观察。保存该文件!5.2 配置仿真参数在菜单“Assignments”“Settings”“Simulator”页面,设置Simulation Mode,根据具体需要选择“Functional”或者“Timing”,这里我们选择功能仿真Simulation Input:添加为singt.vwf仿真之前,先点击下图所示指令,生成功能仿真子表(功能仿真特有的步

16、骤)。5.3 进行仿真点击菜单工具栏“Simulator”按钮,得到仿真的结果。为便于观察DOUT的输出结果,设置其数据格式:结果如下:注意:如果采用时序仿真,时钟周期太小,可能会造成数据输出不正确,所以建议时钟周期尽量大于毛刺检测时间的十倍以上。6、内部电路观察观察RTL电路:Chip Editor:7、生成symbolFile - New -新建一个bdf文件,命名为singt.bdf:在singt1.bdf输入栏中双击空白处,弹出symbol调用窗口,如下图所示,选择刚才生成的singt1的symbol,点击OK。用相同的方式在原理图中添加input和output 管脚 。输入管脚命名为

17、clk,输出管脚命名为dout7.0,如下图所示:将此bdf文件设为顶层实体,然后进行全编译 :编译:8、管脚分配分析和综合之后,点击菜单“Assignments”“Pins”,进入管脚分配编辑器,注意:如果手边有开发板并想将设计输入到开发板上演示,请具体参考手边开发板的硬件开发配置参考手册(名字可能有差别)或类似文档,如果不需要将最后的设计生成文件烧写到开发板,而只是需要尝试QUARTUS的设计流程,任意选择几个管脚就可以。确定引脚分别为:主频时钟clk接PIN_AD15;8位输出数据总线dout7.0对应的引脚编号分别为PIN_W27 、PIN_W25、 PIN_W23、 PIN_Y27、

18、 PIN_Y24、 PIN_Y23、 PIN_AA27、 PIN_AA24。 最后存储这些引脚锁定的信息后,必须在编译(启动Start Compilation)一次,才能将引脚锁定信息编译进编程下载文件中。此后就可以准备将生成好的SOF文件下载到实验系统的FPGA中去了。9、下载点击菜单工具栏“Programmer”按钮进入下载页面,下载工程生成的烧写文件到FPGA芯片,首先要配置下载工具,点击“Hardware Setup”,进入下载工具设置页面,首先点击“Add Hardware”,进入Add Hardware对话框添加用到下载电缆,根据实际情况,选择“ByteBlaster”或者“Usb

19、 Blaster”下载电缆,双击选择,点击“OK”回到Hardware Setup对话框,点击要使用的下载电缆,并点击“Select Hardware”,最后点击“Close”回到下载界面,出现或者说明下载电缆设置成功输入需要下载的文件(这里是singt1.sof),选择“Program/Configure”复选框,点击“Start”,即可完成烧写文件的下载。注意:消息框中下载结束的信息条出现!下载成功后,我们可以在实验平台上看到8个LED在闪亮。(也许会由于主频时钟频率过大,而观察不到明显的闪烁)10、利用SignalTapII 观察波Signal tap 配置:选择“File”菜单,点击“

20、New”,在弹出的New对话框中,选择Verification/Debugging Files下的Signal Tap II Logic Analyzer File,如图所示:Signal Tap的相关配置1, 在Instance Manager窗口,Instance栏为实例名称,右键对Instance进行Create、Delete、Rename操作,此处名称我们改为“singt”。2, 在JTAG Chain Configuration窗口,点击Hardware栏的Setup按钮,弹出Hardware Setup对话框:双击 “Available hardware items”栏中的“USB

21、-Blaster”选项,单击“Close”关闭对话框,此时在“JTAG Chain Configuration”窗口的“Hardware”栏将显示“USB-Blaster”字样,同时Device栏将显示“1:EP2C35(0x020B40DD)”字样,此为自动识别到的FPGA芯片。3, SOF Manager栏,点击Browse按钮,在弹出的Select Programming File对话框选中singt.sof文件。4, 在singt栏,分为Data和Setup窗口,Data为数据显示窗口,Setup为配置窗口。在Setup窗口,双击空白处,弹出Node Filter对话框,点击List列

22、出列出信号列表,双击dout信号,此时在Selected Nodes栏列出了已选信号dout,(可以根据需要,任意添加希望观察的信号)点击OK关闭对话框。5, Signal Configuration栏,点击Clock栏后的browse按钮,选择逻辑分析仪的工作时钟,在弹出的Node Filter对话框,点击List列出信号列表,双击clk信号,此时在Selected Nodes栏列出了已选信号clk,(视具体工程不同,选择不同的工作频率,但是该频率不能同时出现在singt栏)点击OK关闭对话框。在Setup栏的Sample depth下拉菜单,选择待测数据的抽样深度,此处选择2k,其他设置如

23、图所示此时SignalTap的设置已经全部完成,保存设置,名字任取,此处保存为singt1.stp。如下图所示设置:工具栏按钮,分别表示:Run、Analysis、Auto Analysis、Stop Analysis、Read Data。点击保存按钮,在接下来弹出的对话框都点击Yes.然后再进行综合编译,完成以后,就可以下载“.sof”工程文件到FPGA芯片了,点击Program Device按钮进行芯片烧写。烧写完成后,点击“Auto Analysis”按钮运行逻辑分析仪。此时在芯片内部运行的信号数据,已经通过JTAG链读取到计算机,并在Data窗口显示为了便于观察,在DOUT栏点击右键,

24、在弹出的对话框中选择Bus Display Format栏的 Unsigned Line Chart选项,如下图所示:更改dout的数据类型: 右击“dout” 选择Bus Display Format - Unsigned Line Chart,即可看到正弦波信号:11、利用外设DAC观察输出波形 实验内容1:将正弦波信号发生器所输出的信号经外设DAC器件输出到示波器上。在前面的基础上,我们在QuartusII上完成了正弦信号发生器设计,包括仿真和资源利用情况了解。下面我们添加一个D/A转换,以便使用示波器来观察输出的波形(D/A可利用系统上配置的WM8731L)。首先,将编译、仿真和管脚分

25、配后的工程下载到实验板中,再通过外设DAC模块形成模拟环路通过示波器验证输出波形。1、p2s.v,i2c.v,clock_500.v三个文件拷贝到工程目录;2、在Project Navigator的Files界面,右键Add/Remove Files in Projects. add all3、打开clock_500.v 找到ROM2一行,其值修改为16h0812;关于此处各ROM的值的定义,请参阅参考文档WM8731_WM8731L.pdf中DEVICE DESCRIPTION章节,这个ROM的配置是DAC与ADC能否成功实现的关键,建议各位同学展开学习。4、在上面3个.v文件上依次右键Cr

26、eat Symbol Files for Current File5、打开singt.bdf 添加进以上3个模块,以及如图所示的input pin,output pin;命名,连接如下图所示;(请仔细对照,图片不清晰请放大文档显示比例)下图是上图中CLOCK_500与i2C模块部分:两个模块端口的连接可以不用直接相连,只要从端口引出的线的名字相同即可,对线的命名为在需要命名的线上右键Properties,然后修改name。如图:6、对新添加的模块添加加的管脚分配,AssignmentPins,如下图:(其中AUD_ADCLRCK,iAUD_ADCDAT,iKey,KEY_ON的管脚在我们这次的实验中并未生成,不需要分配;clk8只是input的名称,在这次实验里只要PIN_AD15管脚与CLOCK_500模块中的CLOCK的input相连就可以)7、将音频接口线一段插入Line out接口,一段连示波器观察。12作业在熟悉以上实验内容的基础上,自己设计一个三角波信号发生器,相关参数自己设定。交出下载工程文件并来实验室验证,包括实验原理、程序设计、程序分析、仿真分析、硬件测试和详细实验步骤记录。word文档 可自由编辑

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922