设计一个抢答器,用verilog -HDL编程,用module模块!要求如下:你会么 ,高分悬赏!急急急!!!!!!!

设计参数: 五人参赛,每人一个按钮。
主持人一个按钮,按下开始,具有复位功能。
先抢中者对应的指示灯亮。
显示抢中者序号。
有人抢答时,蜂鸣2s。
设计要求:用拨码开关设定主持人及参赛者按钮。
用红色信号指示灯组L1-L5表示对应参赛者指示灯。
用点阵显示抢中者序号。

module lx0825(a,b,c,d,e,res,clk,clk1,q1,q2,q3,q4,q5,row,ra,Q1,beep);
input a,b,c,d,e;
input res,clk,clk1;
output[7:0]row,ra;
output[3:0]Q1;
output q1,q2,q3,q4,q5,beep;
reg q1,q2,q3,q4,q5,beep;
reg[7:0]row,ra;
reg[3:0]Q1;
reg[2:0]Y;
always @(res or q1 or q2 or q3 or q4 or q5)
begin
if(!res)
begin q1<=0;q2<=0;q3<=0;q4<=0;q5<=0;
end
else
begin
if(q1||q2||q3||q4||q5)
begin q1<=q1;q2<=q2;q3<=q3;q4<=q4;q5<=q5;
end
else
begin
if(a)
begin q1<=1;
end
else if(b)
begin q2<=1;
end
else if(c)
begin q3<=1;
end
else if(d)
begin q4<=1;
end
else if(e)
begin q5<=1;
end
end
end
end

always@( posedge clk)
begin
if(Q1<4'b1000)
Q1<=Q1+1;
else
Q1<=4'b0000;
if(q1)
begin
case(Q1)
0: begin row<=8'b01111111;ra<=8'b00011000;end
1: begin row<=8'b10111111;ra<=8'b00011000;end
2: begin row<=8'b11011111;ra<=8'b00011000;end
3: begin row<=8'b11101111;ra<=8'b00011000;end
4: begin row<=8'b11110111;ra<=8'b00011000;end
5: begin row<=8'b11111011;ra<=8'b00011000;end
6: begin row<=8'b11111101;ra<=8'b00011000;end
7: begin row<=8'b11111110;ra<=8'b00011000;end
endcase
end
else if(q2)
begin
case(Q1)
0: begin row<=8'b01111111;ra<=8'b11111111;end
1: begin row<=8'b10111111;ra<=8'b11111111;end
2: begin row<=8'b11011111;ra<=8'b00000011;end
3: begin row<=8'b11101111;ra<=8'b11111111;end
4: begin row<=8'b11110111;ra<=8'b11111111;end
5: begin row<=8'b11111011;ra<=8'b11000000;end
6: begin row<=8'b11111101;ra<=8'b11111111;end
7: begin row<=8'b11111110;ra<=8'b11111111;end
endcase
end
else if(q3)
begin
case(Q1)
0: begin row<=8'b01111111;ra<=8'b11111111;end
1: begin row<=8'b10111111;ra<=8'b11111111;end
2: begin row<=8'b11011111;ra<=8'b00000011;end
3: begin row<=8'b11101111;ra<=8'b11111111;end
4: begin row<=8'b11110111;ra<=8'b11111111;end
5: begin row<=8'b11111011;ra<=8'b00000011;end
6: begin row<=8'b11111101;ra<=8'b11111111;end
7: begin row<=8'b11111110;ra<=8'b11111111;end
endcase
end
else if(q4)
begin
case(Q1)
0: begin row<=8'b01111111;ra<=8'b11000011;end
1: begin row<=8'b10111111;ra<=8'b11000011;end
2: begin row<=8'b11011111;ra<=8'b11000011;end
3: begin row<=8'b11101111;ra<=8'b11111111;end
4: begin row<=8'b11110111;ra<=8'b11111111;end
5: begin row<=8'b11111011;ra<=8'b00000011;end
6: begin row<=8'b11111101;ra<=8'b00000011;end
7: begin row<=8'b11111110;ra<=8'b00000011;end
endcase
end
else if(q5)
begin
case(Q1)
0: begin row<=8'b01111111;ra<=8'b11111111;end
1: begin row<=8'b10111111;ra<=8'b11111111;end
2: begin row<=8'b11011111;ra<=8'b11000000;end
3: begin row<=8'b11101111;ra<=8'b11111111;end
4: begin row<=8'b11110111;ra<=8'b11111111;end
5: begin row<=8'b11111011;ra<=8'b00000011;end
6: begin row<=8'b11111101;ra<=8'b11111111;end
7: begin row<=8'b11111110;ra<=8'b11111111;end
endcase
end
else
begin
case(Q1)
0: begin row<=8'b01111111;ra<=8'b00000000;end
1: begin row<=8'b10111111;ra<=8'b00000000;end
2: begin row<=8'b11011111;ra<=8'b00000000;end
3: begin row<=8'b11101111;ra<=8'b00000000;end
4: begin row<=8'b11110111;ra<=8'b00000000;end
5: begin row<=8'b11111011;ra<=8'b00000000;end
6: begin row<=8'b11111101;ra<=8'b00000000;end
7: begin row<=8'b11111110;ra<=8'b00000000;end
endcase
end
end

always@(posedge clk1 )

begin
if(res&&(a||b||c||d||e))
begin
if(Y<2) beep='b1;
else beep='b0;
Y=Y+1;end
if(!(res&&(a||b||c||d||e)))beep='b0;
end

endmodule
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-08
估计得三个模块吧,抢答控制模块,分频模块、显示控制模块,程序不难就是费时~~~来自:求助得到的回答
第1个回答  2011-01-08
这~
我有年把没用verilog了,我这里没有现成的模板程序,现编的太耗时了、、、
相似回答
大家正在搜