CN
EN
利用有限状态机的交通灯控制系统设计与仿真

2022-06-28

  及其转移关系的定义,运用多进程方式描述硬件模块的逻辑关系,用VHDL语言编程实现了,并在实验箱上进行功能测试,正确实现了预期功能。仅用一片可编程逻辑器件,即完成需要的控制功能,

  实现路通灯控制器系统的方法很多,可以用标准逻辑器件、可编程序控制器PLC、单片机等方案来实现。但是这些方法在进行功能修改及调试时,都涉及硬件电路的调整,在一定程度上增加了工作的难度。随着电子技术的迅猛发展,集成电路的设计方法也在不断地更新,传统的“固定功能集成电路+连线”的手工电子设计方法已被现代的对“芯片”进行设计的电子设计自动化(EDA)的设计方法所替代,使用“语言”进行电子电路设计已成为一种趋势。笔者设计开发的交通信号灯控制器系统,采用EDA技术和可编程逻辑器件FPGA,应用VHDL有限状态机来设计控制系统的控制功能,并可根据实际情况对灯亮时间进行自由调整,整个系统通过OuartusⅡ软件平台进行了仿真,并下载到FPGA器件EP1C120240C8中进行调试,验证了设计的交通信号灯控制电路完全可以实现预定的功能。该系统可以较好地缓解交通压力,并可实现对突发事件进行紧急处理,具有一定的实用性。

  有限状态机FSM(finite state machine)由有限的状态及其相互之间的转移关系构成。从有限状态机的角度看,许多数字系统中的时序电路都可以用其来描述,因此,有限状态机是一种重要的、易于建立的、比较规范、以描述控制特性为主的建模方法,它可以应用于从系统分析到设计的所有阶段。同时,因为有限状态机具有有限个状态,所以可以在实际的工程上实现。但这并不意味着其只能进行有限次的处理。相反,有限状态机是闭环系统,可以用有限的状态,处理无穷的事务。

  在用VHDL语言来设计实用系统的控制功能时,通常会选用有限状态机方法来实现,因为无论与VHDL的其他设计方案相比,还是与可完成相同功能的CPU相比,有限状态机有其独特的、难以超越的优越性,主要表现在以下几个方面:

  1)有限状态机由纯硬件来实现,工作方式是根据控制信号按照预先设定的状态进行顺序运行,在运行和控制方式上类似于控制灵活和方便的CPU,而在设计中能使用各种完整的容错技术,使其在运行速度和工作可靠性方面又都优于CPU。

  2)用VHDL设计有限状态机,设计流程和方案相对固定,程序层次分明,程序结构简单清晰,特别是可以定义符号化枚举类型的状态,使VHDL综合器对状态机具有强大的优化功能。

  3)状态机容易构成性能良好的同步时序模块,为了消除电路中的毛刺现象,在有限状态机设计中有多种设计方案可供选择,相比其他硬件设计方法,电路的完善性更能得到保证。

  因此,在控制灵活、高速、高可靠性要求的系统设计中应用VHDL设计有限状态机将是非常实用的选择。

  利用VHDL的有限状态机设计不同实用逻辑控制系统时,通常采用枚举类型来定义状态机的状态,这样可以获得可综合的、高效的VHDL描述,并且使用多进程方式来描述状态机的内部逻辑。例如:可用两个进程来描述,一个进程描述时序逻辑功能,通常称为时序进程;另一个进程描述组合逻辑功能,即组合进程,必要时还可以引入第3个进程完成其他的逻辑功能,另外还需要相应的说明部分,在说明部分用TYPE定义新的数据类型和状态名,以及在此新数据下定义的状态变量。

  作为一个十字路通信号灯控制系统,每条道路都需要有一组红、绿、黄灯和倒计时计数器,用于指挥车辆的有序通行。为便于区分,将十字路通信号灯分为主路a和支路b,应具有以下功能:

  1)主路a和支路b各设置两组(双向)红灯、绿灯、黄灯,以指示通行状态:同时还设置数字式的时间显示,以倒计时方式显示每一路允许通行或禁止通行的剩余时间。

  3)当主路a或支路b出现紧急情况时,按紧急情况键可进入紧急情况状态,各方向(两路)均亮红灯,倒计时停止。当特殊情况结束时,控制其恢复到电路的原来状态继续运行。

  按照功能分析的要求,自顶向下,设计交通灯控制系统的整体组成框图如图1所示,它主要由分频模块,交通灯控制与倒计时模块和动态扫描显示控制模块组成。分频电路用于产生倒计时控制电路所需的周期为1 s的时钟信号频率;倒计时控制电路控制交通信号灯(红、绿、黄)的亮灯时间和亮灯顺序。根据对VHDL的使用熟悉程度,可对各模块继续分解,可视情而定。

  在交通灯控制系统中,交通灯控制与倒计时模块是系统的核心部分,采用有限状态机设计实现。主路a和支路b分别控制该方向上红、绿、黄信号灯的亮灯时间和亮灯顺序,正常工作时共有St0、St1、St2、St3 4种状态,每个状态之间的具体关系如表1所示,其中,red1_cn t、green1_cnt、yellow1_cnt和red2_cnt、green2_cnt、yellow2_cnt分别表示主路a和支路b上红绿黄灯所亮灯的时间,这里可自己定义倒计时时间。其状态转换图如图2所示。ent为倒计时的计数值,同时用它来判断是否进入下一个状态。