基于EDA的智力抢答器的课程设计说明书Word文档格式.docx

上传人:b****5 文档编号:21614948 上传时间:2023-01-31 格式:DOCX 页数:30 大小:292.19KB
下载 相关 举报
基于EDA的智力抢答器的课程设计说明书Word文档格式.docx_第1页
第1页 / 共30页
基于EDA的智力抢答器的课程设计说明书Word文档格式.docx_第2页
第2页 / 共30页
基于EDA的智力抢答器的课程设计说明书Word文档格式.docx_第3页
第3页 / 共30页
基于EDA的智力抢答器的课程设计说明书Word文档格式.docx_第4页
第4页 / 共30页
基于EDA的智力抢答器的课程设计说明书Word文档格式.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

基于EDA的智力抢答器的课程设计说明书Word文档格式.docx

《基于EDA的智力抢答器的课程设计说明书Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于EDA的智力抢答器的课程设计说明书Word文档格式.docx(30页珍藏版)》请在冰豆网上搜索。

基于EDA的智力抢答器的课程设计说明书Word文档格式.docx

此设计问题可分为第一信号鉴别、锁存模块、答题计时电路模块、计分电路模块和扫描显示模块四个模块构成。

①此设计问题的关键是准确判断出第一抢答者并将其锁存,实现的方法可使用触发器或锁存器,在得到第一信号后将输入封锁,使其它组的抢答信号无效。

②形成第一抢答信号后,用编码、译码及数码显示电路显示第一抢答者的组别,用第一抢答信号控制一个具有2种工作频率交替变化的音频振荡器工作,推动扬声器发出2种笛音音响。

③计分电路采用十进制加/减计数器、数码管显示,由于每次都是加/减10分,所以个位始终为零,只要十位、百位进行加/减运算即可。

其流程图如下:

图2.2四路抢答器原理

3、课程设计内容

3.1软件整体设计

Y

YN

NY

图3.1软件设计整体框架

3.2总体设计电路

3.3模块设计和相应模块程序

第一信号鉴别锁存模块的原理:

1

在得到第一信号后,准确判断出第一抢答者并将其锁存;

2将输入端封锁,使其他组的抢答信号无效。

采用锁存器74175实现,如右图所示。

3.3.1抢答鉴别模块

信号锁存电路信号定义:

CLK:

时钟信号;

K1、K2、K3、K4:

抢答按钮信号;

out1、out2、out3、out4:

抢答LED显示信号;

judge:

裁判员抢答开始信号;

buzzout:

示警输出信号;

flag:

答题是否超时的标志;

modulesel(clk,k1,k2,k3,k4,judge,seg,sl,out1,out2,out3,out4,out5,buzzout);

inputclk,k1,k2,k3,k4,judge;

outputout1,out2,out3,out4,out5,buzzout;

regout1,out2,out3,out4,out5,block,buzzout;

output[7:

0]seg;

output[3:

0]sl;

reg[32:

0]count;

reg[27:

0]counter;

reg[7:

0]seg_reg;

reg[3:

0]sl_reg;

regflag;

always@(posedgeclk)

begin

counter=counter+1;

//裁判员发开始抢答信号,初始化指示灯为灭、抢答的互斥量为0,蜂鸣器禁声

if(!

judge)

begin

{out1,out2,out3,out4,out5,block}<

=6'

b111110;

count<

=0;

flag=0;

end

else

k1)//第一组别按键是否按下

block)

out1=0;

block=1;

//封锁别组抢答信号

count=1;

//第一组已按下按钮,可启动答题计时器

elseif(!

k4)//第四组别按键是否按下

block)

out4=0;

seg_reg=8'

hc0;

if(count!

=0)

out1)

hf9;

out2)

ha4;

out3)

hb0;

out4)

h99;

sl_reg=4'

b0111;

if(count==32'

h608f3d00)//如果答题时间到了30s,亮犯规灯

count=0;

out5=0;

flag=1'

b1;

//置蜂鸣器发声标志

count=count+1;

////蜂鸣器发声

always@(counter[7])

if(flag==1)buzzout=!

(counter[11]&

counter[22]&

counter[27]);

elsebuzzout=1'

b0;

assignseg=seg_reg;

assignsl=sl_reg;

endmodule

抢答鉴别模块图

抢答鉴别模块用来准确直观地判断K1,K2,K3,K4四组抢答者谁最先按下按钮,并为显示端送出信号,通过数显和蜂鸣等途径使观众能够清楚地知道是哪一组抢答成功,是整个系统的核心部分。

同时组别显示端为下一模块输入信号,以方便主持人为该组抢答成功者进行加减分的操作。

3.3.2计时模块

modulejsq(out,clk,reset);

outputout;

reg[3:

0]qh;

0]ql;

regout;

inputclk,reset;

always@(posedgeclkornegedgereset)

out<

if(~reset){qh,ql}<

else

begin

if({qh,ql}==8'

h03)

begin{qh,ql}<

=1;

end

else

if(~out)

begin

if(ql==9)

beginql<

qh<

=qh+1;

ql<

=ql+1;

end

计时模块图

在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行30秒的倒计时,并且在30秒倒计时后无人抢答显示超时并报警。

系统复位信号reset;

3.3.3数据选择模块和译码模块

modulesell(in1,in2,in3,in4,in5,in6,in7,in8,clk,ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g);

inputclk;

input[3:

0]in1,in2,in3,in4,in5,in6,in7,in8;

outputms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g;

regms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g;

0]temp,flag;

{ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8}=8'

b00000000;

flag=flag+1;

case(flag)

0:

begintemp=in1;

ms1=1;

1:

begintemp=in2;

ms2=1;

2:

begintemp=in3;

ms3=1;

3:

begintemp=in4;

ms4=1;

4:

begintemp=in5;

ms5=1;

5:

begintemp=in6;

ms6=1;

6:

begintemp=in7;

ms7=1;

7:

begintemp=in8;

ms8=1;

endcase

case(temp)

4'

d0:

{a,b,c,d,e,f,g}=7'

b1111110;

d1:

b0110000;

d2:

b1101101;

d3:

b1111001;

d4:

b0110011;

d5:

b1011011;

d6:

b1011111;

d7:

b1110000;

d8:

b1111111;

d9:

b1111011;

default:

在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。

3.4仿真及仿真结果分析

抢答鉴别

计时

其中有抢答时钟信号clk2;

系统复位信号rst;

抢答使能信号s;

抢答状态显示信号states;

无人抢答警报信号warn;

计时中止信号stop;

计时十位和个位信号tb,ta。

报警

在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内如果人抢答或是计数到时蜂鸣器开始报警,有效电平输入信号i;

状态输出信号q;

计数脉冲clk。

译码

5、结论与致谢

这次EDA课程设计让我加深理解了VHDL程序设计的步骤和原理。

我们的题目是四路抢答器设计,刚开始一头雾水,通过查资料和借鉴前辈的作品,我一步一步从迷茫到困惑再到柳暗花明,我发现做学问要知其然知其所以然,静下心来,仔细研究,才能有所发现。

总的来说,这次设计的抢答器还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于迎刃而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力。

参考文献

[1]黄仁欣.EDA技术实用教程.北京:

清华大学出版社,2006

[2]潘松,黄继业.EDA技术与VHDL.北京:

清华大学出版社,2009

[3]江国强编著.EDA技术与应用(第三版)..北京:

电子工业出版社,2010

[4]夏宇闻编著.VerilogHDL数字系统设计教程..北京:

北京航空航天大学出版社,2008

[5]周祖成,程晓军,马卓钊编著.数字电路与系统教学实验教程.北京:

科学出版社,2010

[6]周润景,苏良碧.基于QuartusII的数字系统VerilogHDL设计实例详解.北京:

[7](美国)SanirPalnitkar译者:

夏宇闻胡燕祥刁岚松.VerilogHDL数字设计与综合(第2版).北京:

电子工业出版社,2009

[8]云创工作室.VerilogHDL程序设计与实践.北京:

人民邮电出版社,2009

[9]刘福奇,刘波.VerilogHDL应用程序设计实例精讲.北京:

[10]张延伟,杨金岩,葛爱学.veriloghdl程序设计实例详解.北京:

人民邮电出版社,2008

附录

附录一:

系统设计程序

//========智力抢答器========

//========编制:

//函数定义

modulesel(clk,k1,k2,k3,k4,judge,seg,sl,out1,out2,out3,out4,out5,buzzout);

k2)//第二组别按键是否按下

out2=0;

k3)//第三组别按键是否按下

out3=0;

//答题计时电路模块

modulejsq(out,clk,reset);

elsebegin

h03)begin{qh,ql}<

elsebegin

//计分电路模块和扫描显示模块

modulejfq(clk,qd1,qd2,qd3,qd4,yes,no,reset,df1l,df1h,df2l,df2h,df3l,df3h,df4l,df4h);

inputclk,qd1,qd2,qd3,qd4,yes,no,reset;

0]df1l,df1h,df2l,df2h,df3l,df3h,df4l,df4h;

if(reset)

{df1l,df1h,df2l,df2h,df3l,df3h,df4l,df4h}=32'

h10101010;

elseif(yes)

//

if(qd1)

if(df1l==9)

df1l=0;

if(df1h==9)

df1h=0;

df1h=df1h+1;

df1l=df1l+1;

if(qd2)

if(df2l==9)

df2l=0;

if(df2h==9)

df2h=0;

df2h=df2h+1;

df2l=df2l+1;

if(qd3)

if(df3l==9)

df3l=0;

if(df3h==9)

df3h=0;

df3h=df3h+1;

df3l=df3l+1;

if(qd4)

if(df4l==9)

df4l=0;

if(df4h==9)

df4h=0;

df4h=df4h+1;

df4l=df4l+1;

elseif(no)

if(df1l!

=4'

b0000)

df1l=df1l-1;

elseif(df1h!

df1h=df1h-1;

df1l=9;

if(df2l!

df2l=df2l-1;

elseif(df2h!

df2h=df2h-1;

df2l=9;

if(df3l!

df3l=df3l-1;

elseif(df3h!

df3h=df3h-1;

df3l=9;

if(df4l!

df4l=df4l-1;

elseif(df4h!

df4h=df4h-1;

df4l=9;

//选择模块

module

sel(in1,in2,in3,in4,in5,in6,in7,in8,clk,ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g);

{a,b,c,d,e,f,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 机械仪表

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1