基于VHDL的交通灯控制器的设计和实现.docx

上传人:b****4 文档编号:4615828 上传时间:2023-05-07 格式:DOCX 页数:20 大小:236.12KB
下载 相关 举报
基于VHDL的交通灯控制器的设计和实现.docx_第1页
第1页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第2页
第2页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第3页
第3页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第4页
第4页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第5页
第5页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第6页
第6页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第7页
第7页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第8页
第8页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第9页
第9页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第10页
第10页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第11页
第11页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第12页
第12页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第13页
第13页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第14页
第14页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第15页
第15页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第16页
第16页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第17页
第17页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第18页
第18页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第19页
第19页 / 共20页
基于VHDL的交通灯控制器的设计和实现.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于VHDL的交通灯控制器的设计和实现.docx

《基于VHDL的交通灯控制器的设计和实现.docx》由会员分享,可在线阅读,更多相关《基于VHDL的交通灯控制器的设计和实现.docx(20页珍藏版)》请在冰点文库上搜索。

基于VHDL的交通灯控制器的设计和实现.docx

基于VHDL的交通灯控制器的设计和实现

基于VHDL语言的交通灯控制器设计与实现

 

摘要VHDL是VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage的缩写,意思是超高速集成电路硬件描述语言。

对于复杂的数字系统的设计,它有独特的作用。

它的硬件描述能力强,能轻易的描述出硬件的结构和功能。

这种语言的应用至少意味着两种重大的改变:

电路的设计可以通过文字描述的方式完成;电子电路可以当作文件一样来存储。

随着现代技术的发展,这种语言的效益与作用日益明显,每年均能够以超过30%的速度快速成长。

交通灯控制系统通常要实现自动控制红绿灯的变化,基于FPGA设计的交通灯控制系统电路简单、可靠性好。

本系统可控制2个路口的红、黄、绿三盏交通灯。

对于Max+PlusⅡ开发工具,它是美国Altera公司自行设计的一种CAE软件工具。

他具有全面的逻辑设计能力,设计者可以自由组合文本、图形和波形输入法,建立起层次化的单器件或多器件设计。

利用该工具配备的编辑、编译、仿真、综合、芯片编程等功能,将设计的电路图或电路描述程序变成基本的逻辑单元写入到可编程芯片中(如CPLD、FPGA),做成ASIC芯片。

仿真实验结果表明了该编解码器的正确性和合理性。

关键词:

交通灯;控制器;VHDL;MAX+PlusⅡ

AbstractVHDListheVeryHightSpeedIntegratedCircuitHardwareDescriptionLanguageacronym,meaningthathigh-speedintegratedcircuithardwaredescriptionlanguage.Forcomplexdigitalsystemdesign,ithasauniquerole.Itshardwaredescirptionability,caneasilydescribethestructureandfuntionofthehardware.Theapplicationofthislanguageimpliesthatatleasttwokindsofmajorchanges:

thedesignofthecircuitcanactuallybecompletedbythemannerdescribedinthetext;electroniccircuitscanbeusedastostorethesamefiles.Withmoderntechnology,thebenefitsandroleofthislanguagehasbecomemoreobviouseveryyeartomorethan30%oftherateofrapidgrowth.

Trafficlightcontrolsystemisusuallytoachievetheautomatictraffficlightchanges,FPGA-baseddesignofatrafficlightcontrolsystemcircuitissimplem,andgoodreliability.Thesystemcancontroltwojunctionsofred,yellow,green,threetrafficlights.FortheMax-PlusIIdevelopmenttool,itisUnitedStatesAltera’sowndesignofaCAEsoftwaretools.Ithasacomprehensivelogicdesigncapabilities,designerscanfreelymixtext,graphics,andwaveforminputmethod,setuphierarchicaldesignofasingledeviceormultipledevices.Theuseofthetoolisequippedwiththeediting,compiling,simulation,synthesis,chipprogrammingfeaturessuchasthedesignofthecircuitorcircuitdescribedprocedureintothebasiclogicunitiswrittenintotheprogrammablechip(eg,CPLD,FPGA),madeofASICchips.Thesimulationresultsshowthatthecorrectcodecandrationality.

 

Keywords:

trafficlight;controller,VHDL,MAX+PlusII

 

目录

1引言…………………………………………………………………………………1

2课题背景及相关技术…………………………………………………………………2

2.1Max+plusII简介………………………………………………………………2

2.2VHDL语言简介…………………………………………………………………3

2.3VHDL设计的优点与设计方法…………………………………………………5

3交通灯控制器分析……………………………………………………………………7

3.1分频器…………………………………………………………………………7

3.2状态机…………………………………………………………………………8

4交通灯控制器的VHDL设计…………………………………………………………9

4.1程序流程图……………………………………………………………………9

4.2交通灯顶层文件和管脚分配…………………………………………………10

4.3分频器和状态机的图示符号…………………………………………………11

4.4仿真波形图……………………………………………………………………12

附录………………………………………………………………………………………13

结束语……………………………………………………………………………………17

参考文献…………………………………………………………………………………18

1引言

在交通发达的当代,交通灯控制器无疑是最实用的的工具。

为了使交通行驶有一个很高的效率,人工指挥交通已经显得效率不高,所以一个高智能的交通灯控制器是十分的必要的。

交通灯的控制方式,是根据时间来改变状态,产生不同的控制信号以控制红、绿、黄三盏灯的开关,达到控制交通的目的。

目前VHDL语言已成为EDA领域首选的硬件设计语言,越来越多的数字系统设计使用VHDL语言来完成。

原因是通过VHDL描述的硬件系统“软核”便于存档,程序模块的移植和ASC设计源程序的交付更为方便。

因此,他在IP核的应用等方面担任着不可或缺的角色。

在某扩频通信系统中,我们使用VHDL语言设计了交通灯控制器,并经过了在FPGA芯片上的验证实验。

2课题背景及相关技术

2.1Max+plusII简介

Max+plusII(或写成Maxplus2或MP2)是Altera公司推出的的第三代PLD开发系统(Altera第四代PLD开发系统被称为:

Quartus,主要用于设计6万-100万门的大规模CPLD/FPGA)。

使用MaX+PLUSII的设计者不需精通器件内部的复杂结构。

设计者可以用自己熟悉的设计工具(如原理图输入或硬件描述语言)建立设计,MaX+PLUSII把这些设计转自动换成最终所需的格式。

其设计速度非常快。

对于一般几千门的电路设计,使用MaX+PLUSII,从设计输入到器件编程完毕,用户拿到设计好的逻辑电路,大约只需几小时。

设计处理一般在数分钟内内完成。

特别是在原理图输入等方面,Maxplus2被公认为是最易使用,人机界面最友善的PLD开发软件,特别适合初学者使用。

通常可将Maxplus2设计流程归纳为以下7个步骤:

(1)使用文本编辑器输入设计源文件。

在传统设计中,设计人员是应用传统的原理图输入方法来开始设计的。

自90年代初,Verilog、VHDL、AHDL等硬件描述语言的输入方法在大规模设计中得到了广泛应用。

(2)前仿真(功能仿真)。

设计的电路必须在布局布线前验证电路功能是否有效。

(3)设计编译。

设计输入之后就有一个从高层次系统行为设计向门级逻辑电路设转化翻译过程,即把设计输入的某种或某几种数据格式(网表)转化为软件可识别的某种数据格式(网表)。

(4)优化。

对于上述综合生成的网表,根据布尔方程功能等效的原则,用更小更快的综合结果代替一些复杂的单元,并与指定的库映射生成新的网表,这是减小电路规模的一条必由之路。

(5)布局布线。

(6)后仿真(时序仿真)需要利用在布局布线中获得的精确参数再次验证电路的时序。

(7)生产。

布线和后仿真完成之后,就可以开始ASCI或PLD芯片的投产。

2.2VHDL语言简介

VHDL语言是一种用于电路设计的高级语言。

它在80年代的后期出现。

最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。

但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为ANSI/IEEE的标准(IEEESTD1076-1987)。

1993年更进一步修订,变得更加完备,成为ANSI/IEEE的ANSI/IEEESTD1076-1993标准。

目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。

VHDL的英文全写是:

VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptiongLanguage,翻译成中文就是超高速集成电路硬件描述语言。

因此它的应用主要是应用在数字电路的设计中。

目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。

当然在一些实力较为雄厚的单位,它也被用来设计ASIC。

(1)VHDL应用目的

VHDL的出现是为了适应电子系统设计的日益复杂性。

若以计算机软件的设计与电路设计做个类比,机器码好比晶体管/MOS管;汇编语言好比网表;则VHDL语言就如同高级语言,VHDL在语法和风格上类似与现代高级编程语言,如C语言。

但要注意,VHDL描述的是硬件,它包含许多硬件特有的结构。

现在VHDL被广泛用于:

电路设计的文档记录、设计描述的逻辑综合、电路仿真等。

  采用VHDL及自顶向下方法在大型数字系统设计中被广泛采用。

在设计中你可采用较抽象的语言(行为/算法)来描述系统结构,然后细化成各模块,最后可借助编译器将VHDL描述综合为门级。

VHDL语言设计过程一般如下:

  a. 代码编写;

  b. 由综合器(Synplify,Synopsys等)综合成门级网表;

  c. 前仿真/功能仿真;

  d. 装配、布局/布线至某一类CPLD/FPGA;

  f. 后仿真/时序仿真。

(2)VHDL的基本结构与语法

使用库(use)定义区——实体(Entity)定义区——结构(Architecture)定义区。

一个VHDL设计由若干个VHDL文件构成,每个文件主要包含如下三个部分中的一个或全部:

程序包(Package)、实体(Entity)、构造体(Architecture)。

其各自作用如图2.1所示。

图2.1 VHDL的基本结构

  但对于一个完整的VHDL设计必须包含一个实体和一个与之对应的构造体。

一个实体可对应多个构造体,以说明采用不同方法来描述电路。

a.实体(Entity)

  VHDL表达的所有设计均与实体有关,实体是设计中最基本的模块。

设计的最顶层是顶层实体。

如果设计分层次,那么在顶级实体中将包含较低级别的实体。

实体类似于一个方框图或黑匣子,而可见的是端口或连接的信号线。

实体应包含以下信息:

实体的名称、端口的模式(或端口的方向),即:

in、out、in/out、buffer、端口的数据类型等。

b.构造体(Architecture)

所有能被仿真的实体都由一个构造体描述,构造体描述实体的行为功能,即设计实体的内部功能。

一个实体可以有多个构造体,构造体可为行为描述,也可

为结构化描述或数据流的描述。

构造体是VHDL设计中最主要部分,它一般由以下各部分构成,如图2.2所示。

图2.2构造体的结构

构造体的一般格式如下:

architectureofis//构造体说明区域、说明构造体所用的内部信号及数据类型、果使用元件例化,则在此声明所用的元件

begin //以下开始结构体,用于描述设计的功能

current signal assihnments//并行语句信号赋值

processes//进程(顺序语句描述设计)

component instantiations//元件例化

End;

构造体(Architecture)描述的是实体中的具体逻辑,采用一些语句来描述设计的具体行为。

因为语句中涉及到运算符,数据对象等,所以后面将分别说明。

一个完整的、能够被综合实现的VHDL设计必须有一个实体和对应的构造体。

一个实体和其对应的构造体可构成一个完整的VHDL设计。

一个实体对应一个构造体或多个构造体。

2.3VHDL设计的优点与设计方法

与传统的自底向上的设计方法不同,VHDL设计是从系统的总体要求出发,采用自顶向下(toptodown)的设计方法。

其程序结构特点是将一项工程设计(或称设计实体),分成外部(即端口)和内部(即功能、算法)。

在对一个设计实体定义了外部端口后,一旦内部开发完成,其他的设计就可以直接调用这个实体。

  本设计所用VHDL设计平台是Altera的MAX+PlusⅡEDA软件。

MAX+PlusⅡ界面友好,使用便捷;他支持VHDL,原理图,V语言文本文件,以及波形与EDIF等格式的文件作为设计输入;并支持这些文件的任意混合设计;具有门级仿真器,可以进行功能仿真和时序仿真,能够产生精确地仿真结果;支持除APEX20K,APXⅡ,Mercury,Excalibur和Stratix系列之外的所有AlteraFPGA/CPLD大规模逻辑器件。

设计中采用的FPGA器件是Altera的FLEX系列芯片FLEX10K20。

用MAX+PlusⅡ软件进行VHDL设计的过程是:

  

(1)用TextEditor编写VHDL程序。

  

(2)用Compiler编译VHDL程序。

  (3)用WaveformEditor,Simulater仿真验证VHDL程序。

  (4)用TimingAnalyzer进行芯片的时序分析。

  (5)用FloorplanEditor安排芯片管脚位置。

  (6)用Programer下载程序至芯片FLEX10K20。

在实际的开发过程中,以上个步骤需反复进行,直至将既定的VHDL设计通过所有的测试为止。

 

3交通灯控制器分析

位于十字路口的交通灯,在A方向和B方向各有红、黄、绿三盏灯,按下表所列顺序进行循环。

其中1表示灯亮,实验中,假设交通灯按照10s的节拍工作,各个灯亮的时间相等。

交通灯的真值表如图3.1:

图3.1交通灯的真值表

交通灯,是当代交通运输中最常用的工具。

它把一个输入信号,根据时间片分为三个输出。

通常,每个输出信号控制一盏交通灯。

A,B两个方向的交通灯相互影响。

两个方向上控制绿灯或红灯的信号不能同时为1。

当A的红灯信号为1时,B方向的红灯信号一定为0,此时B的绿或黄两灯有且只有一个信号量可以为1,如果是黄灯为1,那么下一跳A方向的路灯一定为1,而B方向的红灯一定为1,各个状态如图3.1。

 交通灯控制器的一般结构包括两部分:

一个分频器,用一个计数器实现分频,一个计数到5,电平翻转一次实现10分频,一个计数到4,电平翻转一次实现8分频。

另一个是状态机,根据分频器提供的两个信号Q1,Q2,进行状态输出,控制交通灯电平。

3.1分频器

在本设计中,分频器是一个把时钟信号通过计数器根据时间片段分为几个输出信号的设备。

实现分频功能的电路称为分频器。

分频器的一般框图如图3.1所示。

它的输入信号是一个时钟信号。

 

CLKQ1

Q2

图3.1分频器的一般框图

3.2状态机

状态机可归纳为4个要素,即现态、条件、动作、次态。

这样的归纳,主要是出于对状态机的内在因果关系的考虑。

“现态”和“条件”是因,“动作”和“次态”是果。

详解如下:

①现态:

是指当前所处的状态。

②条件:

又称为“事件”。

当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。

③动作:

条件满足后执行的动作。

动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。

动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。

④次态:

条件满足后要迁往的新状态。

“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。

状态机的框架如图3.2所示。

MOORE

...

CLKEN0

DINEN1

DATAOUT[5..0]

图3.2交通灯状态机原理框图

 

 

4交通灯控制器的VHDL设计

4.1程序流程图

交通灯控制器程序流程图如图4.1:

图4.1交通灯控制器程序流程图

交通灯分频器程序流程图如图4.2

 

图4.2交通灯分频器程序流程图

4.2交通灯顶层文件和管脚分配

(1)交通灯顶层文件如图4.3

FENPINMOORE

CLKEN0

DINEN1

DATAOUT[5..0]

CLKQ1

Q2

EN0

EN1

DATAOUT

 

图4.3交通灯顶层文件

 

(2)管脚分配如图4.4

CLK

DATA0

DATA1

DATA2

DATA3

DATA4

DATA5

EN0

EN1

2

18

19

17

23

24

25

21

22

图4.4管脚分配

4.3分频器和状态机的图示符号

(1)用MaX+PlusⅡ编译后生成的分频器图形符号如图4.5所示

图4.5分频器图形符号

 

(2)用MaX+PlusⅡ编译后生成的状态机图形符号如图4.6所示。

图4.6解码器图形符号

 

4.4仿真波形图

交通灯分频器VHDL仿真波形如图4.7所示。

波形分析图的结果,与理论分析结果一致。

图4.7分频器VHDL仿真波形

 

状态机VHDL仿真波形如图4.8所示。

状态机输出波形的输出结果,与理论分析结果一致。

图4.8交通灯控制器VHDL仿真波形

 

附录:

分频器和状态机的VHDL描述和仿真波形图

(1)分频文件的VHDL描述(实现10s一个节拍Q1和状态控制信号Q2)

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityfenpinis

port(clk:

instd_logic;

q1,q2:

outstd_logic);

endfenpin;

architecturebehaoffenpinis

signaltemp1,temp3:

std_logic_vector(2downto0);

signaltemp2,temp4:

std_logic;

begin

process(clk)

begin

if(clk’eventandclk=’0’)then

iftemp1=”100”then

temp2<=nottemp2;

temp1<=”000”;

else

temp1<=temp1+1;

endif;

emdif;

endprocess;

process(temp2)

begin

iftemp2’eventandtemp2=’0’then

iftemp3=”001”then

temp4<=nottemp4;

temp3<=”000”;

else

temp3<=temp3+1;

endif;

endif;

endprocess;

q1<=temp2;

q2<=temp4;

endbeha;

(2)态机各功能模块及顶层建模端口的VHDL描述

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitymooreis

port(clk,din:

instd_logic;

--clk状态转移时钟,din状态转移方向控制信号

en0,en1:

outstd_logic;

data:

outstd_logic_vector(5downto0);

endmoore;

architectureoneofmooreid

typestate_typeis(s1,s2,s3,s4,s5);

--用户自定义5个状态,根据真值表分析所得

signalstate:

state_type;

begin

process(clk)--状态转移进程

begin

ifclk’eventandclk=’0’then

casestateis

whens1=>ifdin=’0’then

state<=s2;

endif;

whens2=>ifdin=’0’then

state<=s3;

elsestate<=s1;

endif;

whens3=>ifdin=’0’then

state<=s4;

elsestate<=s2;

endif;

whens4=>ifdin=’0’then

state<=s5;

elsestate<=s3;

endif;

whens5=>ifdin=’1’then

state<=s4;

endif;

whenothers=>state<=s1;

endcase;

endif;

endif;

endprocess;

process(state)--状态输出进程,控制交通灯电平

begin

casestateis

whens1=>data<=”011110”;

whens2=>data<=”011101”;

whens3=>data<=”101101”;

whens4>=data<=”101011”;

whens5=>data<=”110011”;

end

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

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

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

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