EDA课程设计之乒乓球游戏机.docx

上传人:b****5 文档编号:6142706 上传时间:2023-01-04 格式:DOCX 页数:15 大小:177.38KB
下载 相关 举报
EDA课程设计之乒乓球游戏机.docx_第1页
第1页 / 共15页
EDA课程设计之乒乓球游戏机.docx_第2页
第2页 / 共15页
EDA课程设计之乒乓球游戏机.docx_第3页
第3页 / 共15页
EDA课程设计之乒乓球游戏机.docx_第4页
第4页 / 共15页
EDA课程设计之乒乓球游戏机.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

EDA课程设计之乒乓球游戏机.docx

《EDA课程设计之乒乓球游戏机.docx》由会员分享,可在线阅读,更多相关《EDA课程设计之乒乓球游戏机.docx(15页珍藏版)》请在冰豆网上搜索。

EDA课程设计之乒乓球游戏机.docx

EDA课程设计之乒乓球游戏机

乒乓球游戏机

1.课程设计的目的

《EDA技术》是电子信息科学与技术专业学生在电子技术实验技能方面综合性质的实验训练课程,其目的和任务是通过一周的时间,让学生掌握EDA的基本方法,熟悉一种EDA软件(VHDL),并能利用EDA软件设计一个电子技术综合问题,为以后进行工程实际问题的研究打下设计基础。

2.设计方案论证

2.1EDA、VHDL简介

EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子CAD通用软件包,它根据硬件描述语言HDL完成的设计文件,自动完成逻辑编译、化简、分割、综合、优化、布局布线及仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

目前EDA主要辅助进行三个方面的设计工作:

IC设计、电子电路设计和PCB设计。

没有EDA技术的支持,想要完成超大规模集成电路的设计制造是不可想象的;反过来,生产制造技术的不断进步又必将对EDA技术提出新的要求。

VHDL语言是一种用于电路设计的高级语言。

它在80年代的后期出现。

最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。

但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为AI/IEEE的标准(IEEESTD1076-1987)。

1993年更进一步修订,变得更加完备,成为AI/IEEE的AI/IEEESTD1076-1993标准。

目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。

自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。

此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。

1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本(简称93版)。

现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。

有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。

VHDL的程序结构特点是将一项工程设计,用VHDL和原理图输入进行CPLD/FPGA设计的粗略比较:

在设计中,如果采用原理图输入的设计方式是比较直观的。

你要设计的是什么,你就直接从库中调出来用就行了。

这样比较符合人们的习惯。

在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。

这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。

应用VHDL进行工程设计的优点是多方面的。

(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。

强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。

(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。

(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。

符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。

(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。

(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。

2.2方案论证

2.2.1乒乓游戏机的功能

两人乒乓游戏机能够模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分。

乒乓游戏机是用8个发光二极管代表乒乓球台,中间两个发光二极管兼做乒乓球网,用点亮的发光二极管按一定的方向移动来表示球的运动。

在游戏机的两侧各设置两个开关,一个是发球开关(S1a,S1b),另一个是击球开关(S2a,S2b)。

甲乙两人按乒乓球比赛的规则来操作开关。

当甲方按动发球开关S1a时,靠近甲方的第一盏灯亮,然后二极管由甲向乙依次点亮,代表乒乓球在移动。

当球过网后,按设计者规定的球位乙方就可以击球。

若乙方提前击球或者没有击着球,则判乙方失分,甲方记分牌自动加分。

然后重新发球,比赛继续进行。

比赛一直进行到一方记分到11分,该局结束,记分牌清零,可以开始新的一局比赛。

具体功能如下:

(1)使用乒乓游戏机的甲乙双方各在不同的位置发球或击球。

(2)乒乓球的位置和移动方向由灯亮及依次点燃的方向决定,球移动的速度为0.1~0.5s移动一位。

游戏者根据球的位置发出相应的动作,提前击球或者出界均判失分。

(3)比赛用11分为一局来进行,甲乙双方都应设置各自的记分牌,任何一方先记满11分,该方就算胜了此局。

记分牌清零后,又可开始新的一局比赛

2.2.2乒乓游戏机设计思路

根据乒乓游戏机功能要求,可以分成四个模块来实现,其中corna模块为整个程序的核心,它实现了整个系统的全部逻辑功能;模块CH41A在数码的片选信号时,送出相应的数据;模块sel产生数码管的片选信号;模块disp是7段译码器。

2.3乒乓球各模块的设计

2.3.1控制模块的设计

模块CORNA分两个进程,第一个进程实现逻辑功能,第二个进程将整数的记分转换为十进制数,便于译码显示。

AF,AJ,BF,BJ分别为a方发球键和接球键,b方发球键和接球键,shift表示球所在的位置。

其vhdl程序描述如下:

图1模块CORNA1

 

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCORNALIS

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);

ENDCORNAL;

ARCHITECTUREbehaveOFCORNALIS

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’THEN

bf=’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;

BEGINIFclr=’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;

ENDbehav;

2.3.2送数据模块的设计

送数据模块CH41A的vhdl程序描述如下:

图2模块CH41A

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYCH41AIS

PORT(sel:

INSTD_LOGIC_VECTOR(2DOWNTO0);

D0,d1,d2,d3:

INSTD_LOGIC_VECTOR(3DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDCH41A;

ARCHITECTUREbehaveOFCH41AIS

BEGIN

PROCESS(sel)

BEGIN

CASEselIS

WHEN”100”=>q<=d0;

WHEN”101”=>q<=d1;

WHEN”000”=>q<=d2;

WHENothers=>q<=d3;

ENDCASE;

ENDPROCESS;

ENDbehav;

2.3.3产生数码管片选信号模块的设计

产生数码管片选信号模块sel的vhdl程序描述如下:

 

图3数码管片选信号模块sel

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYselIS

PORT(clk:

INSTD_LOGIC;

sell:

OUTSTD_LOGIC_VECTOR(2DOWNTO0));

ENDsel;

ARCHITECTUREbehavOFselIS

BEGIN

PROCESS(clk)

VARIABLEtmp:

STD_LOGIC_VECTOR(2DOWNTO0);

BEGIN

IFclk’eventandclk=’1’THEN

IFtmp=”000”THEN

tmp:

=”001”;

ELSIFtmp=”001”THEN

tmp:

=”100”;

ELSIFtmp=”100”THEN

tmp:

=”101”;

ELSIFtmp=”101”THEN

tmp:

=”000”;

ENDIF;

ENDIF;

sell<=tmp;

ENDPROCESS;

ENDbehav;

2.3.47段译码器模块的设计

7段译码器模块disp的vhdl的程序描述如下:

图47段译码器模块disp

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYdispIS

PORT(d:

INSTD_LOGIC_VECTOR(3DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ENDdisp;

ARCHITECTUREbehavOFdispIS

BEGIN

PROCESS(d)

BEGIN

CASEdIS

WHEN”0000”=>q<=”0111111”;

WHEN”0001”=>q<=”0000110”;

WHEN”0010”=>q<=”1011011”;

WHEN”0011”=>q<=”1001111”;

WHEN”0100”=>q<=”1100110”;

WHEN”0101”=>q<=”1101101”;

WHEN”0110”=>q<=”1111101”;

WHEN”0111”=>q<=”0100111”;

WHEN”1000”=>q<=”1111111”;

WHENothers=>q<=”1101111”;

ENDCASE;

ENDPROCESS;

ENDbehav;

3.设计结果与分析

3.1系统的波形仿真

图5所示为A方发球,在恰当的时候B方接到球,当球回到A方时,A方又接到球,但B方再也没有接到球的仿真波形。

 

图5乒乓球仿真波形一

图6所示为A方两次发球,B方没有接到球,A方得到2分的仿真波形图

图6乒乓球仿真波形二

图7所示为A方发球,B方提前击球的情况,此时,A方得一分。

图中还显示了A方发球,B方在规定的时刻没有接到球的情况,此时,A方又得一分。

图7乒乓球仿真波形三

图4所示为A方得分增加到11分的情况,此时awin输出高电平,输出分数保持不变。

当清零信号按下时,得分清为零,awin输出恢复低电平,又可以开始新的一局比赛。

 

图8乒乓球仿真波形四

3.2乒乓游戏机顶层电路图

图9乒乓游戏机电路图

4.设计体会

通过本课程的学习,能够掌握EDA的基础知识,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。

特别是当每一个子模块编写调试成功时,心里特别的开心。

但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。

在波形仿真时,也能仿真正确了。

课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程软件应用十分广泛,因此学会应用此仿真软件是十分必要的。

回顾起此次电路的课程设计,从选题到定稿,从理论到实践,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。

有时间多看看各方面书籍,拓宽知识面,不断充实自我。

不管怎么说这次的课程设计总算是顺利的完成了,了解了软件的用途。

不过最后还得经过老师的审查,在老师的指导下弥补自己的不足,这样,这次的课程设计才会画上一个完美的句点。

5.参考文献

[1]朱正伟.EDA技术及应用[M].清华大学出版社,2008.8:

30-36.

[2]王松武.常用电路模块分析与设计指导[M].清华大学出版社,2007.11:

39-54.

[3]廖裕评.CPLD数字电路设计——使用MAX+plusⅡ入门篇[M].清华大学出版社,2007

[4]何希才,邹炳强.通用电子电路应用400例[J].电子工业出版社,2006.1:

3-11.

[5]刘南平.数字电子电路——图解电子电路基础系列[J].科学出版社,2009.8:

5-20.

[6]张亦华.数字逻辑设计实验技术与EDA工具[M].北京邮电大学出版社,2003

[7]谭会生.EDA技术及应用[M].西安电子科技大学出版社,2008

[8]门宏.怎样看电子电路图[J].科学社会报,20011.8:

11-22

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1