数电课程设计竞赛抢答器.doc

上传人:仙人指路1688 文档编号:4063066 上传时间:2023-04-02 格式:DOC 页数:16 大小:135.50KB
返回 下载 相关 举报
数电课程设计竞赛抢答器.doc_第1页
第1页 / 共16页
数电课程设计竞赛抢答器.doc_第2页
第2页 / 共16页
数电课程设计竞赛抢答器.doc_第3页
第3页 / 共16页
数电课程设计竞赛抢答器.doc_第4页
第4页 / 共16页
数电课程设计竞赛抢答器.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《数电课程设计竞赛抢答器.doc》由会员分享,可在线阅读,更多相关《数电课程设计竞赛抢答器.doc(16页珍藏版)》请在三一办公上搜索。

1、 数电课程设计实验报告 课题:竞赛抢答器 学院:电气与信息工程学院 姓名:班级:电子信息工程1001班 目录一、课程设计的要求及目的- 1 -二、设计的功能要求- 2 -三、设计思路框图- 3 -四、VHDL程序- 4 -1、键盘转按键模块- 4 -2、显示模块- 6 -3、主模块- 9 -五、电路连接图- 14 -六、心得体会- 14 -一、课程设计的要求及目的1了解电子设计的具体流程和方法。 2. 掌握电子设计的基本要求,能够运用所学的知识解决生活中的一些问题。 3. 初步掌握VHDL语言编程,并设计出一个有意义的小型系统。 4. 掌握Altium Designer 6.9软件的应用,并且

2、了解相关硬件的组成和功能。 5. 用EDA(Electronic Design Automation)或者原理图完成一个课题的设计,并达到相应的功能要求。 二、设计的功能要求 在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器,通过数显、灯光及音响等各种手段批示出第一抢答者。同时,还可以设置计分、犯规及奖惩记录等各种功能。本设计利用EDA技术,可容纳8组参赛,每组设置一个按钮供参赛者抢答使用。主持人按下开始按键后,10s倒计时开始,当一组抢答器按下后,1602LCD显示抢答的组别。由于抢答器具有第一信号鉴别和锁存功能使其余的组就抢答无效,抢答的组回答问题后由主持人进行

3、加减分,然后主持人按复位键后继续进行抢答。1、在1602LCD屏幕上显示所需组别及分数;2、考虑到有选手犯规,在主持人未按下开始键但是已经有组别按下抢答键时会在屏幕显示该组别犯规(FG),并由主持人手动减分; 3、按下开始键后,有10s的时间供选手们抢答,如果30s后仍无人抢答,则蜂鸣器报警,并在屏幕上显示超时(CS);4、每个组别设置的初始分数为0分,加分上限为9分; 5、能实现系统手动复位,复位后回到初始状态,并等待主持人按下开始键。三、设计思路框图译码显示译码优先编码 抢答按钮控制模块主持人控制开关显示模块定时模块秒脉冲产生四、VHDL程序1、键盘转按键模块LIBRARY IEEE;US

4、E IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;entity PADTOKEY is port ( CPIN,R,VALIDKEY :IN STD_LOGIC; KEY :IN STD_LOGIC_VECTOR(3 DOWNTO 0); KEYOUT: OUT STD_LOGIC_VECTOR(15 DOWNTO 0); CLK_1MHZ,RST: OUT STD_LOGIC );end entity ;architecture JGT of PADTOKEY is S

5、IGNAL CTCP: INTEGER RANGE 0 TO 5; SIGNAL CPO :STD_LOGIC:=0; SIGNAL CTCPO :INTEGER RANGE 0 TO 4999; TYPE STATES IS (S0,S1,S2); SIGNAL S: STATES;beginPROCESS(CPIN)BEGINIF CPIN=1 AND CPIN EVENT THEN IF CTCP=5 THEN CPO = NOT CPO; CTCP=0; ELSE CTCP=CTCP+1; END IF;END IF;END PROCESS;PROCESS(CPO,R)BEGINCLK

6、_1MHZ=CPO;IF R=1 THEN RST=0;S=S0;CTCPO=0; KEYOUT=0000000000000000;ELSIF CPO=1 AND CPO EVENT THEN IF CTCPO /= 4999 THEN CTCPO=CTCPO+1; ELSE CTCPORST=0; IF VALIDKEY=1 THEN SKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTNULL; END CASE; ELSE S=S0;KEYOUTR

7、ST=1;SRST=0;S NULL; END CASE; END IF;END IF;END PROCESS; end architecture JGT;此模块使用状态机将键盘的16个按键转换为16个按键信号。2、显示模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity QDQLCD is port (CPIN,R,BUSY :IN STD_LOGIC; FS1,FS2,FS3,FS4,FS5,FS6,FS7,FS8,TM :IN STD_LOGIC_VECTOR(7 DOWNTO

8、0); ZB : IN STD_LOGIC_VECTOR(3 DOWNTO 0); TESHU : IN STD_LOGIC_VECTOR(1 DOWNTO 0); CLK,RST,STROBE,OUTLINE : OUT STD_LOGIC; DATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ADDR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );end entity ;architecture JGT of QDQLCD is TYPE STATES IS (S0,S1,S2,S3,S4); SIGNAL S: STATES; S

9、IGNAL LCDPT : INTEGER RANGE 0 TO 27; SIGNAL CPCT : INTEGER RANGE 0 TO 65535; SIGNAL CP: STD_LOGIC; -SIGNAL ASCEW,ASCSN : STD_LOGIC_VECTOR(7 DOWNTO 0);beginPROCESS(CPIN,R)BEGINCLK=CPIN;IF R=1 THEN CPCT=65535;ELSIF CPIN=1 AND CPIN EVENT THEN IF CPCT=0 THEN CPCT=65535;CP=NOT CP; ELSE CPCTS2 - :Y: S3- ;

10、N; NULL-S2:STROBES1-S1,S2PROCESS(CP,R)BEGINIF R=1 THEN S=S0;LCDPT=0;RST S=S1;LCDPT=0;RST RST=0;STROBE=0; IF BUSY=0 THEN LCDPT=LCDPT+1; IF LCDPT=7 THEN S=S3; ELSE S S=S1;STROBE STROBE=0; IF BUSY=0 THEN IF LCDPT=27 THEN LCDPT=7; ELSE LCDPT=LCDPT+1; END IF; S STROBE=1;S NULL; END CASE;END IF; END PROCE

11、SS;-(LCDPT)-LCDPT=0,NULL- =16 ZB: TM: E 45H,5 W57H,6 S53H,9 N4EH,10PROCESS(LCDPT)BEGINCASE LCDPT ISWHEN 0 = NULL;WHEN 1= DATA=01011010;ADDR=1001;OUTLINE DATA=01000010;ADDR=1010;OUTLINE DATA=00111010;ADDR=0100;OUTLINE DATA=01010100;ADDR=0010;OUTLINE DATA=01001101;ADDR=0011;OUTLINE DATA=00111010;ADDR=

12、1011;OUTLINEDATA=0011&FS1(7 DOWNTO 4);ADDR=0000;OUTLINEDATA=0011&FS1(3 DOWNTO 0);ADDR=0001;OUTLINEDATA=0011&FS2(7 DOWNTO 4);ADDR=0010;OUTLINEDATA=0011&FS2(3 DOWNTO 0);ADDR=0011;OUTLINEDATA=0011&FS3(7 DOWNTO 4);ADDR=0100;OUTLINEDATA=0011&FS3(3 DOWNTO 0);ADDR=0101;OUTLINEDATA=0011&FS4(7 DOWNTO 4);ADDR

13、=0110;OUTLINEDATA=0011&FS4(3 DOWNTO 0);ADDR=0111;OUTLINEDATA=0011&FS5(7 DOWNTO 4);ADDR=1000;OUTLINEDATA=0011&FS5(3 DOWNTO 0);ADDR=1001;OUTLINEDATA=0011&FS6(7 DOWNTO 4);ADDR=1010;OUTLINEDATA=0011&FS6(3 DOWNTO 0);ADDR=1011;OUTLINEDATA=0011&FS7(7 DOWNTO 4);ADDR=1100;OUTLINEDATA=0011&FS7(3 DOWNTO 0);ADD

14、R=1101;OUTLINEDATA=0011&FS8(7 DOWNTO 4);ADDR=1110;OUTLINEDATA=0011&FS8(3 DOWNTO 0);ADDR=1111;OUTLINEDATA=0011&TM(7 DOWNTO 4);ADDR=0101;OUTLINEDATA=0011&TM(3 DOWNTO 0);ADDR=0110;OUTLINEDATA=0011&ZB(3 DOWNTO 0);ADDR=1101;OUTLINECASE TESHU IS WHEN 01= DATA=01000110;ADDR=1110;OUTLINE DATA=01000011;ADDR=

15、1110;OUTLINE NULL; END CASE;WHEN 27=CASE TESHU IS WHEN 01= DATA=01000111;ADDR=1111;OUTLINE DATA=01010011;ADDR=1111;OUTLINE NULL; END CASE;WHEN OTHERS= NULL;END CASE;END PROCESS; end architecture JGT;此模块采用状态机的方法在LCD上按格式显示抢答器的8个2位BCD码分数、抢答的组别、时间。3、主模块library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.S

16、TD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity qdmain1 is Port ( TESHU : out STD_LOGIC_VECTOR (1 downto 0); CPIN : in STD_LOGIC; KEYOUT : in STD_L

17、OGIC_VECTOR (15 downto 0); R : in STD_LOGIC; FS1 : out STD_LOGIC_VECTOR (7 downto 0); FS2 : out STD_LOGIC_VECTOR (7 downto 0); FS3 : out STD_LOGIC_VECTOR (7 downto 0); FS4 : out STD_LOGIC_VECTOR (7 downto 0); FS5 : out STD_LOGIC_VECTOR (7 downto 0); FS6 : out STD_LOGIC_VECTOR (7 downto 0); FS7 : out

18、 STD_LOGIC_VECTOR (7 downto 0); FS8 : out STD_LOGIC_VECTOR (7 downto 0); TM : out STD_LOGIC_VECTOR (7 downto 0); ZB : out STD_LOGIC_VECTOR (3 downto 0);end qdmain1;architecture Behavioral of qdmain1 isSIGNAL KSKEY:STD_LOGIC:=0;SIGNAL YIDA:STD_LOGIC:=0;SIGNAL JIAFLAG,JIANFLAG:STD_LOGIC;SIGNAL CPCT :

19、INTEGER RANGE 0 TO 4999;SIGNAL CP: STD_LOGIC;SIGNAL CP1S : INTEGER RANGE 0 TO 999;SIGNAL CPCNT: STD_LOGIC; SIGNAL TM1 : STD_LOGIC_VECTOR (7 downto 0); SIGNAL ZB1 : STD_LOGIC_VECTOR (3 downto 0);- SIGNAL F1,F2,F3,F4,F5,F6,F7,F8 : STD_LOGIC_VECTOR (7 downto 0); SIGNAL Fk1,Fk2,Fk3,Fk4,Fk5,Fk6,Fk7,Fk8 :

20、 STD_LOGIC_VECTOR (7 downto 0);beginTM=TM1;ZB=ZB1;FS1=Fk1; FS2=Fk2; FS3=Fk3;FS4=Fk4; FS5=Fk5;FS6=Fk6; FS7=Fk7;FS8=Fk8;process(R,CPIN)BEGIN IF R=1 THEN CPCT=4999; ELSIF CPIN=1 AND CPIN EVENT THEN -20MHZ IF CPCT=0 THEN -cp shi 500us; CPCT=4999;CP=NOT CP; ELSE CPCT=CPCT-1; END IF; END IF;END PROCESS;pr

21、ocess(R,CP)begin IF R=1 THEN CP1S=0; ELSIF CP=1 AND CP EVENT THEN IF CP1S=999 THEN CP1S=0; CPCNT=NOT CPCNT; -CPCNT shi 1s; ELSE CP1S=CP1S+1; END IF; END IF;end process;process(CPIN,CPCNT)beginIF CPIN=1 AND CPIN EVENT THEN IF KEYOUT=1000000000000000 THEN Fk1=00000000; Fk2=00000000; Fk3=00000000;Fk4=0

22、0000000; Fk5=00000000; Fk6=00000000;Fk7=00000000; Fk8=00000000; ELSIF R=1 THEN YIDA=0; KSKEY=0; TM1=00001001; ZB1=0000; TESHU=00; JIAFLAG=1; JIANFLAGKSKEYYIDA=1;ZB1=0001; -Fk1YIDA=1;ZB1=0010; -Fk2YIDA=1;ZB1=0011; -Fk3YIDA=1;ZB1=0100; -Fk4YIDA=1;ZB1=0101; -Fk5YIDA=1;ZB1=0110; -Fk6YIDA=1;ZB1=0111; -Fk

23、7YIDA=1;ZB1=1000; -Fk8YIDA=0;KSKEYNULL; END CASE; IF KSKEY=1 THEN IF CPCNT=1 AND CPCNT EVENT THEN IF TM1/=00000000 THEN TM1=TM1-1; END IF; END IF; IF TM1=00000000 THEN TESHU=10; -chao shi END IF; END IF; ELSE IF KSKEY=0 THEN TESHUFk1=Fk1-1; JIANFLAGFk2=Fk2-1; JIANFLAGFk3=Fk3-1; JIANFLAGFk4=Fk4-1; JI

24、ANFLAGFk5=Fk5-1; JIANFLAGFk6=Fk6-1; JIANFLAGFk7=Fk7-1; JIANFLAGFk8=Fk8-1; JIANFLAGNULL; END CASE; END IF; END IF; ELSE IF KEYOUT=0001000000000000 THEN IF JIAFLAG=1 THEN CASE ZB1 IS WHEN 0001=Fk1=Fk1+1;JIAFLAGFk2=Fk2+1;JIAFLAGFk3=Fk3+1;JIAFLAGFk4=Fk4+1;JIAFLAGFk5=Fk5+1;JIAFLAGFk6=Fk6+1;JIAFLAGFk7=Fk7

25、+1;JIAFLAGFk8=Fk8+1; JIAFLAGNULL; END CASE; END IF; END IF; END IF; END IF; END IF; END IF;end process;end Behavioral; ELSE CPCT=CPCT-1; END IF;END IF;END PROCESS;-对20MHZ脉冲分频为500USPROCESS(CP,R)BEGINIF R=1 THEN CP1S=999;ELSIF CP=1 AND CP EVENT THEN IF CP1S=0 THEN CP1S=999;CPD=NOT CPD; ELSE CP1S=CP1S-

26、1; END IF;END IF;END PROCESS;-对20MHZ脉冲分频为1sPROCESS(CPD,R)BEGINIF (R=1) THEN YH=0011;YL=0000;BAOJING=0;ELSIF(CPD=1 AND CPD EVENT) THEN IF STOP=0 THEN IF (YL=0000 ) THEN YL=1001; IF (YH=0000 AND YL=0000) THEN YH=0000 ; YL=0000;BAOJING=1; ELSE YH=YH-1; END IF; ELSE YL=YL-1; END IF; END IF;END IF;END PR

27、OCESS;PROCESS(KSKEY,R)BEGINIF R=1 THENTESHU=00;ELSIF KSKEY=1 AND YH&YL=00000000 THEN TESHU=10; -CS chao shiELSIF KSKEY=0AND YIDA=1 THEN TESHU=01; -FG fan guiEND IF;END PROCESS;TM=YH&YL;END ARCHITECTURE A;此模块用于抢答的主体设计,即决定抢答器的功能。五、电路连接图六、心得体会 通过这次课程设计,我熟练掌握的用VHDL语言设计一个课题的完整步骤,从一开始什么都不会,到现在已经对这门语言有了一个比较好的掌握,感觉很有成就感,觉得学习计算机语言类的课程还是应该将它融入到实践当中去,这样才能掌握的更全面,也更牢固。

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号