当前位置:首页 >> 信息与通信 >>

基于VHDL状态机设计的智能交通控制灯


基于 VHDL 状态机设计的智能交通控制灯

- 31-

●应用与设计

基于 VHDL 状态机设计的智能交通控制灯
徐春娇
( 中国地质大学( 北京) 地球物理与信息技术学院 , 北京 100083 )

单片机 摘要: 实现路口交通灯系统控制的方法很多, 可以用标准逻辑器件、 可编程序控制器 PLC、 等方案来实现。但是这些控制方法的功能修改及调试都需要硬件电路的支持, 在一定程度上增加 了设计难度。采用 EDA 技术, 应用 VHDL 硬件电路描述语言实现交通灯系统控制器的设计, 利用 仿真, 并下载到 CPLD 可编程逻辑器件中, 完成系统的控制 MAX+PLUSⅡ 集成开发环境进行综合、 作用。该灯控制逻辑可实现 3 种颜色灯的交替点亮、 时间的倒计时, 指挥车辆和行人安全通行。 关 键 词: 智能交通灯; VHDL; 状态机; CPLD 文献标识码: A 文章编号: 1006- 6977( 2007) 02- 0031- 05 中图分类号: TP273

VHDL state machine based intelligent tr affic light
XU Chun- jiao
( School of Geophysical and Information Technology, China University of Geophysical, Beijing 100083, China)

Abstr act :A lot of devices, such as standard logic device, PLC(Programmable Logic Controller), single chip microcomputer, etc,can be used in the design of traffic light system.However,debugging and adjusting the circuits based on these devices require hardware supports.In some sense it complicates the design procedure. In this article, VHDL is applied in designing the system and the logic functions is achieved by CPLD.The code is synthesized,simulated and then downloaded into the CPLD by MAX+ PLUS Ⅱ.The control logic of the system can change the color of traffic lights alternately and has the function of countdown,thus it can command vehicles and people on the road. Key wor ds : intelligent traffic light; VHDL; state machine ;CPLD
状态机实现控制 , 本设计 中使用两个 状态机分别 控 制东西和南北两个方向的交通。每个状态机中都 绿灯亮、 黄灯 亮和 设有 4 个状态 , 分别对应红灯亮 、 出现紧急状况时两 个方向上 的红灯同时 变亮 , 停止 倒计时的同时数码管上出现闪烁。路口的繁忙程 度是不一样的, 白天时的交通比较繁忙, 因此, 红 绿灯要变化快一些以便提高通过效率, 减少拥堵 时间; 相反, 夜晚交通稀疏, 就需要红绿灯变化慢 一些。因此, 加入键盘控制程序来控制交通维持变 亮状态的持续时间。



设计方案
十字路口设计两组交通灯分别控制东西和南

北两个方向的交通。如图 1 所示, 当东西方向的红 灯亮时, 南北方向对应绿灯亮, 过渡阶段黄灯亮, 即东西方向红灯亮的时间等于南北方向绿灯和黄 灯亮的时间之和。交通灯维持变亮的时间取决于 键盘输入的控制键值。同理 , 当南 北方向的 红灯变 亮时 , 东西方向的交通灯也遵 循此逻辑。总 体上由



总体设计结构框图
总体设计结构框图如图 2 所示, 共有 11 个功

能模块, 包括控制东西方向交通灯的状态机和控制
图 1 控制灯控制情况

- 32-

《国外电子元器件》 2007 年第 2 期

2007 年 2 月

STATE<=S0; ELSIF rising_edge(CLOCK)THEN CASE STATE IS WHEN S0=>- - 红灯状态 IF HOLD=' 1' THEN STATE<=S3; ELSIF COUNTNUM=0 THEN STATE<=S1; ELSIF(COUNTNUM>m AND COUNTNUM<getin) THEN STATE<=S0; END IF; WHEN S1=>- - 绿灯状态 IF HOLD=' 1' THEN STATE<=S3; ELSIF COUNTNUM=n THEN STATE<=S2; ELSIF(COUNTNUM>0 AND COUNTNUM<n) THEN
图 2 总体设计结构框图

STATE<=S1; END IF; WHEN S2=>- - 黄灯状态 IF HOLD=' 1' THEN STATE<=S3; ELSIF COUNTNUM=m THEN STATE<=S0; ELSIF(COUNTNUM>n AND COUNTNUM<m) THEN STATE<=S2; END IF; WHEN S3=>- - 紧急情况状态 IF HOLD=' 1' THEN STATE<=S3; ELSIF(COUNTNUM<N AND COUNTNUM>=0)THEN STATE<=S1; ELSIF(COUNTNUM<M AND COUNTNUM>=N)THEN STATE<=S2; ELSIF (COUNTNUM<getin AND COUNTNUM>=m) THEN STATE<=S0; END IF; WHEN OTHERS=>

南北方 向 交 通 灯 的 状 态 机 、 数 器 模 块 、 盘 扫 描 计 键 模块、 数字合成模块、 三个分位模块、 数码管显示模 块、 动态显示扫描模块。 用 VHDL 语言对各个模块进行编程, 最后形成 顶 层 文 件 , 在 MAX+PLUSⅡ 环 境 下 进 行 编 译 与 仿 真, 检查所编程序是否运行正确。如果出现错误, 需 要进行修改, 直到完全通过为止。需要说明的是, 在 进行程 序 编 译 时 , 要 先 从 底 层 程 序 开 始 , 所 有 底 层 程序都正确后, 才能开始顶层程序的编译。这是因 为顶层程序是对底层程序的概括, 它是把底层程序 各个模块连接起来, 相当于把每个模块的功能汇聚 到一起 , 实 现 整 个 系 统 的 控 制 功 能 , 所 以 底 层 程 序 的正确与否关系到顶层程序的运行结果。 VHDL 语 言编程生成的结构框图如图 3 所示。



VHDL 程序设计

3.1 状态机 1(东西方向)程序关键代码
m<=getin/2; n<=getin/8*3; CHANGE_STATE: PROCESS(RESET,CLOCK) BEGIN IF RESET=' 0' THEN

基于 VHDL 状态机设计的智能交通控制灯

- 33-

图 3 VHDL 语言编程生成的结构总图

- 34-
STATE<=S3;

《国外电子元器件》 2007 年第 2 期

2007 年 2 月

countnum<=num; END PROCESS; END Behavior;

用两个状态机分别控制东西方向和南北方向 上的交通。从键盘获得红、 黄灯的总时间, 红灯 绿、 时间占 1/2, 绿灯时间占 3/8, 黄灯时间占 1/8。红灯 状态为 S0 , 绿灯 状态为 S1, 黄灯 状态 为 S2, 紧 急 状 态为 S3。当计数器时间为 0 时, 由红灯状态跳转到 绿灯状态, 当计数器时间到达 3/8 时, 由绿灯状态跳 转到黄灯状态。当到达一半时间时, 由黄灯状态跳 转到红灯状态。当 hold 为 1 时, 由任意状态跳转到 紧急状态。

3.3 分位程序源代码
Entity Fenwei1 Is Port (Numin:In Integer Range 0 To 99;- - 输入数值 NumA,NumB:Out Integer Range 0 To 9- - 数值高位, 低位 ); End; Architecture Fen Of Fenwei1 Is Begin Process(Numin) Begin if numin>=90 then numa<=9;- - 高位获得值 numb<=numin- 90;- - 低位获得值 elsif Numin>=80 then NumA<=8; NumB<=Numin- 80; Elsif Numin>=70 then NumA<=7; NumB<=Numin- 70; Elsif Numin>=60 then NumA<=6; NumB<=Numin- 60; Elsif Numin>=50 then NumA<=5; NumB<=Numin- 50; elsif numin>=40 then numa<=4; numb<=numin- 40; elsif Numin>=30 then NumA<=3; NumB<=Numin- 30; Elsif Numin>=20 then NumA<=2; NumB<=Numin- 20; Elsif Numin>=10 then NumA<=1; NumB<=Numin- 10; Else

3.2 计数器源程序代码
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity counter1 is port (clock:in std_logic; reset:in std_logic; hold:in std_logic; keyin: in integer range 0 to 99; countnum:buffer integer range 0 to 99 ); end; ARCHITECTURE Behavior OF Counter1 IS signal num: integer range 0 to 99; begin PROCESS(Reset,Clock) BEGIN IF Reset=' 0' THEN num<=0; ELSIF rising_edge(Clock) THEN IF Hold=' 1' THEN num<=num; ELSE IF num=keyin THEN num<=0; ELSE num<=num+1; END IF; END IF; END IF;

基于 VHDL 状态机设计的智能交通控制灯
NumA<=0; NumB<=Numin; End If; End Process; End;

- 35-

YELLOWA 由 低 电 平 变 为 高 电 平 , 倒 计 时 时 间 从 5 s 开始。南北方 向仿真图与 东西方向 类 似 , 这 里 不
再赘述。 计 数 器 从 键 盘 上 得 到 的 键 值 为 40 s , 从 仿 真 图( 图 6 所示 ) 上可以看出 , 计数器能 正常计数。 从仿真结果可以看出, 计数器能够正常计数, 状态机状态能够正确状态变换。东西方向初始状 态 为 绿 灯 , 从 15 开 始 倒 计 时 。 南 北 方 向 初 始 状 态 为红 灯, 从 20 开始倒 计时。 该 系 统 硬 件 电 路 包 含 了 1 个 CPLD, 6 个 7 段 黄 LED 数 码 显 示 器 , 分 别 表 示 各 个 方 向 上 的 红 、 、 绿灯, 以及相应的限流电阻。与其他控制方法相 比, 所用器件可以说是比较简单经济的。经过实 验, 实现了预 定的交通 灯系统的控 (下转第 39 页)



仿真结果
东 西 方 向 和 南 北 方 向 状 态 机 仿 真 结 果 如 图 4、

5 所 示 , 从 图 4 可 以 看 出 , getin 是 从 键 盘 获 得 的 键 值 , 这 里 输 入 的 是 40 s , 初 始 状 态 为 S0 状 态 , 红 灯
亮 。 从 S0 状 态 跳 转 到 S1 状 态 即 由 红 灯 状 态 跳 转 到 绿 灯 状 态 时 , 数 码 管 显 示 的 倒 计 时 从 15 s 开 始 ; 当 由 S1 状 态 跳 转 到 S2 状 态 即 由 绿 灯 状 态 跳 转 到 黄 灯 状 态 时 , GREENA 由 高 电 平 变 为 低 电 平 ,

图 4 东西方向状态机仿真结果

图 5 南北方向状态机仿真结果

图 6 计数器仿真结果

基于 PM50RSA120 的小型通用变频器实用电路设计

- 39-

图 4 IPM 控制电路

与计算机接口信号是通过插排接出的。 另外, 需要注意的是 6RI30G- 160 、 PM50RSA120 都属于发热量较大的器件, 在电路板中要注意散热 问题, 必须安装散热片, 并涂以散热硅胶, 以免温度 超过器件的额定温升。

common/cfm/ePartProfile.cfm,FILENAME=PM50rsa 120- e.pdf.2004. [2]满永奎,韩安荣,吴成东. 通用变频器及其应用[M]. 北京: 机械工业出版社, 1995. [3]刘美俊.通用变频器应用技术[M].福州: 福建科学
技术出版社, 2004.



结束语
本 文 采 用 智 能 功 率 模 块 PM50RSA120 设 计 了

[4]户川治朗.实用电源电路设计[M]. 高玉苹 ,唐伯雁, 李大寨, 译.北京: 科学出版社, 2006. [5]张占松, 蔡宣三.开关电源的原理与设计[M].北京: 电子工业出版社, 2005.
作者简介: 初宪武( 1977- ) , 男, 助教, 硕士。研究方 向: 电子、 通信与自动控制技术。 收稿日期: 2006- 12- 19 咨询编号: 070210

一 款 小 型 通 用 1 500 W 变 频 器 , 该 变 频 器 包 含 了 交 - 直 - 交变频电路和开关电源, 具有结构紧凑、 集 成度高、 可靠 性 高 , 体 积 小 、 定 性 好 、 靠 性 高 等 稳 可 特性, 适应于小型电机驱动及实验。 参考文献:

[1]Misubishi Semiconductor.PM50RSA120 Data Sheet [DB/OL].http://www.mitsubishichips.com/China/
( 上接第 35 页) 制 功能。数码显 示器采用动 态扫描 方式, 大大节 约了资源。

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
比, 拥有广泛的市场应用前景。 参考文献:



结束语
该交通灯控制逻辑可以实现 3 种颜色灯的交

替点亮以及时间的倒计时, 指挥车辆和行人安全 通行。本文介绍的是一种最基本和简单的交通灯 设计情况, 并且提供了一些模块的源程序代码。 在 此 基 础 上 能 够 举 一 反 三 , 从 而 用 VHDL 语 言 实 现其它交通灯的控制设计。 随 着 EDA 技 术 的 发 展 , 在 今 后 的 电 子 产 品 研 究 开 发 中 , EDA 技 术 具 有 更 好 的 开 发 手 段 和 性 价

[1] 潘 松,王国栋 . VHDL 实用教程[M].成都: 电子科 技大学出版社,2000. [2] 程云长.可编程逻辑器件与 VHDL 语言[M]:北京 : 科学出版社 ,2005. [3] 黄 任.VHDL 入门,解惑,经典实例 ,经验总结[M]. 北京:北京航空航天大学出版社, 2005.
收稿日期:2006- 08- 31 咨询编号:070209


相关文章:
基于EDA的VHDL语言设计的交通灯
基于EDA的VHDL语言设计的交通灯_计算机软件及应用_IT/计算机_专业资料。用有限状态机设计一个交通灯控制器,设计要求:A路和B路,每路都有红、黄、绿三种灯,持续时...
基于状态机的交通灯控制
基于FPGA的交通灯设计(状态... 8页 5财富值如要投诉违规内容,请到百度文库投诉...基于状态机的交通灯控制华南理工VHDL实验基于状态机的交通灯控制华南理工VHDL实验隐...
VHDL状态机的设计
VHDL状态机的设计 - 状态机电路设计 状态机(STATE MACHINE)可以说是一个广义时序电路,触发器, 计数器,移位寄存器都算是它的特殊功能的一种.在电子设计自动化 ...
交通信号灯VHDL状态机
交通信号灯VHDL状态机_计算机软件及应用_IT/计算机_专业资料。library ieee; use...用VHDL和有限状态机设计... 3页 1下载券 基于VHDL状态机设计的智... 6页...
状态机VHDL讲解
状态机VHDL讲解 - VHDL 的结构非常适合编写状态机, 而且编写方式不唯一, 电路的集成也会随着编写的方式 而改变。状态机的设计主要用到 case when 和 if else ...
基于VHDL的Mealy状态机设计
基于VHDL的Mealy状态机设计 - 基于 VHDL 的 Mealy 状态机设计 物理与电子信息科学系 姓名: 姓名:孙家芳 指导教师: 指导教师:胡湘娟 电子信息科学与技术专业 学号...
状态机设计交通灯
基于硬件电路设计软件化的思想,根据路口交通灯控制功能要求,以可编程逻辑 器件(...2)用 VHDL 设计有限状态机,设计流程和方案相对固定,程序层次分明,程序结构简单...
VHDL彩灯循环状态机
VHDL彩灯循环状态机 多功能循环彩灯控制电路设计多功能循环彩灯控制电路设计隐藏>> library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all;...
VHDL状态机程序
VHDL状态机程序_信息与通信_工程科技_专业资料。VHDL状态机程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY FSM IS...
VHDL状态机111000
VHDL状态机111000_工学_高等教育_教育专区。图像识别算法与系统设计题目:VHDL 第一次作业给定任一二值图像,从中 串行检测序列 111000 姓名:刘振宇 学号:1502121227 ...
更多相关标签: