数字电路课程设计(一)——红绿灯设计方案总结报告指导教师:设计人员:班级:电信081日期:2010.4.13一、设计任务书1、题目:红绿灯控制器2、设计要求:设计一个红绿灯控制器设计应具有以下功能基本设计要求:设计一个红绿灯控制器控制器设计应具有以下功能(1)东西方向绿灯亮,南北方向红灯亮。.(2)东西方向黄灯亮,南北方向红灯亮。(3)东西方向红灯亮,南北方向绿灯亮。(4)东西方向红灯亮,南北方向黄灯亮。要求有时间显示(顺数、逆数皆可),时间自定。(大于15秒以上)二、设计框图及整机概述本课程设计在继承了原有的红绿灯的基本功能的基础上,有对其功能进行了很大的完善,其中主要包括:(1)可以对大小路口的绿灯及黄灯任意置数。(2)在倒计时3~0秒期间,当时正在点亮的绿灯或黄灯会进行闪烁。正是由于拥有了这两个功能,使得电路稍显复杂,现在将分别讲解其设计思路。本电路大体上可以分为四个部分,即:赋值电路部分、控灯闪烁部分、控制部分和核心计数部分。其中,赋值电路部分占据了大量的空间和芯片,其主要原理是数据选择。控灯闪烁部分的芯片较少,也没有占用太多空间,控制部分分布在系统的各个部分,可以说是系统的灵魂,它对整个系统进行着控制。核心计数部分比较简单,主要是进行计数并且产生进位信号。三、各单元电路的设计方案及原理说明(一)赋值电路部分赋值电路的设计是整个电路设计最复杂的一个环节,其主要问题主要集中在(1)对于一个计数器的数据输入端,如何使之在不同时刻数据不同,即:如果假设绿灯为30秒,黄灯5秒,在对绿灯倒数计数时,则计数器的输入端应该为30,在置数信号到达时即可将其置数到输出端,并可开始计数。而当这30秒将要倒数完成时,又要考虑将输入端数据变成05(2)如果设计成任意输入数据,将以何种方式进行输入。在设计这部分的电路时我首先想到的是第二个问题,开始阶段我所采用的是74LS151,同时决定给每一位个数据分配一个控制开关,但是,问题显而易见,开关太多了……粗略估计了一下,大概需要四十个左右……所以显然方案不行。之后想到了可以用脉冲的方法对计数器进行计数,即通过对计数器的CLK端不断的接高低电平,以达到将想要赋的数存储在计数器中的目的。就是利用的这种不断开起闭合开关的方法,从而将需要赋给核心计数部分的数据先储存起来。完成这部分功能的器件,我选择了74LS160和开关若干。经过上面的叙述,已经了解了如何将想要实现的大路小路的各种灯的点亮描述输入进来,以及输入系统之后的储存原理。下面所要讲述的是如何将已经输入到系统中,并暂时储存的数据,分时段赋给计数部分份的原理。从我的原理图可以看到,左侧有四个模块,每个模块由若干个74LS160和74LS153组成,且线路是相互垂直连接的,其中上面两个模块负责的是对黄灯和绿灯时间的计数,现以这两部分进行讲解。74LS153的作用是对已经存储在74160中的数据进行选择。设上数第一个模块为模块A,第二个为模块B。A的作用是对秒的十位进行赋值,B的作用是对秒的个位进行赋值。现以实例讲解:设要求输入大路口绿灯25秒,黄灯04秒,小路口绿灯15秒。同时可以得出,小路口红灯30秒,大路口红灯20秒。则在模块AB中的74LS160从上到下所存储的数据为2(0010)、1(0001)、5(0101)、4(0100)、5(0101)。AB中的数据选择器负责对这些数据进行选择,并输出给计数部分。当数据选择器中的输入端AB为00是,即输出所有AB中的数据选择器的1*0,2*0项,即,A模块通过两个153将输出0010(2),并赋给负责计秒数十位的核心计数部分的74190.B模块通过两个153将输出0101(5),即,此时的核心计数部分负责绿灯黄灯秒数的计数器74190的输入端00100101(25),只要给一个合适的信号使其置数到输出端,即可开始进行倒数计数,当倒数到3秒时,将会给控制部分一个信号,使之经过一系列处理之后会使AB中的74153中的输入端由00变为01,这样,会使数据选择器中的1*1,2*1项全部输出,以此类推,就会实现在同一块计数器上的不同数据计数。(二)控灯闪烁部分控灯闪烁部分可以说是本电路的另一个亮点,本人只用了三个或门和两个74LS48就完成了这部分的设计。在设计之初,问题主要集中在让其闪烁的信号从哪里来。经过思考,我想到,如果能有一种电路,它在使能端为1时能够正常的将数据从输入送到输出,而在使能端为零时则能过将输出端置零。这样,将6个灯的信号通过这种原件,在平时倒数计数时,信号可以正常通过,即对亮灯是没有影响的,而当倒数计时到达三秒时,则会通过控制部分,使得使能端的信号变为一个脉冲,即,脉冲为1时,灯照常亮,而当脉冲为0时,电路的输出端被清零,灯熄灭,当脉冲再次为1时,输出端又将拥有输入端的数据,即,刚刚熄灭的等又会亮,由此下去,在3~0秒期间,脉冲不断的作用于使能端,从而使得灯不断的亮灭,以达到闪烁的目的。有了基本的原理后,其主要的问题是(1)选择那种芯片?(2)使能端的信号怎么来保证?(3)如果只解决了上述的两个问题的话,会出现一个问题,就是当倒数到3~0期间,所有在该时刻的点亮的灯是都会闪的,这其中也包括了红灯。而显示中,红灯是不需要闪烁的,因此,需要一种控制电路来完成在不同时刻,哪个会闪烁而哪个不会闪烁。对于问题一,最初,我所想到的芯片是可以异步清零的计数器芯片,但是,要用其完成在使能端使之正常工作时,输入输出相当于通路的功能显而易见十分困难。之后,又想到了74LS48,之所以想到了这块芯片,主要是因为它能够灭0。但是,7448的主要功能是一个为LED所搭配使用的译码器,这时,如果要想上述的输入输出一样的功能的话,就需要去研究其功能表。经过研究发现,确实存在这样的输入输出端,从而使得这块芯片得以利用。当然,研究这个功能表大概花费了我两个小时的时间。对于问题二,主要采用的是将一个脉冲信号与一个控制信号通过或门,并将输出接在使能端的方法,具体是,当倒数计数不3~0之间时,控制信号为0,即或门的输出仅仅决定于脉冲信号,这样,在0~3秒期间,灯会闪烁。而不在这个时间范围内时,控制信号会为1,即输出到使能端的信号一定为1。这样,就很好解决了信号问题。对于问题三,如果按问题二的解决办法,就会出现红灯闪烁的现象,我上面之所以会这么说是便于理解的缘故。实际上,还要将或门的输出端分别连入两个或门,让这两个或门的输出与两个芯片的使能端相连接。而这两个或门的另一个输入,则是其对应芯片红灯的反馈信号,即,如果这个芯片上的红灯会点亮,即为高电平时,这个连接在对应芯片使能端的或门输出信号会恒为1,而如果通过这个芯片的红灯信号为0(黄灯或绿灯亮),即红灯没有点亮,输入到或门的信号为0,这样,脉冲信号就可以输入进入使能端,这样,就完成了合理闪烁的功能。(三)核心计数部分核心计数部分我采用的是四片74LS190,其中,两片为一组,分别负责绿灯黄灯的计数和红灯的减法计数,该部分比较简单,需要注意的是计数器输出端在控制电路部分充当了反馈的作用,十分重要。(四)控制部分对于控制电路,我运用了大量的反馈以及状态的扩展。所谓的状态的扩展就是说,每当特定的端口产生进位信号时,其进位脉冲都会对与其相连的计数器产生计数信号,这样,不同的数据就代表了不同的状态。控制部分就是根据这些不同的状态对特定电路进行控制的。四.调试过程及结果分析开始阶段,置零开关是全部打开的,要注意的是,在运行到45秒后,一定要将这7个开关打开才可以在之后正常工作由于该设计的电路过于复杂,无法采用EWB进行很好的连线,因此我选用了ISIS进行模拟操作。模拟过程中,出现了许多的问题,同时也纠正了我的一些错误,例如,在赋数电路中,开始我所想到的方法存在很大的问题,其设计并不被软件所认可。经过我的努力,实验结果完全正确,并没有出现问题,这主要与我的赋值电路的稳定,和控制信号的稳定有关。五.设计、安装及调试中的体会这次设计我的收获颇丰,首先,本人的学习宗旨就是实践,平时的学习都是尽可能的以实践为基础,这次课程设计,使我的平日所学知识得到了很好的检验,对可以说是对数字电路课程的一次完整的复习。其次,课程设计绝对不是应付差事,而是要给自己设立一个高标准,并且在设计中不断的进行完善,就像我的这个红绿灯一样,实现能够随意置数和闪烁绝非易事,在不断的完善自己的设计方案和不断的提高要求的过程中,更能锻炼自己的思维能力。再次,通过这次学习,使我对数字电路这门课程有了更加深入的认识,例如,在对于一些芯片的应用上,绝对不能只是简单的按其的基本用法进行操作,而是要通过研究其真值表不断的挖掘出新的功能,在本设计中,我就采用了74LS15174LS138代替了部分门电路的功能,这样不仅对电路进行了简化,而且也更加的稳定易懂。同时,我对74LS48的应用也是十分的巧妙,这些都是通过对其功能表的研究得出的结论。最后,在设计的过程中,我充分的感受到了设计的乐趣,不断给自己增加难度的过程并不是对自己的苛刻,而是发自内心的希望能够做的更好,这样的心理让我并不急于应付差事,从而学到了更多的知识。在实际的模拟调试阶段,我感觉到了理论与实际的巨大差距,明明已经理论很完美的设计,在实际仿真时却漏洞百出。例如,在课堂上。对于计数器的级联,课本并没有涉及太多的知识,而在实际应用模拟时,却总是出现很多问题。还有,对于几个逻辑门的串联也知识停留在理论上的可行阶段,实际上在模拟时候就会在输出变成高阻态。总之,这次的课程设计,尤其是这个红绿灯的课程设计,让我体会到了很多东西,在不断推敲设计方案时,不仅对所学知识有了全新的认识,同时也对设计产生了浓厚的兴趣。还有就是通过这个设计,我也熟练掌握了ISIS这个软件。可以说,如果用心去做课程设计的话,收获一定会很大。六.对本次课程设计的意见及建议本次课程设计虽然学到了很多,但是我仍然觉得课程设计本身存在一些问题:1我个人觉得课程设计的题目设计稍有不合理,因为,首先来讲,做一个基本功能的红绿灯应该并非难事,如果只是按照基本的要求去做,要是专心的话基本一两天就搞定,很简单,例如,控灯的话,我只有一块一位寄存器外加两个或门就可以完成。对于第二个任意选择的题目来说,更是比红绿灯简单。两个题目都不是很难,我觉得与其说做两个都不是很难的题目,还不如去做一个复杂一点的题目。当然,每个人的能力不一样,因此,我建议可以出三道难度不同的题目由学生自由选择,根据题目的等级和学生的完成情况对其评分。2本次课程设计要求的软件为EWB,但是EWB操作起来并不是很方便,尤其是对复杂电路的布线,如果出现错误,那么乱的线,根本无法进行检查。总的来说,本次课程设计使我学到了很多东西。在今后的学习中我将再接再厉,争取取得更好的成绩!附录:原件清单:74LS1601174LS153874LS190474LS138174LS48274LS1513