- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EDA课程设计报告-正弦波信号发生器的设计
《EDA》课程设计报告
——正弦波信号发生器的设计
一、设计目的
通过本次课程设计,进一步了解QUARTUS Ⅱ与LPM_ROM与FPGA硬件功能的使用方法。培养自己查阅资料及解决问题的能力。
二、设计要求
通过按键,可以控制输出的是正弦波或三角波。
通过ADC0832输出正弦波与三角波,电压V范围在0至-10V之间
3、 通过示波器观察波形。
三、设计内容:
在QUARTUSII上完成信号发生器的设计。最后在实验板上实测,包括FPGA中ROM的在系统数据读写测试和利用示波器测试。信号输出的D/A使用实验板上的ADC0832。
设计原理:
图1所示的波信号发生器的结构由五部分组成:
1、计数器或地址发生器(这里选择8位)。正弦信号数据ROM(8位地址线,8位数据线),含有256个8位数据(一个周期)。
2、VHDL顶层设计。
3、8位D/A
图1所示的信号发生器结构图中,顶层文件adc.vhd在FPGA中实现,包含两个部分:ROM的地址信号发生器,由8位计数器担任;一个正弦数据ROM(或者一个三角波数据ROM),由LPM_ROM模块构成。地址发生器的时钟clk的输入频率fo与每周期的波形数据点数(在此选择256点),以及D/A输出的频率f的关系是:f=fo/256
图1 正弦信号发生器结构框图
图一 信号发生器结构图
图2 信号发生器的设计图
设计步骤:
建立.mif格式文件
mif文件可用C语言程序生成,
产生正弦波数值的C程序如下:
#includestdio.h
#includemath.h
main()
{
int i;
float s;
for(i=0;i256;i++)
{
s=sin(atan(1)*8*i/256);
printf(%d :%d;\n,i,(int)((s+1)*255/2))
}
}
以zx.c保存。
产生三角波数值的C程序如下:
#includestdio.h
#includemath.h
main()
{
int i;
float s;
for(i=0;i256;i++)
{
s=i;
printf(%d :%d;\n,i,s);
}
}
以sj.c保存。
其次,把上述程序编译后,会生成EXE文件,在DOS命令行下分别执行以下命令:
zx zx.mif;
sj sj.mif;
将生成的*.mif 文件,再加上.mif文件的头部说明即可。
.mif文件的头部说明如下所示:
WIDTH=8;
DEPTH=256;
ADDRESS_RADIX=DEC;
DATA_RADIX=DEC;
CONTENT BEGIN
……
……(数据略去)
END;
在设计信号发生器前,必须首先完成存放波形数据ROM的设计。设计步骤如下:
打开QUARTUS Ⅱ。在files菜单中选择new产生一个对话框,选择Block Diagram/Schematic File 项,会生成一个*.bdf文件,双击文件空白处,
跳出symbol窗口,在改窗口下选择megafunctionsstoragelpm_rom。
在跳出的 MegaWizard Plug-In Manager中选
择VHDL,路径保存在D:\chengxv\中
在parameter settings 窗口中,选择currently selected device family :cyclone.选择ROM控制线、地址线和数据线。在弹出的对话框中选择地址线位宽和ROM中数据数分别为8和64;选择地址锁存控制信号dual clock。在对话框的“What should the RAM…”栏选择默认的Auto。
单击NEXT,将此界面数据如图设置
单击Next按钮,选择BROWSE,选择利用C做成的MIF文件,将此模块命名为ROM0,再单击Finish 按钮后完成ROM0定制。
打开此文件可以看到其中调用初始化数据文件的语句为:init_file = .mif。最后生成的ROM0元件文件如源代码1所示.
源代码:
1)、源代码1如下所示:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY altera_mf;
USE altera_mf.all;
ENTITY ROM0 IS
PORT
(
address : IN STD_LOGIC_VECTOR (5 DOWNTO 0);
inclock : IN STD_LOGIC ;
q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)
);
END ROM0
文档评论(0)