文档详情

EDA课程设计正弦波信号发生器的设计.doc

发布:2018-10-12约1.08万字共22页下载文档
文本预览下载声明
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
显示全部
相似文档