基于VHDL语言有限状态机的交通灯控制系统设计 下载本文

内容发布更新时间 : 2024/6/27 0:57:43星期一 下面是文章的全部内容请认真阅读。

龙源期刊网 http://www.qikan.com.cn

基于VHDL语言有限状态机的交通灯控制系统设计

作者:徐大诏

来源:《电脑知识与技术》2009年第27期

摘要:根据交叉路口交通灯控制的要求,以可编程逻辑器件(FPGA)为核心,应用VHDL语言和有限状态机的方法设计交通信号灯控制系统,在MAX+PLUS II环境下进行了仿真,结果显示该设计符合设计要求, 并在实验箱上进行测试,证实该设计方法切实可行。 关键词:交通灯;VHDL;有限状态机;仿真

中图分类号:TP391文献标识码:A文章编号:1009-3044(2009)27-7796-02

Design of Traffic Light Control System based on VHDL Finite State Machine XU Da-zhao

(Jiangsu Vocational and Technical College of Finance & Economics, Huaian 223003, China) Abstract: According to intersection traffic light control requirements, the paper puts forward a design of traffic light control system with VHDL and finite state machine. Under the MAX + PLUS II simulation, the results show that this design meets the design requirements, then carries on the test in the experiment box, confirmsthat this design method is practical and feasible. Key words: traffic light; VHDL; finite state machine; simulation

随着电子技术的发展,特别是大规模集成电路的研制和发展,电子电路的设计变得越来越复杂,使用“语言”进行电子设计已成为一种趋势[1]。VHDL语言是电子设计的主流硬件描述语言,它更适合进行行为描述,这种方式使得设计者专注于电路功能的设计,而不必过多地考虑具体的硬件结构,从而很容易实现自顶向下的设计流程。在进行数字系统设计的时候,如果实现一个控制功能,通常会选择状态机,因为无论是与基于VHDL的其他设计方案相比,还是与可完成相似功能的CPU相比,在很多方面有限状态机都有难以超越的优越性。

1 系统功能要求分析

龙源期刊网 http://www.qikan.com.cn

本系统要求一个由一条主干道和一条支道公路的汇合点形成的十字交叉路口的智能交通灯控制器,实现交通无人自动管理。要求是优先保证主干道的通畅,因此,平时处于“主干道绿灯,支道红灯”的状态,只有在支到有车辆要穿行主干道时,才将交通切换“主干道红灯,支道绿灯”的状态。此外,主干道和支道每次通行的时间不得低于30s,而在两个状态交换过程出现的“主黄,支红”和“主红,支黄”状态,持续时间都为4s。根据交通信号灯控制的要求,我们把它分解为定时器和控制器两个主要部分,其原理框图如图1所示。

图中MG、MY、MR分别表示主干道上的绿灯、黄灯、红灯,BG、BY、BR分别表示支道上的绿灯、黄灯、红灯,它们的值为“1”时表示灯亮,为“0”时表示灯灭;sb表示支道传感器是否检测车辆存在,sb为“1”时表示有车,为“0”时表示无车;定时器在控制器提供的计时信号en和清零信号clr的作用下完成定时功能,并向控制器提供30s、4s的计时信号;控制器是本系统的核心,它的作用是根据支道传感器和定时器的信号,判断、调整和控制整个系统的状态,并控制定时电路工作,提供适当的灯光控制信号。

2 交通灯控制器的程序设计

2.1 有限状态机的建立

有限状态机(Finite State Machine,简称FSM)是一类很重要的时序电路,是许多数字系统的核心部件[3],也是实时系统设计中的一种数学模型,是一种重要的、易于建立的、应用比较广泛的、以描述控制特性为主的建模方法,它可以应用于从系统分析到设计的所有阶段。有限状态机的优点在于简单易用,状态间的关系清晰直观。建立有限状态机主要有两种方法:“状态转移图”和“状态转移表”,在此使用状态转移图来描述控制器的工作过程。

根据主干道和支道的交通灯的变化情况,可以定义这样四种状态:S0为初始状态,主干道绿灯亮,支道红灯亮;S1为主干道黄灯亮,支道红灯亮;S2为主干道红灯亮,支道绿灯亮;S3为主干道红灯亮,支道黄灯亮[4]。这四种状态的转换关系如图2所示。在状态转换的过程中,有这样一个规律:当进行状态转换时,定时器必须清零,此时clr为0,en为0;保持状态时,定时器一直进行定时,此时clr为1,en为1。

2.2 有限状态机的描述方式

VHDL没有对状态机的描述规定一般的格式,但是为了使综合工具从VHDL描述识别并综合出状态机,需要遵循一定的编码风格,基本的FSM的编码风格是用CASE语句或其他等价方法来描述。一个有限状态机总是可以被分成次态译码、状态寄存器、输出译码三个模块。因此,

龙源期刊网 http://www.qikan.com.cn

有限状态机描述方式有如下三种:三进程描述、双进程描述和单进程描述,但是用VHDL描述状态机一般采用进程(process)描述:一个是时钟进程,控制状态机在时钟有效沿根据条件得到下一状态并进行状态迁移;另一个进程是组合进程,不受时钟控制,由输出相关的信号)触发,该进程根据触发信号决定状态机的输出信号值[5]。 2.3 交通灯控制器的VHDL程序[6]

根据交通信号灯控制器的状态转移图和有限状态机的描述方式,在此采用双进程描述方式,写出交通灯控制器的VHDL程序如下: LIBRARY ieee;

USE ieee.std_logic_1164.ALL; ENTITY jtd IS PORT

(clk,sb,reset: IN STD_LOGIC;

MR,MY,MG,BR,BY,BG: OUTSTD_LOGIC); END jtd;

ARCHITECTURE art OF jtdIS type state_type is (S0,S1,S2,S3); SIGNAL state : state_type; BEGIN

change_state:PROCESS (CLK) --CLK为敏感信号量 VARIABLEs: integer range0to 255;--s为秒定时器 VARIABLEclr,en :bit;--clr,en为秒定时器使能信号 BEGIN

IF reset = '1' THENstate

ELSIF (clk'event and clk='1') THEN