抢答器设计Verilog代码VIVADO仿真

名称:抢答器设计Verilog代码VIVADO仿真(文末获取)

软件:VIVADO

语言:Verilog

代码功能:

抢答器    

设计要求:三人参賽每人一个按钮,主持人一个按钮,按下就开始;

每人一个发光二极管,抢中者灯亮;有人抢答时,显示器显示其序号两秒;

答题时限为10秒钟,从有人抢答开始,用数码管倒计时间,10、9、8..1、0;倒计时到0的时候,然后显示四个0两秒。

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

整体仿真图

分频模块仿真

控制模块仿真

输出抢答者序号及LED显示模块

显示模块

部分代码展示:

`timescale 1ns / 1ps
//显示模块
module display_num(
input clk,//时钟
input [3:0] time_down,//倒计时
input [2:0] current_state,//当前状态
input [3:0] ins_number,//抢答指示1~3
output reg [3:0] bit_select,//数码管位选,低电平亮
output reg [7:0] lednum_select//数码管段选,低电平亮
);
wire [3:0] time_down_ten;
wire [3:0] time_down_one;
assign time_down_ten=time_down/10;//倒计时十位
assign time_down_one=time_down%10;//倒计时个位 
reg[1:0]counter='d0;
always@(posedge clk)
begin
    counter<=counter+2'd1;//计数
end
reg [3:0] display_data=4'd0;
always@(*)
begin
显示抢答者号2秒
if(current_state==3'd3 && time_down>8)begin//倒计时状态(S3)且还没倒计时到8
display_data<=ins_number;//抢答指示1~3
bit_select<=4'b0111;//数码管位选,第一个数码管显示
end
else if(current_state==3'd4)begin显示4个0,2秒
display_data<=4'd0;//抢答指示1~3
bit_select<=4'b0000;//数码管位选,4个1数码管显示
end
else if(current_state==3'd5)begin//结束,不显示
display_data<=4'd0;//抢答指示1~3
bit_select<=4'b1111;//数码管位选,4个1数码管都不显示
end
else if(current_state==3'd3)//倒计时状态
case(counter)//
2'd0:begin display_data<=4'd0;bit_select<=4'b1111;end//不显示
2'd1:begin display_data<=4'd0;bit_select<=4'b1111;end//不显示    
2'd2:begin display_data<=time_down_ten;bit_select<=4'b1101;end//倒计时十位

源代码

 扫描文章末尾的公众号二维码

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值