交通信号灯的设计档.docx

上传人:b****4 文档编号:12058778 上传时间:2023-04-16 格式:DOCX 页数:18 大小:141.84KB
下载 相关 举报
交通信号灯的设计档.docx_第1页
第1页 / 共18页
交通信号灯的设计档.docx_第2页
第2页 / 共18页
交通信号灯的设计档.docx_第3页
第3页 / 共18页
交通信号灯的设计档.docx_第4页
第4页 / 共18页
交通信号灯的设计档.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

交通信号灯的设计档.docx

《交通信号灯的设计档.docx》由会员分享,可在线阅读,更多相关《交通信号灯的设计档.docx(18页珍藏版)》请在冰豆网上搜索。

交通信号灯的设计档.docx

交通信号灯的设计档

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

【题目】

交通信号灯的控制器

【设计任务与要求】

(1)设计任务

设计一个主干道与支干道十字路口的交通管理系统,并用VHDL进行描述。该交通管理的技术要求为:

如果只有一个方向有车时,则保持该方向畅通;当两个方向都有车时,主干道与支干道交替通行,但是主干道通行的是将要比支干道通行的时间要长一些。

(2)设计要求

1、当处于“主干道绿灯,支道红灯”状态:

a、主干道要车要求通行,支道也有车要求通行时,若主干道通行时间大于30秒则切换到“主黄,主红”,4秒后自动切换到“主红,支绿”;

b、主干道无车要求通行,支道有车要求通行时,立即切换到“主红,支绿”;

c、其他情况保持“主绿,支红”状态。

2、当处于“主干道红灯,支干道绿灯”状态:

a、支道有车要求通行时,保持“主红,支绿”状态,但最多保持30秒然后主动切换到“主红,支黄”状态,4秒后自动切换到“主绿,支红”状态;

b、支道无车要求通行时,立即切换到“主红,支黄”状态,4秒后自动切换到“主绿,支红”状态。

3、利用八位七段管码显示模块其中的2位实现时间显示。

4、扩展要求:

要求设计(改变时间显示方式,丰富控制逻辑等)

【设计原理及方案】

利用状态机按照设定的条件实现“主绿,支红”、“主黄,支红”、“主红,支绿”、“主红,支黄”四种状态之间的转换。

十字路口的示意图如右图所示。在主干道和支干道两个方向上都安装红、黄、绿三色信

号灯;Ca和Cb分别是安装在主干道和支干

道上的传感器,用于检测是否有车辆需要通

过路口。在只有主干道有车时,主干道亮绿

灯,支干道亮红灯;当只有支干道有车时,

主干道亮红灯,支干道亮绿灯;当了两个方

向都有车时,两个方向轮流亮绿灯和红灯。

交通管理系统的结构图如下所示:

设计系统主要由控制器和

受控器的定时器组成。定时器

用来确定主干道、支干道的通

行时间以及公共停车时间;

CNT是定时的值;LD是定时

值的同步预置信号,高电平有

效;ST是这个定时器的状态信

号,当定时结束后,ST输出为

1;Ca和Cb分别为主干道和支

干道的传感器输出信号,高电

平表示有车需要通过;clk是

期为秒的时钟信号;reset是异交通管理系统结构图

步复位信号,低电平有效,复位

后的初始状态为主干道畅通;Ra、

Ya、Ga和Rb、Yb、Gb分别为主

道和支干道的红、黄、绿灯的控制

信号,高电平有效。

如下图所示,该图很清楚的表明了该交通状态间的转换关系。

状态转换图

【电路设计与实现】

设计电路由分频器、计数器、控制器、输出系统等组成。

(1)、分频器电路的频率本为50MHz,但是电路中我设计需要2000Hz和1Hz的信号。由1HZ分频器输出的信号,输入到控制器当中,分析路灯的情况。由2000Hz输出分频器输出地信号,输入到输出端,分析其输出的情况。其程序如下所示:

1Hz的分频器程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityfenpinis

port(clk:

instd_logic;

finout:

outstd_logic);

endfenpin;

architecturebhvoffenpinis

signaltmp:

INTEGERRANGE0TO49999999;---1HZ的分频

begin

process(clk)

begin

ifclk'eventandclk='1'then

iftmp=49999999thentmp<=00000000;

elsetmp<=tmp+1;

endif;

iftmp<25000000thenfinout<='0';

elsefinout<='1';

endif;

endif;

endprocess;

endbhv;

对上述程序进行完编译仿真后,得到其源元件,如上图所示

512Hz的分频器源程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityfenpin123is

port(clk:

instd_logic;

clkfen:

outstd_logic);

endfenpin123;

architecturefenpinoffenpin123is

signalclk_mid:

std_logic;

begin

process(clk)

variabledata:

integerrange0to48828;---将基准信号分频到512Hz

begin

ifclk'eventandclk='1'then

ifdata=48828then

data:

=0;

clk_mid<=notclk_mid;

else

data:

=data+1;

endif;

endif;

clkfen<=clk_mid;

endprocess;

endfenpin;

对上述程序进行完编译仿真后,得到其源元件,如上图所示

(2)、计数器

实验过程中,计数器用来计时,主干道或支干道亮绿灯时,计数30S,过度切换带计数4S。

计数器程序如下所示:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;--打开IEEE库包

ENTITYcounterIS--定义实体

PORT(clk:

INSTD_LOGIC;

reset:

instd_logic;

countNum:

BuFFeRINTEGERRANGE0TO64);

END;--实体结束语句

ARCHITECTUREbehaviorOFcounterIS--定义结构体

BEGIN

process(reset,Clk)

BEGIN

IFReset='1'THEN

countNum<=0;

ELSIFrising_edge(Clk)THEN

IFcountNum=64THEN

countNum<=0;

ELSE

countNum<=countNum+1;

ENDIF;

ENDIF;

ENDPROCESS;--结束进程语句

END;--结构体结束

对上述程序进行完编译仿真后,得到其源元件,如上图所示

(3)控制器

控制器内部分析信号,然后控制输出地灯管的颜色。这是整个实验中的主要功能元件,它是实现交通灯转换的必要条件。

控制器的源程序如下:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOGIC_ARITH;--打开数据库里的包集

ENTITYtrafficIS--定义实体

PORT(

CLK,SM,SB:

INBIT;

MR,MY,MG,BR,BY,BG:

OUTBIT;

reset:

OUTstd_logic;

CountNum:

inINTEGERRANGE0TO64;--计数器输入的信号

Num:

outINTEGERRANGE0TO31--控制器输出的信号

);

ENDtraffic;--实体结束语句

ARCHITECTUREBEHAVOFtrafficIS--定义结构体

TYPESTATE_TYPEIS(A,B,C,D);--对四种状态的定义

SIGNALSTATE:

STATE_TYPE;--定义结构体内的信号

BEGIN

CNT:

PROCESS(CLK,SM,SB,CountNum)--进程语句,定义敏感信号

BEGIN

IFCLK'EVENTANDCLK='1'THEN

CASESTATEIS

WHENA=>MR<='0';MY<='0';MG<='1';--主绿支红(无车请求通过)(在主绿支红状态下-->)

BR<='1';BY<='0';BG<='0';

RESET<='0';

IF(SBANDSM)='1'THEN---主干支干都有车请求

IFCountNum<=29THEN--30秒内主道通

Num<=30-CountNum;

ELSE

STATE<=B;RESET<='1';--30秒后主黄支红

ENDIF;

ENDIF;

IF(SBAND(NOTSM))='1'THEN--只有支道有车请求

STATE<=B;RESET<='1';--立即变主黄支红

ENDIF;

WHENB=>MR<='0';MY<='1';MG<='0';--定义主黄支红(在主黄支

红状态下-->)

BR<='1';BY<='0';BG<='0';

RESET<='0';

IFCountNum<=3THEN

Num<=4-CountNum;

ELSE

STATE<=C;RESET<='1';--4秒后变主红支绿

ENDIF;

WHENC=>MR<='1';MY<='0';MG<='0';--定义主红支绿(在主红支绿状态下-->)

BR<='0';BY<='0';BG<='1';

RESET<='0';

IFSB='1'THEN--主红支绿状态下支道有车请求

IFCountNum<=29THEN--30秒内支道通

Num<=30-CountNum;

ELSE

STATE<=D;RESET<='1';--30秒后主红支黄

ENDIF;

ENDIF;

IFSB='0'THEN--或是支道没车请求时,立即切换到主红支黄

STATE<=D;RESET<='1';

ENDIF;

WHEND=>MR<='1';MY<='0';MG<='0';--主红支黄(在主红支黄状态下-->)

BR<='0';BY<='1';BG<='0';

RESET<='0';

IFCountNum<=3THEN

Num<=4-CountNum;

ELSE

STATE<=A;RESET<='1';---4秒后自动切换到主绿支红

ENDIF;

WHENOTHERS=>STATE<=A;

ENDCASE;

ENDIF;

ENDPROCESSCNT;--结束进程语句

ENDBEHAV;--结构体结束

对上述程序进行完编译仿真后,得到其源元件,如上图所示

(4)分配器

分配器用来控制和调整信号的输出。

分配器的源程序如下所示:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOGIC_ARITH;--打开IEEE库包

ENTITYFENWEIIS--定义实体

PORT

(Numin:

INintegerRANGE0TO31;

NumA,NumB:

OUTIntegerRANGE0to9

);

END;

ARCHITECTUREbehaviorOFFENWEIIS--定义结构体

BEGIN

process(Numin)--进程语句,定义敏感信号

BEGIN--进程语句描述开始

IFNumin>=30THEN

NumA<=3;

NumB<=Numin-30;

ELSIFNumin>=20THEN

NumA<=2;

NumB<=Numin-20;

ELSIFNumin>=10THEN

NumA<=1;

NumB<=Numin-10;

ELSE

NumA<=0;

NumB<=Numin;--将交通灯显示时间用两位数分别显示

ENDIF;--结束循环

ENDPROCESS;--结束进程

END;--结构体结束语句

对上述程序进行完编译仿真后,得到其源元件,如上图所示

(5)、输出系统

输出系统用来控制输出信号。包括数字的输出和模拟交通灯的颜色变化。

输出器的源程序如下所示:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;--打开IEEE库包

ENTITYbcd_dataIS--定义实体

PORT

(bcd_data:

inSTD_LOGIC_VECTOR(3downto0);

segout:

outSTD_LOGIC_VECTOR(6downto0));

END;

ARCHITECTUREbehaviorOFbcd_dataIS--定义结构体

BEGIN

process(bcd_data)--进程语句,定义敏感信号

BEGIN

casebcd_datais--七段译码管的实现

when"0000"=>segout<="1111110";

when"0001"=>segout<="0110000";

when"0010"=>segout<="1101101";

when"0011"=>segout<="1111001";

when"0100"=>segout<="0110011";

when"0101"=>segout<="1011011";

when"0110"=>segout<="1011111";

when"0111"=>segout<="1110000";

when"1000"=>segout<="1111111";

when"1001"=>segout<="1111011";

whenothers=>null;

ENDCASE;--结束循环

ENDPROCESS;--结束进程

END;--结构体结束语句

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_unsigned.ALL;--打开IEEE库包

ENTITYdtsmIS--定义实体

PORT(clk:

inSTD_LOGIC;

NumA,NumB:

inSTD_LOGIC_VECTOR(3downto0);

segout1:

outSTD_LOGIC_VECTOR(6downto0);

led_sel:

outSTD_LOGIC_VECTOR(2downto0));--选择控制端的定义--七段码管扫描驱动

ENDdtsm;--实体结束语句

architecturebhvofdtsmis--定义结构体

componentbcd_datais--为bcd_data定义端口

port(bcd_data:

inSTD_LOGIC_VECTOR(3downto0);

segout:

outSTD_LOGIC_VECTOR(6downto0));

endcomponent;

signalx:

STD_LOGIC_VECTOR(3downto0);--定义信号

signalQ:

STD_LOGIC;

begin

p1:

process(clk)--p1进程语句描述开始

begin

ifclk'eventandclk='1'then--上升沿来临时:

ifQ='1'THENQ<='0';

ELSEQ<='1';

ENDIF;

endif;

endprocess;--p1进程结束

p2:

process(Q)--p2进程语句描述开始

begin

caseQis

when'0'=>led_sel<="010";x<=NumB;

when'1'=>led_sel<="001";x<=NumA;

whenothers=>null;

endcase;

endprocess;--p1进程结束

u1:

bcd_dataPORTmap(bcd_data=>x,segout=>segout1);

end;--p1进程结束

对上述程序进行完编译仿真后,得到其源元件,如上图所示

将上述各个源文件写完后,各自生成元件,在电路模拟区内连接电路。附上输出端和输入端后,其电路如下图所示:

其中电路仿真过程中,管脚对应表如下所示:

信号名称

对应FPGA管脚名

说明

50MHz

L1

基准时钟

A

G6

七段数码管a

B

G7

七段数码管b

C

H3

七段数码管c

D

H4

七段数码管d

E

H5

七段数码管e

F

H6

七段数码管f

G

J4

七段数码管g

SEL0

G5

数码管选择控制端0

SEL1

G3

数码管选择控制端1

SEL2

F4

数码管选择控制端2

R1

D3

主干道红灯

Y1

D4

主干道黄灯

G1

D5

主干道绿灯

R2

E3

支道红灯

Y2

E4

支道黄灯

G2

F3

支道绿灯

K1

E15

主干道通车请求开关

K2

B14

支道通车请求开关

【分析与讨论】

本次实验所用的编译环境是由Altera公司推出的新一代可编译逻辑器件开发系统Quartus

。初次使用这种软件,对这种编译环境很是陌生,不过通过慢慢练习,我学会了使用这个软件并能初步掌握了VHDL语言。

交通信号灯的设计这个实验原理看似很简单,但是实现过程却很复杂。首先,要我实验过程分成几个模块来分步实现,其中分频器的选择非常重要,不止需要选1Hz的分频器,还需要高于512Hz的分频器,因为输出系统的信号频率至少得高于512Hz,这样信号双端输出,这样就可以比较正确的得到交替变换的模拟交通灯信号与计时信号。

本次试验也有很多需要注意的问题。首先是程序问题,不管是写程序还是对程序的仿真,对于我这个以前从来没有接触过VHDL语言的人来说都很困难,程序是严谨的,不容许一点点的差错,不过熟练之后就好多了。VHDL程序都有其一定的板块和结构,只要按照这个板块走,就可以正确的写出程序。再就是Quartus

的使用问题,Quartus

使用起来比较繁琐,步骤很多,一不小心掉下一步就会出问题,需要对以严谨的态度。

【实习心得】

本次实习对我来说是大学中实习中具挑战性较有趣的一次实习。程序的不熟悉是整个过程的难点,然而掌握了理论知识并不代表实验操作的成功,在设计过程中仍会遇到很多困难,比如Quartus

软件的熟练使用等。在设计中我充分体会到了理论知识与实践相结合的难处,同时也激发了我挑战的兴趣。通过本次实习加强了我们自己动手思考解决问题的能力。

【参考文献】

(1)、邓元庆、贾鹏数字电路与系统设计2008西安电子科技大学出版社;

(2)、李哲英、骆丽数字集成电路设计2007机械工业出版社;

(3)、刘润华、任旭虎电子技术实验与课程设计2005石油大学出版社;

(4)、于云华、刘润华数字电子技术基础2008中国石油大学出版社;

(5)、沈明山EDA技术及可编程器件应用实训2004科学出版社;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1