EDA课程报告-正弦波信号发生器的设计

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

《EDA》课程设计报告——正弦波信号发生器的设计

一、设计目的:

进一步熟悉QuartusII及其LPM_ROM与FPGA 硬件资源的使用方法。培养动手能力以及合作能力。

二、设计要求:

1、clk为12MHz。

2、通过DAC0832输出正弦波电压信号,电压范围

0~-5V。

3、通过示波器观察波形。

三、设计内容:

在QUARTUSII上完成正弦波信号发生器的设计,包括仿真和资源利用情况了解(假设利用

Cyclone器件)。最后在实验系统上实测,包括FPGA

中ROM的在系统数据读写测试和利用示波器测试。

信号输出的D/A使用实验系统上的ADC0832。

四、设计原理:

图1所示的正弦波信号发生器的结构由四部分

组成:

1、计数器或地址发生器(这里选择10位)。

2、正弦信号数据ROM(10位地址线,8位数据线),

含有1024个8位数据(一个周期)。

3、VHDL顶层设计。

4、8位D/A(实验中可用ADC0832代替)。

图1所示的信号发生器结构图中,顶层文件singt.vhd在FPGA中实现,包含两个部分:ROM的地址信号发生器,由10位计数器担任;一个正弦数据ROM,由LPM_ROM模块构成。LPM_ROM底层是FPGA 中的EAB、ESB或M4K等模块。地址发生器的时钟clk的输入频率fo与每周期的波形数据点数(在此选择1024点),以及D/A输出的频率f的关系是:f=fo/1024

图1 正弦信号发生器结构框图

图2 正弦波信号发生器的设计图

五、设计步骤:

1、建立.mif格式文件

首先,mif文件可用C语言程序生成,产生正弦波数值的C程序如下:

#include

#include

main()

{

int i;

float s;

for(i=0;i<1024;i++)

{

s=sin(atan(1)*8*i/256);

printf("%d :%d;\n",i,(int)((s+1)*255/2)) }

}

其次,把上述程序编译后,在DOS命令行下执行命令:romgen > sdata.mif;

将生成的sdata.mif 文件,再加上.mif文件的头部说明即可。

.mif文件的头部说明如下所示:

WIDTH=8;

DEPTH=1024;

ADDRESS_RADIX=DEC;

DATA_RADIX=DEC;

CONTENT BEGIN

0:127;

1:130;

2:133;

3:136;

4:139;

5:143;

6:146;

……(数据略去)

1016:102;

1017:105;

1018:108;

1019:111;

1020:115;

1021:118;

1022:121;

1023:124;

END;

2、在设计正弦波信号发生器前,必须首先完成存

放波形数据ROM的设计。利用MegaWizard Plug-In manager定制正弦信号数据ROM宏功能块,并将以上的波形数据加载于此ROM中。设计步骤如下:

1)打开MegaWizard Plug-In manager初始对话框。在Tools菜单中选择MegaWizard Plug-In manager产生一个对话框,选择Create a new custom...项,即定制一个新的模块。单击Next按钮后,在所产生的对话框的左栏选择Storage项下的LPM_ROM,再选择CycloneⅡ器件和VHDL语言方式;最后输入ROM文件存放的路径和文件名:e:\www\rom_1024.vhd,单击Next按钮。

2)选择ROM控制线、地址线和数据线。在弹出的对话框中选择地址线位宽和ROM中数据数分别为10和1024;选择地址锁存控制信号clock。

3)单击Next按钮在对话框的“What should the RAM…”栏选择默认的Auto。在栏选择“Do you want to…Yes,use this file for memory content data”项,并按Browse钮,选择指定路径上的文件rom_1024.mif。在

“Allow In-System Memory…”栏选择打勾,

并在“The Instance ID of this ROM”栏输入

ROM1,作为ROM的ID名称。最后单击Next按

钮,再单击Finish 按钮后完成ROM定制。

4)打开此文件可以看到其中调用初始化数据文件的语句为:init_file => "sdata.mif"。最后生成的ROM元件文件如源代码1所示,其中的init_file指向已做了修改。修改后用于例化的波形数据ROM文件rom_1024.vhd如下。

六、源代码:

1)、源代码1如下所示:

LIBRARY ieee;

USE ieee.std_logic_1164.all;

LIBRARY altera_mf;

USE altera_mf.altera_mf_components.all; ENTITY rom_1024 IS

PORT

( address : IN STD_LOGIC_VECTOR (9 DOWNTO 0);

clock : IN STD_LOGIC ;

q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );

END rom_1024;

ARCHITECTURE SYN OF rom_1024 IS

SIGNAL sub_wire0:STD_LOGIC_VECTOR(7 DOWNTO 0); COMPONENT altsyncram

--例化altsyncram元件,调用了LPM模块altsyncram

GENERIC ( --参数传递语句

--类属参量数据类型定义

intended_device_family : STRING;

width_a : NATURAL;

widthad_a : NATURAL;

numwords_a : NATURAL;

operation_mode : STRING;

相关文档
最新文档