当前位置:首页 > EDA > 电子设计自动化
[导读] 抢答器在各类竞赛中的必备设备,有单路输入的,也有组输入方式,本设计以FPGA 为基础设计了有三组输入(每组三人),具有抢答计时控制,能够对各抢答小组成绩进行相应加减操作的通用型抢答器;现行的抢答器中主要有

 抢答器在各类竞赛中的必备设备,有单路输入的,也有组输入方式,本设计以FPGA 为基础设计了有三组输入(每组三人),具有抢答计时控制,能够对各抢答小组成绩进行相应加减操作的通用型抢答器;现行的抢答器中主要有两种:小规模数字逻辑芯片译码器和触发器来做,另外一种用单片机来做;小规模数字逻辑电路比较复杂,用单片机来做随着抢答组数的增加有时候存在I/O 口不足的情况;本设计采用FPGA 来做增强了时序控制的灵活性,同时由于FPGA 的I/O 端口资源丰富,可以在本设计基础上稍加修改可以设计具有多组输入的抢答器。

  功能描述

  本文设计了一个通用型电子抢答器:三个参赛队,每个队有三个成员,各自可手动按按钮申请抢答权;回到正确加1 分,回答错误减1 分,违规抢答减1分,不抢答不加分不扣分;用4 位LED 的左边2 位显示抢答组号及抢答计时时间,右边2 位显示相应组的成绩。

  抢答器具体功能如下:

  1、可同时进行三组每个小组三人的抢答, 用9 个按钮Group1_1,Group1_2,Group1_3,Group2_1,Group2_2,Group2_3,Group3_1,Group3_2,Group3_3 表示;

  2、设置一个抢答控制开关Start,该开关由主持人控制;只有当主持人按下开始键才能抢答;在按开始按钮前抢答属于违规;

  3、抢答器具有定时抢答功能,且一次抢答的时间设定为30 秒。当主持人启动“开始”键后,用4 位LED 数码管左边两位显示30s 的倒计时;同时红色LED灯亮,表明可以抢答。

  4、抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的组号,并在4 位LED 数码管的左边两位显示,同时用一个绿色LED 指示是否有选手抢答,如果是违规抢答还能用选手蜂鸣器报警提示。抢答实行优先锁存,优先抢答选手的相应组号和成绩一直保持到下一轮抢答开始。

  5、参赛选手在设定的时间内进行抢答,抢答有效,数码管左边两位显示 ”FX”,如果抢答违规则显示 ”XF”(其中X 表示组号1~3),并保持到下一轮抢答。如果抢答延迟时间已到,无人抢答,本次抢答无效,系统回到主持人按开始前的等待状态,数码管上左边两位显示“FF”。

  6、当抢答有效后,主持人可以根据抢答选手回答问题正确与否对选手相应组数的成绩进行加减分操作,抢答违规也能减分操作,用4 位LED 数码管右边两位显示相应组数的成绩。(注各组初始成绩为10 分)

  设计架构

  本文以FPGA 为基础设计的电子抢答器,根据设计功能要求,改设计主要包括抢答输入键盘,数码管显示,报警及FPGA 最小系统。抢答器结构简图如图1所示。

  

  1、FPGA 最小系统电路:FPGA 正常工作时的基本电路,由时钟和复位电路组成。

  2、键盘输入电路:用3×3 矩阵键盘组成3 个组共9 个人的抢答按钮。同时包括Start, Add, Sub 三个由主持人控制的单独按钮。

  3、显示模块:用移位寄存器74HC164 驱动4 位共阴数码管显示;数码管要显示的数据通过74HC164 串行数据端口输入。

  4、报警及相关信息显示:蜂鸣器电路和LED 灯显示相关状态信息指示电路。

  各模块详细描述

  1、FPGA 与各个模块的接口

  本文以XC3S400 为基础设计的电子抢答器,抢答器实际上是一个人机接口的一个智能设备,该设计中用到的FPGA 外部I/O 口及其与外部各个模块连接的网络标识如图2 所示。

  

  图2.FPGA 的IO 接口

  2、按键模块

  由于按键是机械的动作,按键存在电平抖动,为了消除按键抖动引起的干扰,需要等按键值达到稳定状态时才读取按键的值,也就是说要当按键按下一段时间后,才读取按键值;本设计中抢答开始键(Start)、抢答后各组成绩的加(Add)和减(Sub)按键是以单键的形式输入,按键延迟时间为20ms,对于抢答组的按键是用3×3 阵列键盘实现,row=3’b001 以周期为5.08ms 进行循环左移扫描,扫描完三行的周期为15.24ms,这个就是说只有当两个按键之间的时间间隔在15.24ms 之内时才有可能存在一个按钮在比另一个按钮先按,而响应后者;实际操作中,两人按键之间的间隔大于这个时间间隔,因此,不会出现错误响应。同时每个按键后的延迟等待125.76ms 后此按键值才有效;经过实际测试,键盘具有消抖功能,能够正确检测按键值。按键电路图如图3 所示。

  

  图3.按键电路

  图注: 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 所示。

  显示数据信息通过74164 的串行译码传送到数码管对应段,对应位显示;对于数码管显示的时序特别要注意:数码管是采用动态扫描方式显示,所有位扫描显示一次的频率一定要大于相应位数据改变的频率;同时当数码管对于数据改变的同时一定要把相应数据送到数码管进行显示,即数据改变和数据显示要同步;此设计中4 位数码管动态扫描频率位190Hz,而数码管要显示的抢答组数、抢答组的成绩等信息的变化频率都是秒级,即几秒钟或者几分钟变化一次,满足数码管显示要求。

  

  图4.显示电路

  注:数码管为共阴数码管,其中pin6,pin8,pin9,pin12 依次为位码,其余为段码;

  4、时钟复位

  此模块用于生成FPGA 系统时钟和复位电路,采用有源晶振和低电平复位。系统时钟采用50MHz,能够满足电路设计要求,电路如图5 所示。

  

  图5.时钟复位电路

  5、报警模块

  报警主要用于响应当没有按开始键之前违规抢答信号;即当违规时蜂鸣器响;同时还增加了一个红色用于显示当按下开始键的信号;即当主持人按下开始按键时,红色LED 灯亮;同时用一个绿色LED 灯指示有选手按抢答按钮,选手按键抢答,绿色LED 闪烁一次。电路图如图6 所示。

  

  图6.报警和指示

  软件代码描述

  软件设计主要采用verilog HDL 语言进行设计,采用状态机对抢答器的各个过程进行控制,设计中采用了层次化和模块化的思想,即顶层模块只有一个控制抢答器的主状态机和模块例化,然后分别用子模块实现数码管显示,成绩多路选择器,成绩的处理模块,按下抢答开始键后的延迟等待模块,按键模块等。程序流程图如图7 所示。

  

                                                                   图7.程序流程图

 

  图注: 显示“FF+成绩”中FF 表示无效状态,成绩表示上一次抢答的那个小组的成绩;显示“FX+成绩”表示抢答小组答题完并进行评分操作后的组号和成绩;显示“XF+成绩”表示违规抢答的那个小组组号及减1分后的成绩信息(X 表示1,2,3)。这里“+”是为了区分组号和成绩信息,数码管并不显示加号,下同。

  用Verilog HDL 分别编写各个模块,然后在ISE 环境下运行程序,调试成功。最后生成的顶层模块的方块图如图8 所示。

 

  

  图8.顶层模块图

 

  图注:Line(2:0)和row(2:0)分别表示参赛小组按键的输入阵列信号和输出扫描阵列信号;start_key,add_key, sub_key,分别代表抢答开始命令,对各组成绩的加、减操作命令;dp,error,push_key 分别表示开始键按下后的信号,违规抢答信号以及参赛组有人按键的响应信号;hc_cp,hc_si 表示显示译码芯片74HC164 的串行时钟和数据信号。

  问题与解决

  1、状态机问题

  在整体调试的时候,当主持人按开始按钮后,程序就死在那里,不能接收抢答信息,由于抢答键盘已单独调试成功,因此怀疑是控制抢答过程的状态机除了问题,指示进入开始状态的红色LED灯一直亮着,说明程序的确死在开始状态。再次综合的过程中发现警告提示:状态机的状态量的赋值错误,把二进制标识“b”误写为“h”,这样由于状态机数据宽度小于时间数据数据长度,自动取较小位数据;如state_start = 4‘b0010误写为state_start = 4’h0010,实际就是state_start = 4’b0000,这肯定与前面状态冲突;同时调试过程中也遇到过复位时没有把状态机复位到初始状态的情况。经过此次设计,体会认识到状态机在实际控制中的重要性,以后设计中要学会看综合布线过程中警告信息。

  2、信号同步的问题

  在抢答器按下开始键后有一个等待抢答30s 的延迟时间,当30s 完成后如果三个小组都没有人按抢答键,那么此次比赛抢答无效,系统自动回到主持人按开始前的系统等待状态;当计时完成30s 后生成一个高电平的脉冲信号(pulse),由于此脉冲信号高电平持续时间是整个系统的系统时钟(clk),这个时钟周期小于状态机的时钟周期(clk_4),直接用状态机的时钟是检测不到此脉冲信号,需要把此脉冲信号同步到与状态机时钟同步。

  采用的方法是:首先用一个锁存器(pulse_reg)锁存此脉冲信号(锁存器时钟也为系统时钟),通过锁存器的输出值和原脉冲信号寄存器值就可以检测到脉冲由低电平0 到高电平1 的跳变沿,同样用一个与系统时钟同步的锁存器(flag)锁存这个跳变沿,当出现这个跳变沿时flag=1;而为了让状态机时钟(clk_4)检测到flag 信号,同时要在状态机时钟检测到后要把flag 清零,为下一次检测作准备,这时可以当状态机时钟(clk_4)检测到flag=1’b1 后,同时生成一个flag的清零信号(flag_rst)flag_rst=1’b1;当flag_rst 为1 时把flag 清零。

  调试信号同步的部分程序如下:

  reg flag_rst; //生成flag_rst 信号

  always @ (posedge clk_4 or negedge rst_n)

  begin

  if(!rst_n)

  begin

  flag_rst <= 1‘b0;

  end

  else

  begin

  if(flag == 1’b0)

  flag_rst <= 1‘b0;

  else

  begin

  flag_rst <= 1’b1;

  end

  end

  end

  always @ (posedge clk)

  begin

  pulse_reg <= pulse;

  end

  reg flag; //flag 用来检测pulse 上升沿

  always @ (posedge clk)

  begin

  if(!rst_n)

  flag <= 1’b0;

  else

  begin

  if((pulse_reg == 1‘b0)&&(pulse == 1’b1))

  flag <= 1‘b1;

  else if(flag_rst == 1’b1)

  flag <= 1‘b0;

  end

  end

  reg flag_reg; //生成与clk_4 同步的用于检测脉冲上升沿信号的flag 信号

  always @ (posedge clk_4)

  begin

  flag_reg <= flag;

  end

  用modesim6.0 仿真波形如下:

 

  

  图9.信号的同步的仿真波形

 

  从仿真波形中可以看出当pulse 高电平时的下一个时钟flag = 1’b1;为了让时钟clk_4 能够检测到flag = 1’b1,就让flag 一直保存到clk_4 上升沿出现,然后在clk_4 上升沿把flag 的复位信号flag_rst 置1;然后flag, flag_rst都清零。改变pulse 脉冲出现的时间或者clk_4 的频率都能检测到pulse 的高电平。经过信号同步后,状态机能够检测抢答计时完30s 后生成的一个脉冲信号然后回到初状态。

  时序设计是数字电路电路的主要工作,在设计中一定要明白信号如何传递,在何时赋值,何时信号值需要改变等,这样才能更好的设计。在需要改变寄存器值的时刻没有对寄存器进行操作,会造成结果的错误。

  设计结果

  根据抢答器功能要求,规划程序包括的子模块,并编写Verilog 代码,在硬件电路上调试运行成功。

  操作过程:开始时对,整个系统复位(默认每组成绩为10 分),数码管显示“FF+10”。在主持人发出开始抢答的Start 之后,参赛队员就可以按自己前面的抢答按钮,同时用数码管左边两位计时抢答时间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。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭