Verilog实现八人抢答器

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

一设计需求

抢答器由FPGA中verilog语言编写,一共有六个模块,分别为:daojishi,divscandisplay,fmq2,shuju,qqddqq组成,可实现八人抢答功能,并实现30s倒计时,当倒计时时间为0时无人抢答会使蜂鸣器报警,当有人成功抢答时会显示抢答选手序号并产生报警。qqddqq为顶层文件,级联各个模块

二模块划分和代码

1、抢答模块

为实现八人抢答功能模块,选手成功抢答会显示序号并产生报警

module shuju(clk,start,xuan,answer,EnFlat);
input start,clk;
input[7:0] xuan;
output reg EnFlat;
output reg [3:0] answer;

always@(posedge clk)
begin
	if(start==1'b0)
	begin
	EnFlat=1'b1;//锁存置高
	end
	else if(EnFlat)
	begin
		case(xuan)//选手抢答,选手按下时输出自己序号,并使锁存置0达到锁存效果
		8'b00000001:
			begin
				EnFlat<=1'b0;
				answer<=8'b00000001;
			end
		8'b00000010:
			begin
				EnFlat<=1'b0;
				answer<=8'b00000010;
			end
		8'b00000100:
			begin
				EnFlat<=1'b0;
				answer<=8'b00000011;
			end
		8'b00001000:
			begin
				EnFlat<=1'b0;
				answer<=8'b00000100;
			end
		8'b00010000:
			begin
				EnFlat<=1'b0;
				answer<=8'b00000101;
			end
		8'b00100000:
			begin
				EnFlat<=1'b0;
				answer<=8'b00000110;
			end
		8'b01000000:
			begin
				EnFlat<=1'b0;
				answer<=8'b00000111;
			end
		8'b10000000:
			begin
				EnFlat<=1'b0;
				answer<=8'b00001000;
			end
				default:answer<=0;
		  endcase
	end
end
endmodule

2、倒计时模块

实现30s倒计时模块

module daojishi (q,qout,reset,cout,clk);
output reg [7:0] qout;
output cout;
reg cout;
input reset,clk,q;
always@(posedge clk or negedge reset )

begin
	if(!reset) begin
	qout <= 8'h30;
	cout <=0;
	end
	else if(q)
	begin
		if(qout[3:0]==0) //判断十位是否为0
		begin
			if(qout[7:4]==0)	//判断个位是否为0
			begin
				cout <=1;//全为0时给一个cout信号给蜂鸣器
				qout <=0;//使倒计时一直为0
			end
			else
			begin
			qout[3:0]<=9;//个位为0,十位不为0,让个位为9
			qout[7:4]<=qout[7:4]-1;//让十位减一
			end
		end
		else 
		begin
			qout[3:0]<= qout[3:0]-1;//若都不为0,让个位减1
		end
	end
end
endmodule
		

3、分频模块

module div(rst_n,clk_in,clk_out);
    parameter period=5,duty=2;
	 input rst_n,clk_in;
	 output reg clk_out;
	 
reg [25:0] counter;

always@(posedge clk_in or negedge rst_n)
 begin
  if(!rst_n)
  begin
    counter<=0;
	 clk_out<=0;
  end
  else  
  begin
    if(counter>=period)
	    counter<=0;
	 else
	    counter<=counter+1;
		
	 if(counter>duty)
	    clk_out<=1;
	 else
	    clk_out<=0;
	 end

  end
endmodule

4、扫描显示模块

为扫描显示模块,一个用了四个数码管显示,一个显示选手抢答序号,两个分别显示倒计时十位和个位,一个显示横杠分开选手序号和倒计时

module scandisplay(clk,mdata0,ddata0,ddata1,seg_sel,seg7);
   input clk;
	input[3:0]mdata0,ddata1,ddata0;
	output reg[2:0] seg_sel;
	output reg[7:0] seg7;
	reg[3:0] data;
	reg cnt;
	always@(posedge clk)
	begin
	    if(seg_sel<3)
         seg_sel<=seg_sel+1;
		else
		    seg_sel<=0;
			 end
			 always@(seg_sel)
			 begin
		case(seg_sel)
		0:  data<=ddata0;//显示倒计时的个位
		1:  data<=ddata1;//显示倒计时的十位
		2:  data<=11;//一个横杆
		3:  data<=mdata0;//选手号码
		default:data<=0;
		endcase
   end
	always@(data)
	begin
	  case(data)
	  0:seg7<=8'b00111111;
	  1:seg7<=8'b00000110;	  
	  2:seg7<=8'b01011011;
	  3:seg7<=8'b01001111;
	  4:seg7<=8'b01100110;
	  5:seg7<=8'b01101101;
	  6:seg7<=8'b01111101;
	  7:seg7<=8'b00000111;
	  8:seg7<=8'b01111111;
	  9:seg7<=8'b01101111;
	  default:seg7<=8'b01000000;
	endcase
	end
	endmodule

5、蜂鸣器

module fmq2(q,clk,cout,beep);
input clk,q;	
input cout;
output reg beep;

always @ (posedge clk)
	begin
		if(cout==1||q==1) beep=0;//蜂鸣器为低时响

		else beep=1;
	end
endmodule

三、顶层

Verilog实现八人抢答器

四、一些问题及总结

1、第一次完成fpga编写,完成八人抢答器,其中一些变量命名中英文混合,可能看的有点恶心。
2、写代码时一些逻辑问题经过多次改进才最终实现目标。文章来源地址https://www.toymoban.com/news/detail-505616.html

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

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

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

相关文章

  • 智能抢答器Verilog代码Quartus远程云端平台

    名称:Quartus智能抢答器Verilog代码远程云端平台 软件:Quartus 语言:Verilog 代码功能: 设计要求    (1)设计语言为Veri1og,硬件开发平台为 Spartan-3E开发板。数码管显示倒计时5秒;每名选手抢到后由数码管显示其得分增加1,一共进行    (2)设计基于FPGA的智能抢答器的设计,要求有四

    2024年01月21日
    浏览(37)
  • fpga开发基于verilog HDL的四人抢答器

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

    2024年02月04日
    浏览(48)
  • 4人抢答器可加减分数Verilog代码Quartus 实验箱

    名称:4人抢答器可加减分数Verilog代码Quartus   实验箱(文末获取) 软件:Quartus 语言:Verilog 代码功能: 4人抢答器可加减分数 1、设计4人抢答器,通过4个按键抢答 2、具有重置按键,重置后重新开始抢答 3、抢答后蜂鸣器提示3秒,对应抢答指示灯亮 4、数码管显示抢答者序

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

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

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

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

    2024年02月06日
    浏览(84)
  • 数电实训-八路电子抢答器的设计

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

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

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

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

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

    2023年04月08日
    浏览(38)
  • STM32单片机的抢答器设计

    一.硬件方案          以STM32单片机为核心的八路抢答器采用了数字显示器LCD1602,自动锁存显示结果设计思想,它能根据不同的抢答输入信号,经过单片机的控制处理并产生不同的与输入信号相对应的输出信号,最后通过LCD1602显示,即使两组的抢答时间相差几微秒,也可分

    2024年02月11日
    浏览(40)
  • 【工控老马】PLC六路抢答器系统设计详解

    随着我国经济和文化实业的发展,在很多公开竞争场合要求有公正的竞争裁决,诸如证券、股票交易及各种智力竞赛等,因此出现了抢答器。最初的抢答器是由优先权编码器构成的逻辑电路,其运算速度慢,线路复杂,可靠性不高,功能也比较简单,特别是当抢答路数很多时

    2024年02月06日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包