您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页实验一、正弦信号发生器+DAC输出2010(DE2-70版)

实验一、正弦信号发生器+DAC输出2010(DE2-70版)

来源:尚车旅游网
《硬件综合实践(A)》实验指导书

原《基于FPGA的嵌入式系统设计与实践》

《Embedded System Design and Practice Based on FPGA》

实验一、正弦信号发生器

————DE2—70平台

本实验指导书阐述了一个简单的正弦信号发生器在QUARTUSⅡ上的实现。通过这个文档,旨在演示利用QUARTUSⅡ开发数字电路的基本流程和QUARTUSⅡ软件的相关操作,并借此介绍QUARUTSⅡ的软件界面。我们还针对NIOSⅡ的实验板,实现了本文档所示硬件模块的相关配置工作以及下载和实现。

实验条件:

2

目录

二、实验步骤: ................................................................................................................................................................................. 6

1、工程创建 ............................................................................................................................................................................... 6 2、sin信号发生器顶层模块的设计 ....................................................................................................................................... 16 3、定制ROM存储sin波形数据 ........................................................................................................................................... 21

3.1 建立.mif文件 ............................................................................................................................................................ 21 3.2 ROM数据的生成 ....................................................................................................................................................... 22 3.3 定制ROM元件 ......................................................................................................................................................... 23

3.3.1 调用Mega Wizard Plug-In Manager ............................................................................................................ 24 3.3.2 设置LPM_ROM模块 ....................................................................................................................................... 25 3.3.3 添加文件到工程 ........................................................................................................................................... 31

4、编译、综合等 ..................................................................................................................................................................... 34 5、仿真 ..................................................................................................................................................................................... 35

5.1 编辑波形文件 ............................................................................................................................................................ 36 5.2 配置仿真参数 ............................................................................................................................................................ 48 5.3 进行仿真 .................................................................................................................................................................... 53 6、内部电路观察 ..................................................................................................................................................................... 55 7、生成symbol ........................................................................................................................................................................ 59 8、管脚分配 ............................................................................................................................................................................. 9、下载 ..................................................................................................................................................................................... 10、利用SignalTapII 观察波 ................................................................................................................................................. 68 11、利用外设DAC观察输出波形 ........................................................................................................................................ 71 12.作业 ................................................................................................................................................................................... 80

3

一、设计原理:

下图所示为正弦信号发生器的结构,共有4个部分组成:

VHDL顶层设计 singt.vhd 6位计数器(地址发生器) Sin数据存储ROM 8位DAC

顶层文件singt.vhd在FPGA中实现两个部分:

1、6位计数器产生地址信号;

2、存储正弦信号(6bits地址线,8bits数据线)的ROM,有LPM_ROM模块实现,LPM_ROM模块底层由FPGA的EAB、ESB或M4K来实现。

地址发生器的时钟频率CLK假设为f0,这里我们设定的地址发生器为6bit,则周期为26=,所以一个正弦周期内可以采样个点,DAC后的输出频率f为:

ff0/

我们可以如下生成sin数据以用于查找表,双、单极性Sin(x)数据波形可如下:

x = round((sin(linspace(0,2*pi,))+1)*127.5);

4

所要得到的单极性信号波形。

5

二、实验步骤:

1、工程创建

建立工程

进入QUARTUSⅡ开发软件,选择“File”点击“New Project Wizard”。

6

弹出工程向导对话框,选择“Next”

输入存放工程及其相关设计文件的文件夹:

指定“工程名”和工程对应的“顶层设计实体名”。这里我们将工程名和顶层设计实体名都取作“singt1”,再点击Next。注意:工程路径中不要包含中文

7

8

接下来点击“Add”将先期已经输入的设计文件(*.bdf;*.vhd;*.v等)添加到工程中,这里我们没有事先输入好的文件,因此不用添加,即使点击Add All,也没有文件可以加入。

接着点击“User Liberary Pathname”指定用户自定义元件库的路径,这里我们没有要用的用户自定义元件库,也忽略跳过,直接进入下一步。

如有已经输入完毕的设计文件,我们可以参照下述方式建立新工程:

9

10

打开此文件,正弦信号发生器的VHDL格式的设计文件已在文件框中;

11

指定目标器件。

12

由于本实验所用的Altera套件是用“Cyclone II”系列的“EP2C70F6C6”。在实际实验中,可以通过查看开发板参考手册,或者直接观察开发板来获得所使用的器件具体型号。

13

接下来指定“设计输入,综合,仿真,时序分析„„”用到的工具,QUARTUSⅡ对第三方工具的支持比较完善,这里我们不选择,直接点击“Next”,QUARTUSⅡ将使用默认的“设计输入,综合,仿真,时序分析„„”工具。

14

上图给出了所创建工程的主要的信息。点击“Finish”,工程新建完成,工程相关的基本配置工作也完成,这些已经配置的参数,在开发工作进行的过程中,仍然可以通过菜单“Assignments”->“Settings”来修改。

15

2、sin信号发生器顶层模块的设计

新工程设计文件输入(建立顶层设计文件)模式:

新建文件,打开File菜单点击New命令,选择“Device Design Files”子类中的“VHDL File”,点击“OK”,创建一个vhdl文件作为顶层设计文件,顶层设计利用VHDL语言方式输入

16

我们刚才已经用拷贝文件方式新建了顶层设计文件保存,这是工程新建的第一个文件,系统会默认保存为顶层设计实体的名字,在本实例中,也就是“singt1”,点击“保存”,这样,就新建好了顶层设计实体的输入文件。下面我们介绍的是如何输入VHDL格式来建立我们所需模块的实现代码,没有兴趣的同学可以跳过此节。

注意: Quartus给我们提供了很多的帮助,比如对VHDL不熟悉或某些语法生疏的情况下,该软件提供了如下图

的模板生成代码:

17

18

(模块的设计及其输入)在singt.vhd文件中我们可以输入模块对应的实现代码!代码在“所需文件文”件夹:

19

在该文件中我们完成了6位计数器的设计工作,调用了sin波形数据存储文件data_rom.vhd,并加以了优化。下面我们具体的给出该文件的编写方式!

20

3、定制ROM存储sin波形数据

构成ROM中初始化数据文件的方式有两种:Memory Initialization File(.mif)格式和Hexadecimal(Intel-Format)File(.hex)格式。下面我们仅仅以mif格式的文件为例来讲解ROM初始化数据文件的生成!

3.1 建立.mif文件

点击Quartus II的File->New ->Memory Files项,选择Memory Initialization File,点击OK,出现一个参数设置框!

21

这里Number of words对应查找表中查找项的个数,为,Word size对应sin输出波形的数据宽度,为8。点击OK出现如下表格:

3.2 ROM数据的生成

表格中的数据即为sin输出点所对应的8bits的幅度,我们可以在Matlab下生成这些数据:

22

x = round((sin(linspace(0,2*pi,))+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 2 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 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模块,步骤如下。

23

调用Mega Wizard Plug-In Manager

24

3.3.1

3.3.2 设置LPM_ROM模块

选择 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的相关参数,如下图:

25

其中器件为上一页面所选的Cyclone II,rom输出的总线宽度为8bits,该查找表共有格查找项,RAM block的类型由quartus进行自动的选择(如ACEX1K为EAB,APEX20K为ESB,Cyclone为M4K),选择Daul Clock方式,inclock为地址锁存控制信号。点击Next!

26

取消掉‘q’output port 选项 点击next!

27

内存初始化的数据文件指定为我们刚才创建的singt.mif,选择All In-System Memory Content Editor to …,表示允许Quartus II将能通过JTAg口对下载于FPGA中的此ROM进行在系统的测试和读写,这种读写不影响FPGA中系统的工作。点击next!

28

点击Finish!

29

再点击Finish

30

3.3.3 添加文件到工程

我们必须将刚才生成的所有文件添加到工程中。选择Quartus的Files选项,右键点击Add/Remove Files in Project。

31

点击右图的Add AlL -> OK

打开data_rom.vhd,修改绝对路径为相对路径! “singt.mif”- “./singt.mif”

32

33

4、编译、综合等

Quartus II编译器由一系列处理模块组成,如设计工程的查错、逻辑的综合、结构的综合、输出结果的编辑配置、时序分析等。在编译前,我们可以设置一些参数使得编译器采取一些特别的综合和适配技术(如时序驱动技术等),也可提高工程编译的速度,优化器件的资源利用率等。

我们简单的点击 Start Compilation 进行全程编译。

34

编译的时候,Quartus II会给出编译的一些相关信息,如果出错,则根据这些提示进行排错,直至无误。

编译完成后出现如下框图。

并给出编译报告,如图!

5、仿真

对工程的编译通过后必须进行功能和时序的仿真,以便了解系统是否满足要求。步骤如下:

35

5.1 编辑波形文件

File -> New -> Verification/Debugging Files – Vector Waveform File

设置仿真时间:

36

37

保存波形文件:

38

导入singt工程的相关节点:

39

出现:

40

点击List会列出所有的输入输出管脚,如图:

41

也可在波形向量文件编辑器左侧空白处双击左键或者右键->“Insert Node or Bus”弹出“Insert Node or Bus”对话框,在对话框中输入名字插入需要仿真的Node和Bus(也就是设计输入文件中的Pin或者Signal),也可直接点击“Node Finder”,让编辑器列出已知的Node和Bus。

42

点击Node Finder,就调出对话框。

43

选择所需的pin到观察列表,如图:

44

设置CLK的输入波形:

45

46

我们可以通过左侧的放大镜进行观察。 保存该文件!

47

5.2 配置仿真参数

在菜单“Assignments”->“Settings”->“Simulator”页面,设置Simulation Mode,根据具体需要选择“Functional”或者“Timing”,这里我们选择功能仿真

48

Simulation Input:添加为singt.vwf

49

50

仿真之前,先点击下图所示指令,生成功能仿真子表(功能仿真特有的步骤)。

51

52

5.3 进行仿真

点击菜单工具栏

“Simulator”按钮,得到仿真的结果。

为便于观察DOUT的输出结果,设置其数据格式:

53

结果如下:

注意:如果采用时序仿真,时钟周期太小,可能会造成数据输出不正确,所以建议时钟周期尽量大于毛刺检测时间的十倍以上。

6、内部电路观察

观察RTL电路:

55

56

Chip Editor:

57

58

7、生成symbol

File -> New ->新建一个bdf文件,命名为singt.bdf

59

在singt1.bdf输入栏中双击空白处,弹出symbol调用窗口,如下图所示,选择刚才生成的singt1的symbol,点击OK。

60

用相同的方式在原理图中添加input和output 管脚 。

61

输入管脚命名为clk,输出管脚命名为dout[7..0],如下图所示:

将此bdf文件设为顶层实体,然后进行全编译 :

62

编译:

63

8、管脚分配

分析和综合之后,点击菜单“Assignments”->“Pins”,进入管脚分配编辑器,

注意:如果手边有开发板并想将设计输入到开发板上演示,请具体参考手边开发板的《硬件开发配置参考手册》(名字可能有差别)或类似文档,如果不需要将最后的设计生成文件烧写到开发板,而只是需要尝试QUARTUS的设计流程,任意选择几个管脚就可以。

确定引脚分别为:主频时钟clk接PIN_AD15;8位输出数据总线dout[7..0]对应的引脚编号分别为PIN_W27 、PIN_W25、 PIN_W23、 PIN_Y27、 PIN_Y24、 PIN_Y23、 PIN_AA27、 PIN_AA24。 最后存储这些引脚锁定的信息后,必须在编译(启动Start Compilation)一次,才能将引脚锁定信息编译进编程下载文件中。此后就可以准备将生成好的SOF文件下载到实验系统的FPGA中去了。

9、下载

点击菜单工具栏

“Programmer”按钮进入下载页面,下载工程生成的烧写文件到FPGA芯片,首先

要配置下载工具,点击“Hardware Setup”,进入下载工具设置页面,

65

首先点击“Add Hardware”,进入Add Hardware对话框添加用到下载电缆,根据实际情况,选择“ByteBlasterⅡ”或者“Usb Blaster”下载电缆,双击选择,点击“OK”回到Hardware Setup对话框,

点击要使用的下载电缆,并点击“Select Hardware”,最后点击“Close”回到下载界面,出现

或者

66

说明下载电缆设置成功

输入需要下载的文件(这里是singt1.sof),选择“Program/Configure”复选框,点击“Start”,即可完成烧写文件的下载。

注意:消息框中下载结束的信息条出现!

下载成功后,我们可以在实验平台上看到8个LED在闪亮。(也许会由于主频时钟频率过大,而观察不到明显的闪烁)

67

10、利用SignalTapII 观察波

Signal tap 配置:

选择“File”菜单,点击“New”,在弹出的New对话框中,选择Verification/Debugging Files下的Signal Tap II Logic Analyzer File,如图所示:

Signal Tap的相关配置

1,在Instance Manager窗口,Instance栏为实例名称,右键对Instance进行Create、Delete、Rename操作,此处名称我们改为“singt”。

68

2,在JTAG Chain Configuration窗口,点击Hardware栏的Setup…按钮,弹出Hardware Setup对话框:

双击 “Available hardware items”栏中的“USB-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列出列出信号列表,双击dout信号,此时在Selected Nodes栏列出了已选信号dout,(可以根据需要,任意添加希望观察的信号)点击OK关闭对话框。

69

5,Signal Configuration栏,点击Clock栏后的browse按钮,选择逻辑分析仪的工作时钟,在弹出的Node Filter对话框,点击List列出信号列表,双击clk信号,此时在Selected Nodes栏列出了已选信号clk,(视具体工程不同,选择不同的工作频率,但是该频率不能同时出现在singt栏)点击OK关闭对话框。 在Setup栏的Sample depth下拉菜单,选择待测数据的抽样深度,此处选择2k,其他设置如图所示 此时SignalTap的设置已经全部完成,保存设置,名字任取,此处保存为singt1.stp。如下图所示设置:

70

工具栏按钮,分别表示:Run、Analysis、Auto Analysis、Stop Analysis、Read Data。

点击保存按钮,在接下来弹出的对话框都点击Yes.

然后再进行综合编译,完成以后,就可以下载“.sof”工程文件到FPGA芯片了,点击Program Device按钮进行芯片烧写。 烧写完成后,点击“Auto Analysis”按钮运行逻辑分析仪。此时在芯片内部运行的信号数据,已经通过JTAG链读取到计算机,并在Data窗口显示

为了便于观察,在DOUT栏点击右键,在弹出的对话框中选择Bus Display Format栏的 Unsigned Line Chart选项,如下图所示:

更改dout的数据类型: 右击“dout” 选择Bus Display Format -> Unsigned Line Chart,即可看到正弦波信号:

11、利用外设DAC观察输出波形

实验内容1:将正弦波信号发生器所输出的信号经外设DAC器件输出到示波器上。

在前面的基础上,我们在QuartusII上完成了正弦信号发生器设计,包括仿真和资源利用情况了解。下面我们添加一个D/A转换,以便使用示波器来观察输出的波形(D/A可利用系统上配置的WM8731L)。

71

首先,将编译、仿真和管脚分配后的工程下载到实验板中,再通过外设DAC模块形成模拟环路通过示波器验证输出波形。

1、p2s.v,i2c.v,clock_500.v三个文件拷贝到工程目录;

2、在Project Navigator的Files界面,右键——Add/Remove Files in Projects.. ——add all

72

73

3、打开clock_500.v 找到ROM[2]一行,其值修改为16'h0812;关于此处各ROM的值的定义,请参阅参考文档WM8731_WM8731L.pdf中DEVICE DESCRIPTION章节,这个ROM的配置是DAC与ADC能否成功实现的关键,建议各位同学展开学习。

74

4、在上面3个.v文件上依次右键——Creat Symbol Files for Current File

75

5、打开singt.bdf 添加进以上3个模块,以及如图所示的input pin,output pin;命名,连接如下图所示;(请仔细对照,图片不清晰请放大文档显示比例)

76

下图是上图中CLOCK_500与i2C模块部分:

两个模块端口的连接可以不用直接相连,只要从端口引出的线的名字相同即可,对线的命名为在需要命名的线上右键——Properties,然后修改name。如图:

77

78

6、对新添加的模块添加加的管脚分配,Assignment——Pins,如下图:(其中AUD_ADCLRCK,iAUD_ADCDAT,iKey,KEY_ON的管脚在我们这次的实验中并未生成,不需要分配;clk8只是input的名称,在这次实验里只要PIN_AD15管脚与CLOCK_500模块中的CLOCK的input相连就可以)

7、将音频接口线一段插入Line out接口,一段连示波器观察。

79

12.作业

在熟悉以上实验内容的基础上,自己设计一个三角波信号发生器,相关参数自己设定。交出下载工程文件并来实验室验证,包括实验原理、程序设计、程序分析、仿真分析、硬件测试和详细实验步骤记录。

80

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务