数电课程设计实验报告课题:竞赛抢答器学院:电气与信息工程学院姓名:班级:电子信息工程1001班目录一、课程设计的要求及目的......................................................................................................-1-二、设计的功能要求..................................................................................................................-2-三、设计思路框图......................................................................................................................-3-四、VHDL程序.........................................................................................................................-4-1、键盘转按键模块............................................................................................................-4-2、显示模块........................................................................................................................-6-3、主模块............................................................................................................................-9-五、电路连接图........................................................................................................................-14-六、心得体会............................................................................................................................-14--1-一、课程设计的要求及目的1.了解电子设计的具体流程和方法。2.掌握电子设计的基本要求,能够运用所学的知识解决生活中的一些问题。3.初步掌握VHDL语言编程,并设计出一个有意义的小型系统。4.掌握AltiumDesigner6.9软件的应用,并且了解相关硬件的组成和功能。5.用EDA(ElectronicDesignAutomation)或者原理图完成一个课题的设计,并达到相应的功能要求。-2-二、设计的功能要求在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器,通过数显、灯光及音响等各种手段批示出第一抢答者。同时,还可以设置计分、犯规及奖惩记录等各种功能。本设计利用EDA技术,可容纳8组参赛,每组设置一个按钮供参赛者抢答使用。主持人按下开始按键后,10s倒计时开始,当一组抢答器按下后,1602LCD显示抢答的组别。由于抢答器具有第一信号鉴别和锁存功能使其余的组就抢答无效,抢答的组回答问题后由主持人进行加减分,然后主持人按复位键后继续进行抢答。1、在1602LCD屏幕上显示所需组别及分数;2、考虑到有选手犯规,在主持人未按下开始键但是已经有组别按下抢答键时会在屏幕显示该组别犯规(FG),并由主持人手动减分;3、按下开始键后,有10s的时间供选手们抢答,如果30s后仍无人抢答,则蜂鸣器报警,并在屏幕上显示超时(CS);4、每个组别设置的初始分数为0分,加分上限为9分;5、能实现系统手动复位,复位后回到初始状态,并等待主持人按下开始键。-3-三、设计思路框图抢答按钮优先编码译码译码显示主持人控制开关控制模块秒脉冲产生定时模块显示模块-4-四、VHDL程序1、键盘转按键模块LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;entityPADTOKEYisport(CPIN,R,VALIDKEY:INSTD_LOGIC;KEY:INSTD_LOGIC_VECTOR(3DOWNTO0);KEYOUT:OUTSTD_LOGIC_VECTOR(15DOWNTO0);CLK_1MHZ,RST:OUTSTD_LOGIC);endentity;architectureJGTofPADTOKEYisSIGNALCTCP:INTEGERRANGE0TO5;SIGNALCPO:STD_LOGIC:='0';SIGNALCTCPO:INTEGERRANGE0TO4999;TYPESTATESIS(S0,S1,S2);SIGNALS:STATES;beginPROCESS(CPIN)BEGINIFCPIN='1'ANDCPIN'EVENTTHENIFCTCP=5THENCPO=NOTCPO;CTCP=0;ELSECTCP=CTCP+1;-5-ENDIF;ENDIF;ENDPROCESS;PROCESS(CPO,R)BEGINCLK_1MHZ=CPO;IFR='1'THENRST='0';S=S0;CTCPO=0;KEYOUT=0000000000000000;ELSIFCPO='1'ANDCPO'EVENTTHENIFCTCPO/=4999THENCTCPO=CTCPO+1;ELSECTCPO=0;CASESISWHENS0=RST='0';IFVALIDKEY='1'THENS=S1;CASEKEYISWHEN0000=KEYOUT=0000000000000001;WHEN0001=KEYOUT=0000000000000010;WHEN0010=KEYOUT=0000000000000100;WHEN0011=KEYOUT=0000000000001000;WHEN0100=KEYOUT=0000000000010000;WHEN0101=KEYOUT=0000000000100000;WHEN0110=KEYOUT=0000000001000000;WHEN0111=KEYOUT=0000000010000000;WHEN1000=KEYOUT=0000000100000000;WHEN1001=KEYOUT=0000001000000000;WHEN1010=KEYOUT=0000010000000000;WHEN1011=KEYOUT=0000100000000000;WHEN1100=KEYOUT=0001000000000000;WHEN1101=KEYOUT=0010000000000000;WHEN1110=KEYOUT=0100000000000000;WHEN1111=KEYOUT=1000000000000000;WHENOTHERS=NULL;ENDCASE;ELSES=S0;KEYOUT=0000000000000000;ENDIF;WHENS1=RST='1';S=S2;WHENS2=RST='0';S=S0;WHENOTHERS=NULL;-6-ENDCASE;ENDIF;ENDIF;ENDPROCESS;endarchitectureJGT;此模块使用状态机将键盘的16个按键转换为16个按键信号。2、显示模块LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;entityQDQLCDisport(CPIN,R,BUSY:INSTD_LOGIC;FS1,FS2,FS3,FS4,FS5,FS6,FS7,FS8,TM:INSTD_LOGIC_VECTOR(7DOWNTO0);ZB:INSTD_LOGIC_VECTOR(3DOWNTO0);TESHU:INSTD_LOGIC_VECTOR(1DOWNTO0);CLK,RST,STROBE,OUTLINE:OUTSTD_LOGIC;DATA:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ADDR:OUTSTD_LOGIC_VECTOR(3DOWNTO0));endentity;architectureJGTofQDQLCDisTYPESTATESIS(S0,S1,S2,S3,S4);SIGNALS:STATES;SIGNALLCDPT:INTEGERRANGE0TO27;SIGNALCPCT:INTEGERRANGE0TO65535;SIGNALCP:STD_LOGIC;--SIGNALASCEW,ASCSN:STD_LOGIC_VECTOR(7DOWNTO0);beginPROCESS(CPIN,R)BEGINCLK=CPIN;IFR='1'THENCPCT=65535;ELSIFCPIN='1'ANDCPIN'EVENTTHEN-7-IFCPCT=0THENCPCT=65535;CP=NOTCP;ELSECPCT=CPCT-1;ENDIF;ENDIF;ENDPROCESS;--·ÖƵΪ500USÖÜÆÚ--Ö÷½ø³Ì£ºÄâ²ÉÓÃ500usʱÖÓ£¬¼´ÔÚ500usºóÍê³É״̬ת»»£¬ÐÞ¸ÄLCDPTÖ¸Õë--S0:³õʼ״̬,ÔÚR=1ʱ£¬´¦ÓÚS0״̬,LCDPT=0--Á÷³Ì£ºÊä³örst=1,תS1--S1:Êä³öRST=0;ÅжÏBUSY=0?:Y:LCDPT+1;LCDPTµ½¹Ì¶¨×îºó£¿::N:-S2--::Y:תS3--;N;NULL--S2:¸ø³öSTROBEÐźš£×ªS1--S1,S2Íê³É³õʼ»¯¹Ì¶¨ÏÔʾµÄ¹¦ÄÜPROCESS(CP,R)BEGINIFR='1'THENS=S0;LCDPT=0;RST='1';ELSIFCP='1'ANDCP'EVENTTHENCASESISWHENS0=S=S1;LCDPT=0;RST='1';WHENS1=RST='0';STROBE='0';IFBUSY='0'THENLCDPT=LCDPT+1;IFLCDPT=7THENS=S3;ELSES=S2;ENDIF;ENDIF;WHENS2=S=S1;STROBE='1';--S3~S4Íê³ÉɨÃèÏÔʾ¹¦ÄÜ--S3:BUSY=0?:Y:LCDPTÑ»·+1£¬×ªS4--S4:¸ø³öSTROBEÐźţ¬×ªS3WHENS3=STROBE='0';IFBUSY='0'THENIFLCDPT=27THENLCDPT=7;ELSELCDPT=LCDPT+1;ENDIF;S=S4;-8-ENDIF;WHENS4=STROBE='1';S=S3;WHENOTHERS=NULL;ENDCASE;ENDIF;ENDPROCESS;--Ñ¡ÔñÊä³ö½ø³Ì(LCDPT)--LCDPT=0,NULL--=1~6ÏÔʾZB:TM:E45H,5W57H,6S53H,9