基于EDA技术的智能函数发生器设计课程设计.docx
- 文档编号:9753909
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:30
- 大小:513.33KB
基于EDA技术的智能函数发生器设计课程设计.docx
《基于EDA技术的智能函数发生器设计课程设计.docx》由会员分享,可在线阅读,更多相关《基于EDA技术的智能函数发生器设计课程设计.docx(30页珍藏版)》请在冰豆网上搜索。
基于EDA技术的智能函数发生器设计课程设计
.
《数字电子技术》课程设计
题目:
基于EDA技术的智能函数发生器设计
1引言
20世纪末,电子技术获得了飞速的发展,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
而休闲时间越来越少的人们越来越没太多的时间出去搞户外活动,于是众多电子游戏相应而出。
因此设计了这个两人的乒乓球游戏。
而电子信息类产品的开发明显地出现了两个特点:
一是开发产品的复杂程度加深;二是开发产品的上市时限紧迫。
而伴随着如上两个特点的产生,相应的出现了设计上的两个问题。
其一,在电子系统日趋数字化、复杂化和大规模集成化的今天,电子厂商们越加迫切地追求电子产品的高功能、优品质、低成本、微功耗和微小封装尺寸,从而使得电子设计日趋复杂。
那么如何去完成这些高复杂度的电子设计呢?
其二,电子产品设计周期短和上市快是电子厂商们坚持不懈的追求,那么面对日趋复杂的设计,又如何能够缩短开发时间呢?
解决以上两个问题的唯一途径是电子设计自动化(EDA),即用计算机帮助设计人员完成繁琐的设计工作。
我采用了FPGA来设计,从中巩固了自己的专业知识,也有利于提高自己分析问题的能力,让理论与实际得到了完美的结合。
对硬件描述语言VHDL语言的掌握也更加熟练,对于QUARTUSⅡ的设计流程有了更系统的学习。
现代电子产品的发展越来越快, 各种新型电子元器件和智能化的电子产品已经在国民经济的各个领域和人民生活的各个方面得到了日益广泛的应用。
实现这种进步的主要原因就是生产制造技术和电子设计技术的发展。
其中电子玩具的发展也是在日益成熟。
乒乓球游戏机控制电路是有甲、乙双方参赛,有裁判控制发“球”的三人乒乓球游戏机;它能完成自动裁判和自动计分是一个带数字显示的模拟游戏机。
其结构简单、成本低、易操作,安全性强、无污染。
乒乓球游戏机还能在娱乐的同时提高我们的反应、应变能力。
具有良好的市场发展前景。
2QuartusⅡ软件、FPGA硬件介绍
QuartusII是美国Altera公司自行设计的第四代PLD开发软件可以完成PLD的设计输入、逻辑综合、布局与布线、仿真、时序分析、器件编程的全过程同时还支持SOPC(可编程片上系统)设计开发,是继MAX+plusII后的新一代开发工具,适合大规模FPGA的开发。
它是CPLD/FPGA集成化开发软件,具有完善的可视化设计环境。
QuartusⅡ提供了方便的设计输入方式、快速的编译和直接易懂的器件编程。
能够支持逻辑门数在百万门以上的逻辑器件的开发,并且为第三方工具提供了无缝接口。
该软件支持的器件有:
StratixⅡ、StratixGX、Stratix、Mercury、MAX3000A、MAX7000B、MAX7000S、MAX7000AE、MAXⅡ、FLEX6000、FLEX10K、FLEX10KA、FLEX10KE、Cyclone、CycloneⅡ、APEXⅡ、APEX20KC、APEX20KE和ACEX1K系列。
QuartusⅡ软件包的编程器是系统的核心,提供功能强大的设计处理,设计者可以添加特定的约束条件来提高芯片的利用率。
QuartusII提供了更优化的综合和适配功能,改善了对第三方仿真和时域分析工具的支持。
QuartusII还包括DSPBuilder开发工具,支持系统级的开发,支持NisoII入式核,IP核和用户定义逻等。
由于它是一门迅速发展的新技术,涉及面广,内容丰富,理解各异,目前尚无统一的看法。
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA的开发相对于传统PC、单片机的开发有很大不同。
FPGA以并行运算为主,以硬件描述语言来实现;相比于PC或单片机(无论是冯诺依曼结构还是哈佛结构)的顺序操作有很大区别,也造成了FPGA开发入门较难。
目前国内有专业的FPGA外协开发厂家,如[北京中科鼎桥ZKDQ-TECH]等。
FPGA开发需要从顶层设计、模块分层、逻辑实现、软硬件调试等多方面着手。
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输入输出模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。
FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。
FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块。
FPGA芯片主要由7部分完成,分别为:
可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。
3总体方案
乒乓游戏机可由控制模块(my111)和四个七段译码器模块(disp0、disp1、disp2、disp3)组成。
设计框图如下:
图3.1乒乓游戏机系统框图
设计思路:
(1)建立一个工程:
核心模块和四个七段译码器模块。
分别输入五个模块的vhdl代码并生成原理图。
(2)在该个工程中,分别引用
(1)中的五个原理图,用原理图完成乒乓游戏机的设计。
(3)编译完成后,功能仿真。
(4)设计特色功能,并重新下载调试。
(5)进一步完善,并拍照和记录数据。
特色功能:
①一局之内,任何一方先记满11分比赛结束,同时蜂鸣器报响。
②在比赛期间,每进一球,记分牌加一分,同时进球方所对应的LED灯发光工作一次。
4五个模块原理图和功能仿真
4.1控制模块原理图和功能仿真
图4.1控制模块原理图
图4.2控制模块功能仿真
说明:
信号clk周期为2ns,clr为清零键,所以常置1。
af为a方发球,aj为a方接球。
bf为b方发球,bj为b方接球。
ah、al为a方分数的高位和低位。
bh、bl为b方分数的高位和低位。
Shift为球每移动一位的LED灯。
awin为a方赢球,bwin为b方赢球。
4.2七段译码器模块原理图和功能仿真
图4.3七段译码器disp0模块原理图
说明:
此模块为数码管控制模块,功能是控制七段数码管对转换后的数字量进行显示,使其完成甲方和乙方各自得分记录显示。
其中D[3..0]接数据转换模块的输出端口,Q[6..0]连接七段扫描数码管的段输入a、b、c、d、e、f、g,利用其控制特性在数码管上显示出参加乒乓球游戏的甲乙双方各自的得分。
图4.4七段译码器模块disp0功能仿真
说明:
ah为a方得分高位,q0[0]-q0[6]为一个数码管所对应的。
由上面仿真图可以看出,译码模块完成了对数据在数码管上正确地显示。
波形符合要求。
图4.5七段译码器disp1模块原理图
图4.6七段译码器模块disp1功能仿真
说明:
al为a方得分低位,q1[0]-q1[6]为第二个数码管所对应的。
图4.7七段译码器disp2模块原理图
图4.8七段译码器模块disp2功能仿真
说明:
bh为b方得分高位,q2[0]-q2[6]为第三个数码管所对应的。
图4.9七段译码器disp3模块原理图
图4.10七段译码器模块disp3功能仿真
说明:
bl为b方得分低位,q3[0]-q3[6]为第四个数码管所对应的。
5整体电路框图和功能仿真
图5.1乒乓游戏机整体框图
图5.2乒乓游戏机功能仿真
(1)
说明:
信号clk周期为2ns,clr为清零键,常置高电平。
当a方发球,在恰当的时间b方接到球,当球回到a方时,a方又接到球,但b方没有再接到球的波形仿真,从图中可以看出来乒乓球的行动路线,并可以看出,此时a方得一分。
图5.3乒乓游戏机功能仿真
(2)
说明:
信号clk周期为2ns,clr置高电平时。
a方两次发球,b方没有接到球,a方得2分的仿真波形图。
图5.4乒乓游戏机功能仿真(3)
说明:
a方发球,b方提前击球的情况,此时,a方得1分。
图中还显示了a方发球,b方在规定的时候没有接到球的情况,此时a方又得1分。
图5.5乒乓游戏机功能仿真(4)
说明:
当b方发球,a方在恰当的位置接到球,而b方没有接到球的情况,
此时,a方得1分。
图5.6乒乓游戏机功能仿真(5)
说明:
当a方得分增加到11分的情况,此时awin输出高电平,输出分数保持不变。
当按下清零键后,得分清为零,awin输出恢复低电平,又开始新的一局。
6智能函数发生器实物展示
图6.1乒乓球下载实验板
说明:
sw11为bf,sw10为bj,sw0为af,sw1为aj,sw17为clk时钟信号,sw16为clr清零键。
LEDR2-LEDR9为八盏显示乒乓球移动的位置。
LEDG0表示a得11分获胜,LEDG1表示b得11分获胜。
此图表示a方得11分,b方得1分,a方获得胜利。
图6.2乒乓球下载实验板
说明:
sw11为bf,sw10为bj,sw0为af,sw1为aj,sw17为clk时钟信号,sw16为clr清零键。
LEDR2-LEDR9为八盏显示乒乓球移动的位置。
LEDG0表示a得11分获胜,LEDG1表示b得11分获胜。
此图表示a方得8分,b方得11分,b方获得胜利。
7设计总结
本课题在选题及研究过程是在周丽婕和赵兰老师的悉心指导下完成的。
老师们多次询问研究过程,并为我们指点迷津,帮助我们开拓思路,精心点拨,热忱鼓励。
应用FPGA技术完成乒乓游戏机的设计,设计简单。
可以看到利用FPGA技术完成一个电子设计,可以节省我们开发时间,从而大大提高我们的效率。
采用新的技术就是为了提高我们效率,快速完成设计任务。
我们两人为一小组,我们一组设计乒乓游戏机,在所做的过程中我们一直坚信是可以完成的,并且在老师们的帮助下我们实现了两个基本模块:
控制模块、七段译码器模块和各自的特色模块。
对VHDL语言的自顶向下设计方法有了进一步的认识;在底层文件具备的条件下,使用原理图可以使设置更加简单。
使程序清晰,增加可读性。
熟悉了写电子设计试验报告的方法,为写毕业设计论文奠定了一定的基础。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
参考文献
[1]张亦华等主编.数字逻辑设计实验技术与EDA工具[M].北京:
邮电大学出版社,2003
[2]朱正伟王其红韩学超编著《EDA技术及应用》第二版M,清华大学出版社,2013年3月第二版,起始页码P284-P291。
附录
主模块VHDL
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYmy111IS
PORT(clr,af,aj,bf,bj,clk:
INSTD_LOGIC;
shift:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
ah,al,bh,bl:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
awin,bwin:
OUTSTD_LOGIC);
ENDmy111;
ARCHITECTUREbehaveOFmy111IS
SIGNALamark,bmark:
INTEGER;
BEGIN
PROCESS(clr,clk)
VARIABLEa,b:
STD_LOGIC;
VARIABLEshe:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
IFclr='0'THEN
a:
='0';
b:
='0';
she:
="00000000";
amark<=0;
bmark<=0;
ELSIFclk'EVENTANDclk='1'THEN
IFa='0'ANDb='0'ANDaf='0'THEN
a:
='1';
she:
="10000000";
ELSIFa='0'ANDb='0'ANDbf='0'THEN
b:
='1';
she:
="00000001";
ELSIFa='1'ANDb='0'THEN
IFshe>8THEN
IFbj='0'THEN
amark<=amark+1;
a:
='0';
b:
='0';
she:
="00000000";
ELSE
she:
='0'&she(7DOWNTO1);
ENDIF;
ELSIFshe=0THEN
amark<=amark+1;
a:
='0';
b:
='0';
ELSE
IFbj='0'THEN
a:
='0';
b:
='1';
ELSE
she:
='0'&she(7DOWNTO1);
ENDIF;
ENDIF;
ELSIFa='0'ANDb='1'THEN
IFshe<16ANDshe/=0THEN
IFaj='0'THEN
bmark<=bmark+1;
a:
='0';
b:
='0';
she:
="00000000";
ELSE
she:
=she(6DOWNTO0)&'0';
ENDIF;
ELSIFshe=0THEN
bmark<=bmark+1;
a:
='0';
b:
='0';
ELSE
IFaj='0'THEN
a:
='1';
b:
='0';
ELSE
she:
=she(6DOWNTO0)&'0';
ENDIF;
ENDIF;
ENDIF;
ENDIF;
shift<=she;
ENDPROCESS;
PROCESS(clk,clr,amark,bmark)
VARIABLEaha,ala,bha,bla:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLEtmp1,tmp2:
INTEGER;
VARIABLEt1,t2:
STD_LOGIC;
BEGIN
IFclr='0'THEN
aha:
="0000";
ala:
="0000";
bha:
="0000";
bla:
="0000";
tmp1:
=0;
tmp2:
=0;
t1:
='0';
t2:
='0';
ELSIFclk'EVENTANDclk='1'THEN
IFaha="0001"ANDala="0001"THEN
aha:
="0001";
ala:
="0001";
t1:
='1';
ELSIFbha="0001"ANDbla="0001"THEN
bha:
="0001";
bla:
="0001";
t2:
='1';
ELSIFamark>tmp1THEN
IFala="1001"THEN
ala:
="0000";
aha:
=aha+1;
tmp1:
=tmp1+1;
ELSE
ala:
=ala+1;
tmp1:
=tmp1+1;
ENDIF;
ELSIFbmark>tmp2THEN
IFbla="1001"THEN
bla:
="0000";
bha:
=bha+1;
tmp2:
=tmp2+1;
ELSE
bla:
=bla+1;
tmp2:
=tmp2+1;
ENDIF;
ENDIF;
ENDIF;
al<=ala;
bl<=bla;
ah<=aha;
bh<=bha;
awin<=t1;
bwin<=t2;
ENDPROCESS;
ENDbehave;
七段译码器VHDL
disp0
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYdisp0IS
PORT(ah:
INSTD_LOGIC_VECTOR(3DOWNTO0);
q0:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDdisp0;
ARCHITECTUREbehaveOFdisp0IS
BEGIN
PROCESS(ah)
BEGIN
CASEahIS
WHEN"0000"=>q0<="1000000";
WHEN"0001"=>q0<="1111001";
WHEN"0010"=>q0<="0100100";
WHEN"0011"=>q0<="0110000";
WHEN"0100"=>q0<="0011001";
WHEN"0101"=>q0<="0010010";
WHEN"0110"=>q0<="0000010";
WHEN"0111"=>q0<="1011000";
WHEN"1000"=>q0<="0000000";
WHENOTHERS=>q0<="0010000";
ENDCASE;
ENDPROCESS;
ENDbehave;
disp1
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYdisp1IS
PORT(al:
INSTD_LOGIC_VECTOR(3DOWNTO0);
q1:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDdisp1;
ARCHITECTUREbehaveOFdisp1IS
BEGIN
PROCESS(al)
BEGIN
CASEalIS
WHEN"0000"=>q1<="1000000";
WHEN"0001"=>q1<="1111001";
WHEN"0010"=>q1<="0100100";
WHEN"0011"=>q1<="0110000";
WHEN"0100"=>q1<="0011001";
WHEN"0101"=>q1<="0010010";
WHEN"0110"=>q1<="0000010";
WHEN"0111"=>q1<="1011000";
WHEN"1000"=>q1<="0000000";
WHENOTHERS=>q1<="0010000";
ENDCASE;
ENDPROCESS;
ENDbehave;
disp2
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYdisp2IS
PORT(bh:
INSTD_LOGIC_VECTOR(3DOWNTO0);
q2:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDdisp2;
ARCHITECTUREbehaveOFdisp2IS
BEGIN
PROCESS(bh)
BEGIN
CASEbhIS
WHEN"0000"=>q2<="1000000";
WHEN"0001"=>q2<="1111001";
WHEN"0010"=>q2<="0100100";
WHEN"0011"=>q2<="0110000";
WHEN"0100"=>q2<="0011001";
WHEN"0101"=>q2<="0010010";
WHEN"0110"=>q2<="0000010";
WHEN"0111"=>q2<="1011000";
WHEN"1000"=>q2<="0000000";
WHENOTHERS=>q2<="0010000";
ENDCASE;
ENDPROCESS;
ENDbehave;
disp3
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYdisp3IS
PORT(bl:
INSTD_LOGIC_VECTOR(3DOWNTO0);
q3:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDdisp3;
ARCHITECTUREbehaveOFdisp3IS
BEGIN
PROCESS(bl)
BEGIN
CASEblIS
WHEN"0000"=>q3<="1000000";
WHEN"0001"=>q3<="1111001";
WHEN"0010"=>q3<="0100100";
WHEN"0011"=>q3<="0110000";
WHEN"0100"=>q3<="0011001";
WHEN"0101"=>q3<="0010010";
WHEN"0110"=>q3<="0000010";
WHEN"0111"=>q3<="1011000";
WHEN"1000"=>q3<="0000000";
WHENOTHERS=>q3<="0010000";
ENDCASE;
ENDPROCESS;
ENDbehave;
引脚说明表
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 EDA 技术 智能 函数 发生器 设计 课程设计
