ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:37.98KB ,
资源ID:8898766      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8898766.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字竞赛抢答器课程设计Verilog语言实现.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字竞赛抢答器课程设计Verilog语言实现.docx

1、数字竞赛抢答器课程设计Verilog语言实现数字竞赛抢答器课程设计Verilog语言实现 可编程器件与应用课程设计报告姓 名: XXX 学 号: XXXXXXXXXX 专业班级: 信息XXX 题 目: 数字式竞赛抢答器 指导老师: 一、绪论背景:随着电子技术的发展,可编程逻辑器件(PLD)的出现,使得电子系统的设计者利用EDA(电子设计自动化)软件,就可以独立设计自己的专用集成电路(ASIC)器件。可编程逻辑器件是一种半导体集成器件的半成品。在可编程逻辑器件的芯片中按一定方式(阵列形式或单元阵列形式)制作了大量的门、触发器等基本逻辑器件,对这些基本器件适当地连接,就可以完成某个电路或系统的功能

2、。 数字式竞赛抢答器控制系统是工厂、学校和电视台等单位举办各种智力竞赛等娱乐活动中经常使用的重要基础设备之一。目前设计抢答器的方法很多,例如用传统的PCB板设计、用PIC设计或者用单片机设计。而用Verilog可以更加快速、灵活地设计出符合各种要求的抢答器,优于其他设计方法,使设计过程达到高度自动化。本文介绍的4路数字式竞赛抢答器基于Verilog语言、以EDA技术作为开发手段、采用CPLD(复杂的可编程逻辑器件)作为控制核心设计而成。与传统设计相比较,不仅简化了接口和控制,也提高了系统的整体性能和工作可靠性,具有电路简单、成本低廉、操作方便、灵敏可靠等优点。意义: 数字式竞赛抢答器作为一种电

3、子产品,早已广泛应用于各种智力和知识竞赛场合,但目前所使用的抢答器存在分立元件使用较多,造成每路的成本偏高,而现代电子技术的发展要求电子电路朝数字化、集成化方向发展,因此设计出数字化全集成电路的多路抢答器是现代电子技术发展的要求。二、实现方案设计要求:1、设计一个可容纳4组参赛的数字式抢答器,每组设一个按钮,供抢答使用。2、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。3、设置一个主持人“复位”按钮。4、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出23秒的音响。5、设置一个计分电路,每组开始预置5分,由主持人记分,答对一次加1分,

4、答错一次减1分。6、设置犯规电路,对超时答题(例如1分钟)的组别鸣笛示警,并由组别显示电路显示出犯规组别,该轮该选手退出,由裁判员重新发令,其他人再抢答。设计方案:此设计问题可分为第一信号鉴别、锁存模块,答题计时电路模块,计分电路模块和扫描显示模块四部分。第一信号鉴别锁存模块的关键是准确判断出第一抢答者并将其锁存,在得到第一信号后,将输入端封锁,使其他组的抢答信号无效,可以用触发器或锁存器实现。设置抢答按钮K1、K2、K3、K4,主持人复位信号judge,蜂鸣器驱动信号buzzout。judge=0时,第一信号鉴别、锁存电路、答题计时电路复位,在此状态下,若有抢答按钮按下,鸣笛示警并显示犯规组

5、别;judge=1时,开始抢答,由第一信号鉴别锁存电路形成第一抢答信号,进行组别显示,控制蜂鸣器发出声响,并启动答题计时电路,若计时时间到,主持人复位信号还没有按下,则由蜂鸣器发出犯规示警声。计分电路是一个相对独立的模块,采用十进制加/减计数器、数码管数码扫描显示,设置复位信号Reset、加减分信号add_min,加减分状态键key_state,Reset=0时所有得分回到起始分(5分),且加、减分信号无效;Reset=1时,由第一信号鉴别、锁存电路的输出信号选择进行加减分的组别,当key_state=1时,按一次add_min,第一抢答组加1分;当key_state=0时,每按一次add_m

6、in,则减1分。以下为每个模块的设计过程。三、程序及仿真/*顶层模块信号定义:clk:基准时钟输入信号;k1,k2,k3,k4:抢答按钮输入信号;seg:数码管段输出引脚;sl:数码管位输出引脚;add_min:加减分按键;key_state:加减分模式选择按键;reset:初始5分设置键信号;judge:裁判员抢答开始键信号;o5:超时信号;o1、o2、o3、o4:抢答组别LED显示输出信号;buzz:示警输出信号;*/moduleqiangdaqi(clk,k1,k2,k3,k4,seg,sl,add_min,key_state,reset,judge,o1,o2,o3,o4,o5,buz

7、z,vg,sel);input clk,k1,k2,k3,k4,add_min,key_state,reset,judge;output7:0 seg; output3:0 sl; output reg sel; output o1,o2,o3,o4,o5,vg; output buzz; reg 3:0 vg=0010; wire o1,o2,o3,o4; wire3:0 s1,s2,s3,s4; /* 模块引用 */sel Q1(clk,k1,k2,k3,k4,judge,o1,o2,o3,o4,o5,buzz); /调用抢答信号锁存显示电路count Q2(clk,o1,o2,o3,o4

8、,add_min,key_state,reset,s1,s2,s3,s4); /调用计分电路dled Q3(seg,sl,s1,s2,s3,s4,clk); /调用数码管显示电路endmodule/*信号锁存电路信号定义:CLK:时钟信号;K1、K2、K3、K4、K5、K6:抢答按钮信号;out1、out2、out3、out4、out5、out6:抢答LED显示信号;judge:裁判员抢答开始信号;buzzout:示警输出信号;flag:答题是否超时的标志;*/module sel(clk,k1,k2,k3,k4,judge,out1,out2,out3,out4,out5,buzzout);

9、input clk,k1,k2,k3,k4,judge; output out1,out2,out3,out4,out5,buzzout;reg out1,out2,out3,out4,out5,block,buzzout; reg32:0 count; reg27:0 counter; reg flag;always(posedge clk )begin counter=counter+1; /裁判员发开始抢答信号,初始指示灯灭,蜂鸣器禁声if(!judge) begin out1,out2,out3,out4,out5,block=6b111110; count=0; flag=0; en

10、delse begin if(!k1) /第一组别按键是否按下begin if(!block) begin out1=0; /点亮第一组别指示灯block=1; /封锁别组抢答信号count=1; /第一组已按下按钮,可启动答题计时器end endelse if(!k2) /第二组别按键是否按下begin if(!block)begin out2=0; block=1;count=1; endendelse if(!k3) /第三组别按键是否按下begin if(!block)begin out3=0; block=1; count=1; endendelse if(!k4) /第四组别按键是

11、否按下begin if(!block)begin out4=0; block=1; count=1; endendend /*答题计时开始,并判断是否答题超时*/if(count!=0)begin if(count=32hc11e7a00) /如果答题时间到了1分钟,亮犯规灯begin count=0; out5=0; flag=1b1; endelse begin count=count+1; endendend /蜂鸣器发声always(counter7)if(flag=1) buzzout=!(counter11&counter22&counter27);else buzzout=1b0

12、;endmodule/*去键盘抖动信号定义: clkin:基准时钟输入信号;clkout:周期为20ms的信号输出;*/module f_1M(clkin,clkout);Input clkin; output clkout;reg clkout; reg18:0 count;always (negedge clkin)if(count=19d500000)begin count=19d000000; clkout=clkout; endelse count9) count1=0;else count1=count1+1; endif(!c2) /第二组别加分,最高分为10分,最低分为0分be

13、gin if(count29) count2=0;else count2=count2+1; endif(!c3) /第三组别加分,最高分为10分,最低分为0分begin if(count39) count3=0;else count3=count3+1; endif(!c4) /第四组别加分,最高分为10分,最低分为0分begin if(count49) count4=0;else count4=count4+1; end end endendmodule/*数码管显示电路信号定义:clk:时钟信号;seg:数码管段输出引脚;sl:数码管位输出引脚;score1:第一组得分输入;score2

14、:第二组得分输入;score3:第三组得分输入;score4:第四组得分输入;*/module dled (seg,sl,score1,score2,score3,score4,clk,vg); output7:0 seg; output3:0 sl; output reg 3:0 vg=0010; input clk; input3:0 score1,score2,score3,score4;reg7:0 seg_reg; /定义数码管段输出寄存器reg3:0 sl_reg; /定义数码管位输出寄存器reg3:0 disp_dat; /定义显示数据寄存器reg16:0 count; /定义计

15、数器寄存器always(posedge clk) /定义clock信号上升沿触发begin count=count+1; /计数器值加1endalways(count14:13) /定义显示数据触发事件begin case(count14:13) /选择扫描显示数据2h0:disp_dat=score1; /在个位数码管上显示第一组别的分数值2h1:disp_dat=score2; /在十位数码管上显示第二组别的分数值2h2:disp_dat=score3; /在百位数码管上显示第三组别的分数值2h3:disp_dat=score4; /在千位数码管上显示第四组别的分数值endcasecase

16、(count14:13) /选择数码管显示位2h0:sl_reg=4b1110; /选择个位数码管2h1:sl_reg =4b1101; /选择十位数码管2h2:sl_reg =4b1011; /选择百位数码管2h3:sl_reg =4b0111; /选择千位数码管endcase endalways(disp_dat) /显示数据的解码过程begincase(disp_dat)4h0:seg_reg=8h3f; /显示数据04h1:seg_reg=8h06; /显示数据14h2:seg_reg=8h5b; /显示数据24h3:seg_reg=8h4f; /显示数据34h4:seg_reg=8h

17、66; /显示数据44h5:seg_reg=8h6d; /显示数据54h6:seg_reg=8h7d; /显示数据64h7:seg_reg=8h07; /显示数据74h8:seg_reg=8h7f; /显示数据84h9:seg_reg=8h6f; /显示数据94ha:seg_reg=8h77; /显示数据a4hb:seg_reg=8h7c; /显示数据b4hc:seg_reg=8h39; /显示数据c4hd:seg_reg=8h51; /显示数据d4he:seg_reg=8h79; /显示数据e4hf:seg_reg=8h71; /显示数据fendcase endassign seg=seg_

18、reg; /输出数码管解码结果assign sl=sl_reg; /输出数码管选择endmodule管脚分配图如下:四、总结1、打开Quartus II软件,对该工程文件进行编译处理,若在编译过程中发现错误,找出并更正错误直至成功为止。2、将CCIT CPLD/FGPA JTAG下载电缆的两端分别接到PC机和CCIT CPLD/FGPA实验仪上,再打开工作电源,执行下载命令把程序下载到CCIT CPLD/FGPA实验仪的EPM1270T144C5N器件中,通过K1K4抢答按键按下后,由裁判员根答题情况,通过控制add_min和key_state这两个键实现加减分操作,这样大家就可以看到数码管上

19、的分数和LED四盏小灯的变化。五、心得体会通过本次课程设计,我学会了综合应用键盘、LED小灯、蜂鸣器、LED数码管等外围接口进行产品设计,掌握了键盘、LED小灯、蜂鸣器、LED数码管等外围接口的Verilog语言编程和各种外围接口的灵活运用。培养了CPLD的综合开发能力、实验的仿真及下载技能和互帮互助的同学关系,在各种其它能力上也都有了提高。更重要的是,经过本次课设的反复修改验证及完成,我们学会了很多学习的方法,而这是日后最实用的,真的是感到受益匪浅。虽然结束了,也留下了很多遗憾,由于时间的紧缺和许多课业的繁忙,并没有做到最好,但是,最起码我们没有放弃,并努力实现它。相信以后我们会以更加积极地态度对待我们的学习、对待我们的生活。我们的激情永远不会结束,相反,我们会更加努力,努力的去弥补缺点,发展优点,充实自己!

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

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