Exercise 8 交通灯控制器
201800800659 通信一班 杨珺博
实验八报告
201800800659 通信一班 杨珺博
(一) 实验任务
学校拟在校园中繁忙的学术路(A)和文化路(C)的十字路口安装交通灯,
每条路上安装一组红黄绿交通灯来控制交通。还分别在两条路上安装了两个传感
器 TA 和 TC,当路上有人时,传感器输出 1,没人输出 0。采用 VHDL 的有限状态
机来设计一个交通灯控制器 Controller,要求实现以下控制功能:
1.按下复位键 RST 时,学术路上的绿灯亮,文化路上的红灯亮。
2.每隔 5 秒钟,控制器检查学术路传感器的输出。
3.若学术路上有人,灯不改变;若学术路上没人,则此路变为黄灯亮并保持 5
秒钟,然后变成红灯亮,同时文化路上变为绿灯亮。
4.此状态下,每隔 5 秒钟,控制器检查文化路是否有人。若有人,保持绿灯亮;
若没人,则此路变为黄灯亮并保持 5 秒钟,然后变成红灯亮,同时学术路上变为
绿灯亮。
5.状态机采用周期为 5 秒的时钟信号。
(二)设计思路
利用有限状态机实现不同情况下信号灯的变化。将信号灯的三种颜色通过三
维向量表示,从高到低按照红黄绿的顺序排列。
即红色=“100”=4; 黄色=“010”=2; 绿色=“001”=1,可使结果更加清晰
利用时序电路中时钟信号的周期来控制间隔时间
使用 case 语句和 if 语句来描述各个状态下信号灯的颜色情况
Exercise 8 交通灯控制器
201800800659 通信一班 杨珺博
(三)实验步骤
VHDL 代码:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY Controller IS
PORT (TA, TC, RST, clk:IN STD_LOGIC;
lightA,lightC:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));--将信号灯的三种颜色按红黄绿
END ENTITY Controller;
ARCHITECTURE one OF Controller IS
TYPE Crl_ST IS (S0,S1,S2,S3);
SIGNAL c_st, next_state:Crl_ST;
BEGIN
的顺序定义为向量
--定义状态符号
--将现态和次态定义为新的数据类型 c_st
REG: PROCESS(RST,clk) BEGIN
--主控时序进程
IF RST = '0' THEN c_st <= S0;
--检测异步复位信号,复位后回到初态 s0
ELSIF clk = '1' AND clk'EVENT THEN c_st <= next_state;
END IF;
END PROCESS REG;
COM:PROCESS(c_st,TA,TC) BEGIN
--主控组合进程
CASE c_st IS
WHEN s0 => lightA <= "001";
--初态 A 路绿灯亮,C 路红灯亮
lightC <= "100";
IF TA='1' THEN next_state<=s0;
ELSE next_state<=s1;
END IF;
--A 路有人时灯不变
WHEN s1 => lightA <= "010";
--A 路没人时,A 路灯变黄,C 路不变
lightC <= "100";
next_state<=s2;
WHEN s2 => lightA <= "100";
--A 路黄灯亮 5 秒后 A 路变红灯,同时 C 路变绿灯
lightC <= "001";
IF TC='1' THEN next_state<=s2;
ELSE next_state<=s3;
END IF;
--C 路有人时灯不变
WHEN s3 => lightA <= "100";
--C 路没人时,C 路灯变黄,A 路不变
lightC <= "010";
next_state<=s0;
--C 路有人时,回到初态
WHEN OTHERS => NULL;
END CASE;
END PROCESS COM;
END ARCHITECTURE one;
Exercise 8 交通灯控制器
201800800659 通信一班 杨珺博
RTL 网表:
状态转换图:
1
2
3
4
5
6
(注:红色=“100”=4; 黄色=“010”=2; 绿色=“001”=1)
4)
4)
4)
由波形图可得,当 RST=0 时,此时复位,A 路绿灯亮,C 路红灯亮。(1
当 RST=1 时:
1:clk 上升沿到来检验 TA 传感器的值,为 1,说明 A 路有人,信号灯颜色不变;
(1
2:clk 上升沿再次到来,检验得 TA 值为 0,A 路无人,A 路信号灯变黄,C 路不
变;(2
3:A 路黄灯维持 5 秒后,A 路变为红灯,C 路变为绿灯;(4
4:此状态下,TC 变为 1,C 路有人,信号灯不变;(4
1)
5:TC 为 0,C 路无人,C 路信号灯变黄,A 路不变;(4
6:C 路黄灯维持 5 秒后,C 路变为红灯,A 路变为绿灯,回到初态(1
1)
2)
4)
Exercise 8 交通灯控制器
201800800659 通信一班 杨珺博
(四)实验总结
本设计采用 VHDL 有限状态机,体现出其巨大的优越性,它能够克服纯硬件数
字系统顺序方式控制不灵活的缺点,可根据控制信号按照预先设定的状态进行顺
序进行的,容易利用现成的 EDA 工具进行优化设计,且系统性能稳定,告诉可靠。
此次实验在确立总体与其实现功能的前提下,分层次设计,一开始由于经验不足,
耗费较长时间,有些地点还需要进一步改善。