交通灯信号控制器的设计实验报告

  • 格式:docx
  • 大小:2.55 MB
  • 文档页数:20

下载文档原格式

  / 20
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

交通灯信号控制器的设计

1、实验目的

(1)学习QuartusII软件的基本使用方法。

(2)学习VHDL程序的基本结构和基本语句。

2、实验内容

欲设计一个由一条主干道和一条支干道的汇合点形成的十字交叉路口的交通灯控制器,具体要求如下:

(1)主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。

(2)主干道处于常允许通行状态,支干道有车来时才允许通行;当主干道允许通行亮绿灯时,支干道亮红灯;支干道允许通行亮绿灯时,主干

道亮红灯。

(3)当主、支道均有车时,两者交替允许通行,主干道每次放行45s,支干道每次放行25s,在每次由亮绿灯变成亮红灯的转换过程中,要亮

5s的黄灯作为过渡,并进行减计时显示。

3、设计思路

交通控制器拟由单片的CPLD/FPGA来实现,经分析设计要求,整个系统由8

个单元电路组成,包括:

JTDKZ:交通灯状态控制

CNT45S:45秒计时

CNT05S:5秒计时

CNT25S:25秒计时

XSKZ:产生数码管段码数据,数据为BCD码

YMQ:译码器,将BCD码转为段码

CTRLS:产生数码管动态扫描信号

MUXB41:4选1数据选择器,并产生位选信号

整个控制系统中,U1为交通灯控制模块JTDKZ,此模块根据主、支道传感器信号SM、SB以及来自时基发生电路的时钟信号CLK,发出主、支道指示

灯的控制信号,同时向各定时单元、显示控制单元发出使能控制信号EN45、

EN25、EN05M、EN05B;U2、U3、U4为45s、5s、25s定时单元CNT45S、

CNT05S、CNT25S,这些单元根据SM、SB、CLK及JTDKZ发出的有关使能控

制信号EN45、EN25、EN05M、EN05B,按要求进行定时,并将其输出传送至

显示控制单元;U5为显示控制单元XSKZ,此单元根据JTDKZ发出的有关使能

控制信号EN1、EN2、EN3、EN4选择定时单元CNT45S、CNT05S、CNT25S

的输出,并将之传送至各显示译码器:U6、U7、U8、U9为译码器YMQ,它将

显示控制单元XSKZ的输出作为输入进行译码,将XSKZ的时间BCD码译码为

数码管的8位段码,并将产生的段码经MUXB41送给数码管进行动态扫描显示

的过程,动态扫描的选测信号由CTRLS产生。

在定时单元CNT45S和CNT25S的设计中,根据设计要求需要进行减计数,但本设计中仍使用的是加法计数,只是在将计数结果转换成两位BCD码时,将

计数的最小值对应转换成显示定时的最大值,计数值加1时,转换的显示值减

1,以此类推。同时,由于主、支道从亮绿灯转到亮红灯中间有5s亮黄灯的时

间过渡,因此对应的支、主道亮红灯的时间比对应的主、支道亮绿灯的时间要

多5s,考虑到此原因,CNT45S和CNT25S计数器在把计数结果转换成显示的

BCD码值时,将用于驱动绿灯的BCD码按实际定时要求转换,而将对应的用于

驱动红灯的BCD码在实际定时要求的基础上加5进行转换。

4、实验设计

1)系统原理框图

本系统总体可分为两个两个层次,即LED显示和数码管显示,核心模块为

JTDKZ产生系统的所有信号

2)VHDL程序

JTDKZ的VHDL程序

--Jtdkz.vhd

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY JTDKZ IS

PORT(CLK,SM,SB:IN STD_LOGIC;

MR,MY,MG,BR,BY,BG:OUT STD_LOGIC);

END ENTITY JTDKZ;

ARCHITECTURE ART OF JTDKZ IS

TYPE STATE_TYPE IS(A,B,C,D);

SIGNAL STATE:STATE_TYPE:=A;

BEGIN

CNT:PROCESS(CLK) IS

VARIABLE S:INTEGER RANGE 0 TO 45:=0;

VARIABLE CLR:BIT:='0';

VARIABLE EN:BIT:='0';

BEGIN

IF(CLK'EVENT AND CLK='1') THEN

IF CLR='0' THEN S:=0;

ELSIF EN='0' THEN S:=S;

ELSE S:=S+1;

END IF;

CASE STATE IS

WHEN A=>MR<='0';MY<='0';MG<='1';BR<='1';BY<='0';BG<='0';

IF(SB AND SM)='1' THEN

IF S=45 THEN STATE<=B;CLR:='0';EN:='0';

ELSE STATE<=A;CLR:='1';EN:='1';

END IF;

ELSIF(SB AND (NOT SM))='1' THEN

STATE<=C;CLR:='0';EN:='0'; --STATE<=B

ELSE STATE<=A;CLR:='1';EN:='0'; --

END IF;

WHEN B=>MR<='0';MY<='1';MG<='0';BR<='1';BY<='0';BG<='0';

IF S=5 THEN STATE<=C;CLR:='0';EN:='0';

ELSE STATE<=B;CLR:='1';EN:='1';

END IF;

WHEN C=>MR<='1';MY<='0';MG<='0';BR<='0';BY<='0';BG<='1';

IF(SB AND SM)='1' THEN

IF S=25 THEN STATE<=D;CLR:='0';EN:='0';

ELSE STATE<=C;CLR:='1';EN:='1';

END IF;

ELSIF SB='0' THEN STATE<=A;CLR:='0';EN:='0';

ELSIF S=25 THEN STATE<=D;CLR:='0';EN:='0';

ELSE STATE<=C;CLR:='1';EN:='1';

END IF;

WHEN D=>MR<='1';MY<='0';MG<='0';BR<='0';BY<='1';BG<='0';

IF S=5 THEN STATE<=A;CLR:='0';EN:='0';

ELSE STATE<=D;CLR:='1';EN:='1';

END IF;

WHEN OTHERS =>STATE<=A;

END CASE;

END IF;

END PROCESS CNT;

END ARCHITECTURE ART;

XSKZ的VHDL程序

--Xskz.vhd

LIBRARY IEEE;