资源描述:
《基于VHDL语言的抢答器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、VHDL抢答器的设计设计要求:1•抢答器同时供“名选手,(此处假设4个)分别用4个按钮SO〜S3表示。2.设置一个系统“开始复位”开关S,该开关由主持人控制(当主持人按下该开关后以前的状态复位并且开始计时抢答)。3.抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。4.抢答器具有定时抢答功能,且一次抢答的时间(0-99S)o当主持人启动“开始复位”键后,定时器进行减计时。5.如果定时时间已到,无人抢
2、答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00o一、概述抢答器的逻辑结构主要由抢答鉴别lock模块、沱时模块、译码模块和报警器模块组成。在整个抢答器屮最关键的是如何实现抢答封锁,在控制键按下的同时计数器倒计时显示有效剩余时间。除此之外,整个抢答器还需有一个“复位开始”信号,以便抢答器能实现清零和开始。抢答器共有3个输出显示,选手代号、计数器的个位和十位,他们输出全都为BCD码输出,这样便于和显示译码器连接。当主持人按下控制键、选手按下抢答键蜂鸣器短暂响起。二、方案设计与论证嘿嘿!将该任务分成N个模块进行设计,分别为:
3、抢答器鉴别模块、抢答器计时模块、译码模块、报警模块,最后是综合。1.抢答器鉴别模块:在这个模块中主要实现抢答过程中的抢答功能,并且能实现当有一路抢答按键按下时,该路抢答信号将其余个绿抢答封锁的功能。在这个模块输入端有WARN输入(以时间控制系统的WARN输出信号为信号源)、一个和“时间控制系统”公用的CLEAR端、4人抢答输入信号端SO,S1,S2,S3和有一个时钟信号端CLK,这个时钟信号是个高频信号,用以扫描SO,SI,S2,S3是否有信号输入。输出端有对应于SO,SI,S2,S3编号的4个指示灯LED和4线2进制输出端ST
4、ATES(用于锁存当前的状态),还有一个STOP端用于指示SO,S1,S2,S3按钮状态(控制计时器停止)。在此模块屮髙频时钟信号一直作用,此时,若主持人按下CLEAR即为开始抢答信号,所有输出端都自动清零。在有效时间范围(N秒)内只要有人抢答,STOP就有高电平输出至“时I'可控制系统”的STOP端以控制倒计时的停止,并且对应的LCD指示灯点亮,STATES锁存输出到译码显示模块,用以显示优先抢答人的组号,并锁定输入端S以阻止系统响应其他抢答者的信号。当有效时间到了之后还没有人抢答,则记时模块发出报警信号,同时反馈回来给抢答鉴
5、别模块,禁止选手在抢答。2.译码模块:将抢答过程屮锁存的BCD码转换成7段码用于LED的显示。3定时器模块:这个模块的输入端有时钟信号CLK1、系统复位信号CLEAR和一个STOP输入信号;输出端有秒吋I'可状态显示信号高位HIGH和低位LOW,无人抢答吋计吋中止警报信号WARNo这个模块中主要实现抢答过程中的计吋功能,在抢答开始后进行N秒的倒计吋,并且在N秒倒计时后无人抢答的情况下显示超时并输出信号至WARN报警,或者只要N秒内有人抢答,由抢答鉴别模块输出的STOP信号控制停止计时,并显示优先抢答者的抢答时刻,输出一个信号经W
6、ARN传至“抢答鉴别系统”,锁存不再让选手抢答。4报警模块:在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限吋间内(N秒内)有人抢答或是倒计时到了之后蜂鸣器开始报警,输出SOUND有效电平为高.5.在这个模块中是对前4个模块的综合。三.单元电路软件设计及仿真1•抢答器鉴别模块VHDL程序及模块:LOCKCLKCLEARWARNSTATESI:3.■O]SOSILED[3..O]STOPS2S3在这个模块中主要实现抢答过程中的抢答功能,并且能实现当有一路抢答按键按下时,该路抢答信号将其余个绿抢答封锁的功能。在这个
7、模块输入端有WARN输入(以时间控制系统的WARN输出信号为信号源)、一个和“时间控制系统”公用的CLEAR端、4人抢答输入信号端SO,S1,S2,S3和有一个时钟信号端CLK,这个吋钟信号是个高频信号,用以扫描SO,SI,S2,S3是否有信号输入。输出端有对应于SO,SI,S2,S3编号的4个指示灯LED和4线2进制输出端STATES(用于锁存当前的状态),还有一个STOP端用于指示SO,S1,S2,S3按钮状态(控制计时器停止)。LIBRARYIEEE;USEIEEE.STDLOGIC1164.ALL;ENTITYLOCKI
8、SPORT(CLK,CLEAR:INSTD_LOGIC;WARN:INSTD_LOGIC;SO,S1,S2,S3:INSTD_LOGIC;STATES:OUTSTD_LOGIC_VECTOR(3DOWNTO0);STOP:OUTSTD_LOGIC;LED:OUT