题目要求:
(1)答题开始,由主持人按下“开始按键”后进入抢答环节;
(2)每人一个抢答按钮,有人抢答成功后,其他人再抢答无效;
(3)当某人抢答成功时,抢答器系统的led亮半秒,并在数码管上显示该组别序列号;
(4)每个人初始分数为0,抢答成功得到1分,并在数码管上显示3个人的得分;(每个人分配一个数码管用于显示分数,显示“0~9”)
(5)抢答成功后,10秒倒计时,并在数码管上显示。倒计时为0,开始下一轮抢答;
(6)当主持人按下“复位”按键和“开始”按键后,数码管清零,准备开始下一轮抢答。
我分了三个大模块,计分模块、按键消抖模块、动态扫描模块。计分模块包含了计分、10秒倒计时和0.5秒的led显示;按键扫描包含了三个抢答人和主持人的开始按键(复位按键不用消抖);动态扫描包含了十秒倒计时的显示,三人抢答的分数显示和当前抢答人的显示。
流程图如下:
文章来源:https://www.toymoban.com/news/detail-406064.html
顶层文件:文章来源地址https://www.toymoban.com/news/detail-406064.html
module TOP(
input clk,
input rstn,
input key1,
input key2,
input key3,
input star,
output [7:0] seg,
output [5:0] sel,
output led
);//完整代码加QQ群免费获取689408654
wire [3:0]score1,score2,score3; //甲乙丙得分
wire [3:0]count1,count2; //10秒计时
wire [3:0]people; //得分人
wire shape1,shape2,shape3; //消抖信号
wire star_shape;
reg star_s;
always@(posedge star_shape or negedge rstn)
begin
if(!rstn)
star_s<=0;
else
star_s<=!star_s;
end
jifen jifen (
.clk(clk),
.rstn(rstn),
.shape1(shape1),
.shape2(shape2),
.shape3(shape3),
.star_s(star_s),
.led(led),
.score1(score1),
.score2(score2),
.score3(score3),
.count1(count1),
.count2(count2),
.people(people)
);
shake1 people1 (
.clk(clk),
.rstn(rstn),
.key(key1),
.shape(shape1)
);
shake1 people2 (
.clk(clk),
.rstn(rstn),
.key(key2),
.shape(shape2)
);
shake1 people3 (
.clk(clk),
.rstn(rstn),
.key(key3),
.shape(shape3)
);
shake1 start (
.clk(clk),
.rstn(rstn),
.key(star),
.shape(star_shape)
);
digital digital (
.clk(clk),
.rstn(rstn),
.data1(score1),
.data2(score2),
.data3(score3),
.data4(count1),
.data5(count2),
.data6(people),
.seg(seg),
.sel(sel)
);
endmodule
到了这里,关于基于FPGA的三人抢答器(含程序)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!