红绿灯交通信号系统设计说明.docx
- 文档编号:25420516
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:29
- 大小:42.36KB
红绿灯交通信号系统设计说明.docx
《红绿灯交通信号系统设计说明.docx》由会员分享,可在线阅读,更多相关《红绿灯交通信号系统设计说明.docx(29页珍藏版)》请在冰豆网上搜索。
红绿灯交通信号系统设计说明
摘要………………………………………………………………………………………1
第一章VHDL的基本概念……………………………………………………………2
1.1VHDL语言的产生和发展……………………………………………………2
1.2VHDL语言的特点……………………………………………………………2
1.3VHDL语言与模拟……………………………………………………………3
1.4编译型模拟方法与VHDL与C++的类比……………………………………3
1.5VHDL在电子系统硬件设计中的优点………………………………………4
第二章红绿灯交通信号系统…………………………………………………………5
2.1红绿灯交通信号系统功能概述……………………………………………5
2.2红绿灯交通信号系统外观…………………………………………………5
2.3红绿灯交通信号系统的VHDL模块…………………………………………6
2.4红绿灯交通信号系统VHDL程序……………………………………………6
2.4.1clk_gen时钟发生电路(即分频电路)的VHDL设计………………6
2.4.2traffic_mnx计数秒数选择电路的VHDL程序设计…………………8
2.4.3count_down倒计时控制电路的VHDL程序设计……………………10
2.4.4traffic_fsm红绿灯信号控制电路的VHDL程序设计………………12
2.5建造一个属于自己的程序包(package)…………………………………13
2.5.1traffic红绿灯信号系统电路的VHDL程序设计……………………15
第三章结论……………………………………………………………………………16
参考文献…………………………………………………………………………………17
VHDL红绿灯交通信号系统
廖凯
三峡学院电子信息工程专业2001级万州404000
摘要:
近年来随着科技的飞速发展,VHDL的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
传统交通灯控制器多数由单片机或PLC实现。
本论文介绍一种用VHDL实现红绿灯交通信号系统的设计方法。
关键字:
VHDLMAXPLUSⅡ交通信号灯国际化
引言:
在现代城市中,随着人口和汽车的急剧增长,市区交通日益拥挤,要是没有红绿灯作为指挥工具,恐怕川流不息的汽车就会由于混乱而造成严重阻塞。
因此,交通灯是交管部门管理城市交通的重要工具之一。
随着电子与计算机技术的迅速发展,电子电路的分析与设计方法发生了重大的变化。
电子设计自动化技术已成为设计现代电子系统必不可少的工具和手段。
在电子技术领域里,为了便于储存,分析和传输,常将模拟信号编码,即把它转换为数字信号,利用数字逻辑这一强有力的工具来分析和设计复杂的数字电路或数字系统,为信号的储存,分析和传输创造了硬件环境。
根据这次的设计要求,设计交通灯,我们以传统电子设计方法为基础的工程设计基础上,引入了电子设计自动化技术,模拟与数字、硬件与软件相结合的综合性设计,通过VHDL数字控制系统,设计了可控交通信号灯。
可编程器件的广泛应用,为数字系统的设计带来了极大的灵活性。
由于可编程器件可以通过软件编程对硬件的结构和工作方式进行重构,使得硬件的设计可以如同软件设计那样快捷方便。
通常使用硬件描述语言(HardwareDescriPtionLan-guage,HDL)进行数字电子系统设计。
目前应用广泛的硬件描述语言有:
VHDL语言,VerilogHDL语言,AHDL语言。
VHDL语言由于具有强大的行为描述能力和丰富的仿真语句从而成为系统设计领域最佳的硬件描述语言。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
随着中国加入WTO,我们不但要在经济、文化、科技等各方面与国际接轨,在交通控制方面也应与国际接轨。
俗话说“要想富,先修路”,但路修好了如果在交通控制方面做不好道路还是无法保障畅通安全。
作为交通控制的重要组成部份的交通信号灯也应国际化。
第一章VHDL的基本概念
电子设计自动化(EDA)的关键技术之一是要求用形式化方法来描述数字系统的硬件电路。
硬件描述语言HDL在电子设计自动化中扮演着重要角色,它是EDA技术研究的重点之一。
作为IEEE标准的硬件描述语言VHDL已在设计中得到了广泛的应用,且影响日益深远。
1.1VHDL语言的产生和发展
硬件描述语言HDL是一个划时代的进步,它的出现和发展使得自顶向下的数字系统(集成电路/计算机)设计方法成为可能,也促使新一代EDA工具的出现,并使得电子设计自动化方法主流从传统的自底向上的设计方法发展到自顶向下的设计方法。
硬件描述语言的发展至今已有几十年的历史,并已成功地应用到系统的模拟和设计等各方面。
到20世纪80年代后期,已出现上百种硬件描述语言,它们对设计自动化起到了促进和推动作用,但是由于它们各自针对特定的设计领域,没有统一的标准,从而使一般用户难以使用。
广大用户所企盼的是一种面向设计的多层次、多领域且得到一致认同的标准的硬件描述语言。
20世纪80年代后期由美国国防部开发的VHDL语言恰好满足了上述要求,并在1987年12月由IEEE标准化。
它的出现为电子设计自动化的发展和推广奠定了坚实的基础。
在此期间,许多地方形成了VHDL的用户组织,VHDL语言的标准化使得它在国际用户中获得了广泛的理解和支持,从而又进一步促进VHDL的发展。
随后,VHDL进入广泛的应用时代。
特别是进入20世纪90年代以后,有关VHDL语言的发展成为一种主流技术。
VHDL语言逐渐成为数字系统设计的主要描述语言,它在世界各国得到了广泛应用。
有文献表明,90%以上的用户已在使用或即将使用VHDL。
1.2VHDL语言的特点
VHDL语言能够形式化地表示电路的结构与行为,支持逻辑设计中层次与领域的描述,并借用高级语言的精巧结构简化电路的描述,具有电路模拟与验证机制,保证设计的正确性,支持电路描述由高层向地层的综合变换,易于理解和重用。
此外,它还是一种与实现技术相独立的语言,既不束缚于某一特定的模拟程序或数字装置上,也不把设计方法强加于设计者。
它允许设计者在其使用围选择工艺和方法。
为了适应未来的数字硬件技术,VHDL还提供了便于将新技术引入现有设计的潜力。
VHDL语言的最大特点是描述能力极强,可覆盖逻辑设计的诸多领域和层次,并支持众多的硬件模型。
其特点包括:
(1)设计技术齐全,方法灵活,支持广泛
VHDL语言支持自顶向下(topdown)和基于库(library-based)的设计方法,而且还支持同步电路、异步电路以与其他随机逻辑电路的设计。
其围之广是其他HDL语言所不能比拟的。
另外,由于VHDL语言早在1987年12月就已作为IEEEstd1076标准公开发布,因此,目前大多数EDA工具几乎在不同程度上都支持VHDL语言。
这样就给VHDL语言的进一步推广和应用创造了良好的环境。
(2)系统硬件描述能力强
VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路;并且,高层次的行为描述可以与低层次的RTL(寄存器传送语言)描述和门级描述混合使用。
VHDL语言能够进行系统级的硬件描述,这是它的一个最突出的优点。
(3)VHDL语言可以与工艺无关地进行编程
在用VHDL语言设计系统硬件时,没有嵌入与工艺相关的信息(当然这些信息也是可以用VHDL描述的)。
与大多数HDL语言的不同之处是,当门级或门级以上层次的描述通过模拟验证之后,再用相应的工具将设计映射成不同的工艺(如MOS,CMOS等)。
这样,在工艺更新时,就无须修改原设计,只要改变相应的工艺工具即可。
(4)VHDL语言标准、规,易于共享和重用
由于VHDL语言已作为一种IEEE的工业标准,这样设计的成果便于重用和交流,反过来又能进一步推动VHDL语言的推广和完善。
另外,VHDL语言的语法比较严格,风格类似于Ada语言,给阅读和使用都带来极大的方便。
1.3VHDL语言与模拟
VHDL是为数字电路的建模和模拟(simulation)而制定的,是一种面向模拟的语言,它的语法中有许多方面均考虑到模拟的因素。
包括VHDL的硬件相关结构、并发性特征和混合级描述与混合级模拟。
(1)VHDL中的硬件相关结构
VHDL具有许多与数字电路结构直接相关的概念,其中最主要的是元件,它是数字硬件结构——“黑盒”的抽象。
VHDL中的元件由实体、结构体两个概念共同描述完成。
其中实体描述元件与外部环境的接口,其部行为与结构是完全隐蔽的。
实体的功能定义在称为结构体的分离单元中,结构体规定设计实体输入与输出之间的关系。
一个实体可存在多个对应的结构体,分别以行为、结构、数据流与各种方式混合的描述方法实现。
元件的存在使VHDL脱离普通程序语言的畴,成为描述数字电路的专用硬件设计语言。
VHDL中的信号(signal)概念是数字电路中连线的抽象,它是各元件、各进程之间进行通信的数据通路。
VHDL号的状态会影响与信号相关的进程的运行,体现数字系统的各单元的输入与输出的状态。
VHDL中的进程(process)完成电路行为的描述,由一系列顺序语句组成,是VHDL设计中进行功能描述的基本单元。
由于进程的执行是并发的,因此在VHDL在中引入delta延迟概念,用于表示时间上无穷小的模拟步,是VHDL中模拟进程同步机制的关键。
一个模拟时刻包括若干delta延迟,所有进程均可能在特定条件下,在同一时刻的任一delta延迟点上激活。
设计者的设计意图有时希望忽略在delta延迟点上的变化,着重于计算一个模拟时刻结实时的稳定阶段的状态。
因此VHDL93引进了延迟进程的概念。
该类进程只在某一时刻的最后一个delta延迟时激活,这样可以降低处理频率,尤其是当用于时序检查的时候。
(2)VHDL并发性特征
VHDL的并发性体现在两个方面,首先在使用VHDL进行数字电路设计时存在并发性,即VHDL支持设计分解,可使被分解的各子部分的设计并行完成。
一个模型的设计主要由3部分组成:
定义实体部分——确立模型与环境的接口;定义结构体部分——完成模型的功能描述;定义测试部分——为模型生成测试向量,并捕获模型输出信号状态以供分析。
在设计流程方面,在系统分析阶段,系统分析者可将设计对象分为若干独立的子元件,交给若干设计小组实现。
此阶段,系统分析者严格定义元件接口,并将元件之间的相互作用以文档形式提供给各设计小组。
然后,各设计小组可独立并行地对子元件进行详细设计,并模拟验证子元件,确保正确无误。
最终,系统设计者集成各子元件形成完整的设计,对整个设计进行模拟验证。
设计的并发性可极加快整体设计进程并提高设计质量。
其次,VHDL之所以称为硬件描述语言,很重要的一点是因为它在模拟执行上具有并发性,这一点很适于描述电路活动的并发性特点,是其他程序设计语言所不具备的。
并发性使得VHDL中的进程类似于UNIX操作系统的进程概念,它们的挂起、活动均是独立的。
并发性使得VHDL的设计模拟可在并行机上进行,这样大大提高了模拟效率,是解决模拟时间瓶劲的方法之一。
在并行模拟中,VHDL源描述经编译后,结构确立除完成通常的VHDL确立工作,还将每个进程静态地映射到特定的处理器上,计算的加载、通信频带的估算均来自于暂时性的分析与波形传播分析,以帮助获得合理的平衡的静态映射。
(3)VHDL的描述围覆盖系统级、算法级、寄存器传输级和门级,具有连续性、完整性的特点。
VHDL结构描述方式与行为描述方式有机结合,各描述层次之间彼此衔接,协调一致。
目前,较常用的大规模集成电路的设计方法包括基于标准单元库的自底向上(bottom-up)的设计方法和自顶向下(top-down)便于早期优化的设计方法,以与自底向上和自顶向下有机结合的设计方法。
由于设计规模日益增大,设计复杂度急剧增加,传统的设计起点偏重低层的方法,会因设计规模的庞大带来极大的工作量。
因此提高设计层次,注重早期优化,是现行较好的设计方式。
目前,设计对象整体的的设计过程经历多个层次。
首先,在较高的抽象层次,进行前期的概念设计,优化设计模型;然后经由高级综合工具综合,产生寄存器传输级网表;最后经低级综合工具,形成最终的设计结果。
因此,由于存在多层次设计,就需要多个层次上的模拟。
VHDL模拟器可以完成混合级模拟,为各个层次的硬件设计提供有效的模拟,反映设计意图,供设计者调试其设计,是适应当前电路设计的最佳选择之一。
1.4编译型模拟方法与VHDL与C++的类比
模拟算法可分为解释型和编译型两种。
解释型模拟器中存在一个模拟核心,它不断读取VHDL源描述或其编译后的中间格式数据,并每一条语句解释性地执行。
它的优点是概念清晰、关系明确,并且编程实现要简便一些;其明显的缺点就是对每一条语句的每次执行都要重新解释并执行,会带来很多不必要的预处理,效率很低。
编译型模拟器将VHDL源描述直接转化为功能等价的可执行二进制代码,这样,在每一条语句的模拟执行过程中消除了多余的预处理,将极改善系统性能。
编译型模拟器将VHDL源描述转换为功能等价的C++源代码,这种方式主要是基于对VHDL和C++语言语法特点的比较后得出的。
从语言层次上讲,这两种语言都属于高级语言,在许多方面均具有相似性,可以从这种相似性出发,完成它们之间的转化。
这些相似性主要体现在如下几个方面:
(1)VHDL中的实体(entity)与C++中的类(class)概念类似,对于VHDL中的任一实体,均可以将它翻译成C++中的一个类.而与实体对应的结构体(architecture)则可以从前面的实体类中派生,这种它就可以共享在实体类中定义的所有数据。
(2)VHDL中的进程(process)继续从相对应的结构体类中进行派生,这样它就可共享所有在结构体中定义的数据。
当一个结构体包含多个进程时,每一个进程都是结构的派生类,为了避免同一结构体对象的重复定义,可以通过虚(virtual)基类的方式进行派生。
(3)VHDL中的端口概念可以映射到C++中的函数(包括构造函数)参数,类属则可以映射为函数的默认参数.
(4)可以为一些VHDL特有的数据类型使用C++定义类的方式定义一个新的数据类型。
例如VHDL中的信号(signal)可为其定义一个类QSignal,在类中保存信号的属性值,例如上次信号变化的时间与值等。
这样,对于信号类型对象赋值的特殊性就可以通过等号运算符的重载来解决。
此外,信号的一些预定义属性的运算也可以转化为对类对象的某个成员函数的调用求解过程。
(5)VHDL的层次关系的实现方式主要由元件说明、例示和组装完成。
可以对应于C++语言中的成员类对象的概念。
对于不同构造体的组装,则可以在定义成员类对象时,通过给出不同构造函数的参数选取不同的结构体。
(6)VHDL行为描述中的几种顺序语句:
变量赋值语句、if语句、case语句、loop语句、next语句、exit语句、return语句、null语句、assert语句、过程调用语句在C++语言中均有类似的语法或库函数,做少量的修改即可进行转换。
1.5VHDL在电子系统硬件设计中的优点
所谓硬件描述语句,就是可以描述硬件电路的功能、信号连接关系与定时关系的语言。
它能比电原理图更有效地表达硬件电路的特征。
目前各ASIC芯片制造商都相继开发了用于各自目的的HDL语言,但是大多数未标准化和通用化。
唯一已被公认的硬件描述语言之一是美国国防部开发的VHDL语言,它已成为IEEESTD_1076标准。
许多公司研制的硬件电路设计工具也逐渐向VHDL语言靠拢,提供对VHDL的支持。
VHDL在电子系统硬件设计中具有下列优点:
(1)设计技术齐全、方法灵活、支持广泛
VHDL语言可以支持自顶至下和基于库的设计方法,而且还支持同步电路、异步电路、FPGA以与其他随机电路的设计。
其围之广是其他HDL语言所不能比拟的。
例如,SFL语言和UDL/I语言,它们只能描述同步电路。
另外,VHDL语言早在1987年12月已作为IEEE_STD_1076标准公布开发,目前大多数EDA工具几乎在不同程度上都支持VHDL语言.这给VHDL语言进一步推广和应用创造了良好的环境。
(2)系统硬件描述能力强
如果所述,VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路。
另外,高层次的行为描述可以与低层次的RTL描述和结构描述混合使用。
例如,在PC扩展槽上要设计一块接口卡,该接口卡的硬件设计应满足主机的接口要求。
此时,主机部分功能可以用行为方式描述,在系统仿真时可以验证接口卡的工作是否正确。
这样,在接口卡设计出来以前就可以知道接口卡的工作是否满足系统要求。
VHDL语言能进行系统级的硬件描述,这是它最突出的一个优点。
其他HDL语言,如UDL/I、Verilog等只能进行IC级、PCB级描述,而不能对系统级的硬件很好地进行描述。
(3)VHDL语言可以与工艺无关编程
在用VHDL语言设计系统硬件时,没有嵌入与工艺有关的信息。
当然,这样的信息是可以用VHDL语言来编写的。
与大多数HDL语言不同,采用VHDL语言设计时,当门级或门级以上层次的描述通过仿真检验以后,再用相应的工具将设计映射成不同的工艺(如MOS、CMOS等)。
这样,在工艺更新时,无须修改原设计程序,只要改变相应的映射工具就行了。
由此可见,修改电路和修改工艺相互之间不会产生影响.
(4)VHDL语言标准、规,易于共享和复用
由于VHDL语言已作为一种IEEE的工业标准,这样,设计成果便于复用和交流,反过来也更进一步推动VHDL语言的推广与完善。
另外,VHDL语言的语法比较严格,其风格类似于Ada语言,给阅读和使用都带来了极大的方便。
第二章红绿灯交通信号系统
2.1灯交通信号系统功能概述
本论文设计的红绿灯交通信号系统为模拟实际的十字路口交通信号灯。
故外部硬件电路方面包括:
两组红绿灯(配合十字路口的双向指挥控制)、两组七段显示器(配合绿灯时倒计时显示)、一组手动与自动控制开关(针对交通警察指挥交通控制使用)。
软件方面:
本论文将引进
(1)电路模块合成的概念:
将红绿灯交通信号系统划分成若干小电路,最后再写一个VHDL程序代码,将各个小电路相连接。
好处是可以增加程序的调试速度,同时也能够将工作细分以提高编程速度。
(2)参数化(parametric)的概念:
针对不同的时段,交警可以调整红绿灯电路(增加或减少电路的计数时间),以增加程序的灵活性。
2.2绿灯交通信号系统外观
红绿灯交通信号系统外观示意图如图2-1
2.3绿灯交通信号系统的VHDL模块
该系统由4个子电路构成。
(1)clk_gen:
时钟脉冲发生电路(即分频电路);
(2)traffic_mux:
计数秒数选择电路;
(3)count_down:
倒计时控制电路;
(4)traffic_fsm:
红绿灯信号控制电路。
其中主要的交通灯控制逻辑图,如图2所示。
2.4红绿灯交通信号系统VHDL程序
2.4.1clk_gen时钟发生电路(即分频电路)的VHDL设计
在红绿灯交通信号系统中,大多数的情况是通过自动控制的方式指挥交通的。
因此,为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运行。
但为了配合高峰时段,防止交通拥挤,有时也必须使用手动控制,即让交警能够顺利地指挥交通。
clk_gen电路最主要的功能就是产生一些额外的输出信号,并将其用做后续几个电路的使能(enable)控制与同步信号处理。
(1).entity模块程序代码
表2.1列出entity模块的程序代码
表2.1entity模块的VHDL码
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityclk_genis
port(teset:
instd_logic;
clk:
instd_logic;
ena_scan:
outstd_logic;
ena_1hz:
outstd_logic;
flash_1hz:
outstd_logic);
end;
(2).architecture模块
表2.2列出architecture模块的程序代码。
表2.2architecture模块的VHDL码
--definethesignal_structuresndflowofthedevice
architecturebehaviorofclk_genis
constantscan_bit:
positive:
=2;
constantscan_val:
positive:
=4;
constanttwo_hz_bit:
positive:
=7;
constanttwo_hz_val:
positive:
=125;
signalclk_scan_ff:
std_logic_vector(scan_bit-1downto0);
signalclk_2hz_ff:
std_logic_vector(two_hz_bit_downto0);
signalena_s:
std_logic;
signalena_one:
std_logic;
signalena_two:
std_logic;
begin
表2.2中引用了常数对象(constant)。
借助使用常数,可以更改此常数的值并且重新编译,而所有使用到该常数的地方都会随着更新而使用新的常数值。
例如:
constantscan_bit:
positive:
=value;
signalclk_scan_ff:
std_logic_vector(scan_bit-1downto0);
第一行是将scan_bit设为常数对象,而value为一个可变的值,根据使用者的需求而定。
第二行是定义一个信号线名称为clk_scan_ff,而位数为(scan_bit-1downto0),已知scan_bit被定义为2,故clk_scan_ff的位数就是(1downtoo)即为2bit。
因此日后若需要更改电路时,只需改变常数对象scan_bit的值即可。
这样程序设计变得更有弹性,此为参数化的概念。
(3).clk_gen分频电路模块
表2.3列出clk_gen电路中产生ena_scan输出使能的程序代码。
表2.3clk_gen电路中产生enascan输出使能的VHDL码
--togenerate250hzena_scanviadividing1khzclockby4
scan:
process(reset,clk)
begin
ifreset=‘1’then
clk_scan_ff<=“00”;
ena_s<=‘0’;
elsif(clk‘ventandclk=‘1’)then
ifclk_scan_ff>=scan_val-1then
clk_scan_ff<=”00”;
ena_s<=‘1’;
else
clk_scan_ff<=clk_scan_ff+1;
ena_s<=‘0’;
endif;
endif;
endprocess;
ena_scan<=ena_s;
表2.4列出clk_gen电路中产生ena_1hz,flash_1hz输出使能的程序代码。
表2.4clk_gen电路中产生ena_1hz,flash_1hz输出使能的V
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 红绿灯 交通信号 系统 设计 说明
![提示](https://static.bdocx.com/images/bang_tan.gif)