智能抢答器实验报告

智能抢答器实验报告
智能抢答器实验报告

电子科技大学

学生姓名:

学号:

指导教师:

日期:

一、实验室名称:

二、实验项目名称:

智能抢答器设计

三、实验原理:

4人抢答器可同时供4位选手参加比赛,分别用player1 player2 player3 player4表示,节目主持人设置一个复位按键clear,用于控制系统的清零.抢答器具有锁存和显示功能,能够显示哪位选手获得抢答,并能显示具体选手的号码,同时屏蔽别的选手,再按选择信号.在选手回答问题时在规定时间到达发出报警主持人按键清零,一次抢答结束.

在本设计中,共4位选手,即4个输入信号,考虑到优先原则,所以引用一个状态变量,当这个标志为”1”的时候,说明有选手已经抢答,则对其他选手输入位信号进行屏蔽,然后锁存这个选手的编号并显示.采用两个数码管显示,计数采用BCD码输出.

四、实验目的:

?学习QUARTUSⅡ软件的使用方法

?学习VHDL或VerilogHDL语言

?学会用VHDL或VerilogHDL语言进行简单的编程

五、实验内容:

完成智能抢答器实验程序的编写,并进行仿真后分析验证

六、实验器材(设备、元器件):

PC机,QUARTUSⅡ软件

七、实验步骤:

?熟悉QUARTUSⅡ软件(以简单实例)

?用VHDL开发FPGA的完整流程.继续掌握QUARTUSⅡ软件使用方法.

?设计出抢答器程序进行调试,

?用QUARTUSⅡ进行编译,综合及仿真.

八、实验数据及结果分析:

设计程序如下:

module qdq(player1,player2,player3,player4,res,clk,q1,q2,q3,q4,row,ra,Q1,beep);

input player1,player2,player3,player4;

input res,clk;

output[6:0]row,ra;

output[3:0]Q1;

output q1,q2,q3,q4,beep;

reg q1,q2,q3,q4,beep;

reg[6:0]row,ra;

reg clk1;

reg[3:0]Q1;

reg[3:0]y;

reg[6:0]i;

always @(res||q1||q2||q3||q4)

begin

if(!res)

begin q1<=0;q2<=0;q3<=0;q4<=0; // 裁判清零

end

else

begin

if(q1||q2||q3||q4)

begin q1<=q1;q2<=q2;q3<=q3;q4<=q4;

end

else

begin

if(player1) // 选手开始抢答

begin q1<=1;row<=7'b0111111; // 抢答后显示先抢答的选手编号

end

else if(player2)

begin q2<=1;row<=7'b0000110;

end

else if(player3)

begin q3<=1;row<=7'b1011011;

end

else if(player4)

begin q4<=1;row<=7'b1001111;

end

end

end

end

always@( posedge clk) // 10GHz ~clk

begin

case(Q1)

4'd0: ra<=7'b0111111; // 选手抢答后,数码管倒计时显示译码模块4'd1: ra<=7'b0000110;

4'd2: ra<=7'b1011011;

4'd3: ra<=7'b1001111;

4'd4: ra<=7'b1100110;

4'd5: ra<=7'b1101101;

4'd6: ra<=7'b1111101;

4'd7: ra<=7'b0000111;

4'd8: ra<=7'b1111111;

4'd9: ra<=7'b1100111;

endcase

end

always@(posedge clk) // 分频10ns~clk1

begin

if(i<50) i<=i+1;

else i<=0;clk1<=~clk1;

end

always@(posedge clk1 ) // 倒计时9~0控制模块begin

if(res&&(player1||player2||player3||player4))

begin

if(Q1>4'b0000) Q1<=Q1-1;

else Q1<=4'b1001;

end

end

always@(posedge clk1 ) // 报警模块

begin

if(res&&(player1||player2||player3||player4))

begin

if(y>4'b1011||y<4'b1111)

begin

beep<=1;y<=y+1;

end

else beep<=0;

end

else

begin

y<=0;beep<=0;

end

end

endmodule

仿真波形图:

实验波形仿真结果与设计要实现的功能完全一致。

九、实验结论:

通过本实验,完成了智能抢答器Verilog程序的编写,并通过仿真波形验证了程序的正确性,完整性。

十、总结及心得体会:

通过本实验,我们加深了对Verilog硬件编程语言的学习,也更加熟练地学会掌握了QUARTUSⅡ软件,对硬件设计的流程有了更深

的体会。

十一、对本实验过程及方法、手段的改进建议:

希望能提供更为详细的QUARTUSⅡ软件及Modelsim的学习教程;

程序编写完成后,希望能提供实验板进行程序验证;

报告评分:

指导教师签字:

相关主题
相关文档
最新文档