FPGA实现八位数字抢答器设计

这篇具有很好参考价值的文章主要介绍了FPGA实现八位数字抢答器设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 设计要求

八位数字抢答器设计要求:

  1. 抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0 ~ S7表示。

  2. 设置一个系统清除和抢答控制开关S,该开关由主持人控制。

  3. 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。

  4. 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如,30秒)。当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。

  5. 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

  6. 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00

二. 程序分析

程序使用到的硬件有: 按键,数码管,蜂鸣器,三个硬件的驱动模块可以提前写好(gzh中都已给出相应的教程),编写完成后,就是按照要求编写逻辑代码,最简单的方法是使用状态机进行控制。

按键一共需要使用到10个 :8个用于抢答,2个用于控制

数码管一共需要使用到3个: 2个用于显示倒计时,1个用于显示选手编号

三. 数码管驱动程序修改

之前编写的驱动程序是四个数码管显示,需要将其修改为三个数码管显示,修改如下,将sel位宽修改为3,并将数码管4上显示的数据删除,

FPGA实现八位数字抢答器设计

然后将动态扫描代码修改为如下

FPGA实现八位数字抢答器设计

就将数码管驱动需要修改的部分修改完成啦

其他模块均不需要修改。

四. 代码编写

首先,需要确定各个状态是怎么样的,每个状态之间是如何跳转的。本次设计的状态如下

  1. 空闲态 : 此时抢答器处于空闲的状态,当主持人按下开始按键后,进入到激活态
  2. 激活态: 此时选手可以进行抢答,抢答成功后,进入有效态,否则倒计时为0时,进入到无效态
  3. 有效态: 倒计时停止,数码管上显示抢答选手的编号。主持人按下清除按键进入到空闲态
  4. 无效态: 倒计时保持为0,主持人按下清除按键进入到空闲态

对应代码如下

always@(*)
begin
	case(state)
	S_IDLE:
		if( begin_key == 1'b1)				//开始抢答
			next_state <= S_ACTIVE;
		else
			next_state <= S_IDLE;
	S_ACTIVE:
		if( sec_ack == 1'b1 )				//时间结束无效抢答
			next_state <= S_UnValue;
		else if( player_keys != 8'hff)   //有效抢答
			next_state <= S_Value;
		else
			next_state <= S_ACTIVE;
	S_UnValue:
		if( clear_key == 1'b1 )				//抢答结束清除
			next_state <= S_IDLE;
		else
			next_state <= S_UnValue;
	S_Value:
		if( clear_key == 1'b1 )			//抢答结束清除
			next_state <= S_IDLE;
		else
			next_state <= S_Value;
	default: next_state  <= S_IDLE;
	endcase
end

选手编号统计,当按键按下的时候,寄存当前选手的编号,并且状态转移,再次按下时,无效

always@(posedge sys_clk)
begin
	if( player_keys == 8'b1111_1110 && state == S_ACTIVE)
		player_numb <= 'd1;
	else if(player_keys == 8'b1111_1101 && state == S_ACTIVE )
		player_numb <= 'd2;
	else if(player_keys == 8'b1111_1011 && state == S_ACTIVE )
		player_numb <= 'd3;
	else if(player_keys == 8'b1111_0111 && state == S_ACTIVE )
		player_numb <= 'd4;
	else if(player_keys == 8'b1110_111 && state == S_ACTIVE )
		player_numb <= 'd5;
	else if(player_keys == 8'b1101_111 && state == S_ACTIVE )
		player_numb <= 'd6;
	else if(player_keys == 8'b1011_111 && state == S_ACTIVE )
		player_numb <= 'd7;
	else if(player_keys == 8'b0111_111 && state == S_ACTIVE )
		player_numb <= 'd8;
	else if( clear_key == 1'b1 )
		player_numb <= 'd0;
	else
		player_numb <= player_numb;
end

这样核心代码就编写完成了。

需要完整代码的可以关注微信公众号 FPGA之旅 回复 八位数字抢答器 获取完整代码文章来源地址https://www.toymoban.com/news/detail-413682.html

到了这里,关于FPGA实现八位数字抢答器设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • proteus 仿真 at89c51 单片机八位抢答器,文末附源文件

    在网上没能容易地直接找到仿真文件,所以我把这个上传,希望对各位有所帮助。 倒是有不少好心人给出了图文教学和源代码,对他们表示感谢。我也是用这位老哥的代码和电路稍作了修改,感谢分享。 起初 led 数码管是熄灭的,按下 P2.1 的按钮 会将它们点亮,开始抢答。

    2024年02月09日
    浏览(32)
  • 八路电子抢答器的设计与实现

    随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也就显而易见。本课程设计出以STC89C52RC单片机为核心,以八路抢答为基本理念,利用普中集成开发板设计八路抢答器。考虑到依需设定倒计时抢答的功能,利用51单片机及外围接口实现的抢答系统,利

    2024年02月11日
    浏览(26)
  • 基于FPGA的三人抢答器(含程序)

    题目要求: (1)答题开始,由主持人按下“开始按键”后进入抢答环节; (2)每人一个抢答按钮,有人抢答成功后,其他人再抢答无效; (3)当某人抢答成功时,抢答器系统的led亮半秒,并在数码管上显示该组别序列号; (4)每个人初始分数为0,抢答成功得到1分,并在

    2023年04月09日
    浏览(76)
  • 数字电路实验四:智力抢答器预实验报告

      预习要求: 预习要点: 1、复习D触发器有关知识,写出其状态方程。双D触发器74LS74各引脚排列及引脚功能,使能端如何处理?如何测试触发器74LS74逻辑功能好坏?(结合D触发器一节和抢答器一节预习),画出74LS175逻辑符号和管脚功能。 2、参考图3.6.1 ,画出设计原理图(实

    2024年02月05日
    浏览(36)
  • fpga开发基于verilog HDL的四人抢答器

    鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 智能电子抢答器可容纳4组参赛者抢答,每组设一个抢答钮。 ③ 电路具有第一抢答信号的鉴别和锁存功能。

    2024年02月04日
    浏览(38)
  • 八路抢答器设计

    一、硬件设计 单片机作为计算机的一个重要分支,其应用范围很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。抢答器由计数器、寄存器、集成定时器

    2024年02月06日
    浏览(72)
  • 带有显示的8路抢答器课程设计

    一: 课程设计目的    抢答器是竞赛问答中一种常用的必备装置智力竞赛时一般分为若干组各组对主持人提出的问题进行抢答。抢答时要判定哪组优先并予以指示和鸣叫。其设计包含了组合逻辑电路和时序逻辑电路的部分原理。。       课程需求 完成电路的初步设计对电

    2023年04月08日
    浏览(28)
  • 数电实训-八路电子抢答器的设计

    设计并制作一个带有数码显示功能的八路电子抢答器。 8名选手编号依次为1-8,各有一个抢答按钮,按钮的编号与选手的编号对应。 给主持人设置一个控制按钮,用来控制系统清零和抢答的开始。 抢答器具有数据锁存和显示的功能。抢答开始后,若有选手按动抢答按钮,该选

    2024年02月04日
    浏览(34)
  • 基于51单片机的抢答器设计

    一、 设计任务 基于单片机的抢答器的设计,实现抢答器的基本功能。 二、 性能指标要求 1. 需要自己设计电路并焊接电路板。 2. 有一个主持人控制开关和6路抢答按扭,当主持人允许抢答时才能进行抢答操作,并用一个数码管显示抢答选手的号码,同时其他选手不能再抢答。

    2024年02月10日
    浏览(26)
  • 4人竞赛数字抢答器vivado软件verilog代码ego1开发板

    名称:4人竞赛数字抢答器vivado软件verilog代码ego1开发板 软件:VIVADO 语言:Verilog 代码功能: 数字抢答器的设计任务说明: 设计一个可供4人竞赛的数字抢答器。 (1)具有定时抢答功能,且一次抢答的时间由主持人设定,本抢答器的时间 设定为60秒以内,当主持人启动“开始”开关后

    2024年02月05日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包