数字电路-交通灯控制器-实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课题1.4.2:交通灯控制器
一.设计课题的任务要求:
(一)、实验目的
1. 熟练掌握VHDL 语言和QuartusII 软件的使用;
2. 理解状态机的工作原理和设计方法;
(二)、相关知识
本实验要利用CPLD 设计实现一个十字路口的交通灯控制系统,与其他控制系统一样,本系统划分为控制器和受控电路两部分。控制器使整个系统按设定的工作方式交替指挥车辆及行人的通行,并接收受控部分的反馈信号,决定其状态转换方向及输出信号,控制整个系统的工作过程。
路口交通灯控制系统的有东西路和南北路交通灯R(红)、Y(黄)、G(绿)三色,所有灯均为高电平点亮。设置20s 的通行时间和5s 转换时间的变模定时电路,用数码管显示剩余时间。提供系统正常工作/复位和紧急情况两种工作模式。
(三)、实验任务
1.基本任务:
设计制作一个用于十字路口的交通灯控制器。
1). 南北和东西方向各有一组绿、黄、红灯用于指挥交通,绿灯、黄灯和红灯的持续时间分别为20 秒、5 秒和25 秒;
2). 当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制器恢复原来状态,继续正常运行;
3). 用数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间;
二.系统设计(包括设计思路、总体框图、分块设计)
(一)设计思路
1.总体设计----输入部分:
1)CLK时钟频率输入,可由实验板上直接提供,为准确确定时间长度,选择1024Hz信号。
2)紧急状态按键拨码开关EMERGENCY,当将其置为高电平,表示紧急情况发生,两个方向均为红灯
亮,计时停止;当置其为低电平,信号灯和计时器恢复原来状态,正常工作。
3)复位拨码开关RESET,当将其置为高电平,表示复位,工作停止,全部回到初始状态;当置其为低
电平,重新开始工作。
2.总体设计----输出部分:
1)东西方向和南北方向各使用3个LED显示,LIGHT1,LIGHT2,红黄绿各代表红黄绿灯。
2)东西方向和南北方向计时均为2位数,共需要4个LED七段数码管显示。
(二)总体框图
1.输入输出示意图
2.模块示意图
3.流程图
4.RTL图
5.状态显示
红绿灯显示状态状态
S0 南北绿灯亮,东西红灯亮
S1 南北黄灯亮,东西红灯亮
S2 南北红灯亮,东西绿灯亮
S3 南北红灯亮,东西黄灯亮
S4 南北东西红灯都亮
(三)分块设计-------在VHDL设计中,采用自顶向下的设计思路。
1.顶层模块中,根据硬件设计,设置如下端口:
◆外部时钟信号:CLK
◆紧急状态按键:EMERGENCY
◆南北方向状态灯:LIGHT1
◆东西方向状态灯:LIGHT2
◆数码管显示信号:NUM
◆控制数码管:B_OUT
2.在底层中,把不同功能分模块设计。
◆FREQUENCY模块,由于外部时钟信号CLK的频率为1024Hz,而实际需要的内部计时时钟频率为
1Hz,需要一个分频电路。
输入端口:CLK外部时钟信号
输出端口:CLK_OUT分频后信号
◆COUNTER模块,由于整个过程的显示周期为50秒,即50个状态,所以该模块为计数器模块,计
数周期为50,输入为1Hz的外部时钟,并加入紧急信号和复位信号,当输入紧急信号,计数停止,
当输入复位信号,计数置1.通过该计数器的计数输出信号来控制LIGHT模块和COUNTDOWN模块
的状态。
输入端口:CLK时钟信号,EMERGENCY紧急信号,RESET复位信号
输出端口:COUNTER计数状态信号
◆COUNTDOWN模块,倒计时显示模块,通过输入的COUNTER和CLK来控制数码管共阴极和7
段数码管数字显示控制。
输入接口:CLK时钟信号,COUNT计数器信号
输出接口:CAT_TEMP共阴极控制,NUMIN数字输出
◆bian_ma_6模块:将输入接口的CAT_TEMP共阴极控制转换为三八译码器的输入端。
输入端口:CAT_TEMP共阴极控制
输出端口:b_out;
◆SHOW模块,接收数字信号,进行7位数码管显示译码输出。
输入接口:NUMIN输入信号
输出接口:NUM译码输出
◆LIGHT信号灯控制模块,使用状态机,双进程控制5个状态
输入接口:COUNT计数器信号,EMERGENCY紧急状态控制
输出接口:LIGHT1,LIGHT2信号灯输出
三.仿真波形及波形分析
仿真波形
1.状态周期为1~50,在每个状态内,数码管共阴极进行扫描,且扫描同时数码管显示进行循环变化
2.周期状态,在1~20,21~25,26~45,46~50进行红绿灯显示变化
3.一整个周期状态1~50,在1~20,21~25,26~45,46~50进行红绿灯显示变化
4.多个周期循环
5.紧急状态和复位状态
四.源程序(注释)
●FREQUENCY--分频模块:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY FREQUENCY IS
PORT(
CLK:IN STD_LOGIC;
CLK_OUT:OUT STD_LOGIC
);
END FREQUENCY;
ARCHITECTURE FREQ OF FREQUENCY IS
SIGNAL TEMP:INTEGER RANGE 0 TO 1023;----设置分频1023,则为1Hz
BEGIN