用Verilog HDL编写的四路抢答器演示幻灯片
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5
always@(*)//4位位选译码 case(wei) 3:begin A_TO_D=4'b1110; duan=qian; end 2:begin A_TO_D=4'b1101;
6
module cp_1s(clk,a); //提供1秒脉 冲
input wire clk; output reg a; reg [25:0]q; always@(posedge clk)
output reg zong_kong;
always@(posedge fu_wei)
begin
zong_kong<=~zong_kong;
11
module jishu_kongzhi(q1,q2,clk,suo,clr,fa nkui);//计数电路及其控制模块
output wire [3:0]q1;
四路抢答器设计
——Verilog HDL语言
1
抢答器为四路,20秒倒计时,抢 到后显示锁定,计时停止,若 提前抢答会在另外数码管显示 抢答号码。
在BASYS 2 开发板上可以实现
2
module qiang_da_qi(a_to_g,A_TO_D,clk,q iang_da,button,xuan
14
qing_ling;
8
assign suo=(~bian_ma_cun[0])&(~bian_ ma_cun[1])&(~bian_ma_cun[2]);
assign suo_1=suo&fankui;
always@(*) begin if(qing_ling==1)
9
module wei_xuan(bian_ma_cun,xuan,bai, ge);//控制选手是否提前抢答模 块
output wire [3:0]q2;
input wire clk;
input wire suo;
input wire clr;
12
module count20(a,clr,q1,q2); // 计数器,从20计到0
input wire a; input wire clr; output reg [3:0]q1; output reg [3:0]q2; always@(posedge a or negedge clr) begin
begin if(q==24999999)
7
module
xuan_shou(qiang_da,qing_ling,su o_1,bian_ma_cun,fankui);//选手 抢答模块,某选手抢答后结果 锁存
input wire [3:0]qiang_da;
reg [2:0]bian_ma;
wire suo;
input wire [2:0]bian_ma_cun;
input wire xuan;
output reg [2:0]bai;
output reg [2:0]ge;
10
module fuwei_kongzhi(fu_wei,zong_kong) ;//复位与开始抢答的状态转换
input wire fu_wei;
);
output wire [6:0]a_to_g;
output wire [3:0]A_TO_D; input wire clk;//50MHz时钟 wire [3:0]qian;
3
module shumaguan(a_to_g,A_TO_D,clk,qi an,bai,shi,ge);//数码管驱动
13
在BASYS 2 开发板的管脚配置: NET "A_TO_D[3]" LOC = F12; NET "A_TO_D[2]" LOC = J12; NET "A_TO_D[1]" LOC = M13; NET "A_TO_D[0]" LOC = K14; NET "a_to_g[6]" LOC = L14; NET "a_to_g[5]" LOC = H12; NET "a_to_g[4]" LOC = N14;
output reg [6:0]a_to_g;
output reg [3:0]A_TO_D;
input wire clk;
input wire [3:0]qian;
input wire [3:0]bai;
4
always@(*)//7位段译码 case(duan) 0:a_to_g=7'b0000001; 1:a_to_g=7'b1001111; 2:a_to_g=7'b0010010; 3:a_to_g=7'b0000110; 4:a_to_g=7'b1001100; 5:a_to_g=7'b0100100;
always@(*)//4位位选译码 case(wei) 3:begin A_TO_D=4'b1110; duan=qian; end 2:begin A_TO_D=4'b1101;
6
module cp_1s(clk,a); //提供1秒脉 冲
input wire clk; output reg a; reg [25:0]q; always@(posedge clk)
output reg zong_kong;
always@(posedge fu_wei)
begin
zong_kong<=~zong_kong;
11
module jishu_kongzhi(q1,q2,clk,suo,clr,fa nkui);//计数电路及其控制模块
output wire [3:0]q1;
四路抢答器设计
——Verilog HDL语言
1
抢答器为四路,20秒倒计时,抢 到后显示锁定,计时停止,若 提前抢答会在另外数码管显示 抢答号码。
在BASYS 2 开发板上可以实现
2
module qiang_da_qi(a_to_g,A_TO_D,clk,q iang_da,button,xuan
14
qing_ling;
8
assign suo=(~bian_ma_cun[0])&(~bian_ ma_cun[1])&(~bian_ma_cun[2]);
assign suo_1=suo&fankui;
always@(*) begin if(qing_ling==1)
9
module wei_xuan(bian_ma_cun,xuan,bai, ge);//控制选手是否提前抢答模 块
output wire [3:0]q2;
input wire clk;
input wire suo;
input wire clr;
12
module count20(a,clr,q1,q2); // 计数器,从20计到0
input wire a; input wire clr; output reg [3:0]q1; output reg [3:0]q2; always@(posedge a or negedge clr) begin
begin if(q==24999999)
7
module
xuan_shou(qiang_da,qing_ling,su o_1,bian_ma_cun,fankui);//选手 抢答模块,某选手抢答后结果 锁存
input wire [3:0]qiang_da;
reg [2:0]bian_ma;
wire suo;
input wire [2:0]bian_ma_cun;
input wire xuan;
output reg [2:0]bai;
output reg [2:0]ge;
10
module fuwei_kongzhi(fu_wei,zong_kong) ;//复位与开始抢答的状态转换
input wire fu_wei;
);
output wire [6:0]a_to_g;
output wire [3:0]A_TO_D; input wire clk;//50MHz时钟 wire [3:0]qian;
3
module shumaguan(a_to_g,A_TO_D,clk,qi an,bai,shi,ge);//数码管驱动
13
在BASYS 2 开发板的管脚配置: NET "A_TO_D[3]" LOC = F12; NET "A_TO_D[2]" LOC = J12; NET "A_TO_D[1]" LOC = M13; NET "A_TO_D[0]" LOC = K14; NET "a_to_g[6]" LOC = L14; NET "a_to_g[5]" LOC = H12; NET "a_to_g[4]" LOC = N14;
output reg [6:0]a_to_g;
output reg [3:0]A_TO_D;
input wire clk;
input wire [3:0]qian;
input wire [3:0]bai;
4
always@(*)//7位段译码 case(duan) 0:a_to_g=7'b0000001; 1:a_to_g=7'b1001111; 2:a_to_g=7'b0010010; 3:a_to_g=7'b0000110; 4:a_to_g=7'b1001100; 5:a_to_g=7'b0100100;