1、基于VHDL语言的FPGA智能抢答器设计论文 电子科技大学光电信息学院课程设计论文 课程名称 现代电子技术综合实验 题目名称 基于VHDL语言的FPGA智能抢答器设计论文 摘要 智力抢答器作为一种快速准确判断选手抢答先后的比赛工具,现如今经常出现各类智力抢答,竞猜类比赛中。本文利用FPGA开发平台为基础,以VHDL语言进行编程,在ISE软件上进行开发,实现电视中比赛选手抢答器的各项功能。其中,第二章简单介绍FPGA开发平台的特点、VHDL语言的特点,以及大体的开发流程。第三章主要介绍了开发软件ISE和仿真软件ModelSim的使用。第四章主要介绍智力抢答器的具体设计过程、原理设计、模块化设计。
2、第五章主要对各个模块进行仿真测试,以及对最后的整个系统进行仿真测试。最后第六章,在基于整个系统仿真无误的前提下进行硬件编程下载,在实验硬件平台上测试设计结果和智力抢答器的实用性。并对这次试验进行总结。一、实验目的二、实验任务与要求三、实验原理、设计思路与方案四、单元模块设计与仿真模块功能、模块符号及端口说明、模块程序、仿真程序、仿真波形五、系统模块设计 顶层模块设计、系统管脚适配表、编程文件、下载成功标志、硬件调试说明六、结论 1、实验目的 在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器。通过抢答器的数显,灯光和音响等手段指示出第一抢答者。同时还可以设置定时、记分
3、犯规及奖惩等多种功能。本设计采用手动抢答的方式,有人抢答后,系统自动封锁其他人的抢答按钮,使其不能再抢答,从而实现抢答功能。2、实验任务与要求1.基本要求(1)、编号16号的选手在规定的时间内按键抢答(2)、抢中编号锁定显示,其他无效(3)、主持按键控制清零和开始(4)、具有报警提示功能,分别提示抢答开始,有人抢答,定时时间到2.参数要求(1)、显示组数:6组(2)、报警延时:300ms(3)、抢答时间:20s3、实验原理、设计思路与方案 抢答信号输入系统后,系统必须对最先抢到的选手进行编码,而后锁存这个编码,并将这个编码显示输出,所以需要用到编码器、锁存器和译码显示电路。而选手抢答的有效时间
4、为20s,而且系统在有人抢中,主持人按下开关以及20s计时到但无人抢答时这三种情况下要发出警报,且警报时间延迟300ms后自动停止,故需定时电路来确定这些时限,报警电路产生时延,并用时序控制电路来协调各个部分的工作,计时时间也要显示出来。 当主持人按键为启动开始状态时,警报器发出警报,抢答编码电路进入工作状态,选手可以进行抢答。同时抢答定时电路开始从20s递减,显示器显示递减,显示器显示递减的时间,当时间未减少到0s时,有选手抢答,报警电路发出警报,显示器显示选手编号,并锁存该选手的号码直到主持人清零为止,此时抢答器的时间不再递减;当时间减到0s时,无选手抢答,报警电路发出警报,提示选手不能再
5、抢答,显示器显示抢答时间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- any Xilinx primitives in this c
7、ode.-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 BMSC isSIGNAL Q_Z:STD_LOGIC;SIGNA
8、L 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 IF ; END IF ; END PROCESS; S = Q
9、; QZ 0); -Outputs SIGNAL 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 : PROCESS BEGIN CLK=0; WAIT FOR 100 PS; CLK=1; WAIT FOR 100 PS; END PROCESS; STM: PROC
10、ESS 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; XS=0111
11、11;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 - Projec
12、t 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 instantia
13、ting- 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 isSIGNAL
14、 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(STA
15、RT) 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; E
16、LSE 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 : PROCESS BEGIN CLK=0; WAIT FOR 10 NS; CLK=1; WAIT FOR 10 NS; END PROCESS; STIM : PROCESS BEGIN START=1;QZ=1; WAIT FOR 100 NS; START=0; WAIT FOR 100 NS; START=1; WAIT FO
17、R 1100 US; START=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个输入端口:基准时间源信号、开始键信号、选手抢中信号、时间到信号。1个输出端口:报警信号。三路报警触发信号最终要通过一个与门来进行整合。(2)模块程序- Company: - Engineer: - - Create Date: 20:55:37 11/13/2013
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1