基于FPGA/CPLD和VHDL语言的交通灯控制系统设计

时间:2022-06-10 05:14:59

基于FPGA/CPLD和VHDL语言的交通灯控制系统设计

摘要:用VHDL语言设计交通灯控制系统,并在MAX+PLUS II系统对FPGA/CPLD芯片进行下载,由于生成的是集成化的数字电路,没有传统设计中的接线问题,所以故障率低、可靠性高,而且体积小。体现了EDA技术在数字电路设计中的优越性。

关键词:VHDL硬件描述语言;可编程逻辑器件;FPGA/CPLD;交通灯控制系统

中图分类号:TP27文献标识码:A文章编号:1009-3044(2007)06-11605-01

1 引言

交通灯控制系统是数字电路的经典问题,传统的设计方法基于中、小规模集成电路进行,电路元件多、接线复杂、故障率高、可靠性低。电子设计自动化EDA(Electronic Design Automation)技术的发展,在线可编程逻辑器件(In system Program-Programmable Logic Device简称ISP-PLD)的出现,使实验室中制作专用集成电路成为可能。我们使用现场可编程门阵列/复杂可编程逻辑器件FPGA/CPLD(Field Programmable Gate Array/Complex Programmable Logic Device),用VHDL(超高速集成电路硬件描述语言) 进行以交通灯控制器的设计,用对应的工具软件(本文用MAX+plus II)对FPGA/CPLD芯片“下载”形成专用集成电路,由于不存在人工接线的问题,所以故障率低、可靠性好。

2 交通灯控制系统的系统分析和算法设计

2.1系统分析

十字路口的交通灯指挥着行人和各种车辆的安全运行。实现红绿灯的自动指挥是城市交通管理自动化的重要课题。在一个具有主、支干道的十字路口,设计一个交通灯自动控制装置,实现如下功能:

①由主干道和支干道汇合成十字路口,在入口处设置

红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。

②当主干道与支干道均无车辆要求通行时,主干道应保持畅通,亮绿灯;支干道亮红灯。

③如果主干道无车,支干道有车,则允许支干道通行,主干道亮红灯,支干道亮绿灯。

④如果主干道和支干道均有车要求通行,则两者应交替通行,并要求主干道每次通行30秒钟,支干道每次通行20秒钟。

⑤每次绿灯变红,黄灯应先亮5秒。

通过分析,可以得到信号灯切换顺序,如图1所示(A表示主干道、B表示支干道)。

图1 信号灯切换顺序

2.2算法设计

交通灯系统工作主要有三个时间间隔 Tt、Ts、Ty: Tt表示主干道绿灯亮的时间间隔30s;Ts表示支干道绿灯亮的时间间隔20s;Ty表示主干道或支干道黄灯亮的时间间隔5s。用定时模块分别产生三个时间间隔后,向控制器发出“时间已到”信号,控制器根据定时模块信号,决定是否进行状态转换。如果肯定,则控制器发出状态转换信号,计数器清零,准备重新计时。

交通灯控制器的控制过程分为四个阶段。,对应的输出有四种状态,分别为S0、S1、S2和S3表示,按照格雷码进行编码分别为00、01、11和10,在此给出交通灯控制系统的工作流程图如图2所示,也可看作系统控制器的ASM图。设系统的初始状态为主干道绿灯亮、支干道红灯亮,用S0状态框表示。

图2 交通控制器工作流程图(ASM图)

3 交通灯控制系统的设计实现

由上述分析,可以得到系统框图如图3所示,系统由传感器、时钟电路控制器、定时器和6个交通管理灯组成。

3.1传感器和时钟电路

在主干道和支干道设传感器,可检测到主、支干道上是否由车辆要求通过十字路口。主干道上的传感器发出的信号分别用Sa和Sb表示,Sa和Sb若为‘1’,表示有车辆要求通行,否则表示无车辆要求通行。

时钟电路用来产生一个稳定的clk秒脉冲信号,以供计时和系统的同步控制。秒脉冲信号可以由晶体振荡器输出信号经过分频后产生;当精度和稳定性要求不高时,可以采用RC环形振荡器、555定时器或其它振荡电路产生。

图3 交通控制系统框图

3.2定时器

定时器在控制器提供的计时信号cnt和清零信号cr的作用下完成定时功能,并向控制器提供5s、20s、30s的计时信号。

3.3控制器

控制器设计是本系统的核心,它的作用是根据传感器和定时器提供的信号,判断、调整和控制整个系统的状态,并控制定时电路工作,提供适当的灯光控制信号。其中控制主、支干道上的红、黄、绿灯的信号分别用R、Y、G和r、y、g表示:其值为‘1’表示灯亮,为‘0’表示灯灭。

由于本系统的规模较小,因此可选用一片CPLD或FPGA器件来实现,现在利用MAX+PLUS II开发系统,采用分层次描述方式来完成设计,且用图形输入和文本输入混合方式建立描述文件,其中顶层设计采用图形输入法,它用图形表明系统的组成,在顶层图中,clk、Sa、和Sb为输入信号;R、Y、G、r、y和g为输出信号;cr和cnt为节点信号(节点信号属于内部信号,对外无引脚)。底层采用VHDL文本输入方式。由图2所示的ASM图,可以导出系统控制电路的MDS图,如图4所示。1个完整的VHDL语言程序通常包含实体(Entity)、构造体(Architecture)、配置、包集合(Package)和库(Library)5个部分。根据MDS图就可以设计出相应的VHDL源文件。

图4 交通控制系统的MDS图

4 编译、仿真与器件编程

在MAX+PLUS II的文本编辑器中完成源程序的设计,接着就是对其进行编译,编译的目的是为了生成可以进行仿真、定时分析以及下载到可编程器件的相关文件。选MAX+PLUS II菜单下的Compiler Netlist Extractor、Logic Synthesizer、Partitioner、Fitter、Timing SNF Extractor、Assembler共七个模块,包括了综合、布线到生成下载文件的整个过程。本设计的源程序顺利地通过了编译,但这只能说明源文件没有语法错误,要检验是否能完成预定的功能,可对其进行仿真。在时序仿真阶段,还可以做一个延时分析。例如:在选用FLEK系列的EPF10K10LC84-3的情况下,进行建立/保持时间分析,也可以给出片内所用寄存器的性能,近似表示此器件正常工作的最高频率。当时序仿真得到正确的结果后,最后把编译的“.pof”文件或“.sof”文件下载到具体的CPLD/FPGA器件中。本设计已下载到CPLD器件(EPF10K10LC84-3)中,通过实验系统得到验证。

5 结束语

本系统借助CPLD/FPGA器件及其支撑软件,快速、明确地完成了对交通灯的控制功能,而且可以看到VHDL对设计的描述具有相对独立性,毋需通过门级原理图描述电路,而是针对目标进行功能描述.这种设计方法使设计人员摆脱了电路细节的束缚,效率高、可靠性好、成本低。这些都体现了EDA技术的优越性和广阔的应用前景。

参考文献:

[1]陈意军.基于VHDL的FPGA开发[J].电子与封装,2006.3 :9-11.

[2]平均芬.硬件描述语言VHDL在数字系统设计中的应用[J].浙江工业大学学报,2006.2:20-21.

[3]高书莉.罗朝霞.可编程逻辑设计技术及应用[M].北京:人民邮电出版社,2005.9.

[4]蒋璇,臧春华. 数字系统设计与PLD应用技术[M].北京:电子工业出版社,2006.1.

[5]徐志军. CPLD/FPGA的开发与应用[M].北京:电子工业出版社, 2005.1.

本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

上一篇:一种有效的视频镜头检测方法 下一篇:基于AWE的自行车车架的CAE分析