简易交通灯控制器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四简易交通灯控制器设计
一、实验目的
了解状态机的典型结构及编写方法。
二、实验要求
使用状态机设计一个交通灯控制器,该控制器用于控制十字路口的信号灯和倒计时显示器。在东西和南北两个方向上均有一组红、黄、绿灯和倒计时显示器,假设各灯交替点亮的时间为:红灯45秒,绿灯40秒,黄灯5秒,同时用数码管指示当前状态的剩余时间。另外设置一个禁止通行控制输入信号端,当该信号为低电平时,两个方向都禁止通行,红灯点亮,计时器不显示时间。完成设计输入、编译、仿真、硬件测试等过程。
三、实验原理与方案
根据实验要求,两个方向灯的点亮状态共有红绿、红黄、绿红、黄红四种组合,如下表:
从表中可以看出,交通灯的有效状态共有4种,某一状态的定时时间到,则转向下一个状态。在采用状态机设计时可以考虑定义一个状态设置,取值范围为S1、S2、S3、S4,另外对应禁止通行的特殊状态还可以设置一个状态S0。为了实现各状态的定时,设置两个计数器EW、SN,分别用于对东西、南北方向的各状态定时。
四、实验内容、步骤与结果
1、项目设计:
1)启动QuartusII,完成项目设置,顶层文件名JTD
2)打开VHDL编辑器将输入程序代码,保存
程序:LIBRARY IEEE;
USE IEEE. STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY JTD IS
PORT(CLK,S2,S1:IN STD_LOGIC;
A_GREEN,A_YELLOW,A_RED:OUT STD_LOGIC;
B_GREEN,B_YELLOW,B_RED:OUT STD_LOGIC);
END ENTITY JTD;
ARCHITECTURE RTL OF JTD IS
TYPE STATE IS(AGREEN,AYELLOW,BGREEN,BYELLOW);
BEGIN
PROCESS(CLK,S2,S1)
V ARIABLE CURRENT_STATE:STATE;V ARIABLE TIMER:INTEGER; V ARIABLE JTD:STD_LOGIC_VECTOR(5 DOWNTO 0);
V ARIABLE FLAG:STD_LOGIC;
BEGIN
IF(S2='1')THEN
CURRENT_STATE:=AGREEN;TIMER:=50;FLAG:='0';
ELSIF(S1='1')THEN
CURRENT_STATE:=CURRENT_STATE;TIMER:=TIMER;FLAG:='1';
JTD:="001001";
ELSIF(CLK'EVENT AND CLK='1')THEN
FLAG:='0'; TIMER:=TIMER-1;
CASE CURRENT_STATE IS
WHEN AGREEN=>
IF(TIMER=0)THEN
CURRENT_STATE:=AYELLOW;TIMER:=5;
END IF;
WHEN AYELLOW=>
IF(TIMER=0)THEN
CURRENT_STATE:=AGREEN;TIMER:=45;
END IF;
WHEN BGREEN=>
IF(TIMER=0)THEN
CURRENT_STATE:=BYELLOW;TIMER:=5;
END IF;
WHEN BYELLOW=>
IF(TIMER=0)THEN
CURRENT_STATE:=BGREEN;TIMER:=45;
END IF;
END CASE;
END IF;
IF(FLAG='0')THEN
CASE CURRENT_STATE IS
WHEN AGREEN=>JTD:="100001"; WHEN AYELLOW=>JTD:="010001"; WHEN BGREEN=>JTD:="001100"; WHEN BYELLOW=>JTD:="001010";
END CASE;
END IF;
A_GREEN<=JTD(5);A_YELLOW<=JTD(4);A_RED<=JTD(3);
B_GREEN<=JTD(2);B_YELLOW<=JTD(1);B_RED<=JTD(0);
END PROCESS;
END RTL;
2、项目编译:
1)将设计文件设置为顶层文件
2)编译
3、功能仿真:
1)建立波形文件
2)参数设置
3)先再次编译,生成功能仿真的网表
4)点击波形仿真快捷键进行仿真,仿真结果如下:
五、实验结果分析
典型的状态机结构包括说明部分,主控时序进程、主控组合进程。说明部分中使用TYPE语句将状态变量定义为新的数据类型,主控时序进程在时钟脉冲的驱动下实现状态转换,主控组合进程控制下一状态的走向和电路的输出。
在锁定引脚之后,从芯片引出到LED显示的引线线序要正确,否则,即使编程、时序仿真正确,也得不到正确的结果。交通灯的有效状态共有4种,某一状态的定时时间到,则转向下一个状态。