基于原理图的交通灯控制器的设计

更新时间:2024-06-03 23:26:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于VHDL的交通灯控制器的设计

一 、设计目的

1、 掌握计数器、分频器、译码器的工作原理和设计方法; 2、 掌握数码管的动态扫描译码显示的工作原理和设计方法; 3、 掌握交通灯控制器的设计方法;

4、 掌握在EDA开发软件QuartusII环境下基于FPGA/CPLD的数字系统设计方法,掌握该环

境下系统的功能仿真、时序仿真、管脚锁定和芯片下载的方法。 二 、概述

在城市的的十字路口处都设置有交通信号灯控制系统,这个系统由绿、黄、红信号灯指挥十字路口车辆和行人的正常通行。其示意图如下所示:

次 要 支 道

主要干道

S 主要干道 次要支道 三 、设计任务与要求

设计一个主要干道和次要支道交叉路口处的交通信号灯控制器,其技术要求如下: 1、要求主要干道和次要支道上各具有绿、黄、红三色信号灯,用来指示车辆的允许通行或禁止通行,同时设有计时、译码及显示电路,显示定时器的定时状态。

2、如果只有一个方向有车时,则保持该方向畅通;当两个方向都有车时, 主要干道和次要支道交替通行, 但主要干道通行的时间要比次要支道长一些。设主要干道每次通行的时间为60秒,即主要干道每次绿灯亮的时间为60秒;次要支道上每次通行时间为30秒,即次要支道上绿灯亮的时间为30秒。

3、要求主要干道或是次要支道上绿灯亮足规定的时间后,要求黄灯先亮5秒钟后红灯才能亮,然后才能交换通行车道。 四、系统框图及组成

系统主要由控制器和处理器两部分组成,控制器接受外部系统时钟信号。处理器由定时器和译码显示器组成。定时器能向控制器发出5秒、30秒和60秒的定时信号,译码器在控制器的控制下,改变交通灯的信号。根据上述要求画出系统框图如下:

AG AY AR BG BY BR

图中:

R:主要干道传感器来的信号,高电平表示有车,低电平表示设车。 S:次要支道传感器来的信号,高电平表示有车,低电平表示设车。 TL:主要干道绿灯亮的时间间隔为60秒,即主要干道车辆通行的时间为60秒,定时时间到时,TL=1,否则,TL=0。 TS:次要支道绿灯亮的时间间隔为30秒,即次要支道车辆通行的时间为30秒,定时时间到时,Ts=1,否则,TS=0。

TY:主要干道或次要支道黄灯亮的时间间隔为5秒,定时时间到时,TY=1,否则,TY=0。 ST:控制器发出的状态转换信号,也是定时器的清零信号。 因此,TL、TS、Ty、S是控制器的输入信号;ST是控制器的输出信号。 五、画出交通灯控制器的ASM图

在画出ASM图前,先作一些规定:

AG、AY、AR分别表示主要车道绿、黄、红灯。 BG、BY、BR分别表示次要车道绿、黄、红灯。 且规定:

AG=1:主要车道绿灯亮;BG=1:次要车道绿灯亮; AY=1:主要车道黄灯亮;BY=1:次要车道黄灯亮; AR=1:主要车道红灯亮;BR=1:次要车道红灯亮;

然后分析一下交通灯控制系统的工作过程。工作过程分为4个阶段,对应的控制器输出有4个状态,分别用S0,S1,S3和S2表示:

S0状态:AG=1,BR=1。表示主要车道上的车辆允许通行,次要车道禁止通行。绿灯亮足规定的时间间隔TL,且次要车道有车时,控制器发出状态转换信号ST,转到下一个工作状态S1。

S1状态:AY=1,BY=1。表示主要车道上未过停车线的车辆停止通行,已过停车线的车辆继续通行,次要车道禁止通行。黄灯亮足规定时间间隔Ty时,控制器发出状态转换信号ST,转到下一个工作状态S3。

S3状态:AR=1,BG=1。表示主要车道上的车辆禁止通行,次要车道允许通行。绿灯亮足规定的时间间隔TS或者次要车道没有车时,控制器发出状态转换信号ST,转到下一个工作状态

S2。

S2状态:AR=1,BY=1。表示主要车道禁止通行,次要车道上未过停车线的车辆停止通行,已过停车线的车辆继续通行。黄灯亮足规定时间间隔Ty时,控制器发出状态转换信号ST,转到下一个工作状态S0。

交通灯以上S0,S1,S3和S2 4种工作状态的转换是由控制器进行控制的。设控制器的S0,S1,S3和S2四种状态的编码分别为00,01,11和10,则控制器的工作状态及其功能如下表所示。

控制器工作状态及其功能 控制器状态 信号灯状态 车道运行状态 S0(0 0) AG=1,BR=1 主要车道通行,次要车道禁止 S1(0 1) AY=1,BR=1 主要车道缓行,次要车道禁止 S3(1 1) AR=1,BG=1 主要车道禁行,次要车道通止 S2(1 0) AR=1,BY=1 主要车道禁行,次要车道缓止

由以上的分析可以画出交通灯控制系统的ASM图。设控制器的初始状态为S0。

S0 AG=1 BR=1 00 S3 ST=1 AR=1 BY=1 10 0 TL.S 1 ST=1 1 Ty 0 ST=1 S2 11 S1 01 ST=1 AY=1 BR=1 AR=1 BG=1 0 Ty 1 TS+S’ 1 0

六、算法状态机得VHDL设计

首先对系统进行划分,得到系统结构图,然后把系统看成一个FSM,再对FSM进行VHDL的描述。

BG BY BR AG AY AR clk reset AG AY AR BG BY BY 译 码 器 SA SB

控 制 器 ST clk reset 定 时 器 CNT

其中,CNT是定时值,ST是状态转换信号,Reset是复位,SA是主要车道传感器信号,SB是次要车道传感器信号。

1、 定时器的原理图描述

从设计原理图创建模块,默任模块的名称为DSQ。 2、 控制器的原理图描述

从设计原理图创建模块,默任模块的名称为KZQ。 3、 译码器

译码器的主要任务是将控制器输出的4种工作状态,翻译成A、B车道上6个信号灯的工作状态。控制器的状态变量S与6个信号灯控制信号AG、AY、AR、BG、BY、BR之间的关系由下表所示:

控制器状态变量与信号灯关系表 S AG AY AR S0 1 0 0 S1 0 1 0 S2 0 0 1 S3 0 0 1 BG BY BR 0 0 1 0 0 1 1 0 0 0 1 0 由上述控制器状态变量与信号灯关系编出译码器的原理图如下:

从设计原理图创建模块,默任模块的名称为YMQ。

交通灯控制器设计完后,还要设计定时器的译码显示电路,再进行顶层电路的VHDL描述。

4、8位数码管动态扫描译码显示接口程序 --DISPLAY.VHD library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity display is

port(clkdsp:in std_logic;

D0,D1,D2,D3,D4,D5,D6,D7:in std_logic_vector(3 downto 0); SEL:out std_logic_vector(2 downto 0); led7s:out std_logic_vector(6 downto 0)); end display;

architecture behav of display is

signal s:std_logic_vector(2 downto 0); signal num:std_logic_vector(3 downto 0); begin

process(clkdsp) begin

if(clkdsp'event and clkdsp ='1')then if(S=\ S<=\ else

S<=S+'1'; end if; end if; end process;

process(D0,D1,D2,D3,D4,D5,D6,D7,clkdsp)

begin

if(clkdsp'event and clkdsp ='1')then if s=\ num<=D0; sel<=\

elsif s=\ num<=D1; sel<=\

elsif s=\ num<=D2; sel<=\

elsif s=\ num<=D3; sel<=\

elsif s=\ num<=D4; sel<=\

elsif s=\ num<=D5; sel<=\

elsif s=\ num<=D6; sel<=\ else

num<=D7; sel<=\ end if; end if; end process;

led7s<=\ \ \ \ \ \ \ \ \ \ \ \

\ \ \ \ \end behav;

从设计的VHDL语言创建模块,默任模块的名称为display。 七、顶层电路图的VHDL描述

八、芯片引脚说明

芯片系列:ACEX1K

芯片型号:EP1K100QC208-3 引脚锁定: 输入:

CLK----78,秒脉冲,接CLK5

CLKDSP---79,扫描时钟,接CLK1 RESET---7,复位,接d0;

SB---8,次要车道传感器来的信号,1表示有车,0表示无车,接d1 SA---9,主要车道传感器来的信号,1表示有车,0表示无车,接d2 输出:

SEL[2..0]---44~46,位选信号输出,接SEL2,SEL1,SEL0

LED[6..0]---90,92~97,7段译码输出,接a~g 90-a 91-b 92-c 95- d 96-e 97-f 98-g AG、AY、AR---60、61、62,主要车道信号灯,接LED2、LED1、LED0 BG、BY、BR---60、61、62,次要车道信号灯,接LED10、LED9、LED8 九、系统的下载与测试

一个设计全部完成后,要在MAX+plusII开发系统中选择Programmer,即可打开编程器窗口,在该窗口下将器件编译生成的编程文件编程到选定的器件中去,这通常称为下载(Down Load)。下载完成后,原来无特定功能的PLD器件便成为了具有某个确定功能的芯片,然后要对该芯片进行测试。测试的所得的结果与实验设计要求完全符合,说明设计的程序完全正确,实验成功。

十、实验过程中出现的问题及解决办法

在控制器原理图设计时将两片74153的A、B端直接连接,编译时出现两片74153的A、B端信号没定义。分析了编译出错原因将两片74153的A端与第二块DFF芯片的Q端连接,B端与第一块DFF芯片的Q端连接,再次编译出现正确结论。将顶层的原理图画好并锁定引脚再次编译,在EDA实验开发系统进行硬件测试。经测试实验结果完全正确。

本文来源:https://www.bwwdw.com/article/s416.html

Top