FPGA实验一 正弦信号发生器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河北大学 电子与信息工程学院 2010 张庆顺

1 / 53

SOPC 设计技术课程

实验一、正弦信号发生器

河北大学 电子信息工程学院

教师:张庆顺

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

实验条件:

Quartus II 9.1

目录

二、实验步骤: (6)

1、工程创建 (6)

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

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

3.1 建立.mif文件 (17)

3.2 ROM数据的生成 (19)

3.3 定制ROM元件 (19)

3.3.1 调用Mega Wizard Plug-In Manager (20)

3.3.2 设置LPM_ROM模块 (21)

4、编译、综合等 (27)

5、仿真 (28)

5.1 编辑波形文件 (28)

5.2进行仿真 (36)

6、内部电路观察 (38)

7、生成symbol (40)

8、管脚分配 (46)

9、下载 (49)

10.作业 (53)

一、设计原理:

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

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

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

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

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

64/0f f =

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

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

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

二、实验步骤:

1、工程创建

建立工程

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

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

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

指定“工程名”和工程对应的“顶层设计实体名”。这里我们将工程名和顶层设计实体名都取作

“singt1”,再点击Next。

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

注意:

如果有已经输入完毕的设计文件,我们可以在此直接添加进来,需要将已经写好的设计文件存储在该工程的文件夹内,点击Add All即可。

指定目标器件:

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

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

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

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

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

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

点击File菜单中的Save As…,保存设计文件,文件名取名为singt1.v。

在singt1.v文件中我们可以输入模块对应的实现代码!如下:

具体的给出该文件的编写方式!

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,出现一个参数设置框!

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

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 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模块,步骤如下。

相关文档
最新文档