FPGA在抢答器设计中的应用要点
抢答器在各类竞赛中的必备设备,有单路输入的,也有组输入方式,本设计以FPGA 为基础设计了有三组输入(每组三人),具有抢答计时控制,能够对各抢答小组成绩进行相应加减操作的通用型抢答器;现行的抢答器中主要有两种:小规模数字逻辑芯片译码器和触发器来做,另外一种用单片机来做;小规模数字逻辑电路比较复杂,用单片机来做随着抢答组数的增加有时候存在I/O 口不足的情况;本设计采用FPGA 来做增强了时序控制的灵活性,同时由于FPGA 的I/O 端口资源丰富,可以在本设计基础上稍加修改可以设计具有多组输入的抢答器。
功能描述
本文设计了一个通用型电子抢答器:三个参赛队,每个队有三个成员,各自可手动按按钮申请抢答权;回到正确加1 分,回答错误减1 分,违规抢答减1分,不抢答不加分不扣分;用4 位LED 的左边2 位显示抢答组号及抢答计时时间,右边2 位显示相应组的成绩。
抢答器具体功能如下:
1、可同时进行三组每个小组三人的抢答, 用9 个按钮Group1_1,Group1_2,Group1_3,Group2_1,Group2_2,Group2_3,Group3_1,Group3_2,Group3_3 表示;
2、设置一个抢答控制开关Start,该开关由主持人控制;只有当主持人按下开始键才能抢答;在按开始按钮前抢答属于违规;
3、抢答器具有定时抢答功能,且一次抢答的时间设定为30 秒。当主持人启动“开始”键后,用4 位LED 数码管左边两位显示30s 的倒计时;同时红色LED灯亮,表明可以抢答。
4、抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的组号,并在4 位LED 数码管的左边两位显示,同时用一个绿色LED 指示是否有选手抢答,如果是违规抢答还能用选手蜂鸣器报警提示。抢答实行优先锁存,优先抢答选手的相应组号和成绩一直保持到下一轮抢答开始。
5、参赛选手在设定的时间内进行抢答,抢答有效,数码管左边两位显示 ”FX”,如果抢答违规则显示 ”XF”(其中X 表示组号1~3),并保持到下一轮抢答。如果抢答延迟时间已到,无人抢答,本次抢答无效,系统回到主持人按开始前的等待状态,数码管上左边两位显示“FF”。
6、当抢答有效后,主持人可以根据抢答选手回答问题正确与否对选手相应组数的成绩进行加减分操作,抢答违规也能减分操作,用4 位LED 数码管右边两位显示相应组数的成绩。(注各组初始成绩为10 分)
设计架构
本文以FPGA 为基础设计的电子抢答器,根据设计功能要求,改设计主要包括抢答输入键盘,数码管显示,报警及FPGA 最小系统。抢答器结构简图如图1所示。
1、FPGA 最小系统电路:FPGA 正常工作时的基本电路,由时钟和复位电路组成。
2、键盘输入电路:用3×3 矩阵键盘组成3 个组共9 个人的抢答按钮。同时包括Start, Add, Sub 三个由主持人控制的单独按钮。
3、显示模块:用移位寄存器74HC164 驱动4 位共阴数码管显示;数码管要显示的数据通过74HC164 串行数据端口输入。
4、报警及相关信息显示:蜂鸣器电路和LED 灯显示相关状态信息指示电路。
各模块详细描述
1、FPGA 与各个模块的接口
本文以XC3S400 为基础设计的电子抢答器,抢答器实际上是一个人机接口的一个智能设备,该设计中用到的FPGA 外部I/O 口及其与外部各个模块连接的网络标识如图2 所示。
图2.FPGA 的IO 接口
2、按键模块
由于按键是机械的动作,按键存在电平抖动,为了消除按键抖动引起的干扰,需要等按键值达到稳定状态时才读取按键的值,也就是说要当按键按下一段时间后,才读取按键值;本设计中抢答开始键(Start)、抢答后各组成绩的加(Add)和减(Sub)按键是以单键的形式输入,按键延迟时间为20ms,对于抢答组的按键是用3×3 阵列键盘实现,row=3’b001 以周期为5.08ms 进行循环左移扫描,扫描完三行的周期为15.24ms,这个就是说只有当两个按键之间的时间间隔在15.24ms 之内时才有可能存在一个按钮在比另一个按钮先按,而响应后者;实际操作中,两人按键之间的间隔大于这个时间间隔,因此,不会出现错误响应。同时每个按键后的延迟等待125.76ms 后此按键值才有效;经过实际测试,键盘具有消抖功能,能够正确检测按键值。按键电路图如图3 所示。
图3.按键电路
图注: Group1_1,Group1_2,Group1_3 分别表示第一参赛小组的三个成员的按钮, 依次类推Group2_1,Group2_2,Group2_3 和 Group1_1,Group1_2,Group1_3 分别代表第二和第三参赛小组的三个成员;Start、Add、Sub 分别代表抢答开始按键、对小组成绩的加操作和减操作按钮!
3、显示模块
显示模块由4 位的LED 数码管显示
- 有限状态机的嵌入式Linux按键驱动设计 (11-07)
- 状态机在单片机程序设计中的应用(05-01)
- 基于有限状态机的嵌入式系统模型校验技术(10-14)
- 基于VxWorks的飞机自动化配电的软件设计研究(04-12)
- 基于状态机的LCD多级菜单设计(01-23)
- 有限状态机的VHDL优化设计(06-06)