杜玉远
CPLD是一种复杂可编程逻辑器件,具有高集成度、高密度、高速度的特点。将原有采用中小规模集成电路(LSI)设计的电路改造为由CPLD实现,既可以提高系统的集成度,又可以提高系统的可靠性。另外,由于CPLD具有在系统编程的功能,可在不改变印刷电路板的情况下改变电路功能,这样可以为系统提供更多的冗余功能。本文介绍一种采用CPLD设计实现智能交通信号灯控制器方法,改变了原有控制器的体积较大、故障率高的缺点,并且增加了智能控制功能,使交通信号灯控制器具有更广泛的适应性。
工作原理
目前,在十字路口等待通行信号时,经常遇到在没有车辆需要通行的路口方向是通行的信号,而在有车等待的路口方向却是亮着红灯的情况。这样既浪费了司乘人员的时间,也浪费了马路的效率。另外,由于汽车在等待信号时还会排出尾气,也不利于环保。为此,在采用CPLD设计新型交通信号灯控制器时,在控制器中增加了车辆检测电路。新的智能交通信号灯控制器的原理框图如图1所示。从图1中可以看出,控制器由车辆检测电路、定时电路、输出驱动电路和主控制电路组成。车辆检测电路由传感器和波形整形器构成,整个车辆检测电路有四路相同的支路构成,四个传感器被安放在十字路口停车线的位置,当有车辆到达路口时,就由相应路口的传感器产生请求通过信号,交通灯控制器根据此信号确定信号灯的变换。同时,还假设十字路口是由一条主干道和一条次干道汇合而成,并且主干道的车流量比次干道的车流量大。考虑到主、次干道车流量不同,主干道每次放行时间较长,次干道每次放行时间较短。当绿灯转换成红灯时,中间有一段黄灯亮的时间作为信号过渡期,以便车辆有时间停靠在停车线之外。这里设主、次干道放行时间分别为45s、25s,过渡时间为5s。定时电路用来完成这三种时间定时工作。主控电路将根据传感器信号和定时时间的状态控制信号灯的切换。输出驱动电路由光电耦合器和继电器驱动电路组成,用来控制信号灯开关。
智能交通信号灯控制器的实现
根据上述智能交通信号灯控制器的工作原理,可以得到如图2所示的智能交通信号灯控制器的控制状态转换图。为了设计实现智能交通信号灯控制器,引入逻辑变量和逻辑状态表示图2中的状态转换,主干道和次干道的传感器检测电路的输出用逻辑变量A、B表示,A代表主干道的传感器输出有效,即主干道有车要求通过,B代表次干道的传感器输出有效,表示次干道有车要求通过。定时电路的输出用逻辑变量L、S、P表示,它们分别代表45s、25s、5s定时器输出状态,当这些定时器定时时间到时,对应的逻辑变量L、S、P有效。主、次干道的通行状态用S0、S1、S2、S3 四个状态表示,其中用S0=00表示主干道通行状态,用S1=01表示主干道停车状态、用S2=11表示次干道通行状态,用S3=10表示次干道停车状态。用上述逻辑变量和逻辑状态替换图2中的逻辑状态转换图,就可以得到用逻辑变量来表示的状态转换图。这里由于篇幅有限省略此图,根据状态转换图,可以得到如表1所示的状态转换表。状态转换表中的Q1n 、Q2 n表示触发器现态,Q1 n+1、Q 2n+1表示次态触发器,表1中x代表任意态。
为实现表1所示的状态转换,根据表1 可以得到关于Q1n+1、Q2n+1的状态方程,状态方程经过化简表示如下:
为实现这两个的状态方程,选用两个JK触发器作为状态控制触发器,将上述Q1n+1、Q2n+1的状态方程与JK触发器的特征方程对照处理,可以得到两个JK触发器的驱动方程如下:
根据上述表达式,在MAXPLUS Ⅱ系统中,采用原理图输入方式设计的主控电路图如图3所示。
在主控电路中,输入信号L、S、P为定时电路的输出,它们分别为45s、25s、5s定时时间到的输出信号,在定时电路中,采用1Hz的信号作为时基信号,分别设计45进制,25进制和5进制三个计数器,就可以实现45s、25s、5s的定时信号、以25进制计数器为例,采用VHDL语言为输入方式的源程序见本刊网站。其它进制计数器的实现只需修改计数器的终值就可以实现,这里不再重述。
主控电路的状态输出经过译码电路,产生交通信号灯的开关控制信号。根据状态控制电路所产生的不同状态,来完成主干道和次干道的红灯、绿灯、黄灯之间的切换操作,根据图2给出的状态转换图,可以得出如表2所示交通信号灯开关状态的逻辑真值表。其中“1”表示信号灯亮,“0”表示信号灯灭。由此设计的译码电路如图4所示。
将上述各单元连接起来,就可以得到智能交通灯控制器设计的顶层图,如图5所示。所设计的顶层图包括5个单元,其中CNT45、CNT25、CNT5是3个计数器,实现定时功能,Control 是主控电路所对应的模块,decoder 是信号灯译码电路对应的模块。图5中的计数器模块的计数输出端这里没有使用,当需要有定时显示时,可以将其输出控制时间显示。
结 语
本文所给出的智能交通灯控制器的设计过程是采用自底而上(bottom-up)的设计方法,在初学EDA设计时,这是一种较为实用的设计方法,设计者可以很容易地从中小规模集成电路设计转为超大规模集成电路设计。与自底而上设计方法相对的还有自顶而下(top-down)的设计方法,这种设计方法一般被用在开发FPGA芯片,设计较为复杂时序电路时使用。
在本文所给出设计过程中,采用了两种设计输入方法:即原理图输入和VHDL语言输入。在对CPLD开发的过程中经常采用这种混合输入方式,设计者可以根据需要对不同电路,采用比较适宜的设计输入方式,来提高设计效率。