“FPGA原理图设计的数字竞赛抢答器优化”
数字式竞赛抢答器(基于FPGA的原理图设计)
一. 设计思路
二. 实现过程
1. 第一信号鉴别锁存模块 + 犯规电路
(1) 使用器件
74175,带公共时钟和复位四D触发器
(2) 原理
a. 比赛开始前,主持人复位按钮RET=0,四个D触发器复位,此时输出Q[1]–Q[4]为0,QN[1]–QN[4]为1,QN[1]–QN[4]经过与门后输出D为1,时钟CLK所经过的与门(AND2)打开。
犯规电路中RET经过非门和抢答信号相与,输出控制相应组别的犯规指示灯及报警。当RET=0时,若有选手抢答(假若为1号选手),A1=0,A1N=1,与门输出结果QX[1]=1。
b. 比赛开始时,主持人复位按钮RET=1,四个D触发器正常工作。若此时有选手抢答(假设是1号选手),A1=0(抢答按钮按下为0),经过非门后D触发器的输入端1D=1,根据D触发器的特性可知,输出1Q=1、1QN=0,与门(AND4)的输出D=0,此时CLK所经过的与门(AND2)关闭,输出为0,所以D触发器的时钟一直为0,直到下次复位(RET=0)时恢复。由于74175中的D触发器为上升沿触发,所以当时钟为低电平时,D触发器不工作,保持上次的输出,直到下一个上升沿到来。如此便可实现对一次抢答过程中的第一信号进行鉴别和锁存。
(3) 模块化
输入:
A1–A4分配四个按键开关(按下为0,不按为1)
RET分配一个拨码开关
CLKH为50MHz时钟源
输出:
Q[1]–Q[4]分配四个LED,显示抢答结果
QX[1]–QX[4]分配四个LED,显示提前抢答导致犯规的组别
2. 答题计时电路
(1) 使用器件
74192,可预置的十进制同步加 / 减计数器
(2) 原理
第一片作为低位,第二片作为高位。先给预置数60,即第一片的A、B、C、D接地;第二片的A、D接地,B、C接高电平。将第一片的借位输出BON作为第二片的减计数脉冲DN,同时将分频后得到的1Hz时钟CLK作为第一片的减计数脉冲DN。如此一来,每当第一片减到0时,第二片减1,这样就实现了60秒倒计时的功能。
主持人复位信号与两片的置数端LDN相连,每当复位时(RET=0),计数器恢复初始值60。
将第二片的借位输出作为报警信号,当计数器值为00时,产生报警。
为了使计数器值为00时停止,将第二片的借位输出反向后与两片的异步复位端相连。
(3) 模块化
输入:
输出:
3. 计分电路
(1) 使用器件
74192,可预置的十进制同步加 / 减计数器
(2) 原理
第一片74192作为低位,第二片作为高位。预置数10,即第一片A、B、C、D接地,第二片B、C、D接地,A接高电平。将加减分信号分别作为第一片的加减计数脉冲。同时第一片的进位输出作为第二片的加计数脉冲,第一片的借位输出作为第二片的减计数脉冲。如此一来,加减分信号控制第一片74192加计数或者减计数,当第一片产生进位或借位时,控制第二片加减,这样就实现了由加减分信号控制的十进制可逆计数器。
两片74192的置数端同时与RETscore相连,当RETscore=0时,计分电路恢复初始值10。
KeyPress为按键消抖模块,由按键产生的含抖动的加减分信号经过该模块输出一个稳定的状态信号。
(3) 模块化
图中加减分信号与Q相与,输出分别接各自的计分电路,目的是实现对各自分数的单独控制,即加减分信号只对抢答者的计分电路生效
输入:
R为计分电路的复位信号,R=0时,每个人的分数重置,恢复到初始值10
up为加分信号,接按键
down为减分信号,接按键
CLKH为50MHz时钟源
输出:
H1、H2、H3、H4分别为四人得分的高四位输出(BCD码)
L1、L2、L3、L4分别为四人得分的低四位输出(BCD码)
4. 数码管扫描显示模块
(1) 使用器件
74161,可预置四位二进制异步清除计数器
mux8,四位八选一数据选择器
7448,BCD—7段显示译码器
(2) 原理
计数器74161在扫描时钟CLKL作用下循环输出000–111(SEL[2]、SEL[1]、SEL[0]),将其作为3-8译码器的输入,译码器输出位控信号MS1–MS8,控制八位数码管开关。
四位八选一数据选择器根据数据选择信号SEL[2]、SEL[1]、SEL[0]的数值从八路输入数据中选择一路数据(一位BCD 码)送给BCD-七段显示译码器,通过BCD-七段显示译码器译成七段显示码,驱动七段数码管显示具体内容。在连续8 个时钟周期内,八个显示器轮流点亮一个时钟周期。只要输入连续时钟CLK,就能实现八个数码管扫描显示。利用人眼的视觉惯性,扫描频率应大于50HZ,根据计数器的分频关系,实际扫描频率CLK 应大于200HZ。