EDA课程设计正弦波信号发生器的设计.doc
文本预览下载声明
EDA课程设计--正弦波信号发生器的设计
《EDA》课程设计报告
――正弦波信号发生器的设计
一、设计目的:
进一步熟悉QuartusII及其LPM_ROM与FPGA硬件资源的使用方法。培养动手能力以及合作能力。
二、设计要求:
1、clk为12MHz。
2、通过DAC0832输出正弦波电压信号,电压范围0~-5V。
3、通过示波器观察波形。
三、设计内容:
在QUARTUSII上完成正弦波信号发生器的设计,包括仿真和资源利用情况了解(假设利用Cyclone器件)。最后在实验系统上实测,包括FPGA中ROM的在系统数据读写测试和利用示波器测试。信号输出的D/A使用实验系统上的ADC0832。
设计原理:
图1所示的正弦波信号发生器的结构由四部分组成:
计数器或地址发生器(这里选择10位)。
正弦信号数据ROM(10位地址线,8位数据线),含有1024个8位数据(一个周期)。
VHDL顶层设计。
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 正弦波信号发生器的设计图
设计步骤:
建立.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;
在设计正弦波信号发生器前,必须首先完成存放波形数据ROM的设计。利用MegaWizard Plug-In manager定制正弦信号数据ROM宏功能块,并将以上的波形数据加载于此ROM中。设计步骤如下:
打开MegaWizard Plug-In manager初始对话框。在Tools菜单中选择MegaWizard Plug-In manager产生一个对话框,选择Create a new custom...项,即定制一个新的模块。单击Next按钮后,在所产生的对话框的左栏选择Storage项下的LPM_ROM,再选择CycloneⅡ器件和VHDL语言方式;最后输入ROM文件存放的路径和文件名:e:\\rom_1024.vhd,单击Next按钮。
选择ROM控制线、地址线和数据线。在弹出的对话框中选择地址线位宽和ROM中数据数分别为10和1024;选择地址锁存控制信号clock。
单击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定制。
打开此文件可以看到其中调用初始化数据文件的语句为:init_file sdata.mif。最后生成的ROM元件文件如源代码1所示,其中的init_file指向已做了修改。修改后用于例化的波形数据ROM文件rom_1024.vhd如下。
源代码:
1)、源代码1如下所示:
LIBRARY ieee;
USE
显示全部