交通灯控制逻辑电路的设计.docx

上传人:b****8 文档编号:12871019 上传时间:2023-06-08 格式:DOCX 页数:26 大小:386.33KB
下载 相关 举报
交通灯控制逻辑电路的设计.docx_第1页
第1页 / 共26页
交通灯控制逻辑电路的设计.docx_第2页
第2页 / 共26页
交通灯控制逻辑电路的设计.docx_第3页
第3页 / 共26页
交通灯控制逻辑电路的设计.docx_第4页
第4页 / 共26页
交通灯控制逻辑电路的设计.docx_第5页
第5页 / 共26页
交通灯控制逻辑电路的设计.docx_第6页
第6页 / 共26页
交通灯控制逻辑电路的设计.docx_第7页
第7页 / 共26页
交通灯控制逻辑电路的设计.docx_第8页
第8页 / 共26页
交通灯控制逻辑电路的设计.docx_第9页
第9页 / 共26页
交通灯控制逻辑电路的设计.docx_第10页
第10页 / 共26页
交通灯控制逻辑电路的设计.docx_第11页
第11页 / 共26页
交通灯控制逻辑电路的设计.docx_第12页
第12页 / 共26页
交通灯控制逻辑电路的设计.docx_第13页
第13页 / 共26页
交通灯控制逻辑电路的设计.docx_第14页
第14页 / 共26页
交通灯控制逻辑电路的设计.docx_第15页
第15页 / 共26页
交通灯控制逻辑电路的设计.docx_第16页
第16页 / 共26页
交通灯控制逻辑电路的设计.docx_第17页
第17页 / 共26页
交通灯控制逻辑电路的设计.docx_第18页
第18页 / 共26页
交通灯控制逻辑电路的设计.docx_第19页
第19页 / 共26页
交通灯控制逻辑电路的设计.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

交通灯控制逻辑电路的设计.docx

《交通灯控制逻辑电路的设计.docx》由会员分享,可在线阅读,更多相关《交通灯控制逻辑电路的设计.docx(26页珍藏版)》请在冰点文库上搜索。

交通灯控制逻辑电路的设计.docx

交通灯控制逻辑电路的设计

摘要:

根据实际路口的交通灯设置与运行规律,基于VHDL硬件描述语言,利用FPGA器件EP1K10TC100_3和自行设计的高亮LED交通灯指示模拟电路板以及数码显示模拟电路板,通过了QuartusⅡ软件的功能仿真和实际调试,体现了EDA技术的设计优越性。

关键词:

交通灯;VHDL;FPGA;计数器

Abstract:

Accordingtothedesignandoperationrulesoftrafficlightsatthepracticalcrossings,andbasedonthedescriptivelanguageofVHDLhardwares,makinguseofthedeviceofEP1K10TC100_3andself-designedhighlybrightLEDtrafficlightsindicatingimitationcircuitpanelsandimitationcircuitpanelwithdigitaldisplay,goingthroughfunctionalsimulationandpracticaldebuggingbyQuartussoftwares,thispaperdisplaysthedesignadvantagesofEDA.

Keywords:

trafficlights;VHDL;FPGA;counter

 

前言

交通灯是城市交通中的重要指挥系统,它与人们日常生活密切相关。

随着人们生活水平的提高,对交通管制也提出了更高的要求,因此提供一个可靠、安全、便捷的多功能交通灯控制系统有着现实的必要性。

随着社会经济的发展,城市交通问题越来越引起人们的关注,人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一,同时,交通灯控制系统也是应用电子技术中最经典的电子设计,但目前尚存在系列问题有待解决,例如实际路口设置的交通灯种类较多、数量也较多、程序结构较复杂等等问题。

本次设计整个交通灯控制器电路系统采用veriloghdl程序编写,并能进行硬件仿真。

课题除了学习相应的硬件知识外,还要学习如何使用VHDL语言设计可编程逻辑器件。

VHDL是广泛使用的设计输人硬件语言,可用于数字电路与系统的描述、模拟和自动设计.CPLD/FPGA(复杂可编程逻辑器件/现场可编程门阵列)为数字系统的设计带灵活性,兼有串/并行工作方式和高集成度、高速、高可靠性等明显的特点,CPLD/FPGA的时钟延迟可达纳秒级,结合其并行工作方式,在超高速领域和实时测控方面有非常广泛的应用。

本文根据实际路口的交通灯设置与运行规律,基于FPGA技术设计出交通灯控制电路,不但通过QuartusⅡ软件的功能仿真,而且得到实践的检验,证明设计是符合实际的。

 

4.15V电源的设计................................................19

4.23.3V电源转换电路.............................................20

4.3时钟电路的设计...............................................20

4.4JTAG基本工作原理............................................21

4.5复位电路.....................................................22

4.6复杂可编程PLD电路...........................................23

 

第一章:

绪论

1.1EDA技术概述

EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

1.1.1EDA技术的应用与发展

电子设计技术的核心就是EDA技术,EDA是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作,即IC设计、电子电路设计和PCB设计。

EDA技术是伴随着计算机、集成电路、电子系统设计的发展,经历了计算机辅助设计(CAD)、计算机辅助工程设计(CAE)和电子系统设计自动化(ESDA)三个发展阶段。

20世纪70年代为CAD阶段,这一阶段人们开始用计算机辅助进行IC版图编辑和PCB布局布线,取代了手工操作。

80年代为CAE阶段,与CAD相比,除了纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并通过电气连接网表将两者结合在一起,以实现工程设计。

90年代为ESDA阶段,ESDA的基本特征是设计人员按“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键部分用一片或几片专用集成电路实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件。

ESDA的出现,使设计师开始实现“概念驱动工程”的梦想,从而摆脱了大量的辅助设计作,把精力集中在创造性的方案与概念构思上,极大地提高了系统的效率,缩短了产品的研制周期。

1.1.2EDA技术的基本特征

EDA代表了当今电子设计技术的最新发展方向,它的基本特征是:

设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件,这样的设计方法被称为高层次的电子设计方法。

1.1.3EDA的设计方法

“自顶向下”的设计方法。

高层次设计是一种“自顶向下”的全新设计方法,这种设计方法首先从系统设计人手,在顶层进行功能方框图的划分和结构设计。

在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。

然后,用综合优化工具生成具体门电路的网络表,其对应的物理实现级可以是印刷电路板或专用集成电路。

由于设计的主要仿真和调试过程是在高层次上完成的,这既有利于早期发现结构设计上的错误,避燃计工作的浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次成功率。

1.1.4硬件描述语言

硬件描述语言(HDL)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。

VHDL是一种全方位的硬件描述语言,包括系统行为级。

寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件俄语言的功能,整个自顶向下或由底向上的电路设计过程都可以用VHDL来完成。

VHDL还具有以下优点:

(1)VHDL的宽范围描述能力使它成为高层进设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现。

(2)VHDL可以用简洁明确的代码描述来进行复杂控制逻辑艄设计,灵活且方便,而且也便于设计结果的交流、保存和重用。

(3)VHDL的设计不依赖于特定的器件,方便了工艺的转换。

(4)VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。

1.2数字系统

数字系统是由对信息进行采集,转换、传输、存储、加工处理和利用的一组相互联系,相互作用的部件所组成的一个有机的整体.虽然信息来源不同,有经济信息、政治信息、图文信息,信息形态不一,有离散的、有连续的等等.但都可经过变换,转换成数字系统所能接收的数字信息,进行存储和处理.同时又可把数字系统加工、处理后的信息经过相应逆变换,成为对被控对象进行控制的可靠依据.数字系统具有可靠性强,精确度高,稳定性好可模块化,便于集成等优点.

数字系统通常由三部份组成:

输入接口、输出接口,数据器和控制器其结构如图示:

图1.1数字系统结构图

输入接口是用来将模似量转化为系统能接收的数字量的模块,同理输出接口是完成可逆变化的模块.数字系统的信号包括数据流和控制流信号,对数据流进行传送和加工处理为数据处理器,对控制流信号进行传送和加工处理为控制器.数据处理器和控制器是数字系统中最基本的两个部份.尽管各种数字系统可能具有完全不同的功能和形式,但是都可以用数据处理器和控制所构成的数字系统的本结构来描述.控制器的产生的输出控制信号影响着其它系统控制器的操作,使本系统与其它系统协调一致地工作,控制器的输入信号也有可能是其系统的输出控制信号.数据处理器作用是控制系统内各部份模块的工作,使它们按一定顺序进行操作,数字系统中就是这样通过数据处理器和控制器之间的密切配合协调工作,成为一个自动实现信息处理功能的有机整体.通常以是否有控制器作为区别数字系统和系统部件的标志,凡是包含控制器且能按顺序进行操作的系统,不论规模大小一律称为数字系统,否则只能是一个系统的部件.

1.3数字系统的设计方法

现代数字系统的设计方法早期的数字系统多采用试凑法设计,此法无固定的套路可循,主要凭借设计者的经验。

先进的现代数字系统设计是自上而下的模块化设计。

从整个系统功能出发,按一定原则将系统分成若干个子系统,再将每个子系统分成若干个功能模块,再将每个模块分成若干个较小模块——直至分成许多基本模块实现。

在自上而下划分过程中,最重要的是将系统或子系统按计算机组成思想那样划分成控制器和若干个受控制的功能模块。

受控部分通常为设计者们所熟悉的各种功能电路,无论是采用现成模块还是自行设计都有一些固定方法可依,无须花费更多精力。

主要任务是设计控制器,控制器在系统或子系统中只有一个,设计工作量不大。

从而大大简化了设计的难度,缩短了设计时间,而且修改设计也很方便,避免了牵一发而动全身。

1.3.1自底向上的设计方法(BottomUp)

这是一种传统的设计方法,其主要的设计过程是根据系统对硬件的要求,从整体上规划整个系统的功能,编写出详细技术规格书和系统控制流程图;并根据所给的技术规格书和控制程图,对系统的功能进行细化,合理地划分功能模块,确立它们之间的相互关系:

这种划分过程不断在进行,直到划分得到的单元可以直接映射到实际的物理器件,完成上述划分后再行各功能模块设计与调试工作;最后进行各模块电路的连接并进行系统联调,从而完成整个系统的硬件设计。

早期的数字系统设计多采用这种方法。

1.3.2自顶向下设计(TopDown)

随着微电子技术发展,VHDL硬件描述语言应用越来越广,硬件描述语言可以在各抽象层次上对电子系统进行描述,且借助于DEA设计:

工具,自动地实现从高层次到低层次的转换,使自顶向下的设计过程得以实现。

目前这种设计方法被工程界广为采用。

设计的总过程是从系统总体要求出发,从系统顶层开始,自上而下地逐步将系统设计内容进行细化,借助硬件描述语言进行编程,将系统硬件设计转化成软件编程,在此基础上再利用相应的逻辑综合工具EDA以及在线可编程ISP技术对各种可编程逻辑器件如CPLD、FPGA进行逻辑划分与适配,将所产生的菊花链文件映射到相应的可编芯片内,最后完成硬件的整体设计。

1.4现代数字系统的设计过程

在使用现场可编程逻辑器件以前,数字系统的设计过程是:

书面设计—硬件搭试—制作样机。

硬件搭试是很费时间的,往往因接线紊乱和接触不良而带来各式各样的麻烦,所用器件越多,搭试难度越大,当系统规模大到一定程度,系统复杂到一定程度,这种搭试实际上是不可行的。

由于计算机技术的发展和采用现场可编程逻辑器件,改变了数字系统设计的程式,硬件搭试被仿真所取代。

所谓仿真,就是在计算机上建立起系统的模型,然后加进合适的测试码(对组合电路)或测试序列(对时序电路),对此模型进行测试,以验证系统是否符合预期的设计,如不符合再行修改,直至满足设计要求,然后制作样机。

所以,现代数字系统设计过程是书面设计—仿真—(烧录器件)制作样机,这是一种快捷而且节约的方法。

 

第二章交通灯控制系统介绍

城市中常见的大型十字路口如图2.1所示。

图2.1十字路口示意图

一般情况下,当汽车行驶至十字交通路口时,有3种选择:

向前,向左转弯,向右转弯。

根据我国的交通规则规定,汽车是靠右行驶,向右拐弯只要走弧形的支干道即可,不需受十字交通灯的束缚。

因此,本文主要考虑前行和左转这两种情况。

十字路口交通灯负责控制各走向红绿灯的状态及转换,并且各状态之间有一定的时间过渡。

同时,东西南北每条干道上都为人行横道设置了红绿灯,提醒过路行人在安全时刻穿越道路,以保证行人的安全。

2.1交通灯控制系统的功能

交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制。

在现代化的大城市中,十字交叉路口越来越多,在每个交叉路口都需要使用红绿灯进行交通指挥和管理,红、黄、绿灯的转换要有一个准确的时间间隔和转换顺序,这就需要有一个安全、自动的系统对红、黄、绿灯的转换进行管理,本系统就是基于此目的而开发的。

2.2交通灯控制系统设计

城市路口交通信号控制系统大体上分为三种类型:

定周期的信号机、多时段且具有无电缆协调功能的微电脑型信号机以及联网式自适应多相位智能型信号机。

具体采用哪种类型,应根据其应用场合及特点加以确定。

其中,第一种类型以其成本低,设计简单,安装及维护方便等特点得到了广泛应用。

2.3交通灯控制系统的基本组成模块

交通灯控制器原理框图如图2.2所示,包括置数模块、计数模块、主控制器模块和译码器模块。

置数模块将交通灯的点亮时间预置到置数电路中,计数模块以秒为单位倒计时,当计数值减为零时,主控电路改变输出状态,电路进入下一个状态的倒计时。

其中,核心部分是主控制模块。

图2.2交通灯控制器原理框图

2.4交通灯控制器状态

 

2.5程序流程图

 

第三章:

交通灯控制系统的设计

有一条主干道和一条支干道的汇合点形成的十字路口,为确保车辆安全,迅速通行,在干道和支道的入口设置了红、绿(包括直行和左拐)、黄3色信号灯。

3.1交通灯控制器功能描述及设计方法

通过两组交通灯来模拟控制东西、南北两条通道上的车辆通行,所有功能在实验操作平台上进行模拟通过,根据原理其主要功能如下:

图3.1系统结构图

3.2设计要求

1.能显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态,用两组红、黄、绿三色灯作为两个方向的红、黄、绿灯;

2.南北向为主干道,每次通行时间为30S,东西向为支干道,每次通行时间为20S;

3.能实现正常的倒计时功能,用两组数码管作为东西、南北向的倒计时显示。

其中,黄灯:

5S。

4.能实现特殊状态的功能。

按下SP键后,能实现以下特殊功能:

(1)显示倒计时的两组数码管闪烁;

(2)计数器停止计数并保持在原来的状态;

(3)东西、南北路口均显示红灯状态;

(4)特殊状态解除后能继续计数;

5.能实现全清零功能。

按下reset键后,系统实现全清零,计数器由初状态计数,对应状态的指示灯亮;

6.用VHDL语言设计上述功能的交通灯控制器,并用层次化方法设计该电路;

7.仿真、验证设计的正确性。

3.2.1控制部分的设计

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityledcontrolis

port(reset,clk,urgen:

instd_logic;

state:

outstd_logic_vector(1downto0);

sub,set1,set2:

outstd_logic);

endledcontrol;

architectureaofledcontrolis

signalcount:

std_logic_vector(6downto0);

signalsubtemp:

std_logic;

begin

sub<=subtempand(notclk);

statelabel:

process(reset,clk)

begin

ifreset='1'then

count<="0000000";

state<="00";

elsifclk'eventandclk='1'then

ifurgen='0'thencount<=count+1;subtemp<='1';elsesubtemp<='0';endif;

ifcount=0thenstate<="00";set1<='1';set2<='1';

elsifcount=25thenstate<="01";set1<='1';

elsifcount=30thenstate<="10";set1<='1';set2<='1';

elsifcount=45thenstate<="11";set2<='1';

elsifcount=50thencount<="0000000";elseset1<='0';set2<='0';endif;

endif;

endprocessstatelabel;

enda;

3.2.2显示部分的设计

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityledshowis

port(clk,urgen:

instd_logic;

state:

instd_logic_vector(1downto0);

sub,set1,set2:

instd_logic;

r1,g1,y1,r2,g2,y2:

outstd_logic;

led1,led2:

outstd_logic_vector(7downto0));

endledshow;

architectureaofledshowis

signalcount1,count2:

std_logic_vector(7downto0);

signalsetstate1,setstate2:

std_logic_vector(7downto0);

signaltg1,tg2,tr1,tr2,ty1,ty2:

std_logic;

begin

led1<="11111111"whenurgen='1'andclk='0'elsecount1;

led2<="11111111"whenurgen='1'andclk='0'elsecount2;

tg1<='1'whenstate="00"andurgen='0'else'0';

ty1<='1'whenstate="01"andurgen='0'else'0';

tr1<='1'whenstate

(1)='1'orurgen='1'else'0';

tg2<='1'whenstate="10"andurgen='0'else'0';

ty2<='1'whenstate="11"andurgen='0'else'0';

tr2<='1'whenstate

(1)='0'orurgen='1'else'0';

setstate1<="00100101"whenstate="00"else

"00000101"whenstate="01"else

"00100000";

setstate2<="00010101"whenstate="10"else

"00000101"whenstate="11"else

"00110000";

label2:

process(sub)

begin

ifsub'eventandsub='1'then

ifset2='1'then

count2<=setstate2;

elsifcount2(3downto0)="0000"thencount2<=count2-7;

elsecount2<=count2-1;endif;

g2<=tg2;

r2<=tr2;

y2<=ty2;

endif;

endprocesslabel2;

label1:

process(sub)

begin

ifsub'eventandsub='1'then

ifset1='1'then

count1<=setstate1;

elsifcount1(3downto0)="0000"thencount1<=count1-7;

elsecount1<=count1-1;endif;

g1<=tg1;

r1<=tr1;

y1<=ty1;

endif;

endprocesslabel1;

enda;

3.2.3分频器部分的设计

libraryieee;

useieee.std_logic_1164.all;

usework.p_alarm.all;

entitydivideris

port(clk_in:

std_logic;

reset:

instd_logic;

clk:

outstd_logic);

enddivider;

architectureartofdivideris

constantdivide_period:

t_short:

=1000;

begin

process(clk_in,reset)is

variablecnt:

t_short;

begin

if(reset='1')then

cnt:

=0;

clk<='0';

elsifrising_edge(clk_in)then

if(cnt<=(divide_period/2))then

clk<='1';

cnt:

=cnt+1;

elsif(cnt<(divide_period-1))then

clk<='0';

cnt:

=cnt+1;

else

cnt:

=0;

endif;

endif;

endprocess;

endart;

3.3交通灯控制系统的仿真

libraryieee;

useieee.std_logic_1164.all;

packagep_alarmis

subtypet_digitalisintegerrange0to9;

subtypet_shortisintegerrange0to65535;

typet_clock_time

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2