EDA课程报告-正弦波信号发生器的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;