EDA交通灯课程设计交通信号控制器的VHDL设计.docx
文本预览下载声明
交通信号控制器的VHDL设计
指导老师:
班 级:通信工程
学 号:
姓 名:
完成日期:2012年4月6日
一、设计任务
模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。要求:
交通灯从绿变红时,有4秒黄灯亮的间隔时间;
交通灯红变绿是直接进行的,没有间隔时间;
主干道上的绿灯时间为40秒,支干道的绿灯时间为20秒;
在任意时间,显示每个状态到该状态结束所需的时间。
A
B
C
D
主干道交通灯
绿(40秒)
黄(4秒)
红(20秒)
红(4秒)
支干道交通灯
红
红
绿
黄
表1 交通信号灯的4种状态
二、设计目的
学习DEA开发软件和Quartus = 2 \* ROMAN II的使用方法,熟悉可编程逻辑器件的使用。通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制,设计交通灯控制系统主要是为了实现城市十字交叉路口红绿灯的控制。通过掌握VHDL程序设计的实现,熟悉可编程逻辑器件的使用。同时加深对交通灯控制系统的了解与应用。
三、设计方案
采用VHDL语言输入的方式实现交通信号灯控制器
秒脉冲信号发生器(进程P1和P2)
秒脉冲信号发生器(进程P1和P2)
状态寄存器
(进程P6)
计数器
(进程P3、P4和P5)
时间显示数据输出
次态发生器信号灯输出信号
次态发生器
信号灯输出信号
(进程P7)
信号灯输出
图3 交通信号灯控制器程序原理框图
该程序由7个进程组成,进程P1和P2将CLK信号分频后产生1秒信号,进程P3、P4、P5构成两个带有预置数功能的十进制计数器,其中P4产生允许十位计数器计数的控制信号。进程P6实现状态转换和产生状态转换的控制信号,进程P7产生次态信号和信号灯输出信号,以及每一个状态的时间值。
四、程序清单
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity traffic is
port (clk,reset,yj:in std_logic;
led1h,led1l,led2h,led2l:out std_logic_vector(3downto 0);
light:out std_logic_vector(5 downto 0));
end;
architecture one of traffic is
type fsm_st is (a,b,c,d);
signal current_state,next_state:fsm_st;
signal l1h,l1l,l2h,l2l: integer range 0 to 9;
signal t1,t2,time:integer range 0 to 70;
begin
p1: process(clk,reset,yj)
begin
if reset=1then time=0;current_state=a;
elsif yj=0 and (clk=1 and clkevent )then
if time=66 then
time=time+1;
else time =0;
end if;
current_state=next_state;
end if;
end process;
p2: process (current_state, time,yj)
begin
if yj=1then light=100100;
else
case current_state is
when a=light=001100;t1=39-ti
显示全部