《eda课程设计抢答器.doc》由会员分享,可在线阅读,更多相关《eda课程设计抢答器.doc(19页珍藏版)》请在三一办公上搜索。
1、1 引言EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA 技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
2、传统的设计方法采用自底向上的设计方法,一般先按电子系统的具体功能要求进行功能划分,然后对每个子模块画出真值表,用卡诺图进行手工逻辑简化,写出布尔表达式,画出相应的逻辑线路图,再据此选择元器件,设计电路板,最后进行实测与调试,由于无法进行硬件系统功能仿真,如果某一过程存在错误,查找和修改十分不便,所以这是一种费时、费力的设计方法,而现代电子设计技术(EDA)是自顶向下且先进高效的。在电子产品的设计理念、设计方式、系统硬件构成、设计的重用性、知识产权、设计周期等方面,EDA技术具有一定的优势。所以本次设计的抢答器抛弃了传统的设计方法,选择了采用主流的EDA技术进行设计。智力竞赛是“快乐学习”这一教
3、育模式的典范,它采用在规定的一段时间内抢答和必答等方式,在给人们的生活带来乐趣的同时,也使参与者和观众在愉悦的氛围中学到一些科学知识和生活知识,因此很受大家的喜欢。智力抢答器在智力竞赛中起到很重要的角色,能够准确、公正、直观地判断出首轮抢答者,并且通过抢答器的数码显示和警示蜂鸣等方式指示出首轮抢答者。2 VHDL硬件描述语言及硬件平台QuartusII概述2.1VHDL硬件描述语言VHDL全名Very-High-Speed Integrated Circuit HardwareDescription Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件
4、描述语言 。自IEEE-1076(简称87版)之后,各EDA公司相继推出自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,简称93版。VHDL和Verilog作为IEEE的工业标准硬件描述语言,得到众多EDA公司支持,在电子工程领域,已成为事实上的通用硬件描述语言。2.1.1 VHDL简介VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种
5、使用范围较小的设计语言 。VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部
6、界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。与其他硬件描述语言相比,VHDL具有以下特点:1.功能强大、设计灵活VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。2.支持广泛、易于修改由于VHDL已经成为IEEE标准所规范的硬件描述语言,目
7、前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。3.强大的系统硬件描述能力VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。4.独立于器件的设计、与工艺无关设计人员用VH
8、DL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。5.很强的移植能力VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。6.易于共享和复用VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。2.1.2 VHDL优势1.与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,
9、从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。2.VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。3.VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。4.对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。5.VHDL对设计的描述具有相对独立性,设计
10、者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。2.2硬件平台QuartusII概述2.2.1 Quartus II介绍Quartus II是Altera 公司单芯片可编程系统(SOPC) 设计的综合性环境,也是适合SOPC的最全面的设计环境。它拥有现场可编程门阵列(FPGA) 和复杂可编程逻辑器件(CPLD) 设计的所有阶段的解决方案。Quartus II 设计软件改进了性能、提升了功能性、解决了潜在的设计延迟等,在工业领域率先提供FPGA与mask-programmed devices开发的统一工作流程。同时,Altera的Quartus II可编程逻辑软件
11、还属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。同样,Quartus II具备仿真功能,同时也支持第三方的仿真工具。Quartus II支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块进行调用,从而解决了原理图与HDL混合输入设计的问题,并且在设计输入之后,Quartus II的编译器将给出设计输入的错误报告。在设计实验过程中有以下几点需要注意:1.在编程时要注意信号与变量的区别,并能正确定义和应用。2.在创建工程时,要注意工程名和文件名和实体名要保持一致
12、;3.设计结束时间时最好是时间周期的15倍,否则可能会出现时序图图像重叠不好识别的现象;4.仿真中,适当进制的转换有时候可以更使观察者更明显地看出来时序图的功能。2.2.2 Quartus II的设计优势应用举例随着逻辑设计复杂性的不断增加,仅依赖于软件方式的仿真测试来了解设计系统的硬件功能已经远远不够了,而需要重复进行硬件系统测试的测试也变得更为困难。嵌入式逻辑分析仪SignalTapII的使用就解决了这一问题。它可以随设计文件一并下载于目标芯片中,用以捕捉目标芯片内部系统信号节点处的信息或总线上的数据流,而又不影响原硬件系统的正常工作。【4】嵌入式逻辑分析仪SignalTapII有很多的优
13、点:(1)允许对设计层次的模块的信号节点进行测试,可以使用多时钟驱动;(2)利用Signal Tap II成功的采集了FPGA内部信号的波形,不占用额外的I/O引脚;(3)Signal Tap II为硬件板级调试工具,它采集的波形是工程下载后的实时波形,方便设计者查找引起设计缺陷的原因;(4)节约成本。Signal Tap II集成在Quartus II软件中,无需另外付费;(5)能通过设置以确定前后触发捕捉信号信息的比例.除此之外,应用Signal Tap II还能解决各种各样的问题,如外部存储器的双向数据口的实时波形检测、驱动模块的并串转换波形等。3 智能抢答器系统的设计与实现3.1 抢答
14、器系统设计要求 本文是设计的一个四路智力竞赛抢答器,利用VHDL设计抢答器的各个模块,并使用EDA 工具对各模块进行仿真验证。智力竞赛抢答器的设计分为四个模块:鉴别锁存模块;答题计时模块;答题超时提醒模块以及显示模块。把各个模块整合后,通过电路的输入输出对应关系连接起来。设计成一个有如下功能的抢答器:(1)设计一个四组人参加的智力竞赛抢答计时器,它具有四路抢答输入,主持人按下复位键后,系统复位进入抢答状态,计时显示初始值; (2)某组首先按下抢答键,该路抢答信号,竞赛抢答器能够设别最先抢答的信号,锁定该信号,同时扬声器响起,参赛小组的序号在数码管上显示;(3)主持人对抢答结果进行确认,给出倒计
15、时计数允许信号,开始回答问题,计时显示器从初始值开始以秒为单位倒计时,计数至0时,停止计数,扬声器发出超时报警信号,以中止继续回答问题;(4)当主持人给出倒计时计数禁止信号时,扬声器停止鸣叫;(5)参赛者在规定时间内回答完问题,主持人给出倒计时计数禁止信号,以免扬声器鸣叫,按下复位键,又可开始新一轮的抢答;3.2系统总体设计思想 本设计为四路智能抢答器,所以这种抢答器要求有四路不同组别的抢答输入信号,并能识别最先抢答的信号,直观地通过数显和蜂鸣等方式显示出组别;对回答问题所用的时间进行计时、显示、超时报警、预置答题时间,同时该系统还应有复位、倒计时启动功能。抢答过程:主持人按下系统复位键(RS
16、T),系统进入抢答状态,计时模块输出初始信号给数码显示模块并显示出初始值。当某参赛组抢先将抢答键按下时,系统将其余三路抢答信号封锁,同时扬声器发出声音提示,组别显示模块送出信号给数码显示模块,从而显示出该抢答成功组台号,并一直保持到下一轮主持人将系统清零为止。主持人对抢答结果进行确认,随后,计时模块送出倒计时计数允许信号,开始回答问题,计时显示器则从初始值开始以计时,计时至0时,停止计时,扬声器发出超时报警信号,以中止未回答完问题。当主持人给出倒计时停止信号时,扬声器停止鸣叫。若参赛者在规定时间内回答完为题,主持人可给出倒计时计数停止信号,以免扬声器鸣叫。主持人按下复位键,即RST为高电平有效
17、状态,清除前一次的抢答组别,又可开始新的一轮的抢答。总系统框图如图3.1所示第一信号输出第一信号鉴别,锁存时间报警答题组序号倒计时器确认键EN禁止信号STOP抢答蜂鸣蜂鸣停止倒计时停止抢答信号主持人复位RST图3.1 系统框图3.3子模块的设计思想和实现根据对抢答器的功能要求,把要设计的系统划分为4个功能模块:抢答信号鉴别模块、计时模块,报警模块和数码显示模块 。3.3.1 抢答信号鉴别模块的设计与实现抢答鉴别模块用来准确直观地判断A、B、C、D四组抢答者谁最先按下按钮,并为显示端送出信号,通过数显和蜂鸣等途径使观众能够清楚地知道是哪一组抢答成功,是整个系统的核心部分。同时组别显示端为下一模块
18、输入信号,以方便主持人为该组抢答成功者进行确认。输入信号:各组的抢答按钮A、B、C、D,系统清零信号rst。输出信号: 各组的抢答按钮显示端A1、B1、C1、D1,组别显示端state3.0。原理:第一个按下键的小组,抢答信号判定电路LOCK通过缓冲输出信号的反馈将本参赛组抢先按下按键的信号锁存,组别显示和计时会保存到主持人对系统进行清零操作时为止。当rst=1时系统复位,使组别显示信号G=0000,各组的指示灯信号A1=0,B1=0,C1=0,D1=0;当rst=0,即低电平有效,使其进入抢答鉴别状态,到CLK的上升沿到来时,以A组抢答成功为例,当输入信号为A=1,B=0,C=0,D=0,输
19、出信号G=1000,A1=1,即为鉴别出A组抢答成功,同时屏蔽其他组的输入信号,以免发生错误。同理其他组别抢答成功也是这样的鉴别过程。理论上来说,A、B、C、D四组抢答,应该有从00001111等16种可能情况,但是由于时钟信号的频率很高而且是在时钟信号上升沿的状况下才做出的鉴别,所以在这里两组以上同时抢答成功的可能性非常小,因此可以只设计四种情况,即A、B、C、D分别为1000、0100、0010、0001,这大大简化了电路的设计复杂性。鉴别锁存电路可以由VHDL程序来实现,以下是一断鉴别锁存的VHDL程序:process(rst,a,b,c,d,clk) variable temp :st
20、d_logic_vector (3 downto 0);begin if rst=1then temp:=0000;speaker1=0; elsif(a=1and b=0and c=0and d=0)then a1=1; b1=0;c1=0;d1=0;temp:=0001;speaker1=1; elsif(a=0and b=1and c=0and d=0)then a1=0; b1=1;c1=0;d1=0;temp:=0010;speaker1=1; elsif(a=0and b=0and c=1and d=0)then a1=0; b1=0;c1=1;d1=0;temp:=0011;sp
21、eaker1=1; elsif(a=0and b=0and c=0and d=1)then a1=0;b1=0;c1=0;d1=1;temp:=0100;speaker1=1; elsif (a=0and b=0and c=0and d=0) then a1=0; b1=0;c1=0;d1=0;temp:=0000; end if; if en=1 then speaker1=0;end if;states=temp; end process;鉴别锁存电路由VHDL程序实现后,可以根据数码管显示判断抢答成功组号的,其仿真图如图3.3.1所示。 图3.3.1 抢答信号鉴别模块仿真图引脚作用:系统
22、输入信号:各组的抢答按钮A、B、C、D,系统清零信号CLR,CLK时钟信号。系统的输出信号: 各组的抢答按钮显示端A1、B1、C1、D1,组别显示端控制信号state。仿真分析:当鉴别模块的清零信号CLR为高电平时,无论A、B、C、D四组参赛者谁按下抢答按钮,系统输出均为零,同时组别显示端G输出信号也显示为零;当清零信号CLR为低电平时,A、B、C、D四组参赛者谁先按下抢答按钮,组别显示端就显示该组别的号码。假如A组按下抢答按钮时,组别输出为0001,同时A组的显示灯被点亮。3.3.2 计时模块的设计与实现当抢答鉴别模块成功判别出最先按下抢答按钮的参赛组后,在成功鉴别出哪组最先抢答后,主持人按
23、下计时信号,则进入计时状态。10秒时间用两个数码管QA,QB显示,其中QA表示10秒的个位,QB表示10秒的十位。采用两个数码管以方便随时对预置的时间进行调整。计时模块开始工作从预置初始值开始以秒计时,计时至0秒时停止,时间耗尽时,计时报警器会发出超时报警信号,以中止答题。该系统输入信号有:系统清零信号CLR,计时使能端EN,系统时钟信号CLK,系统输出信号有:倒计时输出端QA3.0、QB3.0。当清零信号CLR=1时,模块输出信号QA=0000 ,QB=0000。在CLR=0, EN=1时,通过时钟信号CLK的上升沿来进行10秒到计时。当EN使能信号发出时,抢答蜂鸣器停止蜂鸣。计时电路可以由
24、VHDL程序来实现,以下是计时的VHDL程序:variable tmpa: std_logic_vector(3 downto 0);variable tmpb: std_logic_vector(3 downto 0);begin if rst=1 then tmpa:=0000;tmpb:=0001; speaker2=0;-fuwei elsif clkevent and clk=1 then if en=1 then if con=1or(tmpa=0000 and tmpb=0000)then qa=tmpa;qb=tmpb; elsif tmpa=0000 then tmpa:=1
25、001; if tmpb=0000 then tmpb:=0010; else tmpb:=tmpb-1; end if; else tmpa:=tmpa-1; end if; end if; end if; qa=tmpa;qb=tmpb; if tmpa=0000 and tmpb=0000 then - time over speaker2=1; if s=1 then speaker2=0; end if; end if; end process;答题计时电路由VHDL程序实现后,其仿真图如图3.3.2所示。 图3.3.2 计时电路模块仿真图引脚作用:系统输入信号:系统清零信号CLR,
26、系统时钟信号CLK系统输出信号:倒计时输出端QA3.0、QB3.0。仿真分析:当系统清零信号CLR=1时,计时器的时钟信号回到计时预置倒计时起始状态,此时倒计时输出端QA=0000,QB=0000.当计时使能端EN=1,系统清零信号CLR=0,通过时钟信号上升沿CLK来进行10秒倒计时。当小组开始答题时,答题倒计时的数码管显示信号qa,qb会从初始值开始以秒为单位倒计时,计数至0时,停止计数。3.3.3答题超时提醒模块计时显示器从初始值开始以秒为单位倒计时,计数至0时,停止计数,扬声器发出超时报警信号,以中止继续回答问题。当主持人再按下禁止键时,扬声器停止报警。该系统输入信号有:声音停止信号s
27、,系统输出信号有:倒计时输出端speaker2。process(clk)is variable tmpa: std_logic_vector(3 downto 0); variable tmpb: std_logic_vector(3 downto 0); begin if rst=1 then tmpa:=0000;tmpb:=0001; speaker2=0;-fuwei elsif clkevent and clk=1 then if en=1 then if con=1 or (tmpa=0000 and tmpb=0000 )then qa=tmpa;qb=tmpb; elsif t
28、mpa=0000 then tmpa:=1001; if tmpb=0000 then tmpb:=0010; else tmpb:=tmpb-1; end if; else tmpa:=tmpa-1; end if; end if; end if; qa=tmpa;qb=tmpb; if tmpa=0000 and tmpb=0000 then - time over speaker2=1; if s=1 then speaker2=0; end if; end if; end process;答题超时提醒电路由VHDL程序实现后,其仿真图如图3.3.3所示图3.3.2答题警告模块仿真图系统
29、输入信号:及时使能EN,系统时钟信号CLK系统输出信号:倒计时输出端QA3.0、QB3.0。仿真分析:当系统清零信号CLR=1时,计时器的时钟信号回到计时预置倒计时起始状态,此时倒计时输出端QA=0000,QB=0001.若在指定时间内没有回答完问题,计时器倒计时到00,计时报警器speaker2为高电平。按下s使其停止报警。3.3.4 译码显示模块的设计与实现该模块实际上是一个译码器,作用是用来显示组别和时间,其主要原理是四位二进制BCD编码转换成七段二进制数字,以阿拉伯数字的形式输出在数码管上,使观众能够更直观的看到结果。译码器的译码对照表3-1如下所示:表3-1 译码器的译码对照表显示的
30、数字/字母BCD编码七段数码管2进制000000111111100010000110200101011011300111001111401001100110501011101101601101111101701110000111810001111111910011101111XXXXX0000000备注 :在程序中只考虑0000-1001(即0-9)的情况,将其转化为相应的七段显示器的码子,其他情况不予考虑。结束语本文主要介绍了利用VHDL语言设计智能抢答器的详细流程,并横向介绍了一些关于此设计的背景知识,比如EDA的应用、Qutartusr设计流程等等。在设计的过程中,文章通过对比传统的自底
31、向上的设计方法和和现代EDA的自顶向下的设计方法,突出了EDA设计方法的优越性。在这次设计中,我们也遇到了一些问题,比如设置输入信号不合适时,时序图也会出现一些毛刺现象。同时,我也发现了自己的许多不足。首先,最初开发时,对系统没有一个完整的思路,考虑不是很全面,所以系统功能设计时,碰到不少困难,也耽搁了不少时间。其次,我发现自己对于书本上的很多知识还不够熟悉,对开发工具的掌握还不算很全面,有很多我们需要掌握的知识还没掌握,所以在设计编程、编译以及仿真过程中走了不少弯路。再次,在论文的整理过程中,我对word文档的操作技能不是很娴熟,所以在以后的学习生活中,我会努力并尽量弥补我所缺少的一些相关知
32、识,不断提高自己的操作能力。参考文献1 汉泽西.EDA技术与应用.北京:北京航空航天大学出版社,20042 侯伯亨,顾新. VHDL硬件描述语言与数字逻辑电路设计.西安:西安电子科技大学出版社,19973 黄任.编著VHDL入门、解惑、经典实例、经验总结.北京:北京航空航天大学出版社,20054 罗朝霞,高书莉.CPLD/FPGA设计及应用.北京:人民邮电出版社, 2007.7.5 陈云恰,保延翔.CPLD应用技术与数字系统统计.电子工业出版社, 2006.6 李伟英,谢完成.基于EDA技术的抢答器的设计与实现【J】.科学技术与实现, 2008.8(11).7谭会生,瞿遂存.EDA技术综合应用
33、实例与分析【M】.西安:西安电子科技大学出版社, 2004.8姜雪松,吴钰淳.VHDL设计实例与仿真.机械工业出版社, 2007.9Altera Corporation.Altera Digital Library.Altera,2002.10(美) Stephen Brown , Zvonko Vranesic 编著.Fundamengtals of Digital Logic with VHDL Design.McGrawHill Education(Asia),2002.8.附录library ieee;use ieee.std_logic_1164.all;use ieee.std_l
34、ogic_unsigned.all;entity eda is port(rst: in std_logic; a,b,c,d: in std_logic; a1,b1,c1,d1,speaker1,speaker2: out std_logic; states: out std_logic_vector(3 downto 0); en,clk,con:in std_logic; s:in std_logic; qa:out std_logic_vector(3 downto 0); qb:out std_logic_vector(3 downto 0);end eda;architectur
35、e art of eda is signal da: std_logic_vector(3 downto 0); signal db: std_logic_vector(3 downto 0); begin process(rst,a,b,c,d,clk) variable temp :std_logic_vector (3 downto 0); begin if rst=1then temp:=0000;speaker1=0; elsif(a=1and b=0and c=0and d=0)then a1=1; b1=0;c1=0;d1=0;temp:=0001;speaker1=1; els
36、if(a=0and b=1and c=0and d=0)then a1=0; b1=1;c1=0;d1=0;temp:=0010;speaker1=1; elsif(a=0and b=0and c=1and d=0)then a1=0; b1=0;c1=1;d1=0;temp:=0011;speaker1=1; elsif(a=0and b=0and c=0and d=1)then a1=0; b1=0;c1=0;d1=1;temp:=0100;speaker1=1; elsif (a=0and b=0and c=0and d=0) then a1=0; b1=0;c1=0;d1=0;temp
37、:=0000; end if; if en=1 then speaker1=0;end if;states=temp; end process;process(clk)is variable tmpa: std_logic_vector(3 downto 0); variable tmpb: std_logic_vector(3 downto 0); begin if rst=1 then tmpa:=0000;tmpb:=0001; speaker2=0;-fuwei elsif clkevent and clk=1 then if en=1 then if con=1 or (tmpa=0
38、000 and tmpb=0000 )then qa=tmpa;qb=tmpb; elsif tmpa=0000 then tmpa:=1001; if tmpb=0000 then tmpb:=0010; else tmpb:=tmpb-1; end if; else tmpa:=tmpa-1; end if; end if; end if; qa=tmpa;qb=tmpb; if tmpa=0000 and tmpb=0000 then - time over speaker2=1; if s=1 then speaker2=0; end if; end if; end process;end ;