找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 一种基于CPLD的交通灯控制系统设计

[复制链接]
admin 发表于 2013-3-20 00:48:41 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
0 引言
     随着我国经济的快速发展,车辆拥有量也随之急剧增加,再加上人口数量的膨胀,城市的交通拥挤问题变得日益突出。如何使交通灯的控制更加合理,使现有的交通资源发挥更大的效益,已经成为城市管理者和科技工作者共同关心的问题。为此,我们设计开发了一个交通灯控制系统,由于该系统采用VHDL语言自顶向下的设计方法,利用可编程逻辑器件CPLD来实现,通过外部输入可方便地设定交通灯的延迟时间,使交通灯控制数字电路设计得到了优化,提高了系统的灵活性、可靠性和可扩展性。该系统可以较好地缓解交通压力,并可实现对突发事件进行紧急处理。
     在数字系统设计领域,电子设计自动化(EDA)工具已经成为主要的设计手段,随着硬件描述语言VHDL和可编程逻辑器件CPLD的广泛应用,使数字电路的设计得到了优化,并且具有很强的设计和仿真功能。
   
  1 系统原理及方案
      交通信号灯是由交通灯控制器控制其红绿灯周期变化的,现在的大部分十字路口交通灯采用的都是固定周期,由于实际路况较为复杂,不能有效地实时对时间资源的合理调配,达到缓解交通的目的。本文设计的交通灯控制系统的周期可以改变,黄灯和东西方向以及南北方向红灯时间由外部输入设定,绿灯由系统依据设定值自动计算。
      交通灯控制器控制两个方向交叉路口的交通,以秒为单位,采用倒计时的方式显示通行或者禁止通行的剩余时间。系统设置外部输入复位信号,复位信号有效时,控制信号处于东西方向绿灯状态,并读取设定输入值,再将复位信号返回无效状态后,系统按新读入的设定值运行,绿灯变至红灯时,黄灯亮,以便于车辆能停在停车线内。如果能够与传感器相结合就具有智能功能,能够根据当时的路况的随时做出相应的调整。交通灯工作时序见图1。
    20121107053943407541256.jpg
        交通灯在东西南北方向安装信号灯和数码管,两个方向共6个信号灯,4个数码管。下表1是交通灯控制系统红灯与黄灯可供改变的值。
    20121107053943438791257.jpg
    2 系统硬件设计
      复杂可编程器件(CPLD)采用CMOS EPROM、E2PROM和快闪存储器等编程技术,构成了高密度、高速度和低功耗的可编程逻辑器件。本文设计的交通灯控制器采用的是Lattice公司提供的CPLD产品-ISPLSI 1032,一片ISPLSI1032中共有192个寄存器,64个I/O管脚,8个特定输入输出管脚,4个特定输入时钟管脚和一个全局布线池。该器件所需的时钟脉冲信号由外部电路提供,设为16MHz。
      本文设计的交通灯用两组红黄绿三色的发光数码管LED作为两方向的红黄绿灯,用两组数码管作为东西和南北方向的倒计时显示,用一个七位的拨动开关作为外部按键输入,还需要741s47译码器驱动数码管来实现数字的倒计时显示。
    拨动开关高电平位表示"1",低电平表示"0",复位信号占拨动开关的一位,有"1"、"0"两种状态;东西方向和南北方向的红灯以及黄灯各占两位,各有"00"、"01"、"10"、"11"四种状态,相对应表1中的四种时间。设计框图如下:
      
    20121107053943470041258.jpg
    3 系统软件设计及实现
  3.1 顶层设计
      根据交通灯控制系统的要求,我们将主控电路分为分频器、信号控制器两个模块,在isplever开发平台上,分别编译这两个模块的VHDL程序,然后用原理图输入法做出项层设计模块(见图3),其中输入的信号有16MHz的基准时钟脉冲、设定值输入及复位信号;输出信号包括两个方向的绿灯、黄灯、红灯控制信号,倒计时计数器的十位、个位的8421BCD码信号。
    20121107053943516921259.jpg
    3.2 分频器模块
      分频器模块是对输入16MHz的脉冲进行分频,把这个固定频率的时钟脉冲通过分频转化为低频率的脉冲,得到的1Hz信号用作控制器的时钟信号。图4为分频器模块的框图。下面为分频主要程序:
    20121107053943641911260.jpg
    20121107053943876281261.jpg
    3.3 控制器模块
      控制器模块的功能是控制信号灯的亮灭和数码管的显示。对于控制器模块,其输入信号为1Hz的方波信号、复位信号、黄灯和东西方向红灯和南北方向红灯时间设定值。输出信号包括东西方向和南北方向绿灯、黄灯、红灯控制信号。图5为控制器模块的框图。控制器模块程序
    20121107053943923151262.jpg
    图中:cp、reset分别为时钟脉冲和复位输入信号。yellow_1,yellow_0,ew_red_l,ew_red_0,sn_red_1,sn_red_0分别为黄灯和东西方向红灯和南北方向红灯可调输入变量。
      r_ew,y_ew,g_ew,r_8n,y_sn,g_sn分别为东西方向和南北方向的红绿灯控制信号。
      qhew,qlew,qhsn,qlsn则是东西方向和南北方向的红绿灯倒数计时显示信号。
      控制器模块工作流程:
      先由外部开关控制可调的南北方向红灯、东西方向红灯和黄灯时间的高位和低位。 (设南北方向红灯通行时间为X、东西方向红灯通行时间为Y、黄灯时间通行时间为Z,一个总周期的时间为X+Y)
      首先东西方向通行,东西方向绿灯亮,南北方向红灯亮,且两个方向上的倒数计时显示器由X向下作减法计时。当倒计时显示器减法计时到Z时,东西方向黄灯亮,南北方向继续红灯。当两个方向的的倒计时显示器减法计时到1,然后由1变为Y后,转为南北方向通行。
      南北方向通行:东西方向红灯亮,南北方向绿灯亮,且两个方向上的倒计时显示器由Y向下作减法计时。当倒计时显示器减法计时到z时,南北方向黄灯亮,东西方向继续红灯。当两个方向的的倒计时显示器减法计时到1,然后由1变为X后,转为东西方向通行。如此交替运行。
    3.4 仿真结果
      对控制器模块的VHDL程序利用ispLEVER输入如下的一测试向量:
      
    20121107053943954401263.jpg
    20121107053944001281264.jpg
      在isp[EVER平台上进行仿真,在波形观察器的窗口观察仿真结果。对应上面仿真向量的仿真波形如图6所示,改变仿真向量可以做出其他仿真波形,结果都显示基于VHDL语言的交通灯控制器的硬件实现方法是可行的。
    20121107053944032531265.jpg
    3.5 软件到硬件的过度
      Lattice器件的在系统编程是借助ispVM system软件来实现的。ispVM SystemTM是一个综合的将设计下载到器件的软件包。运用这一完整的器件编程工具快速简便地通过i spSTREAMTM将编写好的程序烧写到可编程逻辑器件CPLD上,实现软件到硬件的过渡。
    20121107053944063781266.jpg
   
  4 结束语
      本设计由于采用自顶向下法设计交通灯控制器,合理地处理灯时分配,分频,控制显示与编码的相互关系,采用VHDL语言层次化和模块化的设计方法,减少了设计芯片的数量、减少系统开发周期,降低了功耗,可以通过改变程序或着外部输入来控制交通灯,经过调试,运行正常。此设计是基于硬件描述语言VHDL,借助CPLD器件完成的数字系统的设计,显示了可编程器件广阔前景,加之工艺的改进,可编程逻辑器件的集成度和速度将进一步提高,性能将进一步完善。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-22 11:26 , Processed in 0.072507 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表