首页 > 范文大全 > 正文

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

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于VHDL语言有限状态机的交通灯控制系统设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:根据交叉路通灯控制的要求,以可编程逻辑器件(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 系统功能要求分析

本系统要求一个由一条主干道和一条支道公路的汇合点形成的十字交叉路口的智能交通灯控制器,实现交通无人自动管理。要求是优先保证主干道的通畅,因此,平时处于“主干道绿灯,支道红灯”的状态,只有在支到有车辆要穿行主干道时,才将交通切换“主干道红灯,支道绿灯”的状态。此外,主干道和支道每次通行的时间不得低于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语句或其他等价方法来描述。一个有限状态机总是可以被分成次态译码、状态寄存器、输出译码三个模块。因此,有限状态机描述方式有如下三种:三进程描述、双进程描述和单进程描述,但是用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

IFclr='0' THENs:=0;-- clr为0,定时器清零

ELSIF en='0'THENs:=s;-- en为0,定时器保持不变

ELSEs:=s+1;--clr为1,en为1时,正常计时

ENDIF;

CASE state IS

WHEN S0=> IF S

--主干道绿灯持续时间未到30s,维持S0状态

ELSIF (S>=30 AND sb='0')THEN state

--已过30s但支道无车,维持S0状态

ELSIF (S>=30 AND sb='1') THEN state

--已过30s且支道有车,转换到S1状态

END IF;

WHEN S1=> IF S=4 THENstate

ELSEstate

END IF;

WHEN S2 => IF S

--支道绿灯持续时间未到30s,维持S2状态

ELSIF (S>=30 AND sb='1') THEN state

--已过30s但支道有车,维持S2状态

ELSif (S>=30 AND sb='0') thenstate

--已到30s且支道无车,转换到S3状态

END IF;

WHEN S3 => IF S=4 THENstate

ELSEstate

END IF;

END CASE;

END IF;

END PROCESS change_state;

output_process:PROCESS (state)

BEGIN

CASE state IS

WHEN S0 =>MR

--主干道绿灯亮,支道红灯亮

WHEN S1 =>MR

--主干道黄灯亮,支道红灯亮

WHEN S2 =>MR

WHEN S3 =>MR

-- 主干道红灯亮,支道黄灯亮

END CASE;

END PROCESS output_process;

END art;

3 系统仿真

在MAX+PLUS II环境下进行了仿真[7-8],其时序仿真图如图3所示。

4 结束语

仿真结果表明,本设计按要求实现了交通灯的控制。把程序下载到实验箱的FPGA芯片(EP1K30QC208-3)上,进行硬件测试,发现电路工作正常,控制结果完全符合要求。

参考文献:

[1] 史小波,程梦璋,许会芳.集成电路设计VHDL教程[M]. 北京清华大学出版社,2005:12-15.

[2] 文畅.基于FPGA/CPLD和VHDL语言的交通灯控制系统设计[J].电脑知识与技术,2007,(3).

[3] 谭会生,张昌凡.EDA技术及应用[M]西安:西安电子科技大学出版社,2004:198-199.

[4] 田瑞利,陈海滨.基于VHDL有限状态机的交通信号灯控制系统设计[J].广州航海高等专科学校学报,2008,15(3)31-33.

[5] 潘松, 黄继业. EDA技术实用教程[M].北京:科学出版社, 2002:170-174.

[6] 徐春娇. 基于VHDL 状态机设计的智能交通控制灯[J].国外电子元器件,2007(2):31-35。

[7] 黄正谨.CPLD系统设计技术入门与应用[M].北京:电子工业出版社,2002:167-210.

[8] 罗苑棠.CPLD/FPGA常用模块与综合系统设计实例精讲[M].北京:电子工业出版社,2007:116-146.