基于VHDL语言的FPGA智能抢答器设计论文.docx

上传人:b****5 文档编号:5241976 上传时间:2022-12-14 格式:DOCX 页数:45 大小:579.42KB
下载 相关 举报
基于VHDL语言的FPGA智能抢答器设计论文.docx_第1页
第1页 / 共45页
基于VHDL语言的FPGA智能抢答器设计论文.docx_第2页
第2页 / 共45页
基于VHDL语言的FPGA智能抢答器设计论文.docx_第3页
第3页 / 共45页
基于VHDL语言的FPGA智能抢答器设计论文.docx_第4页
第4页 / 共45页
基于VHDL语言的FPGA智能抢答器设计论文.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

基于VHDL语言的FPGA智能抢答器设计论文.docx

《基于VHDL语言的FPGA智能抢答器设计论文.docx》由会员分享,可在线阅读,更多相关《基于VHDL语言的FPGA智能抢答器设计论文.docx(45页珍藏版)》请在冰豆网上搜索。

基于VHDL语言的FPGA智能抢答器设计论文.docx

基于VHDL语言的FPGA智能抢答器设计论文

 

电子科技大学光电信息学院

 

课程设计论文

课程名称现代电子技术综合实验

题目名称基于VHDL语言的FPGA智能抢答器设计论文

 

摘要

智力抢答器作为一种快速准确判断选手抢答先后的比赛工具,现如今经常出现各类智力抢答,竞猜类比赛中。

本文利用FPGA开发平台为基础,以VHDL语言进行编程,在ISE软件上进行开发,实现电视中比赛选手抢答器的各项功能。

其中,第二章简单介绍FPGA开发平台的特点、VHDL语言的特点,以及大体的开发流程。

第三章主要介绍了开发软件ISE和仿真软件ModelSim的使用。

第四章主要介绍智力抢答器的具体设计过程、原理设计、模块化设计。

第五章主要对各个模块进行仿真测试,以及对最后的整个系统进行仿真测试。

最后第六章,在基于整个系统仿真无误的前提下进行硬件编程下载,在实验硬件平台上测试设计结果和智力抢答器的实用性。

并对这次试验进行总结。

一、实验目的

二、实验任务与要求

三、实验原理、设计思路与方案

四、单元模块设计与仿真

模块功能、模块符号及端口说明、模块程序、仿真程序、仿真波形

五、系统模块设计

顶层模块设计、系统管脚适配表、编程文件、下载成功标志、硬件调试说明

六、结论

 

1、实验目的

在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器。

通过抢答器的数显,灯光和音响等手段指示出第一抢答者。

同时还可以设置定时、记分犯规及奖惩等多种功能。

本设计采用手动抢答的方式,有人抢答后,系统自动封锁其他人的抢答按钮,使其不能再抢答,从而实现抢答功能。

2、实验任务与要求

1.基本要求

(1)、编号1~6号的选手在规定的时间内按键抢答

(2)、抢中编号锁定显示,其他无效

(3)、主持按键控制清零和开始

(4)、具有报警提示功能,分别提示抢答开始,有人抢答,定时时间到

2.参数要求

(1)、显示组数:

6组

(2)、报警延时:

300ms

(3)、抢答时间:

20s

3、实验原理、设计思路与方案

抢答信号输入系统后,系统必须对最先抢到的选手进行编码,而后锁存这个编码,并将这个编码显示输出,所以需要用到编码器、锁存器和译码显示电路。

而选手抢答的有效时间为20s,而且系统在有人抢中,主持人按下开关以及20s计时到但无人抢答时这三种情况下要发出警报,且警报时间延迟300ms后自动停止,故需定时电路来确定这些时限,报警电路产生时延,并用时序控制电路来协调各个部分的工作,计时时间也要显示出来。

当主持人按键为启动开始状态时,警报器发出警报,抢答编码电路进入工作状态,选手可以进行抢答。

同时抢答定时电路开始从20s递减,显示器显示递减,显示器显示递减的时间,当时间未减少到0s时,有选手抢答,报警电路发出警报,显示器显示选手编号,并锁存该选手的号码直到主持人清零为止,此时抢答器的时间不再递减;当时间减到0s时,无选手抢答,报警电路发出警报,提示选手不能再抢答,显示器显示抢答时间0s不动,选手号码为无效号码或者F。

当主持人按下清零信号,系统显示为初始状态。

 

四、单元模块设计与仿真

1.单元电路的划分

根据抢答器所需要实现的功能,将整体电路划分为:

编码锁存电路(BMSC)、抢答定时电路(DSQ)、报警器电路(BJQ)、扫描显示电路(SCAN)、译码电路(YMQ)和按键消抖(XD)六个单元电路。

2.1编码锁存电路(BMSC):

(1)该电路主要实现的功能是:

当主持人启动开始键,系统进入工作状态,同时48MHz时钟上升沿持续扫描6个选手的按键端口。

当倒计时未到0,有选手抢答时,则对该选手的按键进行编码,并锁存该选手编码并将其输出,同时其他选手的按键抢答无效。

若无选手抢答,则持续扫描,直至下一轮抢答开始。

本电路共有6个端口。

4个输入端口:

系统时钟、开始按键信号、定时时间到信号、选手抢答按键信号。

2个输出端口:

选手按键编码信号、有选手抢中信号。

(2)模块程序:

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

----Uncommentthefollowinglibrarydeclarationifinstantiating

----anyXilinxprimitivesinthiscode.

--libraryUNISIM;

--useUNISIM.VComponents.all;

entityBMSCis

Port(CLK:

inSTD_LOGIC;

START:

inSTD_LOGIC;

SJD:

inSTD_LOGIC;

XS:

inSTD_LOGIC_VECTOR(5downto0);

S:

outSTD_LOGIC_VECTOR(3downto0);

QZ:

outSTD_LOGIC

);

endBMSC;

architectureBehavioralofBMSCis

SIGNALQ_Z:

STD_LOGIC;

SIGNALEN:

STD_LOGIC:

='0';

SIGNALQ:

STD_LOGIC_VECTOR(3DOWNTO0):

="0000";

BEGIN

STATE:

PROCESS(START)

BEGIN

IFSTART'EVENTANDSTART='0'THEN

EN<=NOTEN;

ENDIF;

ENDPROCESS;

BM_SC:

PROCESS(CLK,EN,SJD,XS)

BEGIN

IFCLK'EVENTANDCLK='1'THEN

IFEN='1'ANDSJD='1'THEN

IFQ_Z='1'THEN

CASEXSIS

WHEN"111110"=>Q<="0001";Q_Z<='0';

WHEN"111101"=>Q<="0010";Q_Z<='0';

WHEN"111011"=>Q<="0011";Q_Z<='0';

WHEN"110111"=>Q<="0100";Q_Z<='0';

WHEN"101111"=>Q<="0101";Q_Z<='0';

WHEN"011111"=>Q<="0110";Q_Z<='0';

WHENOTHERS=>Q<="0000";

ENDCASE;

ENDIF;

ELSE

Q<="0000";Q_Z<='1';

ENDIF;

ENDIF;

ENDPROCESS;

S<=Q;

QZ<=Q_Z;

endBehavioral;

 

(3)仿真程序及波形:

--------------------------------------------------------------------------------

--Company:

--Engineer:

--

--CreateDate:

10:

39:

4211/14/2013

--DesignName:

BMSC

--ModuleName:

E:

/2010054020020/mentalgrab0020/TEST_BMSC.vhd

--ProjectName:

mentalgrab0020

--TargetDevice:

--Toolversions:

--Description:

--

--VHDLTestBenchCreatedbyISEformodule:

BMSC

--

--Dependencies:

--

--Revision:

--Revision0.01-FileCreated

--AdditionalComments:

--

--Notes:

--Thistestbenchhasbeenautomaticallygeneratedusingtypesstd_logicand

--std_logic_vectorfortheportsoftheunitundertest.Xilinxrecommends

--thatthesetypesalwaysbeusedforthetop-levelI/Oofadesigninorder

--toguaranteethatthetestbenchwillbindcorrectlytothepost-implementation

--simulationmodel.

--------------------------------------------------------------------------------

LIBRARYieee;

USEieee.std_logic_1164.ALL;

USEieee.std_logic_unsigned.all;

USEieee.numeric_std.ALL;

ENTITYTEST_BMSC_vhdIS

ENDTEST_BMSC_vhd;

ARCHITECTUREbehaviorOFTEST_BMSC_vhdIS

--ComponentDeclarationfortheUnitUnderTest(UUT)

COMPONENTBMSC

PORT(

CLK:

INstd_logic;

START:

INstd_logic;

SJD:

INstd_logic;

XS:

INstd_logic_vector(5downto0);

S:

OUTstd_logic_vector(3downto0);

QZ:

OUTstd_logic

);

ENDCOMPONENT;

--Inputs

SIGNALCLK:

std_logic:

='0';

SIGNALSTART:

std_logic:

='0';

SIGNALSJD:

std_logic:

='0';

SIGNALXS:

std_logic_vector(5downto0):

=(others=>'0');

--Outputs

SIGNALS:

std_logic_vector(3downto0);

SIGNALQZ:

std_logic;

BEGIN

--InstantiatetheUnitUnderTest(UUT)

uut:

BMSCPORTMAP(

CLK=>CLK,

START=>START,

SJD=>SJD,

XS=>XS,

S=>S,

QZ=>QZ

);

tb:

PROCESS

BEGIN

CLK<='0';WAITFOR100PS;

CLK<='1';WAITFOR100PS;

ENDPROCESS;

STM:

PROCESS

BEGIN

START<='1';XS<="111111";SJD<='1';

WAITFOR50NS;

START<='0';WAITFOR100NS;

START<='1';WAITFOR200NS;

XS<="111101";WAITFOR200NS;

XS<="110111";WAITFOR300NS;

START<='0';WAITFOR100NS;

START<='1';XS<="111111";

WAITFOR500NS;

START<='0';WAITFOR200NS;

START<='1';WAITFOR100NS;

SJD<='0';WAITFOR300NS;

XS<="011111";WAITFOR200NS;

ENDPROCESS;

END;

 

BMSC仿真波形

 

2.2定时电路(DSQ)

(1)该电路主要实现的功能是:

规定20秒倒计时时间。

本模块共有5个端口,3个输入端口:

基准时间源,开始键信号,选手抢中信号;两个输出端口:

时间到报警信号和实时计数输出端口。

为了实现按秒计时,首先要设计一个分频器来计算1Hz的标准时间信号。

(2)模块程序

----------------------------------------------------------------------------------

--Company:

--Engineer:

--

--CreateDate:

20:

53:

2411/13/2013

--DesignName:

--ModuleName:

DSP-Behavioral

--ProjectName:

--TargetDevices:

--Toolversions:

--Description:

--

--Dependencies:

--

--Revision:

--Revision0.01-FileCreated

--AdditionalComments:

--

----------------------------------------------------------------------------------

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

----Uncommentthefollowinglibrarydeclarationifinstantiating

----anyXilinxprimitivesinthiscode.

--libraryUNISIM;

--useUNISIM.VComponents.all;

entityDSPis

PORT(CLK:

INSTD_LOGIC;

QZ:

INSTD_LOGIC;

START:

INSTD_LOGIC;

SJD:

OUTSTD_LOGIC;

T10:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

T0:

OUTSTD_LOGIC_VECTOR(3DOWNTO0)

);

endDSP;

architectureBehavioralofDSPis

SIGNALCNT:

INTEGERRANGE1TO24000000:

=1;

SIGNALCLK_1HZ:

STD_LOGIC:

='1';

SIGNALEN:

STD_LOGIC:

='0';

SIGNALM10,M0:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

FP:

PROCESS(CLK)IS

BEGIN

IFCLK'EVENTANDCLK='1'THEN

IFCNT=24000000THEN

CNT<=1;

CLK_1HZ<=NOTCLK_1HZ;

ELSE

CNT<=CNT+1;

ENDIF;

ENDIF;

ENDPROCESS;

STATE:

PROCESS(START)

BEGIN

IFSTART'EVENTANDSTART='0'THEN

EN<=NOTEN;

ENDIF;

ENDPROCESS;

JSQ:

PROCESS(EN,QZ,CLK_1HZ)IS

BEGIN

IFEN='0'THEN

M10<="0010";M0<="0000";

SJD<='1';

ELSIFCLK_1HZ'EVENTANDCLK_1HZ='1'THEN

IFQZ='1'THEN

IFM10=0ANDM0=0THEN

M10<="0000";M0<="0000";

SJD<='0';

ELSE

IFM0=0ANDM10/=0THEN

M0<="1001";M10<=M10-1;

ELSE

M0<=M0-1;

ENDIF;

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

T0<=M0;

T10<=M10;

endBehavioral;

(3)仿真程序及波形

--------------------------------------------------------------------------------

--Company:

--Engineer:

--

--CreateDate:

10:

51:

3811/14/2013

--DesignName:

DSP

--ModuleName:

E:

/2010054020020/mentalgrab0020/TEST_DSP.vhd

--ProjectName:

mentalgrab0020

--TargetDevice:

--Toolversions:

--Description:

--

--VHDLTestBenchCreatedbyISEformodule:

DSP

--

--Dependencies:

--

--Revision:

--Revision0.01-FileCreated

--AdditionalComments:

--

--Notes:

--Thistestbenchhasbeenautomaticallygeneratedusingtypesstd_logicand

--std_logic_vectorfortheportsoftheunitundertest.Xilinxrecommends

--thatthesetypesalwaysbeusedforthetop-levelI/Oofadesigninorder

--toguaranteethatthetestbenchwillbindcorrectlytothepost-implementation

--simulationmodel.

--------------------------------------------------------------------------------

LIBRARYieee;

USEieee.std_logic_1164.ALL;

USEieee.std_logic_unsigned.all;

USEieee.numeric_std.ALL;

ENTITYTEST_DSP_vhdIS

ENDTEST_DSP_vhd;

ARCHITECTUREbehaviorOFTEST_DSP_vhdIS

--ComponentDeclarationfortheUnitUnderTest(UUT)

COMPONENTDSP

PORT(

CLK:

INstd_logic;

QZ:

INstd_logic;

START:

INstd_logic;

SJD:

OUTstd_logic;

T10:

OUTstd_logic_vector(3downto0);

T0:

OUTstd_logic_vector(3downto0)

);

ENDCOMPONENT;

--Inputs

SIGNALCLK:

std_logic:

='0';

SIGNALQZ:

std_logic:

='0';

SIGNALSTART:

std_logic:

='0';

--Outputs

SIGNALSJD:

std_logic;

SIGNALT10:

std_logic_vector(3downto0);

SIGNALT0:

std_logic_vector(3downto0);

BEGIN

--InstantiatetheUnitUnderTest(UUT)

uut:

DSPPORTMAP(

CLK=>CLK,

QZ=>QZ,

START=>START,

SJD=>SJD,

T10=>T10,

T0=>T0

);

tb:

PROCESS

BEGIN

CLK<='0';WAITFOR10NS;

CLK<='1';WAITFOR10NS;

ENDPROCESS;

STIM:

PROCESS

BEGIN

START<='1';QZ<='1';WAITFOR100NS;

START<='0';WAITFOR100NS;

START<='1';WAITFOR1100US;

START<='0';WAITFOR100NS;

START<='1';WAITFOR100US;

START<='0';WAITFOR100NS;

START<='1';WAITFOR200US;

QZ<='0';WAITFOR100US;

START<='0';WAITFOR100NS;

START<='1';WAITFOR100US;

ENDPROCESS;

END;

DSQ仿真波形

2.3报警电路(BJQ)

(1)该电路主要实现的功能是:

在开始键按下、有选手抢答、计时时间到这三种情况下,报警器发出警报,警报延时(学号+300)ms后结束。

本电路共有5个端口。

4个输入端口:

基准时间源信号、开始键信号、选手抢中信号、时间到信号。

1个输出端口:

报警信号。

三路报警触发信号最终要通过一个与门来进行整合。

(2)模块程序

--------------------------------------------------------------------------------

--Company:

--Engineer:

--

--CreateDate:

20:

55:

3711/13/2013

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

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1