ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:500.65KB ,
资源ID:25681859      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25681859.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(eda实验论文.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

eda实验论文.docx

1、eda实验论文乒乓球游戏机EDA电子实训专业:电子信息科学与技术 组 长: 赵林帆 组 员: 何晨旭、孙毅 指导教师: 任国凤 完成时间:2018年9月24日 摘要 11、EDA 21.1EDA简介 21.2设计语言VHDL 22、乒乓球游戏机的设计 32.1设计要求 32.2设计说明 42.2.1整体思路 42.2.2具体设计思路 43、编程 53.1分频器模块 53.2状态机编程设计 73.3七段数码管显示 133.4整体电路 174、系统编译和仿真 184.1仿真 184.1.1球运动仿真 184.1.2得分仿真 184.1.3总仿真图 184.2结果图 195、心得与体会 19摘要ED

2、A(电子设计自动化)技术是现代电子工程领域的一门新技术。它提供了基于计算机和信息技术的电路系统设计方法。EDA技术的发展和推广应用极大地推动了电子工业的发展。乒乓球是中华人民共和国国球,是一种极为流行的球类体育项目。随着科学技术的发展,人类进入信息化社会,信息社会的发展离不开电子产品的进步。现代电子产品发展得越来越快,于是人们将乒乓球与电子产品结合在一起,形成了乒乓球游戏机。通过拨码开关模拟球拍,发光二极管模拟乒乓球,进行游戏的操作。关键词:EDA 电子工业 信息社会 乒乓球游戏机1、EDA1.1EDA简介EDA是电子设计自动化(ElectrONic DesignAUTOMATION)的缩写,

3、在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。1.2设计语言VHDL VHDL就是超高速集成电路硬件描述语言。覆盖面广,描述能力强,是一个多层次的硬件描述语言。在VHDL语言中,设计的原始描述可以非常简

4、练,经过层层加强后,最终可成为直接付诸生产的电路或版图参数描述。具有良好的可读性,即容易被计算机接受,也容易被读者理解。使用期长,不会因工艺变化而描述过时。因为VHDL的硬件描述与工艺无关,当工艺改变时,只需修改相应程序中的参数即可。支持大规模设计的分解和已有设计的再利用。VHDL为设计的分解和设计的再利用提供了有力的支持。2、乒乓球游戏机的设计2.1设计要求两人乒乓游戏机能够模拟乒乓球比赛的基本过程和规则,并能自动裁判和计分。乒乓游戏机是用8个发光二极管代表乒乓球台,中间两个发光二极管兼做乒乓球网,用点亮的发光二极管按一定的方向移动来表示球的运动。在电路中设置四个输入端:一个是暂停开关,一个

5、清零开关,两个是击球开关(分别归甲乙两人所有)。 当甲方按下发球开关时,靠近甲方的第一盏灯亮,然后发光二极管由甲向乙依此点亮,代表乒乓球在移动。当球过网后,按设计者规定的球位乙方可以击球。若乙方提前击球或没有击着球,则判乙方失分,甲方得分。然后重新发球,比赛继续进行。比赛一直进行到乙方计分到11分,该局比赛结束。记分牌清零,可以开始新的一局比赛。 具体功能如下: (1)使用乒乓游戏机的甲乙双方各在不同的位置发球或击球。 (2)乒乓球的位置和移动方向由灯亮及依此点亮的方向决定,球移动的速度为0.1-0.5s移动一位。游戏者根据求的位置做出相应的动作,提前击球或出界均判失分。 (3)比赛用11分为

6、一局来进行,甲乙双方都应设置自己的记分牌,任何一方先记满11分,该方就算胜了此局。当记分牌清零后,又可以开始新的一局比赛。2.2设计说明2.2.1整体思路 通过状态机来实现球的移动和各个状态的转移,用数码管显示得分结果。通过计数器控制每5次交换发球权。通过分频器来控制状态的转移时钟,从而控制球的移动速度。当任一方的分数达11时,游戏结束。或通过开关控制可清零比分,暂停比赛。2.2.2具体设计思路状态机中共设置7个状态(等待发球,A发球,B发球,球从A向B移动,球从B向A移动,A击球,B击球),各个状态间的转移控制要根据要求来改变转移的状态。由于设计要求实现LED灯依次从左到右,或从右到左的移动

7、。同时球拍击球,若击中,则球向相反方向移动,若未击中,则对方得1分。若提前击球,则对方得1分。若要实现计分功能,就需要使用七段数码管。使用分频器来控制状态转移的时钟,从而控制状态转移的快慢,即控制了球的移动速度。发球权通过计数器来控制,每5次交换发球权。裁判用重置信号reset表示。清零所有计数器,且进入等待发球状态。以状态机为控制核心,附加其它功能模块来实现乒乓球游戏机。具体流程如下图所示:3、编程3.1分频器模块因试验箱上的低频时钟信号频率依旧较快,无法用于游戏机的设计,完成击球的观察。故而添加分频器,将试验箱上的低频信号进行分频,使得人眼可以清晰的观察到乒乓球的移动过程,从而实现击球。以

8、下为分频器代码:LIBRARY ieee;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FENPINQI ISGENERIC (N:INTEGER:=16);-RATE=2nPORT(CLK:IN STD_LOGIC;CLKOUT:OUT STD_LOGIC);END FENPINQI;ARCHITECTURE A OF FENPINQI ISSIGNAL CNT:STD_LOGIC_VECTOR(N-1 DOWNTO 0);BEGINPROCESS

9、(CLK)BEGINIF CLKEVENT AND CLK=1 THENCNT=CNT+1;END IF;END PROCESS;CLKOUT=CNT(N-1);END A;生成的模块图为:经过不断的实验,本次采用的分频器为16分频器3.2状态机编程设计状态机中共设置7个状态,分别为等待发球,A发球,B发球,球从A向B移动,球从B向A移动,A击球,B击球。两个计数器分别记忆A的得分和B的得分。还有一个负责记忆发球次数。每5次交换发球。共4个输入:en使能信号,A击球,B击球,reset清零信号。以下为状态机进程代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.AL

10、L;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PINGPANGGAME ISPORT(RESET:IN STD_LOGIC;EN:IN STD_LOGIC;CLK:IN STD_LOGIC;-得分的触发进程HIT1,HIT2:IN STD_LOGIC; -A和B击球输入LIGHT:OUT STD_LOGIC_VECTOR(1 TO 8); -8个发光二极管的输出WINNER:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);SCORE11,SCORE12,SCORE21,SCOR

11、E22:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -4个七段数码管输出END PINGPANGGAME;ARCHITECTURE GAME OF PINGPANGGAME IS TYPE PINGPONG IS (WAITSERVE,LIGHT_1_ON,BALL_MOVE_TO_B,ALLOW_B_HIT,LIGHT_8_ON,BALL_MOVE_TO_A,ALLOW_A_HIT);-7个状态(等待发球;进程第一盏灯亮,A已发球/击球;球向B移动;允许B击球;进程第八盏灯亮,B已发球/击球;球向A移动;允许A击球)SIGNAL STATE:PINGPONG;SIGN

12、AL I:INTEGER RANGE 0 TO 8; -8个二极管SIGNAL J:INTEGER RANGE 0 TO 10; -发球次数,当0-4时A发球,当为5-9时B发球,每当j=10时,归零。SIGNAL C:INTEGER RANGE 0 TO 1;SIGNAL COUNT:INTEGER RANGE 0 TO 4;-比分显示SIGNAL SERVE:STD_LOGIC_VECTOR(1 TO 2):=01;-发球判断,当为“10”时A发球,当为“01”时B 发球。SIGNAL COUNT1,COUNT2:STD_LOGIC_VECTOR(1 TO 4):=0000;COMPONE

13、NT MYDECODER ISPORT(BINARYIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);BCDOUT1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);BCDOUT2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT; -调用计分译码BEGINP1:PROCESS(CLK)-clk作为触发进程BEGIN -进程开始IF RESET=1THENI=0;COUNT1=0000;COUNT2=0000;J=0; -异步置位ELSIF CLKEVENT AND CLK=1THENIF EN=1THENIF

14、COUNT1=1100 OR COUNT2=1100 THEN -当到达11分时结束游戏,重新开始。 C=1; I=0;COUNT1=0000;COUNT2=0000;J=0; END IF; ELSE ICASE SERVE IS -处于等待发球状态WHEN 10=I=0;STATE=LIGHT_1_ON;JI=8;STATE=LIGHT_8_ON;J=J+1;-B发球,同时记录发球次数IF(J=10) THEN-当发球10次后,j=10,此时将j归零,重新记录。JII=1; -进程处于第一盏灯亮,A刚发球,在第一个灯亮的时候,此时B若击球,则A得分;否则进入球向B移动状态。IF HIT2=

15、1 THEN I=0;COUNT1=COUNT1+1;STATE=WAITSERVE;ELSE STATEI=8; -进程处于第八盏灯亮,B刚发球,在第八个灯亮的时候,此时A若击球,则B得分;否则进入球向A移动状态。IF HIT2=1 THEN I=0;COUNT2=COUNT2+1;STATE=WAITSERVE;ELSE STATEIF HIT1=1 THEN -进程处于球向A移动,如果此时A已经完成击球,则属于抢先击球,B得分;否则,允许A击球。I=0;COUNT2=COUNT2+1;STATE=WAITSERVE;ELSIF I=1 OR I=2 OR I=3 THENSTATE=AL

16、LOW_A_HIT;ELSE I IF HIT2=1 THEN -进程处于球向B移动,如果此时B已经完成击球,则属于抢先击球,A得分;否则,允许B击球。I=0;COUNT1=COUNT1+1;STATE=WAITSERVE;ELSIF I=6 OR I=7 OR I=8 THEN STATE=ALLOW_B_HIT;ELSE IIF HIT1=1THEN -处于允许A击球状态I=2 ;STATE=BALL_MOVE_TO_B; ELSECOUNT2=COUNT2+1;I=0;STATEIF HIT2=1 THEN-处于允许B击球状态I=7;STATE=BALL_MOVE_TO_A; ELSE

17、COUNT1=COUNT1+1;I=0;STATE=0 AND J=4) THEN SERVE=5 AND J=9) THEN SERVE=01;END IF;END PROCESS P2;P3:PROCESS(WINNER)BEGINIF COUNT1=1100 THENWINNER=1110;ELSIF COUNT2=1100THENWINNER=1111;ELSE WINNER=1101;END IF;END PROCESS P3;LIGHT= 10000000 WHEN(I=1)ELSE - 进程处i信号控制发光二极管的亮暗01000000 WHEN(I=2) ELSE00100000

18、 WHEN(I=3) ELSE00010000 WHEN(I=4) ELSE00001000 WHEN(I=5) ELSE00000100 WHEN(I=6) ELSE00000010 WHEN(I=7) ELSE00000001 WHEN(I=8) ELSE00000000; -其他情况所有发光二极管都暗U0:MYDECODER PORT MAP(COUNT1,SCORE11,SCORE12);-A的得分U1:MYDECODER PORT MAP(COUNT2,SCORE21,SCORE22);-B的得分END GAME生成的状态机模块3.3七段数码管显示七段数码管是在数字电路设计中经常用到

19、的显示电路。所谓七段数码管,其实是由7段发光二极管组成的用于显示数字的器件。其中的a, b,c,d,e,f,g分别为七个发光二极管,通过控制每个发光二极管的亮和暗,可以分别显示09十个数字。例如,b和c发光表示数字1.以下为七段数码管代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY XSBF IS PORT(WINNER,SCORE11,SCORE12,SCORE21,SCORE22:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CLK1:IN STD_LOG

20、IC; SEL:out std_logic_vector(2 downto 0); xsh:out std_logic_vector(6 downto 0); END XSBF;ARCHITECTURE BEHAVE OF XSBF IS SIGNAL CNT8:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL A:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINP0:process(clk1) begin if rising_edge(clk1) then IF CNT8=7 THEN cnt8=cnt8+1; ELSE CNT8=000; end

21、 if; END IF;SELAAAAAAAAAxshxshxshxshxshxshxshxshxshxshxshxshxshxsh=0000000; end case; END PROCESS p2; END BEHAVE; 生成的模块图为:3.4整体电路由分频器模块、乒乓球游戏模块、七段数码管模块3个模块组成乒乓球游戏机。4、系统编译和仿真4.1仿真由上述程序生成模块图后,连接电路并进行仿真。4.1.1球运动仿真A和B的发球(分别五次)light代表在不击球时球的移动。4.1.2得分仿真到达11分归零4.1.3总仿真图在存在时钟信号,EN=1,RESTE=0,A、B都不击球的情况下的总仿真图4.2结果图5、心得与体会经过近一个月的学习和实践过程中,遇到了很多问题。刚开始由于对VHDL语言不是很熟悉,所以编程的过程中出现了许多问题,也走了很多弯路。遇到的问题1、编译通过后,下载到试验箱上,发现程序并没有预期的效果。显示顺序颠倒。2、对自己过高要求。原设计显示“XX0000XX”,“XX”为比分。当A获胜时,会显示“XXAAAAXX”;当B获胜时,会显示“XXBBBBXX”。发现难以实现,就改为“XXAVSBXX”.3、试验箱上的时钟信号高频可用,而低频信号不适合使用。经老师提醒,添加分频器,使得时钟信号可用。

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

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