您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > EDA课程设计拔河游戏机
东北石油大学课程设计2014年3月7日课程EDA技术课程设计题目拔河游戏机院系电子科学学院专业班级电子信息工程学生姓名学生学号指导教师东北石油大学课程设计任务书课程EDA技术课程设计题目拔河游戏机专业电子信息工程姓名学号主要内容、基本要求、主要参考资料等主要内容:电子拔河游戏机是一种能容纳甲乙双方参赛游戏电路。由一排发光二极管表示拔河的“电子绳”。由甲乙双方通过按纽开关使发光二极管向一方的终点延伸,当延伸到某方的最后一个发光二极管时,则该方获胜,连续比赛多局以定胜负。基本要求:1、设计一个能进行拔河游戏的电路。2、电路使用9个发光二极管,开机后只有中间一个发亮,此即拔河的中心点。3、游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次。4、亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。5、用数码管显示获胜者的盘数。主要参考资料:[1]潘松著.EDA技术实用教程(第二版).北京:科学出版社,2005.[2]康华光主编.电子技术基础模拟部分.北京:高教出版社,2006.[3]阎石主编.数字电子技术基础.北京:高教出版社,2003.完成期限2014.3.7指导教师专业负责人2014年3月3日1一、设计思想1.基本原理拔河游戏机是通过控制“电子绳”发亮的LED管由中点向速度快的一方移动,而阻止向另一方移动,按键较快的一方获胜。此次课程设计主要用到加/减计数器,通过其输出状态再通过译码器控制LED发亮。加/减计数器,输入“加脉冲”,加运算亮,亮点向右移;输入“减脉冲”,减运算亮,亮点向左移。拔河游戏机由一个控制电路指示谁胜谁负,当亮点移到任一方终端时,由控制电路产生一个信号,使计数器停止计数。当亮点达到任一方的终点时,该终点发出电路封锁加/减脉冲信号,实现电路自锁,使加/减脉冲立即无效,同时实现电路自动加分。双方终端二极管“点亮”信号分别接两个计数器的“使能”端,当一方取胜时,相应的计数器进行一次计数,这样得到双方取胜次数的显示设置一个“复位”按钮,使亮点回到中心,取胜计数器也要设置一个“复位”按钮,使之能清零。2.设计框图甲乙上方比赛按键通过频率计数器指示,根据中心LED比较,当一方取胜时,相应计数器计数,通过数码管显示取胜次数。图1设计流程图甲方按键乙方按键甲方计数器乙方计数器LED中心比较数码管显示2二、设计步骤和调试过程1、模块设计和相应模块代码频率计数模块CNT10,用于对双方按钮的次数计数,每遇到上升沿计数一次。LBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLK,RST,EN:STD_LOGIC;COUT:OUTSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;ARCHITECTUREONEOFCNT10ISBEGINPROCESS(CLK,RST,EN)VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFRST='1'THENCQI:=(OTHERS='0');ELSIFCLK'EVENTANDCLK='1'THENIFEN='1'THENIFCQI9THENCQI:=CQI+1;ELSECQI:=(OTHERS='0');ENDIF;ENDIF;ENDIF;IFCQI=9THENCOUT='0';ELSECOUT='1';ENDIF;CQ=CQI;ENDPROCESS;END;数码管显示模块SCAN,显示双方取胜次数。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSCANISPORT(3CLK:INSTD_LOGIC;A1,A2,A3,B1,B2,B3:INSTD_LOGIC_VECTOR(3DOWNTO0);SG:OUTSTD_LOGIC_VECTOR(8DOWNTO0);BT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));END;ARCHITECTUREONEOFSCANISSIGNALCNT4:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALA:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALCLK1:STD_LOGIC;BEGINP1:PROCESS(CNT4)BEGINCASECNT4ISWHEN000=BT=10000000;A=A1;WHEN001=BT=01000000;A=A2;WHEN010=BT=00100000;A=A3;WHEN011=BT=00000100;A=B1;WHEN100=BT=00000010;A=B2;WHEN101=BT=00000001;A=B3;WHENOTHERS=BT=00000000;ENDCASE;ENDPROCESSP1;P2:PROCESS(CLK)VARIABLECT:INTEGERRANGE0TO50000;BEGINIFCLK'EVENTANDCLK='1'THEN--1000HZIFCT49999THENCT:=CT+1;CLK1='0';ELSECT:=0;CLK1='1';ENDIF;ENDIF;ENDPROCESSP2;PROCESS(CLK1)BEGINIFCLK1'EVENTANDCLK1='1'THENIFCNT45THENCNT4=CNT4+1;ELSECNT4=000;4ENDIF;ENDIF;ENDPROCESS;PROCESS(A)BEGINCASEAISWHEN0000=SG=100000000;WHEN0001=SG=111110001;WHEN0010=SG=001001000;WHEN0011=SG=001100000;WHEN0100=SG=000110010;WHEN0101=SG=000100100;WHEN0110=SG=000000100;WHEN0111=SG=111110000;WHEN1000=SG=000000000;WHEN1001=SG=100011111;WHEN1010=SG=000100100;WHEN1011=SG=000011000;WHEN1100=SG=010001100;WHEN1101=SG=001001000;WHEN1110=SG=001000000;WHEN1111=SG=000011111;WHENOTHERS=NULL;ENDCASE;ENDPROCESS;END;LED指示模块LMOV,双方的LED灯进行比较,看谁先到达终点。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYLMOVISPORT(KL,KR:INSTD_LOGIC_VECTOR(3DOWNTO0);LED:OUTSTD_LOGIC_VECTOR(8DOWNTO0);EN:OUTSTD_LOGIC;RST:INSTD_LOGIC);END;ARCHITECTUREONEOFLMOVISBEGINPROCESS(RST,KL,KR)BEGIN5IFRST='1'THENLED=111101111;EN='1';ELSIFKL-KR=1THENLED=111011111;EN='1';ELSIFKL-KR=2THENLED=110111111;EN='1';ELSIFKL-KR=3THENLED=101111111;EN='1';ELSIFKL-KR=4THENLED=011111111;EN='0';ELSIFKR-KL=1THENLED=111110111;EN='1';ELSIFKR-KL=2THENLED=111111011;EN='1';ELSIFKR-KL=3THENLED=111111101;EN='1';ELSIFKL-KR=4THENLED=111111110;EN='0';ELSIFKR-KL=0THENLED=111101111;EN='1';ELSENULL;ENDIF;ENDPROCESS;END;主模块LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYBAHEISPORT(A,B,RST,CLK:INSTD_LOGIC;SG,LED:OUTSTD_LOGIC_VECTOR(8DOWNTO0);BT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDBAHE;ARCHITECTUREONEOFBAHEISCOMPONENTCNT10PORT(CLK,RST,EN:STD_LOGIC;COUT:OUTSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDCOMPONENT;COMPONENTSCANPORT(CLK:INSTD_LOGIC;A1,A2,A3,B1,B2,B3:INSTD_LOGIC_VECTOR(3DOWNTO0);SG:OUTSTD_LOGIC_VECTOR(8DOWNTO0);BT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDCOMPONENT;COMPONENTLMOVPORT(6KL,KR:INSTD_LOGIC_VECTOR(3DOWNTO0);LED:OUTSTD_LOGIC_VECTOR(8DOWNTO0);EN:OUTSTD_LOGIC;RST:INSTD_LOGIC);ENDCOMPONENT;SIGNALE,F,CA1,CA2,CB1,CB2:STD_LOGIC;SIGNALCQA1,CQA2,CQA3,CQB1,CQB2,CQB3:STD_LOGIC_VECTOR(3DOWNTO0);BEGINU1:CNT10PORTMAP(EN=E,RST=RST,CLK=A,COUT=CA1,CQ=CQA1);U2:CNT10PORTMAP(EN=E,RST=RST,CLK=CA1,COUT=CA2,CQ=CQA2);U3:CNT10PORTMAP(EN=E,RST=RST,CLK=CA2,CQ=CQA3);U4:CNT10PORTMAP(EN=E,RST=RST,CLK=B,COUT=CB1,CQ=CQB1);U5:CNT10PORTMAP(EN=E,RST=RST,CLK=CB1,COUT=CB2,CQ=CQB2);U6:CNT10PORTMAP(EN=E,RST=RST,CLK=CB2,CQ=CQB3);U7:SCANPORTMAP(A1=CQA1,A2=CQA2,A3=CQA3,B1=CQB1,B2=CQB2,B3=CQB3,CLK=CLK,SG=SG,BT=BT);U8:LMOVPORTMAP(EN=E,KL=CQA2,KR=CQB2,RST=RST,LED=LED);ENDARCHITECTUREONE;2、仿真及仿真结果分析计数器仿真图,每遇到上升沿输出+1,当CQ=9时,COUT=0。当CQ9时,CQ重新从0加至到9。图2计数器仿真图7数码管显示仿真图图3数码管显示仿真图LED指示仿真图图4LED指示仿真图8整个模块的仿真图图5系统仿真图3、实验调试结果测试时分别按key1和key5控制键,拔河比赛开始,根据LED灯和数码管的显示判断比赛胜负。使用复位键复位即可继续下一场比赛。图6系统RTL图9三、结论及心得体会这次课程设计
本文标题:EDA课程设计拔河游戏机
链接地址:https://www.777doc.com/doc-5864370 .html