Verilog HDL 简单六人抢答器代码?
1个回答
2013-06-07
展开全部
这样设计:
定义6个人分别为a,b,c,d,e,f (即:输入) 对应的6展灯分别为 a0,b0,c0,d0,e0,f0(即:输出)
抢答器复位信号rst(输入,每次抢答结束会复位抢答器进行下轮抢答)
逻辑时钟输入clk
然后开始写代码:
moudle(a,b,c,d,e,f,a0,b0,c0,d0,e0,f0);
input a,b,c,d,e,f,rst,clk;
output a0,b0,c0,d0,e0,f0;
reg lock; //设计的关键,只有第一个抢答的人有效
always(posedge clk or nengdge rst)
begin
if(~rst)
begin
a0 <= 1'b0;
b0 <= 1'b0;
c0 <= 1'b0;
d0 <= 1'b0;
e0 <= 1'b0;
f0 <= 1'b0;
lock <= 1'b0;
end
else if (~lock)
begin
if(a)
begin
a0 <= 1'b1;
lock <= 1'b1;
end
if(b)
begin
b0 <= 1'b1;
lock <= 1'b1;
end
if(c)
begin
c0 <= 1'b1;
lock <= 1'b1;
end
if(d)
begin
d0 <= 1'b1;
lock <= 1'b1;
end
if(e)
begin
e0 <= 1'b1;
lock <= 1'b1;
end
if(f)
begin
f0 <= 1'b1;
lock <= 1'b1;
end
end
end
endmoudle
定义6个人分别为a,b,c,d,e,f (即:输入) 对应的6展灯分别为 a0,b0,c0,d0,e0,f0(即:输出)
抢答器复位信号rst(输入,每次抢答结束会复位抢答器进行下轮抢答)
逻辑时钟输入clk
然后开始写代码:
moudle(a,b,c,d,e,f,a0,b0,c0,d0,e0,f0);
input a,b,c,d,e,f,rst,clk;
output a0,b0,c0,d0,e0,f0;
reg lock; //设计的关键,只有第一个抢答的人有效
always(posedge clk or nengdge rst)
begin
if(~rst)
begin
a0 <= 1'b0;
b0 <= 1'b0;
c0 <= 1'b0;
d0 <= 1'b0;
e0 <= 1'b0;
f0 <= 1'b0;
lock <= 1'b0;
end
else if (~lock)
begin
if(a)
begin
a0 <= 1'b1;
lock <= 1'b1;
end
if(b)
begin
b0 <= 1'b1;
lock <= 1'b1;
end
if(c)
begin
c0 <= 1'b1;
lock <= 1'b1;
end
if(d)
begin
d0 <= 1'b1;
lock <= 1'b1;
end
if(e)
begin
e0 <= 1'b1;
lock <= 1'b1;
end
if(f)
begin
f0 <= 1'b1;
lock <= 1'b1;
end
end
end
endmoudle
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询