Verilog编写四人抢答器

核心提示module dj(a,b,c,d,clk,res,led1,led2,led3,led4);input a,b,c,d;input clk,res;output led1,led2,led3,led4;reg led1,led2,led3

module dj(a,b,c,d,clk,res,led1,led2,led3,led4);

input a,b,c,d;

input clk,res;

output led1,led2,led3,led4;

reg led1,led2,led3,led4;

reg k;

always @(clk)

begin

if(res==0)

begin

led1<=0;

led2<=0;

led3<=0;

led4<=0;

k<=0;

end

else

begin

if(k==0)

begin

if(a)

begin

led1<=1;

k<=1;

end

else

if(b)

begin

led2<=1;

k<=1;

end

else

if(c)

begin

led3<=1;

k<=1;

end

if(d)

begin

led4<=1;

k<=1;

end

end

end

end

endmodule

求各位大神帮我看看啊!我这是四人抢答器电路,连完之后按下开关74ls175无反应,不知是何原因,求帮助啊

/

(1)实现一四人抢答器,有人抢答成功后,其他人再抢答无效;

(2)通过蜂鸣器响1秒来提示抢答成功,并在数码管上显示抢答者的序号;

(3)主持人通过按键清除抢答信息,并开始 30 秒的答题倒计时,当倒计时

结束时,通过蜂鸣器响 1 秒来提示回答问题时间到,此时可以开始新一轮的抢答

/

module qiangda(rst,clk,ina,inb,inc,ind,judge,clk_1hz,wei,duan,beep,wei1,duan1,clk_1khz);

input clk,clk_1hz;

input ina,inb,inc,ind,judge;

output[3:0] wei;

output[7:0] duan;

input rst,clk_1khz;

output [3:0] wei1;

output [7:0] duan1;

output beep;

reg[3:0] wei;

reg[7:0] duan;

reg flag;

reg [5:0] shi,ge,data;

reg [4:0] count;

reg [3:0] wei1;

reg [7:0] duan1;

reg beep;

reg yu;

reg [1:0] count3;

always @(posedge clk)

begin

if(!rst)    //系统复位,个人认为复位不够完整

begin

yu = 0;

end

if(!judge) //主持人控制按键

begin

flag=0; //允许抢答

wei=4'b1111; //数码管全不亮

                      //个人认为分成duan1和duan,wei1和wei的数码管数据总线不经济

duan=8'hff;

yu=1; //重新开始倒计时

end

else

begin

if(ge==6'b000000&&shi==6'b000000) //处于等待状态,实际上是等主持人按键(!judge),

;

else

begin

if(!ina) //若a抢答

begin

if(!flag) //若无人抢答成功

begin

wei=4'b1101;

duan=8'hf9; //数码管显示1,代表a抢答成功

flag=1; //抢答标志位有效

end

end

else if(!inb) //b抢答处理电路

begin

if(!flag)

begin

wei=4'b1101;

duan=8'ha4; //数码管显示2,代表b抢答成功

flag=1;

end

end

else if(!inc)

begin

if(!flag)

begin

wei=4'b1101;

duan=8'hb0; //数码管显示3

flag=1;

end

end

else if(!ind)

begin

if(!flag)

begin

wei=4'b1101;

duan=8'h99; //数码管显示4

flag=1;

end

end

end

end

end

always@(posedge clk_1hz or negedge rst)

begin

if(!rst)

begin

count = 0;

end

else if(count >= 5'd30) //计时达到30秒,停止计时

count = count;

else if(yu==1) //触发条件yu=1时,重新开始计数那不是变成从30开始数?感觉该段有些问题

count = count+5'b1;

end

//以下always过程块为shi和ge的译码电路,完成倒计时功能

always @(count)

begin

if(count>=5'b10101) //count>20时

begin

shi = 5'b00000; //shi=0

ge = 5'b11110-count; //ge = 30-count

end

else if(count>=5'b01011) //10<count<=20时

begin

shi=5'b00001; //shi=1

ge=5'b10100-count; //ge = 20-count

end

else if(count>=5'b00001) //0<count<=10时

begin

shi=5'b00010; //shi=2

ge=5'b01010-count; //ge = 10-count

end

else //其它情况,ie count = 0

begin

shi=5'b00011; //shi=3

ge=5'b0; //ge = 0

end

end

//以下always过程块为蜂鸣器发声驱动电路

always@(posedge clk_1hz)

if(flag|(shi==0&&ge==0)) //flag==1,有人抢答成功

//shi==0&&ge==0,倒计时结束

begin //上述两种情况下蜂鸣器响一秒

if(count3==2'b1)

begin

beep<=0;

count3<=count3;

end

else

begin

beep<=1;

count3<=count3+2'b1;

end

end

else

begin

beep<=0;

count3<=0;

end

//以下always过程块是数码管动态刷新电路,动态显示倒计时信息(shi和ge)

always @(clk_1khz)

begin

if(!rst)

wei1 = 4'b0000;

else if(clk_1khz)

begin

wei1=4'b0111;

data=ge;

end

else

begin

wei1=4'b1011;

data=shi;

end

end

always @(data) //数字显示译码,共阳极数码管(duan1)

begin

case(data)

6'b000000: duan1=8'b1100_0000;

6'b000001: duan1=8'b1111_1001;

6'b000010: duan1=8'b1010_0100;

6'b000011: duan1=8'b1011_0000;

6'b000100: duan1=8'b1001_1001;

6'b000101: duan1=8'b1001_0010;

6'b000110: duan1=8'b1000_0010;

6'b000111: duan1=8'b1111_1000;

6'b001000: duan1=8'b1000_0000;

6'b001001: duan1=8'b1001_0000;

default:duan1=8'b1111_1111;

endcase

end

endmodule

四路抢答器电路图

NE555组成的无稳态振汤器(R1=15k , R2=15k , C1=02uF )输出方波频率大约15kHz,这个方波频率经U4B一路在改变74ls175 的 CLK脚电平,问题可能就在这里。

求一份数字电路课程设计,4人抢答器(用Multisim)

时间有限,一时之间没有完全做到你所要达到的要求,上传一个基本的电路供您参考。

图中F1为四D触发器74LS175,它具有公共置0端和公共CP端,引脚排列见附录;F2为双4输入与非门74LS20;F3是由74LS00组成的多谐振荡器;F4是由74LS74组成的四分频电路,F3、F4组成抢答电路中的CP时钟脉冲源,抢答开始时,由主持人清除信号,按下复位开关S,74LS175的输出Q1~Q4全为0,所有发光二极管LED均熄灭,当主持人宣布“抢答开始”后,首先作出判断的参赛者立即按下开关,对应的发光二极管点亮,同时,通过与非门F2送出信号锁住其余三个抢答者的电路,不再接受其它信号,直到主持人再次清除信号为止。

计时部分请自行思考添加。

1)设计任务

设计一台可供4 名选手参加比赛的智力竞赛抢答器。用数字显示抢答倒计时间,由9倒计到0时,无人抢答,蜂鸣器连续响1 秒。选手抢答时,数码显示选手组号,同时蜂鸣器响1 秒,倒计时停止。

2)设计要求

(1)4 名选手编号为:1,2,3,4。各有一个抢答按钮,按钮的编号与选手的编号对应,也分别为1,2,3,4。

(2)给主持人设置一个控制按钮,用来控制系统清零(抢答显示数码管灭灯)和抢答的开始。

(3)抢答器具有数据锁存和显示的功能。抢答开始后,若有选手按动抢答按钮,该选手编号立即锁存,并在抢答显示器上显示该编号,同时扬声器给出音响提示,封锁输入编码电路,禁止其他选手抢答。抢答选手的编号一直保持到主持人将系统清零为止。

(4)抢答器具有定时(9 秒)抢答的功能。当主持人按下开始按钮后,定时器开始倒计时,定时显示器显示倒计时间,若无人抢答,倒计时结束时,扬声器响,音响持续1 秒。参赛选手在设定时间(9 秒)内抢答有效,抢答成功,扬声器响,音响持续1 秒,同时定时器停止倒计时,抢答显示器上显示选手的编号,定时显示器上显示剩余抢答时间,并保持到主持人将系统清零为止。

(5)如果抢答定时已到,却没有选手抢答时,本次抢答无效。系统扬声器报警(音响持续1 秒),并封锁输入编码电路,禁止选手超时后抢答,时间显示器显示0。

(6)可用石英晶体振荡器或者555 定时器产生频率为1Hz 的脉冲信号,作为定时计数器的CP 信号。

找到一个设计,可是我这里下不了,你去百度搜“DIY自制四路抢答器,含电路图、元件清单、实物图”百度第一个应该就是,你看看能不能有帮助

 
友情链接
鄂ICP备19019357号-22