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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于FPGA的抢答器设计和实现Word文档格式.docx

1、3、抢答器具备定期抢答功能,且一次抢答时间设定为30 秒。当主持人启动“开始”键后,用4 位LED 数码管左边两位显示30s 倒计时;同步红色LED灯亮,表白可以抢答。4、抢答器具备锁存与显示功能。即选手按动按钮,锁存相应组号,并在4 位LED 数码管左边两位显示,同步用一种绿色LED 批示与否有选手抢答,如果是违规抢答还能用选手蜂鸣器报警提示。抢答实行优先锁存,优先抢答选手相应组号和成绩始终保持到下一轮抢答开始。5、参赛选手在设定期间内进行抢答,抢答有效,数码管左边两位显示 ”FX”,如果抢答违规则显示 ”XF”(其中X 表达组号13),并保持到下一轮抢答。如果抢答延迟时间已到,无人抢答,本

2、次抢答无效,系统回到主持人按开始前等待状态,数码管上左边两位显示“FF”。6、当抢答有效后,主持人可以依照抢答选手回答问题对的与否对选手相应组数成绩进行加减分操作,抢答违规也能减分操作,用4 位LED 数码管右边两位显示相应组数成绩。(注各组初始成绩为10 分)设计架构本文以FPGA 为基本设计电子抢答器,依照设计功能规定,改设计重要涉及抢答输入键盘,数码管显示,报警及FPGA 最小系统。抢答器构造简图如图1所示。1、FPGA 最小系统电路:FPGA 正常工作时基本电路,由时钟和复位电路构成。2、键盘输入电路:用33 矩阵键盘构成3 个组共9 个人抢答按钮。同步涉及Start, Add, Su

3、b 三个由主持人控制单独按钮。3、显示模块:用移位寄存器74HC164 驱动4 位共阴数码管显示;数码管要显示数据通过74HC164 串行数据端口输入。4、报警及有关信息显示:蜂鸣器电路和LED 灯显示有关状态信息批示电路。各模块详细描述1、FPGA 与各个模块接口本文以XC3S400 为基本设计电子抢答器,抢答器事实上是一种人机接口一种智能设备,该设计中用到FPGA 外部I/O 口及其与外部各个模块连接网络标记如图2 所示。图2.FPGA IO 接口2、按键模块由于按键是机械动作,按键存在电平抖动,为了消除按键抖动引起干扰,需要等按键值达到稳定状态时才读取按键值,也就是说要当按键按下一段时间

4、后,才读取按键值;本设计中抢答开始键(Start)、抢答后各构成绩加(Add)和减(Sub)按键是以单键形式输入,按键延迟时间为20ms,对于抢答组按键是用33 阵列键盘实现,row=3b001 以周期为5.08ms 进行循环左移扫描,扫描完三行周期为15.24ms,这个就是说只有当两个按键之间时间间隔在15.24ms 之内时才有也许存在一种按钮在比另一种按钮先按,而响应后者;实际操作中,两人按键之间间隔不不大于这个时间间隔,因而,不会浮现错误响应。同步每个按键后延迟等待125.76ms 后此按键值才有效;通过实际测试,键盘具备消抖功能,可以对的检测按键值。按键电路图如图3 所示。图3.按键电

5、路图注: Group1_1,Group1_2,Group1_3 分别表达第一参赛小组三个成员按钮, 依次类推Group2_1,Group2_2,Group2_3 和 Group1_1,Group1_2,Group1_3 分别代表第二和第三参赛小组三个成员;Start、Add、Sub 分别代表抢答开始按键、对小构成绩加操作和减操作按钮!3、显示模块显示模块由4 位LED 数码管显示抢答组数、与否违规抢答信息、按下抢答键后抢答时间、各组所得分数等信息;其中数码管左边2 位显示抢答组号及抢答计时时间,右边2 位显示相应构成绩。数码管驱动电路(译码电路)用两片74164 控制;电路图如图4 所示。显示

6、数据信息通过74164 串行译码传送到数码管相应段,相应位显示;对于数码管显示时序特别要注意:数码管是采用动态扫描方式显示,所有位扫描显示一次频率一定要不不大于相应位数据变化频率;同步当数码管对于数据变化同步一定要把相应数据送到数码管进行显示,即数据变化和数据显示要同步;此设计中4 位数码管动态扫描频率位190Hz,而数码管要显示抢答组数、抢答构成绩等信息变化频率都是秒级,即几秒钟或者几分钟变化一次,满足数码管显示规定。图4.显示电路注:数码管为共阴数码管,其中pin6,pin8,pin9,pin12 依次为位码,别的为段码;4、时钟复位此模块用于生成FPGA 系统时钟和复位电路,采用有源晶振

7、和低电平复位。系统时钟采用50MHz,可以满足电路设计规定,电路如图5 所示。图5.时钟复位电路5、报警模块报警重要用于响应当没有按开始键之前违规抢答信号;即当违规时蜂鸣器响;同步还增长了一种红色用于显示当按下开始键信号;即当主持人按下开始按键时,红色LED 灯亮;同步用一种绿色LED 灯批示有选手按抢答按钮,选手按键抢答,绿色LED 闪烁一次。电路图如图6 所示。图6.报警和批示软件代码描述软件设计重要采用verilog HDL 语言进行设计,采用状态机对抢答器各个过程进行控制,设计中采用了层次化和模块化思想,即顶层模块只有一种控制抢答器主状态机和模块例化,然后分别用子模块实现数码管显示,成

8、绩多路选取器,成绩解决模块,按下抢答开始键后延迟等待模块,按键模块等。程序流程图如图7 所示。图7.程序流程图 显示“FF+成绩”中FF 表达无效状态,成绩表达上一次抢答那个小构成绩;显示“FX+成绩”表达抢答小组答题完并进行评分操作后组号和成绩;显示“XF+成绩”表达违规抢答那个小组组号及减1分后成绩信息(X 表达1,2,3)。这里“”是为了区别组号和成绩信息,数码管并不显示加号,下同。用Verilog HDL 分别编写各个模块,然后在ISE 环境下运营程序,调试成功。最后生成顶层模块方块图如图8 所示。图8.顶层模块图Line(2:0)和row(2:0)分别表达参赛小组按键输入阵列信号和输

9、出扫描阵列信号;start_key,add_key, sub_key,分别代表抢答开始命令,对各构成绩加、减操作命令;dp,error,push_key 分别表达开始键按下后信号,违规抢答信号以及参赛组有人按键响应信号;hc_cp,hc_si 表达显示译码芯片74HC164 串行时钟和数据信号。问题与解决1、状态机问题在整体调试时候,当主持人按开始按钮后,程序就死在那里,不能接受抢答信息,由于抢答键盘已单独调试成功,因而怀疑是控制抢答过程状态机除了问题,批示进入开始状态红色LED灯始终亮着,阐明程序确死在开始状态。再次综合过程中发现警告提示:状态机状态量赋值错误,把二进制标记“b”误写为“h”

10、,这样由于状态机数据宽度不大于时间数据数据长度,自动取较小位数据;如state_start = 4b0010误写为state_start = 4h0010,实际就是state_start = 4b0000,这必定与前面状态冲突;同步调试过程中也遇到过复位时没有把状态机复位到初始状态状况。通过本次设计,体会结识到状态机在实际控制中重要性,后来设计中要学会看综合布线过程中警告信息。2、信号同步问题在抢答器按下开始键后有一种等待抢答30s 延迟时间,当30s 完毕后如果三个小组都没有人按抢答键,那么本次比赛抢答无效,系统自动回到主持人按开始前系统等待状态;当计时完毕30s 后生成一种高电平脉冲信号(

11、pulse),由于此脉冲信号高电平持续时间是整个系统系统时钟(clk),这个时钟周期不大于状态机时钟周期(clk_4),直接用状态机时钟是检测不到此脉冲信号,需要把此脉冲信号同步到与状态机时钟同步。采用办法是:一方面用一种锁存器(pulse_reg)锁存此脉冲信号(锁存器时钟也为系统时钟),通过锁存器输出值和原脉冲信号寄存器值就可以检测到脉冲由低电平0 到高电平1 跳变沿,同样用一种与系统时钟同步锁存器(flag)锁存这个跳变沿,当浮现这个跳变沿时flag=1;而为了让状态机时钟(clk_4)检测到flag 信号,同步要在状态机时钟检测到后要把flag 清零,为下一次检测作准备,这时可以当状态

12、机时钟(clk_4)检测到flag=1b1 后,同步生成一种flag清零信号(flag_rst)flag_rst=1b1;当flag_rst 为1 时把flag 清零。调试信号同步某些程序如下:reg flag_rst;/生成flag_rst 信号always (posedge clk_4 or negedge rst_n)beginif(!rst_n)flag_rst = 1b0;endelseif(flag = 1b0)= 1b1;always (posedge clk)pulse_reg = pulse;reg flag;/flag 用来检测pulse 上升沿flag = 1b0;if(

13、pulse_reg = 1b0)&(pulse = 1b1)= 1b1;else if(flag_rst = 1b1)reg flag_reg;/生成与clk_4 同步用于检测脉冲上升沿信号flag 信号always (posedge clk_4)flag_reg = flag;用modesim6.0 仿真波形如下:图9.信号同步仿真波形从仿真波形中可以看出当pulse 高电平时下一种时钟flag = 1b1;为了让时钟clk_4 可以检测到flag = 1b1,就让flag 始终保存到clk_4 上升沿浮现,然后在clk_4 上升沿把flag 复位信号flag_rst 置1;然后flag,

14、flag_rst都清零。变化pulse 脉冲浮现时间或者clk_4 频率都能检测到pulse 高电平。通过信号同步后,状态机可以检测抢答计时完30s 后生成一种脉冲信号然后回到初状态。时序设计是数字电路电路重要工作,在设计中一定要明白信号如何传递,在何时赋值,何时信号值需要变化等,这样才干更好设计。在需要变化寄存器值时刻没有对寄存器进行操作,会导致成果错误。设计成果依照抢答器功能规定,规划程序涉及子模块,并编写Verilog 代码,在硬件电路上调试运营成功。操作过程:开始时对,整个系统复位(默认每构成绩为10 分),数码管显示“FF+10”。在主持人发出开始抢答Start 之后,参赛队员就可以

15、按自己前面抢答按钮,同步用数码管左边两位计时抢答时间30s,如果在30s 内各组都无人抢答,则本次抢答无效,系统自动回到开始前初状态(数码管显示“FF+成绩”),等待下一次操作;主持人可依照回答争取与否,以及与否违规抢答,决定加减分(Add 为加分控制,Sub 为减分控制),加减操作后系统又回到开始前等待状态。设计中,哪个组抢答,就显示哪个组信息。如果抢答没有违规(按开始后抢答)则显示屏左边两位显示“FX”;反之,则显示“XF”,X 代表组号1,2,3。按照操作办法,以第1 组抢答为例在VX_SP306 开发平台上运营看看数码管显示及整个过程:1、在系统复位后显示“FF+10”;2、等待主持人按开始状态;3、主持人按开始按钮前第1 组抢答,显示“1F+10”,减1 分操作后显示“1F+09”;回到环节2;4、主持人按开始按钮后,显示“30+10”;30 每秒钟减1 直到00;5、在30s 内第1 组抢答,显示“F1+10”,主持人依照回答状况进行加、减分操作,显示“F1+分数”;然后回到环节2;6、如果在30s 内没有人抢答,显示“FF+10”,回到环节2。

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

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