收藏 分销(赏)

基于eda的智力抢答器的课程设计方案说明学士学位论文.doc

上传人:胜**** 文档编号:3041658 上传时间:2024-06-13 格式:DOC 页数:26 大小:332.50KB 下载积分:10 金币
下载 相关 举报
基于eda的智力抢答器的课程设计方案说明学士学位论文.doc_第1页
第1页 / 共26页
基于eda的智力抢答器的课程设计方案说明学士学位论文.doc_第2页
第2页 / 共26页


点击查看更多>>
资源描述
山东建筑大学课程设计说明书 基于EDA的智力抢答器的课程设计说明书 目录 摘要 1、课程设计目的与要求 1 2、课程设计原理 1 3、 课程设计内容 ........2 3.1软件整体设计 3 3.2总体设计电路 3 3.3模块设计和相应模块程序 4 3.3.1抢答鉴别模块 4 3.3.2计时模块............................................................................................................7 3.3.3数据选择模块和译码模块................................................................................9 3.3.4仿真及仿真结果分析......................................................................................11 结论与致谢 12 参考文献 13 附 录........................................................................................................................................ 14 摘 要 抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。当第一个人按下按键后,则在显示器上显示该组的号码,同时电路将其他各组按键封锁,使其不起作用。若抢答时间内无人抢答,警报器发出警报。回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。 因此要完成抢答器的逻辑功能,该电路至少应包括抢答鉴别模块、计时模块、选择模块和报警模块组成。 关键词:抢答鉴别 封锁 计时 报警 Verilog HDL 2 1、课程设计目的与要求 根据设计要求分析智力抢答器的功能,掌握设计中所涉及到抢答锁存;抢答计时;数据选择;译码显示、Verilog HDL语言的编程技术,阐明设计原理。 设计供4个代表队比赛用的智力抢答器,技术参数和设计要求: (1)系统复位和抢答控制开关。由主持人控制。 (2) 复位后,主持人宣读试题,按下开始键,发动开始抢答命令,启动抢答限时计数器。若在按下开始按键前有人抢答,犯规电路将发出声光提示,显示犯规组号。 (3) 抢答器具有锁存与显示功能。在限时内,选手按动按钮,锁存相应的编号,并在LED数码管上显示。若限时到,则声光显示。 (4)抢答器具有定时抢答功能。如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。 2、 课程设计原理 2.1功能分析 抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮无效;设置一个主持人“复位”按钮,主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,用LED数码管显示抢答组别,蜂鸣器发出2~3s的音响。 2.2设计思路 此设计问题可分为第一信号鉴别、锁存模块、答题计时电路模块、计分电路模块和扫描显示模块四个模块构成。 ①此设计问题的关键是准确判断出第一抢答者并将其锁存,实现的方法可使用触发器或锁存器,在得到第一信号后将输入封锁,使其它组的抢答信号无效。 ②形成第一抢答信号后,用编码、译码及数码显示电路显示第一抢答者的组别,用第一抢答信号控制一个具有2种工作频率交替变化的音频振荡器工作,推动扬声器发出2种笛音音响。 ③计分电路采用十进制加/减计数器、数码管显示,由于每次都是加/减10分,所以个位始终为零,只要十位、百位进行加/减运算即可。 其流程图如下: K1 K2 K3 数码管片选信号 倒计时模块 数码管译码电路 蜂鸣器 同步信号 数码管 显示模块 锁存电路 按键1 按键2 转换 K4 图2.2 四路抢答器原理 3、 课程设计内容 3.1软件整体设计 开始抢答? Y 答题时间到? 进行答题计时 已有人抢? Y N 报警后,计时清零 抢答重新开始 N Y 判断是几号选手抢答,并将对应的LED灯点亮,蜂鸣提示。抢答时间计时内无人则重新开始。 图3.1 软件设计整体框架 3.2总体设计电路 3.3模块设计和相应模块程序 第一信号鉴别锁存模块的原理: ① 在得到第一信号后,准确判断出第一抢答者并将其锁存; ② 将输入端封锁,使其他组的抢答信号无效。 采用锁存器74175实现,如右图所示。 3.3.1抢答鉴别模块 信号锁存电路信号定义: CLK:时钟信号; K1、K2、K3、K4:抢答按钮信号; out1、out2、out3、out4:抢答LED显示信号; judge:裁判员抢答开始信号; buzzout:示警输出信号; flag:答题是否超时的标志; module sel(clk,k1,k2,k3,k4,judge, seg,sl,out1,out2,out3,out4,out5,buzzout); input clk,k1,k2,k3,k4,judge; output out1,out2,out3,out4,out5,buzzout; reg out1,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 ; reg flag; always@(posedge clk) begin counter=counter+1; //裁判员发开始抢答信号,初始化指示灯为灭、抢答的互斥量为0,蜂鸣器禁声 if(!judge) begin {out1,out2,out3,out4,out5,block}<=6'b111110; count<=0; flag=0; end else begin if(!k1) //第一组别按键是否按下 begin if(!block) begin out1=0; block=1; //封锁别组抢答信号 count=1; //第一组已按下按钮,可启动答题计时器 end end … … else if(!k4) //第四组别按键是否按下 begin if(!block) begin out4=0; block=1; count=1; end end seg_reg=8'hc0; if(count!=0) begin if(!out1) seg_reg=8'hf9; if(!out2) seg_reg=8'ha4; if(!out3) seg_reg=8'hb0; if(!out4) seg_reg=8'h99; end sl_reg =4'b0111; if(count!=0) begin if(count==32'h608f3d00) //如果答题时间到了30s,亮犯规灯 begin count=0; out5=0; flag=1'b1; //置蜂鸣器发声标志 end else begin count=count+1; end end end end ////蜂鸣器发声 always@(counter[7]) if(flag==1) buzzout=!(counter[11]&counter[22]&counter[27]); else buzzout=1'b0; assign seg=seg_reg; assign sl=sl_reg; endmodule 抢答鉴别模块图 抢答鉴别模块用来准确直观地判断K1,K2,K3,K4四组抢答者谁最先按下按钮,并为显示端送出信号,通过数显和蜂鸣等途径使观众能够清楚地知道是哪一组抢答成功,是整个系统的核心部分。同时组别显示端为下一模块输入信号,以方便主持人为该组抢答成功者进行加减分的操作。 3.3.2计时模块 module jsq(out,clk,reset); output out; reg [3:0] qh; reg [3:0] ql; reg out; input clk,reset; always @(posedge clk or negedge reset) begin out<=0; if(~reset){qh,ql}<=0; else begin if({qh,ql}==8'h03) begin{qh,ql}<=0;out<=1; end else begin if(~out) begin if(ql==9) begin ql<=0;qh<=qh+1; end else begin ql<=ql+1; end end end end end endmodule 计时模块图 在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行30秒的倒计时,并且在30秒倒计时后无人抢答显示超时并报警。系统复位信号reset; 3.3.3数据选择模块和译码模块 module sell(in1,in2,in3,in4,in5,in6,in7,in8,clk,ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g); input clk; input [3:0] in1,in2,in3,in4,in5,in6,in7,in8; output ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g; reg ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g; reg [3:0] temp,flag; always@(posedge clk) begin {ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8}=8'b00000000; flag=flag+1; case(flag) 0:begin temp=in1;ms1=1;end 1:begin temp=in2;ms2=1;end 2:begin temp=in3;ms3=1;end 3:begin temp=in4;ms4=1;end 4:begin temp=in5;ms5=1;end 5:begin temp=in6;ms6=1;end 6:begin temp=in7;ms7=1;end 7:begin temp=in8;ms8=1;end endcase case(temp) 4'd0:{a,b,c,d,e,f,g}=7'b1111110; 4'd1:{a,b,c,d,e,f,g}=7'b0110000; 4'd2:{a,b,c,d,e,f,g}=7'b1101101; 4'd3:{a,b,c,d,e,f,g}=7'b1111001; 4'd4:{a,b,c,d,e,f,g}=7'b0110011; 4'd5:{a,b,c,d,e,f,g}=7'b1011011; 4'd6:{a,b,c,d,e,f,g}=7'b1011111; 4'd7:{a,b,c,d,e,f,g}=7'b1110000; 4'd8:{a,b,c,d,e,f,g}=7'b1111111; 4'd9:{a,b,c,d,e,f,g}=7'b1111011; default:{a,b,c,d,e,f,g}=7'b1111110; endcase end endmodule 在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。 3.4仿真及仿真结果分析 抢答鉴别 计时 在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行30秒的倒计时,并且在30秒倒计时后无人抢答显示超时并报警。其中有抢答时钟信号clk2;系统复位信号rst;抢答使能信号s;抢答状态显示信号states;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta。 报警 在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内如果人抢答或是计数到时蜂鸣器开始报警,有效电平输入信号i;状态输出信号q;计数脉冲clk。 译码 在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。 5、结论与致谢 这次EDA课程设计让我加深理解了VHDL程序设计的步骤和原理。 我们的题目是四路抢答器设计,刚开始一头雾水,通过查资料和借鉴前辈的作品,我一步一步从迷茫到困惑再到柳暗花明,我发现做学问要知其然知其所以然,静下心来,仔细研究,才能有所发现。 总的来说,这次设计的抢答器还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于迎刃而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力。 参考文献 [1] 黄仁欣.EDA技术实用教程.北京:清华大学出版社,2006 [2] 潘松,黄继业.EDA技术与VHDL.北京:清华大学出版社,2009 [3] 江国强编著.EDA技术与应用(第三版)..北京:电子工业出版社,2010 [4] 夏宇闻编著.Verilog HDL数字系统设计教程..北京:北京航空航天大学出版社,2008 [5] 周祖成,程晓军,马卓钊编著.数字电路与系统教学实验教程.北京:科学出版社,2010 [6] 周润景,苏良碧.基于Quartus II 的数字系统Verilog HDL设计实例详解.北京:电子工业出版社,2010 [7] (美国)Sanir Palnitkar 译者:夏宇闻 胡燕祥 刁岚松.Verilog HDL数字设计与综合(第2版).北京:电子工业出版社,2009 [8] 云创工作室.Verilog HDL程序设计与实践.北京:人民邮电出版社,2009 [9] 刘福奇,刘波.Verilog HDL应用程序设计实例精讲.北京:电子工业出版社,2009 [10] 张延伟,杨金岩,葛爱学.verilog hdl程序设计实例详解.北京:人民邮电出版社,2008 附 录 附录一:系统设计程序 //========智力抢答器======== //========编制: //函数定义 module sel(clk,k1,k2,k3,k4,judge, seg,sl,out1,out2,out3,out4,out5,buzzout); input clk,k1,k2,k3,k4,judge; output out1,out2,out3,out4,out5,buzzout; reg out1,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 ; reg flag; always@(posedge clk) begin counter=counter+1; //裁判员发开始抢答信号,初始化指示灯为灭、抢答的互斥量为0,蜂鸣器禁声 if(!judge) begin {out1,out2,out3,out4,out5,block}<=6'b111110; count<=0; flag=0; end else begin if(!k1) //第一组别按键是否按下 begin if(!block) begin out1=0; block=1; //封锁别组抢答信号 count=1; //第一组已按下按钮,可启动答题计时器 end end else if(!k2) //第二组别按键是否按下 begin if(!block) begin out2=0; block=1; count=1; end end else if(!k3) //第三组别按键是否按下 begin if(!block) begin out3=0; block=1; count=1; end end else if(!k4) //第四组别按键是否按下 begin if(!block) begin out4=0; block=1; count=1; end end seg_reg=8'hc0; if(count!=0) begin if(!out1) seg_reg=8'hf9; if(!out2) seg_reg=8'ha4; if(!out3) seg_reg=8'hb0; if(!out4) seg_reg=8'h99; end sl_reg =4'b0111; if(count!=0) begin if(count==32'h608f3d00) //如果答题时间到了30s,亮犯规灯 begin count=0; out5=0; flag=1'b1; //置蜂鸣器发声标志 end else begin count=count+1; end end end end ////蜂鸣器发声 always@(counter[7]) if(flag==1) buzzout=!(counter[11]&counter[22]&counter[27]); else buzzout=1'b0; assign seg=seg_reg; assign sl=sl_reg; endmodule //答题计时电路模块 module jsq(out,clk,reset); output out; reg [3:0] qh; reg [3:0] ql; reg out; input clk,reset; always @(posedge clk or negedge reset) begin out<=0; if(~reset){qh,ql}<=0; else begin if({qh,ql}==8'h03)begin{qh,ql}<=0;out<=1;end else begin if(~out) begin if(ql==9) begin ql<=0;qh<=qh+1;end else begin ql<=ql+1; end end end end end endmodule //计分电路模块和扫描显示模块 module jfq(clk,qd1,qd2,qd3,qd4,yes,no,reset,df1l,df1h,df2l,df2h,df3l,df3h,df4l,df4h); input clk,qd1,qd2,qd3,qd4,yes,no,reset; output[3:0]df1l,df1h,df2l,df2h,df3l,df3h,df4l,df4h; reg[3:0]df1l,df1h,df2l,df2h,df3l,df3h,df4l,df4h; always@(posedge clk) if(reset) {df1l,df1h,df2l,df2h,df3l,df3h,df4l,df4h}=32'h10101010; else if(yes) begin // if(qd1) begin if(df1l==9) begin df1l=0; if(df1h==9) df1h=0; else df1h=df1h+1; end else df1l=df1l+1; end // // if(qd2) begin if(df2l==9) begin df2l=0; if(df2h==9) df2h=0; else df2h=df2h+1; end else df2l=df2l+1; end // // if(qd3) begin if(df3l==9) begin df3l=0; if(df3h==9) df3h=0; else df3h=df3h+1; end else df3l=df3l+1; end // // if(qd4) begin if(df4l==9) begin df4l=0; if(df4h==9) df4h=0; else df4h=df4h+1; end else df4l=df4l+1; end // end else if(no) begin // if(qd1) begin if(df1l!=4'b0000) df1l=df1l-1; else if(df1h!=4'b0000) begin df1h=df1h-1; df1l=9; end end // if(qd2) begin if(df2l!=4'b0000) df2l=df2l-1; else if(df2h!=4'b0000) begin df2h=df2h-1; df2l=9; end end // if(qd3) begin if(df3l!=4'b0000) df3l=df3l-1; else if(df3h!=4'b0000) begin df3h=df3h-1; df3l=9; end end // if(qd4) begin if(df4l!=4'b0000) df4l=df4l-1; else if(df4h!=4'b0000) begin df4h=df4h-1; df4l=9; end end // end endmodule //选择模块 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); input clk; input [3:0] in1,in2,in3,in4,in5,in6,in7,in8; output ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g; reg ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8,a,b,c,d,e,f,g; reg [3:0] temp,flag; always@(posedge clk) begin {ms1,ms2,ms3,ms4,ms5,ms6,ms7,ms8}=8'b00000000; flag=flag+1; case(flag) 0:begin temp=in1;ms1=1;end 1:begin temp=in2;ms2=1;end 2:begin temp=in3;ms3=1;end 3:begin temp=in4;ms4=1;end 4:begin temp=in5;ms5=1;end 5:begin temp=in6;ms6=1;end 6:begin temp=in7;ms7=1;end 7:begin temp=in8;ms8=1;end endcase case(temp) 4'd0:{a,b,c,d,e,f,g}=7'b1111110; 4'd1:{a,b,c,d,e,f,g}=7'b0110000; 4'd2:{a,b,c,d,e,f,g}=7'b1101101; 4'd3:{a,b,c,d,e,f,g}=7'b1111001; 4'd4:{a,b,c,d,e,f,g}=7'b0110011; 4'd5:{a,b,c,d,e,f,g}=7'b1011011; 4'd6:{a,b,c,d,e,f,g}=7'b1011111; 4'd7:{a,b,c,d,e,f,g}=7'b1110000; 4'd8:{a,b,c,d,e,f,g}=7'b1111111; 4'd9:{a,b,c,d,e,f,g}=7'b1111011; default:{a,b,c,d,e,f,g}=7'b1111110; endcase end endmodule 23
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服