基于FPGA的八位数字抢答器.docx
- 文档编号:10676869
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:26
- 大小:879.13KB
基于FPGA的八位数字抢答器.docx
《基于FPGA的八位数字抢答器.docx》由会员分享,可在线阅读,更多相关《基于FPGA的八位数字抢答器.docx(26页珍藏版)》请在冰豆网上搜索。
基于FPGA的八位数字抢答器
一、课程设计的内容
通过学习掌握使用可编程逻辑器件和QuartusII软件的基本使用,利用QuartusII软件各种器件进行多路智力竞赛抢答器设计;利用DE2板对所设计的电路进行验证;总结电路设计结果。
通过设计掌握基本工程设计方法,提高动手能力。
二、课程设计的要求与数据
八位数字抢答器设计要求:
1).抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0~S7表示。
2).设置一个系统清除和抢答控制开关S,该开关由主持人控制。
3).抢答器具有锁存与显示功能。
即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。
4).抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如,30秒)。
当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。
5).参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
6).如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
三、课程设计应完成的工作
利用QuartusII软件各种器件画出八位数字抢答器的原理图。
对原理图进行编译修改错误;设计引脚,再重新编译;进行仿真,根据仿真结果观察设计是否符合设计要求。
然后加载到DE2板上,验证电路是否正确。
对设计进行优化、完善。
附加要求:
写出设计的VHDL源程序,利用QuartusII软件生成原理图。
进行编译修改错误;设计引脚,再重新编译;进行仿真,根据仿真结果观察设计是否符合设计要求。
然后加载到DE2板上,验证电路是否正确。
四、课程设计进程安排
序号
设计各阶段内容
地点
起止日期
1
熟悉QuartusII软件,掌握QuartusII软件的基本使用
实验2号楼214
2007-11-26上午
2
根据设计要求进行方案设计,利用基本器件用笔画出基本原理图,给老师检修
实验2号楼214
2007-11-26下午至27
3
利用QuartusII软件进行设计,画出原理图。
利用DE2板进行电路验证
实验2号楼214
2007-11-28
4
对设计进行完善、优化,
实验2号楼214
2007-11-29
5
总结电路设计结果,按要求写设计报告
实验2号楼214
2007-11-30
五、应收集的资料及主要参考文献
《现代电子技术实践课程指导》谢云等主编,机械工业出版社
《SOPC技术与应用》江国强,机械工业出版社,2006年10月
《EDA技术与应用》江国强,电子工业出版社,2007年1月
《FPGA与SOPC设计教程:
DE2实践》
张志刚编著.-西安:
西安电子科技大学出版社,2007.334页+光盘1片
摘要
学习利用使用可编程逻辑器件和QUARTUSII软件,用原理图方法设计一个八位抢答器,利用DE2板对所设计的电路进行验证。
抢答器基本功能:
一是能分辨出选手操作按键的先后,并锁存优先抢答者的编号,供译码显示电路用;二是要使其他选手的按键操作无效;三是具有计时功能,时间到则抢答无效。
根据要求抢答器分为两个部分:
一是抢答显示电路;二是倒计时显示电路。
抢答电路部分可以用用VHDL编写源程序实现抢答锁存功能,而倒计时显示电路可用74HC192和74HC48器件实现预置数倒计时。
通过课程设计掌握工程的基本设计方法,提高动手能力;加强对自己专业的了解和认识。
深化专业知识,为以从事相关工作打下基础。
关键词:
编译、仿真、综合、FPGA、SOPC
目录
1设计任务目的及要求6
1.1设计任务6
1.1设计要求
2原理与模块介绍7
2.1设计模块7
2..1.1抢答显示电路
2.1.2倒计时显示电路
3设计方案13
3.1设计思路13
4实验结果与数据处理16
4.1测试步骤16
4.2实现现象及数据分析
5结论与问题讨论18
5.1完成程度20
5.2问题与解决方法
5.3不足与改进
5.4收获与心得体会
参考文献21
附录错误!
未定义书签。
1设计任务目的及要求
1.1设计任务
1)利用各种器件设计一个多路智力竞赛抢答器。
2)利用DE2板对所设计的电路进行验证。
3)总结电路设计结果
1.2设计要求
1).抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0~S7表示。
2).设置一个系统清除和抢答控制开关S,该开关由主持人控制。
3).抢答器具有锁存与显示功能。
即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。
4).抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如,30秒)。
当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。
5).参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
6).如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
2原理与模块介绍
2.1设计模块
报警LED显示电路
1.抢答显示电路设计
inst2525
clear
start
lock
译码显示电路
时序控制电路
抢答控制芯片
抢答显示电路图
抢答电路的功能有三个:
一是能分辨出选手操作按键的先后,并锁存优先抢答者的编号,供译码显示电路用;二是要使其他选手的按键操作无效;三是按下开始按键(采用高电平触发按键)LED(LEDG[0])闪烁,并且抢答后LED(LEDG[0])亮(不灭)以此说明抢答成功。
为了实现以上功能可以编写VHDL源程序,生成原理图。
显示采用74HC46译码器。
VHDL抢答芯片图
其源程序代码:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
entityenteris
port(s:
instd_logic_vector(7downto0);
clear,start:
instd_logic;
lock:
bufferstd_logic;
s_out:
outstd_logic_vector(3downto0));
endenter;
ARCHITECTUREs_enterofenteris
signalsig_start:
std_logic;
begin
process(s,clear,start)
begin
ifclear='1'then
lock<='0';
sig_start<='0';
s_out<="0000";
elsifstart='1'then
sig_start<='1';
elsif(lock='0'andsig_start='1')then
ifs(0)='1'thens_out<="0001";lock<='1';
elsifs
(1)='1'thens_out<="0010";lock<='1';
elsifs
(2)='1'thens_out<="0011";lock<='1';
elsifs(3)='1'thens_out<="0100";lock<='1';
elsifs(4)='1'thens_out<="0101";lock<='1';
elsifs(5)='1'thens_out<="0110";lock<='1';
elsifs(6)='1'thens_out<="0111";lock<='1';
elsifs(7)='1'thens_out<="1000";lock<='1';
endif;
endif;
endprocess;
ends_enter;
其功能描述如下:
输入s[7…0]为1至8号抢答按键(输入)。
输出s_out[3…0]输出优先抢答者的编号,供译码显示电路使用且使其他选手的按键操作无效。
输入clear(KEY[0])是低电平触发按键,实现清零功能,输入start是连接低电平触发按键begin(KEY[1]),供主持人使用。
输出lock。
当有人抢答后输出为“1”,否为“0”实现译码显示电路处于灭零或工作状态,同时也能实现倒计时停止的功能。
抢答显示电路工作原理:
主持人按下clear(KEY[0])按键,系统清零,数码管处于灭零状态;当主持人按下start(KEY[1])按键后, LED(LEDG[0])闪烁一下以其代替05S的声响,抢答芯片处于工作状态。
lock为低电平“0”,与74HC46Bin’端连接,故数码显示处于灭零状态。
当有人抢答(先后按下s7-s0,优先者为准,高电平有效)由上述VHDL源程序可知,抢答芯片可以实现输出优先者的编号且使其他选手的按键操作无效。
此时输出lock为“1”则74HC46处于工作状态,显示优先抢答者的编号。
例如,当按下s0按键后,s_out输出“0001”送到74HC46译码器最后显示为“1”。
按其他按键无效。
当优先抢答者回答完问题后,由主持人操作清零clear(KEY[0])按键,使抢答电路复位,以便于进行下一轮抢答。
报警LED24显示电路
时序控制电路
2倒计时显示电路模块
预置数30进制减数器及显示电路
lock
inst2525
2^25分频器
clear
start
倒计时显示电路模块主要由四个部分组成:
2^25lpm_count分频器、预置数30进制减数器及显示电路、报警LED24电路和时序控制电路。
(1).2^25lpm_count分频器
由于DE2板上仅提供50MHz和27MHz的时钟,需设定lpm_count分频器来对系统时钟进行分频,50MHz经2^25后为0.781Hz接近1.0Hz,故对lpm_count分频器进行2^25分频设定取其第25输出cout,即输出0.781Hz。
(2).预置数30进制减数器及显示电路
十位
个位
报警控制输入端
clock
使用两片74HC192计数/减数的减数功能构成可预置数30进制减数器,再连接74HC46显示电路。
利用个位的借位端Bon’与十位的减数脉冲输入端DN相连接
当个位减到“0”时借位端Bon’变为“0”从而形成 一个脉冲驱动十位工作,向中十借“1”,在这里省略进制设定功能,把它设定为30进制。
个位预置数为“0000”,十位预置数为“0011”。
低电平触发按键begin加反相与“0”电平进行或非后,输出接到两个芯片LDN’置数端(低电平预置数,高电平计数/减数),低电平触发按键clear加反相后接到两个芯片CLR清零端(高电平有效),当主持人按下clear按键再按下begin按键后减数器开始减数。
(3).报警LED24电路
十位74192芯片的借位端BON’
当减数器减时LED24发光二极管灭,清零时灯亮。
当按下clear按键后LED24会发光,当减数减到“00”时LED24会发光。
这时再按下clear按键会产闪烁一下再发光。
(4).时序控制电路
十位74192芯片的借位端BON’
报警LED24时序控制电路
时序电路1
lock
clock
个位DN端
十位BON’端
时序电路2
LED(LEDG[0])
lock
时序电路3
LDN’端
时序电路4
注:
时序控制电路是关键电路,在整机原理再说明。
整个设计工作原理:
时序控制电路是定时抢答器设计的关键环节,其主要功能是:
(1)当参赛选手按动抢答键时,LED(LEDG[0])发光二极管发光,抢答电路和倒计时电路停止工作。
(2)当主持人按一下clear(KEY[0])按键系统清零,LED24二极管发亮,再按一下begin按键后,LED(LEDG[0])发光二极管闪烁一下以代替0.5秒的响声,抢答电路和倒计时电路进入正常工作状态,同时LED24二极管灭表示整机进行正常工作。
(3)当设定抢答时间到,无人抢答时LED24发光二极管发光以此代表抢答电路和倒计时电路停止工作。
从上述原理图可知,有两个控制按键,一个是系统清零按键clear((KEY[0])低电平触发,加反相器后为高电平触发),另一个是开始按键begin(低电平触发,加反相器后为高电平触发)。
当主持人按一下clear(KEY[0])按键,整个系统两大部分(抢答和定时)都清零,输出lock为“0”,数码管处于灭零状态,时序1电路inst26与门输出“1”,使得LED24二极管发光,而减数器十位的BON’端输出为“0”lock经过门inst11反相后再和十位的BON’端和时钟信号CLK进行“与”操作,即门inst18三输入与门的三个输入,因为BON’端等于0,所以门inst18关门,使CLK信号被封锁,故倒计时不能工作。
再按一下begin按键抢答电路进入正常工作状态,数码管处于灭零状态,这样避免产生混乱,实现显示1—8号选手.由时序3电路的inst22或门电路可知,当按一下begin按键后,此时或门输出“1”,然后又变回低电平,故LED(LEDG[0])二极管闪烁一下,以其代替0.5少响声。
inst26与门输出“0”,使得LED24二极管灭。
从时序电路4得知,两片74192的LDN端在按下begin按键触发(触发那刻经过时序4电路实现预置数)实现预置数,后LDN变回高电平,实现开始减数的状态。
此时再片74192的BON’输出为“1”这使得门inst18为开门,CLK时钟信号能够送到个位的DN端,这样就真正实现减数器开始减数了,这样就实现了功能(2)的要求了。
当参赛选手按动抢答键时,抢答芯片enter实现输出优先者的编号且使其他选手的按键操作无效,时序电路3与门电路实现译码显示电路工作,由lock和BON’为输入的inst25与门此时输出lock为“1”且BON’=1则与门inst输出为“1”,即抢答译码显示电路74HC46处于工作状态显示优先抢答者的编号,此时输出lock经过反相器输出为“0”则门inst18为关门,CLK时钟信号被封锁,减数器停止工作。
此时十位74HC192芯片的借位端BON’=1且lock=1作为时序3电路的inst25与门的输入,使得 inst25与门输出为“1”而inst25与门作为inst22或门的一个输入,另一个输入为“1”故或门输出为“1”使得LED发光二极管发光,从而实现了功能
(一)的要求了。
当倒计时设定的时间(30秒)到来时,没人抢答,来自十位74HC192芯片的借位端BON’=0,而BON’为时序2电路inst18三输入与门的一个输入,故与门inst18输出为“0”,是关门,所以CP信号被封锁,使倒计时电路为“00”状态,BON’也为时序3电路中inst25的一输入。
因BON’=0,故inst18与门输出为“0”,是关门,使得抢答电路的7446译码器的BIN’=0,则处于灭零状态。
从而抢答电路不能正常工作。
同时BON’,经过反相后作为时序1电路的inst26与门。
另一输入begin=1故inst26与门输出为“1”,是开门,则LED24发光二极管发光以其代表扬声器实现报警作用。
这样就实现功能(3)的要求。
3设计方案
3.1 设计思路
复习编码器、十进制加/减计数器的工作原理,设计可预置时间的定时电路分析与设计时序控制电路。
画出定时抢答器的整机逻辑电路图,掌握智力抢答器的工作原理及其设计方法,并对各种元器件的功能和应用有所了解。
并能对其在电路中的作用进行分析。
例如:
555定时器,优先编码器74LS148和RS锁存器74LS279以及十进制同步加/减计数器74LS192。
八位抢答器分两大部分:
抢答显示电路部分和计数显示电路部分。
设定一条控制总线S控制整个系统的运作,高电平有效。
设定一个清零控制,用于清除上一次抢答和计数的显示,高电平清零。
另设定了一个开始begin控制,用于控制整个系统开始运作。
由于DE2板上仅提供50MHz和27MHz的时钟,需设定lpm_count分频器来对系统时钟进行分频,计数器主要是用两个74HC192,通过这两个计数器,进行30秒的倒数。
抢答电路采用VHDL方法设计。
译码显示电路用74HC146实现。
抢答器的组成框图
定时抢答器的总体框图如图1所示,它由主体电路和扩展电路两部分组成。
主体电路完成基本抢答功能,即开始抢答后,当选手按动抢答键时,能显示选手的编号,同时能封锁输入电路,禁止其他选手抢答。
扩展电路完成定时抢答的功能。
图1所示的定时抢答器的工作过程是:
接通电源时,节目主持人将开关置于“位
置,抢答器处于禁止工作状态,编号显示器灭灯,定时显示器显示设定的时间,当节目主持人宣布抢答题目后,说一声“开始”,同时将控制开关拨到“清零”位置,扬声器给出声响提示,抢答器处于工作状态,定时器倒计时。
当定时时间到,却没有选手抢答时,系统报警,并封锁输入电路,禁止选手超时后抢答。
当选手在定时时间内按动抢答键时,抢答器要完成以下四项工作:
①优先编码电路立即分辨出抢答者的编号,并由锁存器进行锁存,然后由译码显示电路显示编号;②扬声器发出短暂声响,提醒节目主持人注意;③控制电路要对输入编码电路进行封锁,避免其他选手再次进行抢答;④控制电路要使定时器停止工作,时间显示器上显示剩余的抢答时间,并保持到主持人将系统清零为止。
当选手将问题回答完毕,主持人操作控制开关,使系统回复到禁止工作状态,以便进行下一轮抢答。
注:
对于功能要求,因个人能力有限和工作条件的限制,作了一些修改。
其中扬声器报警电路,用发光二极管代替。
流程图
4实验结果与数据处理
4.1测试步骤
1.编译
对做画好的原理图进行编译,编译通过则进行下一步操作。
2.分配管脚
对原理图的输入、输出与DE2板上的管脚进行对应分配。
管脚
原理图输入输出名称
SW[0]
PIN_N25
hand[0]
选手抢答
SW[1]
PIN_N26
hand[1]
SW[2]
PIN_P25
hand[2]
SW[3]
PIN_AE14
hand[3]
SW[4]
PIN_AF14
hand[4]
SW[5]
PIN_AD13
hand[5]
SW[6]
PIN_AC13
hand[6]
SW[7]
PIN_C13
hand[7]
HEX0[0]
PIN_AF10
X0[0]
抢答显示
HEX0[1]
PIN_AB12
X0[1]
HEX0[2]
PIN_AC12
X0[2]
HEX0[3]
PIN_AD11
X0[3]
HEX0[4]
PIN_AE11
X0[4]
HEX0[5]
PIN_V14
X0[5]
HEX0[6]
PIN_V13
X0[6]
HEX4[0]
PIN_U9
X4[0]
个位计数显示
HEX4[1]
PIN_U1
X4[1]
HEX4[2]
PIN_U2
X4[2]
HEX4[3]
PIN_T4
X4[3]
HEX4[4]
PIN_R7
X4[4]
HEX4[5]
PIN_R6
X4[5]
HEX4[6]
PIN_T3
X4[6]
HEX5[0]
PIN_T2
X5[0]
十位计数显示
HEX5[1]
PIN_P6
X5[1]
HEX5[2]
PIN_P7
X5[2]
HEX5[3]
PIN_T9
X5[3]
HEX5[4]
PIN_R5
X5[4]
HEX5[5]
PIN_R4
X5[5]
HEX5[6]
PIN_R3
X5[6]
CLOCK_50
PIN_N2
CLK
50MHz时钟信号输入
KEY[0]
PIN_G26
clear
清零按键
KEY[1]
PIN_N23
begin
开始按键
LEDG[0]
PIN_AE22
LED
提示报警电路输出
LEDG[7]
PIN_Y18
LED24
3.加载
分配完后把原理图加载到DE2版上进行验证,即
4.仿真
对原理图进行仿真,对实验数据进行记录和分析。
4.2实验现象及数据分析
加载部分:
加载后可以看到HEX0数码管和HEX4、HEX5码管发生变化且LED发光二极管除了第一个(LEDG[0])都灭了,按一下clear按键可以看到以上数码管,HEX0为灭零状态,HEX4、HEX5显示为零状态,LED(LEDG[0])发光。
再按一下begin按键可以看到HEX5、HEX4数码管从30开始倒数。
且LED(LEDG[0])闪烁一下,LED24(LEDG[7])灭,当打下SW0-SW7中的任意开关,例如SW0则第一个数码管显示“1”并且HEX4、HEX5数码管停止计数。
LED(LEDG[0])发光再按其他SW开关数码管都没变化,若按clear(KEY[0])按键则显示清零状态。
仿真部分:
仿真结果如下
注:
为了更好的仿真,把分频器去掉则时钟信号周期直接设为1秒,即CLK=1Hz
仿真图
(一)
30秒内有人抢答
数据分析:
由仿真图得,0-100ms呈现不确定状态。
100ms~671.9msclear为低平,即按下,可看到LED(LEDG[0])和LED24的值为“0”都不发光,抢答显示为“1111111”,即灭零(注:
1111111代表数码管a-f段)计数显示为“0000001”,“0000001”即显示“00”状态。
671.9ms~730.ms这段时间LED24(LEDG[7])为“1”即发光,730.0ms~1.1s begin为低电平,即按下。
LED为“1”,即闪烁,LED24为“0”,在730.这时刻减数器从“30”开始减数,当倒数到29秒,即在1.60s这时刻hand[0]为高电平(hand[0]~hand[7]代表1~8号选手),1号选手抢答。
图可知抢答显示“1001111”即“1”,
同时停止减数显示“0010010”,“0001100”即“29”。
LED(LEDG[0])为“1”,即发光。
在1.93 shand[2]为“1”即3号选手抢答,但输出都没变化。
实现了优先抢答锁存功能。
2.35s~2.41s clear为“0”即按下,可见抢答显示“1111111”灭零状态,倒计显示“0000001”,“0000001”清零状态。
LED为“0,灭;LED24为“1”,发光;
综上可知,30秒内有人抢答其仿真图正确。
仿真图
(二)
30秒内无人抢答
数据分析:
由图可知,主持人按下begin按键后,倒计时开始减数。
30内秒无人抢答,减法器从“30”减到“00”,当到数码管显示“00”状态,,则LED24的值由“0”变为“1”
即发光,代表报警电路响应。
“00”之后,输入hand[0]变为“1”,但其输出没有变化。
可知,定时时间到达后选手抢答无效。
抢答显示状态还是为“灭零”状态。
综合以上两个仿真图可得,原理图正确,基本实现设计要
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 八位 数字 抢答
![提示](https://static.bdocx.com/images/bang_tan.gif)