抢答器终结版.docx
《抢答器终结版.docx》由会员分享,可在线阅读,更多相关《抢答器终结版.docx(31页珍藏版)》请在冰点文库上搜索。
抢答器终结版
河南机电高等专科学校
《可编程逻辑器件原理与应用》
课程设计报告
8路抢答器设计
专业班级:
医电131
姓名:
徐长伟
学号:
130411116
时间:
2015年6月
成绩:
基于VHDL语言的8路抢答器设计
摘要:
本课程设计分为主体电路和扩展电路两部分共同实现抢答器的锁存、显示与报警功能。
在本次设计中,系统开发平台为MAXplusⅡ,硬件描述语言是VHDL。
竞赛者可以分为8组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。
当第一个人按下按键后,则在显示器上显示该组的号码,对应的灯亮,同时电路将其他各组按键封锁,使其不起作用。
若抢答时间内无人抢答,则报警灯亮。
回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。
并且依据设计方案和设计平台完成了程序编写和程序调试,通过运行程序及时序波形的仿真有效验证了设计的正确性,初步实现了设计目标。
关键词锁存、显示;抢答器;MAXplusⅡ;VHDL。
目录
1引言1
1.1课程设计目的1
1.2课程设计具体要求及功能1
2EDA及MAXplusⅡ简介2
2.1EDA简介2
2.2MAXplusⅡ简介2
3设计方案3
3.1八路抢答器控制系统的设计思路3
3.2抢答器的系统结构及工作原理3
3.3具体实现5
4系统仿真15
4.1顶层模块及管脚介绍15
4.2仿真结果分析16
参考文献16
附录17
1引言
随着科学技术的不断发展,促使人们学科学、学技术、学知识的手段多种多样。
抢答器作为一种工具,已广泛应用于各种竞赛场合。
本课程设计以8路抢答器为理念,实现优先抢答、判决、锁存及数码管显示等功能。
在本次计中,系统开发平台为MAXplusⅡ[2]。
MAXplusⅡ是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。
MaxplusⅡ界面友好,使用便捷,被誉为业界最易用易学的EDA软件。
在MaxplusⅡ上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。
在本次设计中,采用的硬件描述语言是VHDL[1](Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage)。
VHDL语言是一种用于电路设计的高级语言。
VHDL主要用于描述数字系统的结构、行为、功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。
1.1课程设计目的
学习ALTERA公司的FPGA/CPLD的结构、特点和性能。
学习集成开发软件MAXplusII/QuartusII的使用及设计过程。
熟悉EDA工具设计数字电路设计方法,掌握VHDL硬件描述语言设计方法。
根据给定题目设计数字电路,来加深对可编程逻辑器件的理解和掌握。
1.2课程设计具体要求及功能
在所选择器件内完成八路抢答器的设计,要求设计完成后芯片具有抢答器的全部功能、包括显示和操作接口。
抢答器要求有八路抢答输入,抢答逻辑设计合理(具有抢答锁定),抢答编号显示,抢答成功指示,抢答完成后状态复位。
在相应的器件平台上完成设计的输入、编译、综合或适配通过。
8路抢答器控制系统是娱乐活动中经常使用的重要基础设备之一,根据抢答要求,系统所需实现的功能如下:
(1)主持人按键清零,数码显示0,蜂鸣器不叫,进入抢答状态。
(2)主持人发出开始命令,8人开始抢答。
其中一人先按下抢答键,蜂鸣器发出鸣叫,数码显示该人号码,其他人再按键,系统不再响应,直至主持人按键清零,下一次抢答开始。
2EDA及MAXplusⅡ简介
2.1EDA简介
EDA(ElectronicsDesignAutomation)技术是随着集成电路和计算机技术的飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。
它是为解决自动控制系统设计而提出的。
EDA在通信行业(电信)里的另一个解释是企业数据架构,EDA给出了一个企业级的数据架构的总体视图,并按照电信企业的特征,进行了框架和层级的划分。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计进行八路抢答器的系统,大量工作可以通过计算机完成,并可以将抢答器从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
2.2MAXplusⅡ简介
MaxplusⅡ是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。
MaxplusⅡ界面友好,使用便捷,被誉为业界最易用易学的EDA软件。
在MaxplusⅡ上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。
MaxplusⅡ的编译器还提供了强大的逻辑综合与优化功能,使用户比较容易地将设计集成到器件中。
●设计输入
MAXplusII软件的设计输入方式有多种,主要包括原理图输入方式、文本输入方式、波形设计输入方式、层次设计输入方式和底层设计输入方式。
因此,设计人员可以根据自己的实际情况灵活选择使用。
●设计编译
MAXplusII编译一个设计时,Compiler在设计文件中读取信息并产生编程文件和仿真文件,MessageProcessor(信息处理程序)可自动定位错误。
●设计校验
设计校验过程包括设计仿真和定时分析,仿真起的作用是测试逻辑操作和设计功能的完备性;TimingAnalyzer(定时分析程序)可分析设计的定时和延时情况。
●器件编程
MAXplusIIProgrammer是使用Compiler生成的编程文件对Altera器件进行编程的。
它可以用来对器件编程、校验和试验,是对设计功能进行的测试。
Altera公司器件的编程方法有许多种,可根据具体情况选择使用。
编译生成的配置文件经计算机并行通信口接到Altera专用编程电缆上,再接到器件的编程接口[6],利用应用软件提供的编程软件,Programmer即可对器件进行配置。
这种方法的优点是配置方便、迅速,便于修改。
MAXplus2在Windows2000/XP上一旦安装完毕,经过设置即可使用硬件下载功能。
在Windows2000上除了安装软件外,为了使用ByteBlaster(MV)下载功能,还必须安装硬件驱动(Drivers)以支持MAXplus2对PC机并行口的操作。
3设计方案
3.1八路抢答器控制系统的设计思路
抢答器同时供8名选手或8个代表队比赛,分别用8个按钮[a1]~[a8]。
设置一个系统清除和抢答控制开关Reset,该开关由主持人控制。
抢答器具有锁存与显示功能。
即选手按动按钮,锁存相应的编号,扬声器发出声响提示,数码显示选手号码。
其他人再按键,系统进行了优先锁存,不再响应,优先抢答选手的编号一直保持到主持人将系统清除为止,下一次抢答开始。
扩展功能:
该电路具有犯规报警功能。
当主持人未按下开关开始抢答前,参赛选手若按下开关,则抢答系统发出蜂鸣声报警并显示犯规组别。
3.2抢答器的系统结构及工作原理
(1)系统结构:
如图3.1所示为抢答器的结构框图,它由主体电路和扩展电路两部分组成。
主体电路完成基本的抢答功能,即开始抢答后,当选手按动抢答键时,能显示选手的编号,同时能封锁输入电路,禁止其他选手抢答。
扩展电路完成检测数码管工作情况。
其工作原理为:
接通电源后,主持人将开关拨到"清除"状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置于"开始"状态,宣布"开始"抢答器工作。
定时器倒计时,扬声器给出声响提示。
选手在定时时间内抢答时,抢答器完成:
优先判断、编号锁存、编号显示、扬声器提示。
当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。
如果再次抢答必须由主持人再次操作"清除"和"开始"状态开关。
图3.1抢答器结构框图
(2)工作流程:
抢答器的基本工作原理:
在抢答竞赛或呼叫时,有多个信号同时或不同时送入主电路中,抢答器内部的寄存器工作,并识别、记录第一个号码,同时内部的定时器开始工作,记录有关时间并产生超时信号。
在整个抢答器工作过程中,显示电路、语音电路等还要根据现场的实际情况向外电路输出相应信号。
抢答器的工作流程分为、系统复位、正常流程、犯规流程等几部分。
3.3具体实现
(1)抢答器的电路设计
1、抢答器电路总体结构:
如图3-2所示为总体方框图。
接通电源后,后台工作人员将检测开关S置“检测”状态,数码管
图3-2为总体方框图
在正常清除下,显示“
”;当后台工作人员将检测开关S置“抢答”状态,主持按系统清除按键,抢答器处于禁止状态,编号显示器灭灯;主持人松开,宣布“开始”,抢答器工作。
选手按动抢答按键,抢答器完成:
优先判断、编号锁存、编号显示。
当一轮抢答之后,优先抢答选手的编号一直保持到主持人将系统清除为止。
如果再次抢答必须由主持人再次按动系统清除按键。
图3.3抢答器总体方框图
2、优先判断与编号锁存电路:
其电路如图3.4所示。
电路选用优先编码器74LS148和锁存器74LS279来完成。
该电路主要完成两个功能:
一是分辨出选手按键的先后,并锁存优先抢答者的编号;二是禁止其他选手按键,其按键操作无效。
工作过程:
系统清除按键按动时,74LS279的四个RS触发器的置0端均为0,使四个触发器均被置0。
1Q为0,使74LS148的使能端=0,74LS148处于允许编码状态,同时1Q为0,使74LS48的灭灯输入端=0,数码管无显示。
这时抢答器处于准备抢答状态。
当系统清除按键松开时,抢答器处于等待状态。
当有选手将按键开关按下时,抢答器将接受并显示抢答结果,假设按下的是S4,则74LS148的编码输出为011,此代码送入74LS279锁存后,使4Q3Q2Q=100,亦即74LS148的输入为0100;又74LS148的优先编码标志输出为0,使1Q=1,即=1,74LS148处于译码状态,译码的结果显示为“4”。
同时1Q=1,使74LS148的=1,74LS148处于禁止状态,从而封锁了其他按键的输入。
此外,当优先抢答者的按键松开再按下时,由于仍为1Q=1,使=1,74LS148仍处于禁止状态,确保不会接受二次按键时的输入信号,保证了抢答者的优先性。
(74LS148为8线-3线优先编码器,图3.5为74LS148和74LS279的引脚图和真值表。
)
图3.474LS148为8线-3线优先编码器
Inputs
Outputs
H
H
Q0
L
H
H
H
L
L
L
L
Notsure
图3.574LS148和74LS279的引脚图和真值表
(2)抢答器的单元电路设计
简易逻辑数字抢答器由主体电路与扩展电路组成。
优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。
通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。
现简单介绍抢答器设计中的抢答电路、定时电路、报警电路、时序控制电路、显示及译码电路。
1、抢答电路:
参考电路如图3.6所示。
该电路完成两个功能:
一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。
工作过程:
开关S置于“清除”端时,RS触发器的
端均为0,4个触发器输出置0,使74LS148的
=0,使之处于工作状态。
当开关S置于“开始”时,抢答器处
经RS锁存后,1Q=1,
=1,74LS48处于工作状态,4Q3Q2Q=101,经译码显示为“5”。
此外,1Q=1,使74LS148
=1,处于禁止状态,封锁其他按键的输入。
当按键松开即按下时,74LS148的
此时由于仍为1Q=1,使
=1,所以74LS148仍处于禁止状态,确保不会出二次按键时输入信号,保证了抢答者的优先性。
如有再次抢答需由主持人将S开关重新置于“清除”然后再进行下一轮抢答。
(LS148为8线-3线优先编码器。
)
图3.6抢答电路
2、定时电路:
由节目主持人根据抢答题的难易程度,设定一次抢答的时间,通过预置时间电路对计数器进行预置,计数器的时钟脉冲由秒脉冲电路提供。
可预置时间的电路选用十进制同步加减计数器74LS192进行设计,具体电路如图3.7所示。
本设计是以555构成震荡电路,由74LS192来充当计数器,构成抢答器的倒计时电路。
该电路简单,无需用到晶振,芯片都是市场上容易购得的。
设计功能完善,能实现直接清零、启动。
图3.7定时电路
3、报警电路:
由555定时器和三极管构成的报警电路如图3.8所示。
其中555构成多谐振荡器,振荡频率fo=1.43/[(RI+2R2)C],其输出信号经三极管推动扬声器。
PR为控制信号,当PR为高电平时,多谐振荡器工作,反之,电路停振。
图3.8报警电路
4、时序控制电路:
时序控制电路是抢答器设计的关键,它要完成以下三项功能:
(a)主持人将控制开关拨到"开始"位置时,扬声器发声,抢答电路和定时电路进人正常抢答工作状态。
(b)当参赛选手按动抢答键时,扬声器发声,抢答电路和定时电路停止工作。
(c)当设定的抢答时间到,无人抢答时,扬声器发声,同时抢答电路和定时电路停止工作。
根据上面的功能要求,设计的时序控制电路如图3.9所示。
图中,门G1的作用是控制时钟信号CP的放行与禁止,门G2的作用是控制74LS148的输人使能端。
图4-3的工作原理是:
主持人控制开关从"清除"位置拨到"开始"位置时,来自于图4-1中的74LS279的输出1Q=0,经G3反相,A=1,则时钟信号CP能够加到74LS192的CPD时钟输入端,定时电路进行递减计时。
同时,在定时时间未到时,则"定时到信号"为1,门G2的输出
=0,使74LS148处于正常工作状态,从而实现功能①的要求。
当选手在定时时间内按动抢答键时,1Q=1,经G3反相,A=0,封锁CP信号,定时器处于保持工作状态;同时,门G2的输出
=1,74LS148处于禁止工作状态,从而实现功能②的要求。
当定时时间到时,则"定时到信号"为0,
=1,74LS148处于禁止工作状态,禁止选手进行抢答。
同时,门G1处于关门状态,封锁CP信号,使定时电路保持00状态不变,从而实现功能③的要求。
集成单稳触发器74LS121用于控制报警电路及发声的时间。
图3.9时序控制电路
5、显示与译码电路:
七段显示译码器与数码管如下图3.107段显示译码所示,74LS48将锁存器74LS279的信号译码,输出给数码管。
当后台工作人员将S置于GND,
=0,使灯测试输入端(图中3号)=1,这时测试数码管工作情况;当后台工作人员将S置于Vcc,
=1,使灯测试输入端(图中3号)=1,这时正常译码。
(74LS48为4线-七段译码器/驱动器,下图3.11为逻辑图)
图3.107段显示译码器与数码管
图3.1174LS48逻辑图
(3)基于VHDL的实体设计:
1、程序设计
编码程序:
LIBRARYieee;
USEieee.std_logic_1164.ALL;
ENTITYchangeIS
PORT(q1,q2,q3,q4,q5,q6,q7,q8:
INSTD_LOGIC;
clr:
INSTD_LOGIC;
m:
OUTSTD_LOGIC_vector(3downto0);
en:
OUTSTD_LOGIC);
ENDchange;
ARCHITECTUREaOFchangeIS
BEGIN
process(q1,q2,q3,q4,q5,q6,q7,q8,clr)
variabletemp:
STD_LOGIC_vector(7downto0);
begin
temp:
=q1&q2&q3&q4&q5&q6&q7&q8;
casetempis
when"01111111"=>m<="0001";
when"10111111"=>m<="0010";
when"11011111"=>m<="0011";
when"11101111"=>m<="0100";
when"11110111"=>m<="0101";
when"11111011"=>m<="0110";
when"11111101"=>m<="0111";
when"11111110"=>m<="1000";
whenothers=>m<="1111";
endcase;
en<=temp(7)ANDtemp(6)ANDtemp(5)ANDtemp(4)ANDtemp(3)ANDtemp
(2)ANDtemp
(1)ANDtemp(0)ANDclr;
endprocess;
ENDa;
锁存程序:
LIBRARYieee;
USEieee.std_logic_1164.ALL;
USEieee.std_logic_unsigned.ALL;
ENTITYlockIS
PORT(s1:
INSTD_LOGIC;
s2:
INSTD_LOGIC;
s3:
INSTD_LOGIC;
s4:
INSTD_LOGIC;
s5:
INSTD_LOGIC;
s6:
INSTD_LOGIC;
s7:
INSTD_LOGIC;
s8:
INSTD_LOGIC;
clr:
INSTD_LOGIC;
q1,q2,q3,q4,q5,q6,q7,q8:
OUTSTD_LOGIC);
ENDlock;
ARCHITECTUREaOFlockIS
BEGIN
process(s1,s2,s3,s4,s5,s6,s7,s8,clr)
begin
if(clr='0')then
q1<='1';q2<='1';
q3<='1';q4<='1';
q5<='1';q6<='1';
q7<='1';q8<='1';
else
q1<=s1;q2<=s2;
q3<=s3;q4<=s4;
q5<=s5;q6<=s6;
q7<=s7;q8<=s8;
endif;
endprocess;
ENDa;
抢答成功扬声器发声相关程序:
LIBRARYieee;
USEieee.std_logic_1164.ALL;
USEieee.std_logic_unsigned.ALL;
ENTITYcntIS
PORT(clk,en:
inSTD_LOGIC;
sound1:
outSTD_LOGIC);
ENDcnt;
ARCHITECTUREaOFcntIS
BEGIN
process(en,clk)
begin
if(clk'eventandclk='1')then
if(en='1')then
sound1<='1';
else
sound1<='0';
endif;endif;
endprocess;
ENDa;
数码管显示管相关程序:
LIBRARYieee;
USEieee.std_logic_1164.ALL;
USEieee.std_logic_unsigned.ALL;
ENTITYdisplayIS
PORT(m:
INSTD_LOGIC_VECTOR(3downto0);
BCD:
outSTD_LOGIC_VECTOR(7downto0));
ENDdisplay;
ARCHITECTUREaOFdisplayIS
BEGIN
PROCESS(m)
BEGIN
CASEmIS
WHEN"0000"=>BCD<="00111111";
WHEN"0001"=>BCD<="00000110";
WHEN"0010"=>BCD<="01011011";
WHEN"0011"=>BCD<="01001111";
WHEN"0100"=>BCD<="01100110";
WHEN"0101"=>BCD<="01101101";
WHEN"0110"=>BCD<="01111101";
WHEN"0111"=>BCD<="00000111";
WHEN"1000"=>BCD<="01111111";
WHEN"1001"=>BCD<="01101111";
WHENOTHERS=>BCD<="00000000";
ENDCASE;
ENDPROCESS;
ENDa;
2、编译管脚设置:
程序输入完成后然后选择用于编程的目标芯片:
选择菜单“Assign”→“Device”,窗口中的DeviceFamily是器件序列栏,先在此栏中选择MAX7000S。
然后选择EMP7128SLC84-15器件,按OK,就可以进行编译了,经“MAX+PLUSEII”中的“Compiler”菜单编译,以验证设计结果是否符合要求,如果有问题,则返回原设计文件再次进行修改,直到正确为止。
图3.20编码管脚
编译无误后经“MAX+PLUSEII”中的“FLOORPLANEDITOR”菜单,进行输入、输出管脚设置,将元件端口放置到EPM7128SLC84-15芯片适当的I/O口,并用手工调整按上图所示设置。
4系统仿真
4.1顶层模块及管脚介绍
编译成功后进行仿真。
首先建立波形文件。
波形文件建好并存盘后。
选择菜单“MaxplusII”→“simulator”,启动仿真操作,结束后观察仿真波形如图4.2所示。
从仿真波形看,符合设计要求(对应的管脚图和仿真图如下)。
图4.1顶层文件管脚图
图4.2顶层仿真波形图
s1,s2,s3,s4,s5,s6,s7,s8输入
q1,q2,q3,q4,q5,q6,q7,q8锁存输出
M编码输出和BCD显示输入
clk时钟控制信号
clr0,清零1为开始抢答
en抢答成功
BCD数码管显示输出
4.2仿真结果分析
抢答必须发声在一个时钟周期里且保证clr=1时才有效,而对应数码显示管模块可得知,若当“s1”抢答则数码管为"00111111"对应显示“06”,s1抢答成功且扬声器发声,抢答完成,其他号码抢答同理。