1、基于VHDL的四路抢答器内 容 摘 要抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。当第一个人按下按键后,则在显示器上显示该组的号码,同时电路将其他各组按键封锁,使其不起作用。若抢答时间内无人抢答,警报器发出警报。回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。因此要完成抢答器的逻辑功能,该电路至少应包括抢答鉴别模块、控制模块、计时模块、选择控制和报警器组成。关键词:抢答鉴别 封锁 计时 报警目 录一 概 述 1二 方案设计与论证1三 单元电路设计2 3.1. 抢答
2、鉴别模块的设计 23.2 计时模块的设计 3 3.3 数据选择模块的设计 53.4 报警模块的设计 63.5 译码器模块的设计 73.6 控制模块 83.7 主电路连线图 83.8 芯片引脚图 9四 器件编程与下载10五 性能测试与分析10六 实验设备10七 心得体会10八 参考文献10课程设计任务书(任务书的格式调整一下课题名称基于VHDL的四路枪答器完成时间2010.12.03指导教师崔瑞雪职称副教授学生姓名张宏昌班级B08221总体设计要求和技术要点设计要求:1.抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0 S3表示。2.设置一个系统清除和抢答控制开关S,该开关由主持人控制。
3、3抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。技术要点:1、实现封锁功能; 3、总程序的编译、仿真、打包并下载到实验箱。工作内容及时间进度安排(1) 做出概括的总框架,作出具体的课设安排。11月17号(2) 根据要求分成几个模块,分别用VHDL语言进行程序的编写,然后编译,仿真,实现功能并进行修改。11月20号(3) 将设计出来的模块进行组合,编译仿真,实现功能并进行修改。11月25号(4) 对硬件进行学习,并进行软硬件的结合。11月29号 (5) 实验成果
4、验收。11月30号课程设计成果1与设计内容对应的软件程序 2课程设计报告书一、概述 抢答器的逻辑结构较简单,它主要由抢答鉴别模块、计时模块、选择控制和报警器组成。在整个抢答器中最关键的是如何实现抢答封锁,在控制键按下的同时计数器倒计时显示有效剩余时间。除此之外,整个抢答器还需有一个使能信号和一个归零信号,以便抢答器能实现公平抢答和停止。抢答器共有3个输出显示,选手代号、计数器的个位和十位,他们输出全都为BCD码输出,这样便于和显示译码器连接。当主持人按下控制键、选手按下抢答键或倒计时到时蜂鸣器按时钟脉冲周期响起。二、方案设计与论证将该任务分成五个模块进行设计,分别为:抢答器鉴别模块、抢答器计时
5、模块、译码模块、数选模块、报警模块,最后是手工连接电路制作顶层文件。1、 抢答器鉴别模块:在这个模块中主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是超前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余各路抢答封锁的功能。其中有四个抢答信号s0、s1、s2、s3;抢答使能信号s;抢答状态显示信号states;抢答与警报时钟信号clk2;系统复位信号rst;警报信号tmp。2、 抢答器计时模块:在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行20秒的倒计时,并且在20秒倒计时后无人抢答显示超时并报警。其中有抢答时钟信号clk2;系统复
6、位信号rst;抢答使能信号s;抢答状态显示信号states;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta。3、 数据选择模块:在这个模块中主要实现抢答过程中的数据输入功能,输入信号a3.0、b3.0、c3.0;计数输出信号s;数据输出信号y;计数脉冲clk2,实现a、b、c按脉冲轮流选通,在数码管上显示。4、 报警模块: 在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内 人抢答或是计数到时蜂鸣器开始报警,有效电平输入信号i;状态输出信号q;计数脉冲clk2。5、 译码模块:在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。6、 顶
7、层文件:在这个模块中是对前五个模块的综合编写的顶层文件。三、单元电路设计(一)抢答鉴别模块 VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qdjb1 is port(rst,clk2:in std_logic; s0,s1,s2,s3:in std_logic; states:buffer std_logic_vector(3 downto 0); tmp:out std_logic);end qdjb1;architecture one of qdjb1 issig
8、nal st:std_logic_vector(3 downto 0);beginp1:process(s0,rst,s1,s2,s3,clk2) begin if rst=0 then tmp=0;st=0000; elsif clk2event and clk2=1 then if (s0=1 or st(0)=1)and not( st(1)=1 or st(2)=1 or st(3)=1 ) then st(0)=1; end if ; if (s1=1 or st(1)=1)and not( st(0)=1 or st(2)=1 or st(3)=1 ) then st(1)=1;
9、end if ; if (s2=1 or st(2)=1)and not( st(0)=1 or st(1)=1 or st(3)=1 ) then st(2)=1; end if ; if (s3=1 or st(3)=1)and not( st(0)=1 or st(1)=1 or st(2)=1 ) then st(3)=1; end if ;tmp=st(0) or st(1) or st(2) or st(3);end if ;end process p1;p2:process(states(0),states(1),states(2),states(3) begin if (st=
10、0000) then states=0000; elsif (st=0001) then states=0001; elsif (st=0010) then states=0010; elsif (st=0100) then states=0011; elsif (st=1000) then states=0100; end if; end process p2;end one;(二)计时模块 VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity js1 is port(cl
11、k,rst,s:in std_logic; ta,tb:buffer std_logic_vector(3 downto 0); warn:out std_logic);end js1;architecture one of js1 issignal co:std_logic;beginp1:process(clk,rst,s,ta) begin if rst=0 then ta=0000; elsif clkevent and clk=1 then co=0; if s=1 then if ta=0000 then ta=1001;co=1; else ta=ta-1; end if; en
12、d if; end if;end process p1;p2:process(co,rst,s,tb) begin if rst=0 then tb=0010; elsif coevent and co=1 then if s=1 then if tb=0000 then tb=0010; else tb=tb-1; end if; end if; end if; if(ta=0000 and tb=0000) then warn=1; else warn=0; end if;end process p2;END ONE;(三)数据选择模块VHDL源程序library ieee;use iee
13、e.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity sjxz is port (a,b,c: in std_logic_vector(3 downto 0); clk2,rst: in std_logic; s: out std_logic_vector(1 downto 0); y: out std_logic_vector(3 downto 0) );end sjxz;architecture chooser of sjxz is signal count: std
14、_logic_vector (1 downto 0); begin s=count;process(clk2,rst) begin if(rst=0)then count=10)then count=00; else countyyynull; end case; end PROCESS;end chooser;(四)报警模块VHDL源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ALARM ISPORT(CLK,I:IN STD_LOGIC; Q:OUT STD_LOGIC)
15、;END ALARM;ARCHITECTURE BEHAVE OF ALARM IS BEGIN PROCESS(I,CLK) BEGIN IF I=0 THEN q =0; ELSIF I=1 THEN qDOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7=0000000; END CASE; END PROCESS;END ARCHITECTURE ART;(六)控制模块VHDL源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;E
16、NTITY kongzhi IS PORT( c,p:in std_logic; o :out std_logic );end kongzhi;architecture s_1 of kongzhi isbegin process(p,c) begin if p=1 then o=0; elsif p=0 then o=c;end if;end process;end s_1;说明:本模块类似三态门的性质,作用是控制时间停止,当有选手抢答时,抢答鉴别模块输出一高电平,用它来封锁时钟信号,进而让时钟停止(七)主电路连线图(1)电路图(2)功能仿真图(八)将程序下载到芯片FLEXEPF10LC84
17、-4上,引脚图如下四、器件编程与下载将编译好的模块程序下载到CPLD中(注:device选取要与硬件对应,否则会导致实验失败),连线做硬件实验。五、性能测试与分析按下rst键清零,按下s键,观察数码管是否开始倒计时,扬声器是否发出报警声,按下s0,观察数码管是否显示1和抢答的时间,再按s1,s2.s3均不改变显示,按下rst键,观察是否清零,再按s键,不按别的,直到计时时间到,观察是否显示00,扬声器是否发出报警。 六、实验设备计算机,EL教学实验箱七、心得体会 经历这次实验,我体会颇多: 首先,对知识的理解上有了很大的提高,知道了自己所学跟应用是怎么回事,并且综合自己所有所学过的知识来做这次
18、课设,让我切实感受到了“书到用时方恨少”,知识需要的是积累的过程。 然后,团队能动性,我们三人在实验过程中各有分工,都能保证完成自己的任务,进而保证了课设题目我们能最早的完成。 其次,教训也是有的,这次课设我们也走了弯路,最初设计的电路没有考虑到数码管的显示问题,等到真正上机试验的时候才知道,当时只好重新制作程序,可谓是真吃了会不懂得亏,给我以后做设计的时候提了个醒,一定要知道要做的完整设计。 最后,感谢老师的指导,没有老师悉心的指导我们不可能有如此的进步,短短两个月的时间,老师让我们从零变到了自己搞小设计,而且在这么短的时间内。八、参考文献李国洪,沈明山:可编程逻辑器件EDA技术与实践,机械工业出版社指导教师评语及设计成绩 评 语 课程设计成绩: 指导教师: 日期: 年 月 日忽略此处.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1