1、 交通信号控制器的 VHDL 设计 指导老师: 班 级:通信工程 学 号: 姓 名: 完成日期:2012 年 4 月 6 日 一、设计任务 模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿 LED 作为交通信号灯,设计一个交通信号灯控制器。要求: (1) 交通灯从绿变红时,有 4 秒黄灯亮的间隔时间; (2) 交通灯红变绿是直接进行的,没有间隔时间; (3) 主干道上的绿灯时间为 40 秒,支干道的绿灯时间为 20 秒; (4) 在任意时间,显示每个状态到该状态结束所需的时间。 A B C D 主干道交通 灯 绿(40 秒) 黄(4 秒) 红(20 秒) 红(4 秒) 支干道交通
2、 灯 红 红 绿 黄 表 1 交通信号灯的 4 种状态 二、设计目的 学习DEA开发软件和QuartusII的使用方法,熟悉可编程逻辑器件的使用。通 过制作来了解交通灯控制系统, 交通灯控制系统主要是实现城市十字交叉路口红 绿灯的控制, 设计交通灯控制系统主要是为了实现城市十字交叉路口红绿灯的控 制。通过掌握VHDL程序设计的实现,熟悉可编程逻辑器件的使用。同时加深对交 通灯控制系统的了解与应用。 三、设计方案 采用 VHDL 语言输入的方式实现交通信号灯控制器 CLK 时间显示数据 输出 信号灯输出 图 3 交通信号灯控制器程序原理框图 该程序由 7 个进程组成,进程 P1 和 P2 将 C
3、LK 信号分频后产生 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_l
4、ogic_vector(3downto 0); light:out std_logic_vector(5 downto 0); end; 秒脉冲 信号发生器 (进程 P1 和 计数器 (进程 P3、 P4 和 P5) 状态寄 存器 (进程 次态发生器 信 号 灯 输 出 信号 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 =