基于eda的智能函数发生器课程设计说明书学位论文.docx
- 文档编号:5261176
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:23
- 大小:116.54KB
基于eda的智能函数发生器课程设计说明书学位论文.docx
《基于eda的智能函数发生器课程设计说明书学位论文.docx》由会员分享,可在线阅读,更多相关《基于eda的智能函数发生器课程设计说明书学位论文.docx(23页珍藏版)》请在冰豆网上搜索。
基于eda的智能函数发生器课程设计说明书学位论文
邮电与信息工程学院
课程设计说明书
课题名称:
电子设计自动化(EDA)课程设计
一、课程设计的任务的基本要求:
1.设计目的:
(1)学习使用EDA设计软件QuartusⅡ,了解电路描述、综合、模拟过程。
(2)掌握使用EDA工具设计数字系统的设计思路和设计方法。
2.设计要求:
(1)以AlteraDE2开发系统为验证平台,根据设计题目要求完成设计输入、综合、仿真与验证工作。
(2)提供设计报告,报告要求包括以下内容:
设计任务书、题目、摘要(中英文)、正文、参考文献。
其中正文应包含:
设计思路、设计输入文件、设计与调试过程、仿真与验证结果和设计结论。
3.设计题目:
(1)设计智能函数发生器,要求实现正弦波、方波、三角波、递增、递减斜波和阶梯波六种波形,所产生的波形频率用数码管显示。
二、进度安排:
18周(2009.6.8-2009.6.12):
周一:
选择课程设计题目,明确课程设计目的和任务。
周二、周三:
查看参考资料。
周四、周五:
原理图与程序设计。
19周(2009.6.15-2008.6.19):
周一、周二:
上机调试原理图与程序。
周三:
整理所有任务资料,答辩。
周四、周五:
撰写课程设计报告。
三、应收集资料及主要参考文献:
(1)AlteraDE2UserManual
(2)基于QuartusII的FPGA/CPLD数字系统设计实例,周润景等,电子工业出版社
(3)EDA技术实用教程(第二版),潘松等,科学出版社
四、课程设计摘要(中文):
函数发生器是一种很常用的器件,在很多情况下,最常用的波形是正弦波,方波,三角波,递增,递减斜波和阶梯波六种。
虽然用模拟电子线路很容易得到这些波形,但是这种方法会使硬件线路较为繁琐,而且模拟线路会受到干扰。
本设计采用综合设计方法使用FPGA来实现智能函数发生器,它由六个波形产生模块及波形选择输出模块组成,波形选择模块的输出q接在D/A转换的数据端,就可以在D/A输出端得到想要的其中之一的任一种光滑的波形
五、课程设计摘要(英文):
Thefunctiongeneratorisonekindofverycommonlyusedcomponent,Inverymanysituations,Themostcommonlyusedprofileisasinewave,Square-wave,Trianglewave,Increasesprogressively,Decreasesprogressivelythewavetiltandthestepsandladderswavesixkinds.Althoughisveryeasywiththesimulationelectroniccircuittoobtaintheseprofiles,Butthismethodcancausethehardwarelinetobetedious,Moreovertheartificiallinecanreceivethedisturbance.ThisdesignusesFPGAtorealizetheintelligencefunctiongenerator,Ithasthemoduleandtheprofilechoiceoutputmodulebysixprofilesiscomposed,ProfilechoicemoduleoutputqmeetsinD/Atransformsdataend,MayintheD/Aout-portobtainsoneofthemwhichwantsnomatterwhatonekindofsmoothprofile.
正文
一、设计思路
1.基于QUASTUSII平台,采用VHDL语言,设计一波形信号发生器。
首先根据对各波形的幅度进行采样,获得各波形的波形数据表,使用FPGA来实现智能函数发生器,它由六个波形产生模块及波形选择输出模块组成,然后FPGA根据输入的时钟(频率可根据要求可变)作为地址信号,从FPGA数据线上输出相应的波形数据,再送入实验板上的D/A转换芯片进行转换为模拟信号,最后送入滤波电路滤波后输出,就可以得到想要的任意其中的一个波形
二、设计输入文件与调试分频
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityfenpinis
port(clk:
instd_logic;
clkfen:
outstd_logic);
endfenpin;
architecturefenpinoffenpinis
signalclk_mid:
std_logic;
begin
process(clk)
variabledata:
integerrange0to99;
begin
ifclk'eventandclk='1'then
ifdata=99then
data:
=0;
clk_mid<=notclk_mid;
else
data:
=data+1;
endif;
endif;
clkfen<=clk_mid;
endprocess;
endfenpin;
2.递减波形数据产生模块设计
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYdjIS
PORT(clk,reset:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDdj;
ARCHITECTUREbehaveOFdjIS
BEGIN
PROCESS(clk,reset)
VARIABLEtmp:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
IFreset='0'THEN
tmp:
="11111111";
ELSIFclk'EVENTANDclk='1'THEN
IFtmp="00000000"THEN
Tmp:
="11111111";
ELSE
tmp:
=tmp-1;
ENDIF;
ENDIF;
q<=tmp;
ENDPROCESS;
ENDbehave;
3.递增(锯齿波)波形数据产生模块设计LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYdzIS
PORT(clk,reset:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDdz;
ARCHITECTUREbehaveOFdzIS
BEGIN
PROCESS(clk,reset)
VARIABLEtmp:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
IFreset='0'THEN
tmp:
="00000000";
ELSIFclk'EVENTANDclk='1'THEN
IFtmp="11111111"THEN
tmp:
="00000000";
ELSE
tmp:
=tmp+1;
ENDIF;
ENDIF;
q<=tmp;
ENDPROCESS;
ENDbehave;
4.方波波形数据产生模块设计
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYfbIS
PORT(clk,reset:
INSTD_LOGIC;
q:
OUTINTEGERRANGE0TO255);
ENDfb;
ARCHITECTUREbehaveOFfbIS
SIGNALa:
BIT;
BEGIN
PROCESS(clk,reset)
VARIABLEcnt:
INTEGERrange0to31;
BEGIN
IFreset='0'THEN
A<='0';
ELSIFclk'EVENTANDclk='1'THEN
IFcnt<31THEN
Cnt:
=cnt+1;
ELSE
cnt:
=0;
a<=NOTa;
ENDIF;
ENDIF;
ENDPROCESS;
Process(clk,a)
BEGIN
IFclk'EVENTANDclk='1'THEN
IFa='1'THEN
Q<=255;
ELSE
Q<=0;
ENDIF;
ENDIF;
ENDPROCESS;
ENDbehave;
5.三角波波形数据产生模块设计
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYjcbIS
PORT(clk,reset:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDjcb;
ARCHITECTUREbehaveOFjcbIS
BEGIN
PROCESS(clk,reset)
VARIABLEtmp:
STD_LOGIC_VECTOR(7DOWNTO0);
VARIABLEa:
STD_LOGIC;
BEGIN
IFreset='0'THEN
tmp:
="00000000";
ELSIFclk'EVENTANDclk='1'THEN
IFa='0'THEN
IFtmp="11111110"THEN
tmp:
="11111111";
a:
='1';
ELSE
tmp:
=tmp+1;
ENDIF;
ELSE
IFtmp="00000001"THEN
tmp:
="00000000";
a:
='0';
ELSE
tmp:
=tmp-1;
ENDIF;
ENDIF;
ENDIF;
q<=tmp;
ENDPROCESS;;
ENDbehave
6.阶梯波形数据产生模块设计
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityjtbis
port(clk,reset:
instd_logic;
q:
outstd_logic_vector(7downto0));
endjtb;
architectureaofjtbis
begin
process(clk,reset)
variabletmp:
std_logic_vector(7downto0);
begin
ifreset='0'then
tmp:
="00000000";
elseifclk'eventandclk='1'then
iftmp="11111111"then
tmp:
="00000000";
else
tmp:
=tmp+16;
endif;
endif;
endif;
q<=tmp;
endprocess;
enda;
7.正弦波波形数据产生模块设计
libraryieee;
useieee.std_logic_arith.all;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityzxis
port(clk:
instd_logic;
reset:
instd_logic;
q:
outstd_logic_vector(7downto0));
endzx;
architecturebehavofzxis
signalb:
integerrange0to63;
signald:
integerrange0to255;
begin
process(clk)
begin
ifreset='0'thenb<=0;
elsifclk'eventandclk='1'then
ifb=63thenb<=0;
elseb<=b+1;
endif;
endif;
endprocess;
process(b)
begin
casebis
when00=>d<=255;when01=>d<=254;when02=>d<=252;when03=>d<=249;
when04=>d<=245;when05=>d<=239;when06=>d<=233;when07=>d<=225;
when08=>d<=217;when09=>d<=207;when10=>d<=197;when11=>d<=186;
when12=>d<=174;when13=>d<=162;when14=>d<=150;when15=>d<=137;
when16=>d<=124;when17=>d<=112;
when18=>d<=99;when19=>d<=87;when20=>d<=75;when21=>d<=64;when22=>d<=53;when23=>d<=43;when24=>d<=34;when25=>d<=26;when26=>d<=19;when27=>d<=13;
when28=>d<=8;when29=>d<=4;
when30=>d<=1;when31=>d<=0;
when32=>d<=0;when33=>d<=1;
when34=>d<=4;when35=>d<=8;
when36=>d<=13;when37=>d<=19;when38=>d<=26;when39=>d<=34;
when40=>d<=43;when41=>d<=53;when42=>d<=64;when43=>d<=75;
when44=>d<=87;when45=>d<=99;when46=>d<=112;when47=>d<=124;
when48=>d<=137;when49=>d<=150;when50=>d<=162;when51=>d<=174;
when52=>d<=186;when53=>d<=197;when54=>d<=207;when55=>d<=217;
when56=>d<=225;when57=>d<=233;when58=>d<=239;when59=>d<=245;
when60=>d<=249;when61=>d<=252;when62=>d<=254;when63=>d<=255;
whenothers=>null;
endcase;
endprocess;
q<=conv_std_logic_vector(d,8);
endbehav;
8.六选一选择器模块设计
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYxzIS
PORT(sel:
INSTD_LOGIC_VECTOR(2DOWNTO0);
d0,d1,d2,d3,d4,d5:
INSTD_LOGIC_VECTOR(7DOWNTO0);
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDxz;
ARCHITECTUREbehaveOFxzIS
BEGIN
PROCESS(sel)
BEGIN
CASEselIS
WHEN"000"=>q<=d0;
WHEN"001"=>q<=d1;
WHEN"010"=>q<=d2;
WHEN"011"=>q<=d3;
WHEN"100"=>q<=d4;
WHEN"101"=>q<=d5;
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESS;
ENDbehave;
9.译码
libraryieee;
useieee.std_logic_1164.all;
useieee.numeric_std.all;
useieee.std_logic_unsigned.all;
entityymis
port(clk,rst:
instd_logic;
data:
instd_logic_vector(7downto0);
sel:
outstd_logic_vector(2downto0);
data_disp:
outstd_logic_vector(6downto0));
endym;
architectureRTLofymis
signalcount:
integerrange9downto0;
signaltemp:
integerrange4downto0;
signalnumber_h,number_t,number_l:
integerrange0to9;
begin
process(data,clk,rst)
begin
if(rst='0')then
number_h<=0;
number_t<=0;
number_l<=0;
elsif(to_integer(unsigned(data))>=200ANDto_integer(unsigned(data))-200>=50)then
number_h<=2;
number_t<=5;
number_l<=to_integer(unsigned(data))-250;
elsif(to_integer(unsigned(data))>=200ANDto_integer(unsigned(data))-200>=40)then
number_h<=2;
number_t<=4;
number_l<=to_integer(unsigned(data))-240;
elsif(to_integer(unsigned(data))>=200ANDto_integer(unsigned(data))-200>=30)then
number_h<=2;
number_t<=3;
number_l<=to_integer(unsigned(data))-230;
elsif(to_integer(unsigned(data))>=200ANDto_integer(unsigned(data))-200>=20)then
number_h<=2;
number_t<=2;
number_l<=to_integer(unsigned(data))-220;
elsif(to_integer(unsigned(data))>=200ANDto_integer(unsigned(data))-200>=10)then
number_h<=2;
number_t<=1;
number_l<=to_integer(unsigned(data))-210;
elsif(to_integer(unsigned(data))>=200)then
number_h<=2;
number_t<=0;
number_l<=to_integer(unsigned(data))-200;
elsif(to_integer(unsigned(data))>=100ANDto_integer(unsigned(data))-100>=90)then
number_h<=1;
number_t<=9;
number_l<=to_integer(unsigned(data))-190;
elsif(to_integer(unsigned(data))>=100ANDto_integer(unsigned(data))-100>=80)then
number_h<=1;
number_t<=8;
number_l<=to_integer(unsigned(data))-180;
elsif(to_integer(unsigned(data))>=100ANDto_integer(unsigned(data))-100>=70)then
number_h<=1;
number_t<=7;
number_l<=to_integer(unsigned(data))-170;
elsif(to_integer(unsigned(data))>=100ANDto_integer(unsigned(data))-100>=60)then
number_h<=1;
number_t<=6;
number_l<=to_integer(unsigned(data))-160;
elsif(to_integer(unsigned(data))>=100ANDto_integer(unsigned(data))-100>=50)then
number_h<=1;
number_t<=5;
number_l<=to_integer(unsigned(data))-150;
elsif(to_integer(unsigned(data))>=100ANDto_integer(unsigned(data))-100>=40)then
number_h<=1;
number_t<=4;140;
elsif(to_integer(unsigned(data))>=100ANDto_integer(unsigned(data))-100>=30)then
number_h<=1;
number_t<=3;
number_l<=to_integer(unsigned(data))-130;
elsif(to_integer(unsigned(data))>=100ANDto_integer(unsigned(data))-100>=20)then
number_h<=1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 eda 智能 函数 发生器 课程设计 说明书 学位 论文