智能抢答器VHDL设计.doc

上传人:仙人指路1688 文档编号:4145171 上传时间:2023-04-07 格式:DOC 页数:33 大小:772.50KB
返回 下载 相关 举报
智能抢答器VHDL设计.doc_第1页
第1页 / 共33页
智能抢答器VHDL设计.doc_第2页
第2页 / 共33页
智能抢答器VHDL设计.doc_第3页
第3页 / 共33页
智能抢答器VHDL设计.doc_第4页
第4页 / 共33页
智能抢答器VHDL设计.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《智能抢答器VHDL设计.doc》由会员分享,可在线阅读,更多相关《智能抢答器VHDL设计.doc(33页珍藏版)》请在三一办公上搜索。

1、 电子科技大学光电信息学院课程设计论文 课程名称 现代电子技术综合实验 题目名称 基于VHDL语言的FPGA智能抢答器设计论文 学 号 姓 名 指导老师 陈学英 起止时间 11月11日-11月22日 2013年 11月 21日摘要 智力抢答器作为一种快速准确判断选手抢答先后的比赛工具,现如今经常出现各类智力抢答,竞猜类比赛中。本文利用FPGA开发平台为基础,以VHDL语言进行编程,在ISE软件上进行开发,实现电视中比赛选手抢答器的各项功能。其中,第二章简单介绍FPGA开发平台的特点、VHDL语言的特点,以及大体的开发流程。第三章主要介绍了开发软件ISE和仿真软件ModelSim的使用。第四章主

2、要介绍智力抢答器的具体设计过程、原理设计、模块化设计。第五章主要对各个模块进行仿真测试,以及对最后的整个系统进行仿真测试。最后第六章,在基于整个系统仿真无误的前提下进行硬件编程下载,在实验硬件平台上测试设计结果和智力抢答器的实用性。并对这次试验进行总结。目录一、实验目的二、实验任务与要求三、实验原理、设计思路与方案四、单元模块设计与仿真模块功能、模块符号及端口说明、模块程序、仿真程序、仿真波形五、系统模块设计 顶层模块设计、系统管脚适配表、编程文件、下载成功标志、硬件调试说明六、结论 一、 实验目的 在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器。通过抢答器的数显

3、,灯光和音响等手段指示出第一抢答者。同时还可以设置定时、记分犯规及奖惩等多种功能。本设计采用手动抢答的方式,有人抢答后,系统自动封锁其他人的抢答按钮,使其不能再抢答,从而实现抢答功能。二、 实验任务与要求1.基本要求(1)、编号16号的选手在规定的时间内按键抢答(2)、抢中编号锁定显示,其他无效(3)、主持按键控制清零和开始(4)、具有报警提示功能,分别提示抢答开始,有人抢答,定时时间到2.参数要求(1)、显示组数:6组(2)、报警延时:300ms(3)、抢答时间:20s三、 实验原理、设计思路与方案 抢答信号输入系统后,系统必须对最先抢到的选手进行编码,而后锁存这个编码,并将这个编码显示输出

4、,所以需要用到编码器、锁存器和译码显示电路。而选手抢答的有效时间为20s,而且系统在有人抢中,主持人按下开关以及20s计时到但无人抢答时这三种情况下要发出警报,且警报时间延迟300ms后自动停止,故需定时电路来确定这些时限,报警电路产生时延,并用时序控制电路来协调各个部分的工作,计时时间也要显示出来。 当主持人按键为启动开始状态时,警报器发出警报,抢答编码电路进入工作状态,选手可以进行抢答。同时抢答定时电路开始从20s递减,显示器显示递减,显示器显示递减的时间,当时间未减少到0s时,有选手抢答,报警电路发出警报,显示器显示选手编号,并锁存该选手的号码直到主持人清零为止,此时抢答器的时间不再递减

5、;当时间减到0s时,无选手抢答,报警电路发出警报,提示选手不能再抢答,显示器显示抢答时间0s不动,选手号码为无效号码或者F。当主持人按下清零信号,系统显示为初始状态。四、单元模块设计与仿真1.单元电路的划分 根据抢答器所需要实现的功能,将整体电路划分为:编码锁存电路(BMSC)、抢答定时电路(DSQ)、报警器电路(BJQ)、扫描显示电路(SCAN)、译码电路(YMQ)和按键消抖(XD)六个单元电路。2.1编码锁存电路(BMSC):(1) 该电路主要实现的功能是:当主持人启动开始键,系统进入工作状态,同时48MHz时钟上升沿持续扫描6个选手的按键端口。当倒计时未到0,有选手抢答时,则对该选手的按

6、键进行编码,并锁存该选手编码并将其输出,同时其他选手的按键抢答无效。若无选手抢答,则持续扫描,直至下一轮抢答开始。本电路共有6个端口。4个输入端口:系统时钟、开始按键信号、定时时间到信号、选手抢答按键信号。2个输出端口:选手按键编码信号、有选手抢中信号。(2) 模块程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration if instantiating

7、- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity BMSC is Port ( CLK : in STD_LOGIC; START : in STD_LOGIC; SJD : in STD_LOGIC; XS : in STD_LOGIC_VECTOR (5 downto 0); S : out STD_LOGIC_VECTOR (3 downto 0); QZ : out STD_LOGIC );end BMSC;architecture Behavioral of

8、BMSC isSIGNAL Q_Z:STD_LOGIC;SIGNAL EN:STD_LOGIC:=0;SIGNAL Q:STD_LOGIC_VECTOR(3 DOWNTO 0):=0000;BEGINSTATE:PROCESS(START) BEGIN IF START EVENT AND START =0 THEN EN Q = 0001; Q_Z Q = 0010; Q_Z Q = 0011; Q_Z Q = 0100; Q_Z Q = 0101; Q_Z Q = 0110; Q_Z Q =0000; END CASE; END IF ; ELSE Q =0000; Q_Z =1; END

9、 IF ; END IF ; END PROCESS; S = Q; QZ 0);-OutputsSIGNAL S : std_logic_vector(3 downto 0);SIGNAL QZ : std_logic;BEGIN- Instantiate the Unit Under Test (UUT)uut: BMSC PORT MAP(CLK = CLK,START = START,SJD = SJD,XS = XS,S = S,QZ = QZ);tb : PROCESSBEGIN CLK=0; WAIT FOR 100 PS;CLK=1; WAIT FOR 100 PS;END P

10、ROCESS; STM: PROCESS BEGIN START=1; XS=111111; SJD=1; WAIT FOR 50 NS ;START=0;WAIT FOR 100 NS;START=1;WAIT FOR 200 NS;XS=111101;WAIT FOR 200 NS;XS=110111;WAIT FOR 300 NS;START=0;WAIT FOR 100 NS;START=1;XS=111111;WAIT FOR 500 NS ;START=0;WAIT FOR 200 NS;START=1;WAIT FOR 100 NS;SJD=0;WAIT FOR 300 NS;X

11、S=011111;WAIT FOR 200 NS;END PROCESS;END; BMSC仿真波形 2.2定时电路(DSQ)(1)该电路主要实现的功能是:规定20秒倒计时时间。本模块共有5个端口,3个输入端口:基准时间源,开始键信号,选手抢中信号;两个输出端口:时间到报警信号和实时计数输出端口。 为了实现按秒计时,首先要设计一个分频器来计算1Hz的标准时间信号。(2) 模块程序- Company: - Engineer: - - Create Date: 20:53:24 11/13/2013 - Design Name: - Module Name: DSP - Behavioral -

12、Project Name: - Target Devices: - Tool versions: - Description: - Dependencies: - Revision: - Revision 0.01 - File Created- Additional Comments: -library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration if ins

13、tantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity DSP isPORT(CLK:IN STD_LOGIC; QZ:IN STD_LOGIC; START:IN STD_LOGIC; SJD:OUT STD_LOGIC; T10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); T0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end DSP;architecture Behavioral of DSP isSI

14、GNAL CNT:INTEGER RANGE 1 TO 24000000:=1;SIGNAL CLK_1HZ:STD_LOGIC:=1;SIGNAL EN:STD_LOGIC:=0;SIGNAL M10,M0:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINFP:PROCESS(CLK) IS BEGIN IF CLK EVENT AND CLK=1 THEN IF CNT=24000000 THEN CNT =1;CLK_1HZ =NOT CLK_1HZ;ELSE CNT =CNT+1;END IF; END IF;END PROCESS;STATE:PROCESS(ST

15、ART) BEGIN IF START EVENT AND START=0 THEN EN = NOT EN;END IF;END PROCESS;JSQ:PROCESS(EN,QZ,CLK_1HZ) IS BEGIN IF EN=0 THEN M10 =0010;M0=0000;SJD=1;ELSIF CLK_1HZ EVENT AND CLK_1HZ=1 THEN IF QZ=1 THEN IF M10=0 AND M0=0 THEN M10=0000;M0=0000; SJD=0; ELSE IF M0=0 AND M10/=0 THEN M0=1001;M10 =M10-1; ELSE

16、 M0 = M0-1;END IF;END IF;END IF;END IF;END PROCESS;T0 = M0;T10 CLK,QZ = QZ,START = START,SJD = SJD,T10 = T10,T0 = T0);tb : PROCESSBEGIN CLK=0; WAIT FOR 10 NS;CLK=1; WAIT FOR 10 NS;END PROCESS; STIM : PROCESSBEGIN START=1;QZ=1; WAIT FOR 100 NS; START=0; WAIT FOR 100 NS; START=1; WAIT FOR 1100 US; STA

17、RT=0; WAIT FOR 100 NS; START=1; WAIT FOR 100 US; START=0; WAIT FOR 100 NS; START=1; WAIT FOR 200 US; QZ=0; WAIT FOR 100 US; START=0; WAIT FOR 100 NS; START=1; WAIT FOR 100 US; END PROCESS;END; DSQ仿真波形2.3报警电路(BJQ)(1)该电路主要实现的功能是:在开始键按下、有选手抢答、计时时间到这三种情况下,报警器发出警报,警报延时(学号+300)ms后结束。 本电路共有5个端口。4个输入端口:基准时间

18、源信号、开始键信号、选手抢中信号、时间到信号。1个输出端口:报警信号。三路报警触发信号最终要通过一个与门来进行整合。(2)模块程序- Company: - Engineer: - - Create Date: 20:55:37 11/13/2013 - Design Name: - Module Name: BJQ - Behavioral - Project Name: - Target Devices: - Tool versions: - Description: - Dependencies: - Revision: - Revision 0.01 - File Created- Ad

19、ditional Comments: -library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_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 BJQ isPORT(CLK:IN STD_LOGIC;

20、QZ,SJD,START:IN STD_LOGIC;BJ:OUT STD_LOGIC);end BJQ;architecture Behavioral of BJQ isSIGNAL BJ1,BJ2,BJ3:STD_LOGIC;SIGNAL EN:STD_LOGIC:=0;beginSTATE:PROCESS(START)BEGINIF START EVENT AND START=0 THENEN = NOT EN;END IF;END PROCESS;T1:PROCESS(CLK,EN)VARIABLE Q:INTEGER RANGE 1 TO 14400000:=1;BEGINIF EN=

21、0 THENBJ1 =1; Q:=1;ELSEIF CLK EVENT AND CLK=1 THENIF Q=14400000 THENBJ1 =1;ELSEQ:=Q+1;BJ1=0;END IF;END IF;END IF;END PROCESS;T2:PROCESS(CLK,QZ)VARIABLE Q:INTEGER RANGE 1 TO 14400000:=1;BEGINIF QZ=1 THENBJ2 =1; Q:=1;ELSEIF CLK EVENT AND CLK=1 THENIF Q=14400000 THENBJ2 =1;ELSEQ:=Q+1;BJ2 =0;END IF;END

22、IF;END IF;END PROCESS;T3:PROCESS(CLK,SJD)VARIABLE Q:INTEGER RANGE 1 TO 14400000:=1;BEGINIF SJD=1 THENBJ3=1;Q:=1;ELSEIF CLK EVENT AND CLK=1 THENIF Q=14400000 THENBJ3 =1;ELSEQ:=Q+1;BJ3 =0;END IF;END IF;END IF;END PROCESS;BJ CLK,QZ = QZ,SJD = SJD,START = START,BJ = BJ);tb : PROCESSBEGIN clk=0;wait for

23、10 Ns;clk=1;wait for 10 ns;END PROCESS; stm_proc : processBEGIN START=1; QZ=1; SJD=1; WAIT FOR 50 NS; START =0;WAIT FOR 100 NS; START =1;WAIT FOR 150 mS; QZ=0;WAIT FOR 200 mS; SJD=0;WAIT FOR 280 mS; START=0;WAIT FOR 100 NS; START=1;WAIT FOR 1 mS;END PROCESS;END;BJQ仿真波形2.4扫描显示电路(SCAN)(1)该电路主要实现的功能是:对倒计时时间和抢到的选手号码进行显示。本电路共有6个端口。4个输入端口:系统时钟、选手号码、时间十位数据、时间个位数据;2个输出端口:输出的三位扫描信号,显示数据信号。(2) 模块程序- Company: - Engineer: - - Create Date: 20:5

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号