交通灯控制电路设计与仿真
交通灯控制电路的设计(实验报告)

交通信号灯控制电路的设计一、设计任务与要求1、任务用红、黄、绿三色发光二极管作为信号灯,设计一个甲乙两条交叉道路上的车辆交替运行,且通行时间都为25s的十字路口交通信号灯,并且由绿灯变为红灯时,黄灯先亮5s,黄灯亮时每秒钟闪亮一次。
2、要求画出电路的组成框图,用中、小规模集成电路进行设计与实现用EAD软件对设计的部分逻辑电路进行仿真,并打印出仿真波形图。
对设计的电路进行组装与调试,最后给出完整的电路图,并写出设计性实验报告。
二、设计原理和系统框图(一)设计原理1、分析系统的逻辑功能,画出其框图交通信号灯控制系统的原理框图如图2所示。
它主要由控制器、定时器、译码器和秒脉冲信号发生器等部分组成。
秒脉冲信号发生器是该系统中定时器和该系统中定时器和控制器的标准时钟信号源,译码器输出两组信号灯的控制信号,经驱动电路后驱动信号灯工作,控制器是系统的主要部分,由它控制定时器和译码器的工作。
图1 交通灯控制电路设计框图图中:Tl:表示甲车道或乙车道绿灯亮的时间间隔为25s,即车辆正常通行的时间间隔。
定时时间到,Tl=1,否则,Tl=0.Ty:表示黄灯亮的时间间隔为5s。
定时时间到,Ty=1,否则,Ty=0。
St:表示定时器到了规定的时间后,由控制器发出状态转换信号。
它一方面控制定时器开始下一个工作状态的定时,另一方面控制着交通信号灯状态转换。
2、画出交通信号灯控制器ASM图(1)甲车道绿灯亮,乙车道红灯亮。
表示甲车道上的车辆允许通行,乙车道禁止通行。
绿灯亮足规定的时间隔TL时控制器发出状态信号ST转到下一工作状态。
(2)乙车道黄灯亮乙车道红灯亮。
表示甲车道上未过停车线的车辆停止通行已过停车线的车辆继续通行乙车道禁止通行。
黄灯亮足规定时间间隔TY时控制器发出状态转换信号ST转到下一工作状态。
(3)甲车道红灯亮乙车道绿灯亮。
表示甲车道禁止通行乙车道上的车辆允许通行绿灯亮足规定的时间间隔TL时 控制器发出状态转换信号ST转到下一工作状态。
交通信号灯控制电路的设计与仿真

交通信号灯控制电路的设计与仿真交通信号灯是城市道路上的重要交通设施。
它不仅能够引导车辆行驶方向、保障行人安全出行,还能有效地控制交通流量,缓解车辆拥堵问题。
然而,要使交通信号灯发挥作用,就需要一个可靠的信号控制电路。
本文将介绍交通信号灯控制电路的设计与仿真。
1. 控制电路设计交通信号灯控制电路是一种可编程逻辑电路(FPGA)。
它可以根据不同的交通需要配置不同的控制方案。
基本的控制方案有三种:顺序控制、时间计划控制和循环控制。
1.1 顺序控制顺序控制是最简单的交通信号灯控制方案,它依次控制交通灯的颜色。
设计电路需要先设置一个时钟,并定义各信号灯的状态,例如,当橙色灯亮的时候,等待5秒钟后,绿色灯亮;当绿色灯亮时,等待10秒钟后,红色灯亮。
这样的交通信号灯控制方案简单、稳定,但是不适用于复杂的交通环境。
1.2 时间计划控制时间计划控制是根据交通流量和道路容量的不同,对交通信号灯的时间进行调整的控制方案。
具体做法是,通过交通流量传感器测量每个方向的车辆流量并累积,运用时序控制器进行计算,并对红绿灯时间进行动态调整。
这样可以保证交通信号灯实时地适应不同的流量情况,但是需要大量的传感器和计算器。
1.3 循环控制循环控制是一种随机的交通信号灯控制方案,通过交通数据和计算机模型确定路口交通灯每轮的时间长度,并以不同的顺序轮换信号灯,这样按照循环周期可能使交通流量更加均衡,并且可以排除一些失误。
但是需要进行大量的计算,并且不适用于复杂的交通环境。
2. 仿真设计完成后,需要对交通信号灯控制电路进行仿真,以检验控制电路的稳定性和有效性。
仿真软件通常有多种,本文介绍两种常用的仿真软件。
2.1 QucsQucs是一个免费的仿真软件,具有模拟、线性和非线性仿真电路的能力,可以模拟电路和系统的频段、噪声和传输等特性。
在Qucs中,可以很容易地设计复杂的控制电路,通过仿真分析不同方案的控制效果。
2.2 SPICESPICE是一种常用的模拟软件,主要用于电路和系统仿真。
基于Multisim的交通灯控制电路系统仿真设计

0.引言Multisim 具有丰富的仿真分析能力并且以Windows 为基础的EDA 仿真工具,适用于板级的模拟/数字电路板的设计工作。
通过Multisim 可以交互式地搭建电路原理图,并对电路行为进行仿真。
它是EDA 仿真设计系统的一个重要组成部分。
EDA 代表了当今电子设计技术的最新发展方向,其基本特征是设计人员以计算机为工具,按照自顶向下的设计方法。
随着EDA 技术的发展,可以利用“虚拟仪器”、“虚拟器件”在计算机上进行电子电路设计和实验。
目前,在这类仿真软件中,“虚拟电子实验台”—————Multisim 较为优秀,其应用逐步得到推广。
这种新型的虚拟电子实验技术软件,在创建实验电路时,元器件、测试仪器均可直接从屏幕图形中选取,且仪器的设置、使用和数据读取方法以及外观都与现实中的仪表非常相似。
实际工作中可以利用此软件实现计算机仿真设计与虚拟实验,并且设计与实验可以同步进行,可以边设计边实验,修改调试方便;设计和实验用的元器件及测试仪表齐全,可以完成各种类型的电路设计与实验;仿真时可方便地对电路参数进行测试和分析,可直接打印输出实验数据、测试参数、曲线和电路原理图,并且在实验中不消耗实际上的元器件,实验所需元器件的种类和数量不受限制,从而降低了实验成本低,加快了实验速度,提高了实验效率高。
基于上述优点,我们利用虚拟实验室中的虚拟仪器来组织完成交通灯控制电路的仿真设计。
1.交通灯控制器原理假设有个十字路口,分别有A 、B 两条交叉的道路,交通灯的控制方式为:A 街道先出现在绿灯(3S )、黄灯(1S )时,B 街道为红灯(4S );而A 街道为红灯(4S )时,B 街道出现绿灯(3S )、黄灯(1S );如此循环。
交通灯控制的一个循环为8S ,而采用一片同步十进制计数74LS160来完成时间控制,相当于模8的计数器。
2.电路设计2.1真值表假设A 、B 街道的绿、黄、红灯分别用GA 、YA 、RA 和GB 、YB 、RB 表示,交通灯控制电路的真值表如表1所示:表1交通灯控制电路逻辑真值表2.2设计模8计数器2.2.174LS160简介74LS160是同步10进制计数器,其管脚排列如图1所示:其中A 、B 、C 、D 为预置数输入端,LOAD 为预置数控制端,CLR 为异步清零端,ENP 和ENT 为计数器允许端,CLK 为上长沿触发时钟端,RCO 为输出的进位信号,QA 、QB 、QC 、QD 为十进制输出端。
51单片机交通灯仿真原理

51单片机交通灯仿真原理引言:交通灯作为城市交通管理的重要组成部分,起到了引导车辆和行人通行的作用。
在现代社会中,交通灯的灯光变化是由电路控制实现的。
本文将以51单片机为基础,介绍交通灯仿真的原理和实现过程。
一、51单片机简介51单片机是一种常见的微控制器,具有高性能、低功耗、易编程等特点。
它广泛应用于各种电子设备中,包括交通灯控制。
二、交通灯的基本原理交通灯一般由红、黄、绿三个灯组成。
红灯表示停车,黄灯表示准备行驶,绿灯表示可以通行。
交通灯的变化是按照一定的时间间隔来进行的,通常为红灯亮一段时间,然后黄灯亮一段时间,最后绿灯亮一段时间。
这种变化方式可以通过51单片机的定时器和IO口控制来实现。
三、交通灯仿真的实现步骤1. 硬件连接需要准备一块51单片机开发板,以及红、黄、绿三个LED灯。
将LED灯连接到51单片机的IO口上,通过电阻限流,确保电流合适。
2. 程序编写使用C语言编写程序,实现交通灯的仿真。
首先,需要定义红、黄、绿三个灯对应的IO口。
然后,设置定时器,按照一定的时间间隔来改变灯的状态。
例如,红灯亮5秒,黄灯亮2秒,绿灯亮8秒。
通过循环控制,可以实现交通灯的循环变化。
3. 烧录程序将编写好的程序通过烧录器下载到51单片机中。
确保烧录成功后,即可进行交通灯仿真。
4. 仿真测试将51单片机开发板连接到电源,打开电源开关。
此时,红灯应亮起,表示停车;随后黄灯亮起,表示准备行驶;最后绿灯亮起,表示可以通行。
通过不断循环,交通灯的状态会一直变化,实现仿真效果。
四、交通灯仿真的应用价值交通灯仿真是对交通灯控制的一种模拟,可以用于交通管理系统的设计和优化。
通过仿真实验,可以模拟不同情况下交通灯的变化,优化交通流量,提高交通效率。
此外,交通灯仿真还可以用于交通安全教育,让行人和驾驶员更好地理解交通灯的意义和规则。
五、总结本文以51单片机为基础,介绍了交通灯仿真的原理和实现过程。
通过硬件连接、程序编写、烧录和测试等步骤,可以实现交通灯的仿真效果。
实验二:Multisim交通灯仿真

03
交通灯工作原理
交通灯的种类
01
02
03
红绿灯
红、绿、黄三种颜色,用 于指示车辆和行人停止、 通行和等待。
交通信号灯
包括左转、直行和右转信 号,用于管理不同方向的 交通流。
紧急停车带交通灯
用于指示紧急车辆在紧急 情况下使用紧急停车带。
交通灯的控制逻辑
时序逻辑
实验二Multisim交通 灯仿真
目录
• 实验目的 • Multisim软件介绍 • 交通灯工作原理 • 交通灯控制系统设计 • Multisim仿真过程 • 实验总结与展望
01
实验目的
掌握Multisim软件的使用
掌握Multisim软件的界面布局和基本 操作,如元件库管理、电路图绘制、 仿真运行等。
控制电路
由定时器、微控制器等组成,用于实 现交通灯的时序逻辑和控制逻辑。
04
交通灯控制系统设计
控制系统设计思路
确定控制目标
根据交通需求,确定交通灯控制 系统的目标,如车辆和行人的通
行时间、优先级等。
选择控制策略
根据控制目标,选择合适的控制策 略,如定时控制、感应控制等。
设计控制电路
根据控制策略,设计控制电路,包 括红、绿、黄三个方向的信号灯和 必要的传感器。
03
检查电路的电气特性,如电压、电流等是否符合预 期。
仿真运行与结果分析
01
启动仿真,观察电路的工作过程。
02 使用虚拟仪器记录仿真过程中的电压、电 流等数据。
03
分析仿真结果,并与实际电路的工作情况 进行比较。
04
根据仿真结果,对电路设计进行优化和改 进。
基于QuartusⅡ的十字路口交通灯控制电路设计与仿真实现

基于QuartusⅡ的十字路口交通灯控制电路设计与仿真实现西安交通大学 黄览小十字路口车辆通行能否保持较高的效率,将决定城市交通管理水平。
本文结合十字路口交通灯控制要求,采用QuartusⅡ实现了交通灯控制电路设计,并对设计效果进行了仿真分析。
从仿真结果来看,交通灯控制电路可以在车流量过大时将道路通行时间由60s增加至90s,并在车流量过小时将通行时间由60s减少至30s,因此能够实现十字路口车辆通行量的动态控制。
:引言:伴随着私家车数量的不断增加,城市交通压力日渐增大。
而加强十字路口交通灯控制,则能起到缓解城市交通堵塞的重要作用。
目前在交通灯控制设计方面,采用传统的设计形式已经无法满足交通灯的动态控制需求。
为此,还要引入先进的设计软件,采用QuartusⅡ实现十字路口交通灯控制电路设计与仿真分析,提高十字路口的车辆通行效率。
1.QuartusⅡ概述在现代电子产品设计方面,主要采用Electronic Design Automation 技术,即EDA技术。
采用该技术,能够实现对可编程逻辑器件的大规模运用,并通过硬件描述实现系统逻辑表达,然后进行软件开发和实验,最终利用软件完成硬件设计。
伴随着科学技术的发展,新的软件工具得到了进一步开发。
现阶段,可以采用能够实现现场编程的Quar-tusⅡ工具。
QuartusⅡ由Altera公司开发,属于综合性CPLD/FPGA开发软件,能够实现原理图、VerilogHDL等各种设计形式的输入,同时能够利用内部综合器以及仿真器完成设计输入和硬件配置。
2.基于QuartusⅡ的十字路口交通灯控制电路设计2.1 设计要求设计十字路口交通灯控制电路,目的在于实现交通灯信号的控制。
而十字路口由东南方向主干道和西北方向支干道交叉形成,采用的交通灯有黄、绿、红三种,绿灯表示通行,红灯则禁止通行,黄灯为变道提示。
在交通灯控制方面,要求使主干道保持长时间绿灯,同时支干道保持长时间红灯。
基于Proteus的智能交通灯设计与仿真实现

基于Proteus的智能交通灯设计与仿真实现智能交通灯是一种通过传感器和智能控制系统实现交通信号灯的智能化管理,能够根据交通流量和道路状况进行智能调控,以提高交通效率和减少交通堵塞。
本文将基于Proteus软件进行智能交通灯的设计和仿真实现。
首先,我们需要明确智能交通灯的基本功能和设计要求。
智能交通灯主要需要实现以下功能:1.根据交通流量进行智能控制。
通过传感器检测道路上的交通流量,智能交通灯可以根据实时的交通情况智能地调整信号灯的时间,以提高交通效率。
2.考虑不同道路的优先级。
在交叉路口附近,智能交通灯需要根据不同道路的优先级来调整信号灯的时间,以确保交通的顺畅和安全。
3.考虑行人的过马路需求。
智能交通灯需要合理地安排行人的过马路时间,以保证行人的安全和顺畅。
接下来,我们将使用Proteus软件进行智能交通灯的设计和仿真实现。
Proteus是一款电子电路设计和仿真软件,可以用来模拟和验证电子电路的性能和功能。
首先,我们需要设计智能交通灯的硬件电路。
在Proteus中,我们可以使用元器件库中的LED灯和开关等元件来构建交通灯的电路。
同时,我们还需要添加传感器来检测交通流量和行人的需求。
在设计电路的过程中,我们需要考虑不同道路的优先级和行人的过马路需求。
根据道路的优先级,我们可以设置不同道路对应的信号灯的亮灭时间。
同时,我们还可以设置传感器来检测行人的需求,以在需要的时候提供行人过马路的时间。
完成电路设计后,我们可以使用Proteus中的仿真功能来验证电路的性能和功能。
在仿真过程中,可以模拟不同道路的交通流量和行人的过马路需求,以观察交通灯是否能够根据实时情况进行智能调控。
在仿真过程中,我们可以观察交通灯的状态变化和信号灯的亮灭时间,以评估交通灯的性能和效果。
如果发现问题,我们可以对电路进行调整和优化,以提升交通灯的智能化管理能力。
总结起来,基于Proteus的智能交通灯设计和仿真实现是一种高效且可靠的方法。
基于数字电路的交通灯控制器的设计与仿真

基于数字电路的交通灯控制器的设计与仿真作者:宋朝君来源:《电子技术与软件工程》2013年第20期摘要把数字电路的设计与EDA仿真软件相互结合,设计一个十字路口交通灯控制器。
该控制器能够实现对十字路口交通信号灯控制。
利用EDA这种高效的设计平台,能够方便地设计电路,并通过对电路仿真来验证电路是否达到设计要求。
与传统的设计方法相比,它具有灵活性强、低成本、高效率的优越性。
【关键词】 EDA 数字电路电路仿真数字电路主要有组合逻辑电路和时序逻辑电路两部分组成,交通灯控制器的设计既可以涉及到这两部分的基本原理的运用,又可以锻炼学生对数电综合电路的设计和分析能力,因此交通灯控制器的设计是数字电路一个很好的教学题材,在完成电路设计的同时配合电子设计自动化(EDA)教学,学生无需懂得深入的SPICE技术就可以很快地进行捕获、仿真和分析新的设计,EDA可以很好地、很方便地把刚刚学到的理论知识用计算机仿真真实的再现出来。
并且可以用虚拟仪器技术创造出真正属于自己的仪表。
极大地提高了学员的学习热情和积极性。
真正的做到了变被动学习为主动学习。
目前在各高校教学中普遍使用EDA仿真软件是Multisim10.1,是美国国家仪器(NI)有限公司推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。
下面介绍以Muitisim10.1 为平台设计一个十字路口交通控制器系统的过程.1 设计要求设计一个十字路口的交通灯控制器,要求主干道和支干道交替运行,主干道每次通行时间都设为30秒;支干道每次通行时间都设为20秒;绿灯可以通行,红灯禁止通行;每次绿灯变红灯时,要求黄灯先亮5秒钟(此时另干道的红灯不变);十字路口要有数字显示,作为等候的时间提示。
要求主干道和支干道通行时间及黄灯亮的时间均以秒为单位做减法计数。
黄灯亮时,原红灯按1Hz的频率闪烁。
2 交通控制器电路设计与仿真2.1 状态控制器的设计根据设计要求,主干道和支干道红、绿、黄灯正常工作时,只有四种可能:主干道车道绿灯亮,支干道车道红灯亮,用S0表示,绿灯亮足规定的时间间隔30秒时,控制器发出状态转换信号,转到下一工作状态;主干道车道黄灯亮,支干道车道红灯闪烁,用S1表示,黄灯亮规定的时间间隔5秒时,控制器发出状态转换信号,转到下一工作状态;主干道车道红灯亮,支干道车道绿灯亮,用S2表示,绿灯亮足规定的时间间隔20秒时,控制器发出状态转换信号,转到下一工作状态;主干道车道红灯闪烁,支干道车道黄灯亮,用S3表示,黄灯亮足规定的时间间隔5秒是,控制器发出状态转换信号,系统又转换到最初种状态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交通灯控制电路设计与仿真一、实验目的1、了解交通灯的燃灭规律。
2、了解交通灯控制器的工作原理。
3、熟悉 VHDL 语言编程,了解实际设计中的优化方案。
二、实验原理交通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,车辆如果只要东西和南北方向通行就很简单,而如果车子可以左右转弯的通行就比较复杂,本实验仅针对最简单的南北和东西直行的情况。
要完成本实验,首先必须了解交通路灯的燃灭规律。
本实验需要用到实验箱上交通灯模块中的发光二极管,即红、黄、绿各三个。
依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。
其交通的燃灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。
闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。
闪烁若干次后,再切换到东西路口方向,重复上述过程。
在实验中使用 8 个七段码管中的任意两个数码管显示时间。
东西路和南北路的通车时间均设定为 20s。
数码管的时间总是显示为 19、18、17……2、1、0、19、18……。
在显示时间小于 3 秒的时候,通车方向的黄灯闪烁。
三、实验内容本实验要完成任务就是设计一个简单的交通灯控制器,交通灯显示用实验箱的交通灯模块和七段码管中的任意两个来显示。
系统时钟选择时钟模块的 1KHz时钟,黄灯闪烁时钟要求为 2Hz,七段码管的时间显示为 1Hz脉冲,即每 1s 中递减一次,在显示时间小于 3 秒的时候,通车方向的黄灯以 2Hz 的频率闪烁。
系统中用 S1 按键进行复位。
实验箱中用到的数字时钟模块、按键开关、数码管与 FPGA 的接口电路,以及数字时钟源、按键开关、数码管与 FPGA 的管脚连接在以前的实验中都做了详细说明,这里不在赘述。
交通灯模块原理与 LED 灯模块的电路原理一致,当有高电平输入时 LED 灯就会被点亮,反之不亮。
只是 LED 发出的光有颜色之分。
其与 FPGA 的管脚连接如下表 19-1 所示:四、实验步骤1、打开 QUARTUSII 软件,新建一个工程。
2、建完工程之后,再新建一个 VHDL File,打开 VHDL 编辑器对话框。
3、按照实验原理和自己的想法,在 VHDL 编辑窗口编写 VHDL 程序,用户可参照光盘中提供的示例程序。
4、编写完 VHDL 程序后,保存起来。
(1)-jtdkz.vhdlibrary ieee;use ieee.std_logic_1164.all;entity jtdkz isport(clk,sm,sb:in std_logic;mr,my0,mg0,br,by0,bg0:out std_logic);end entity jtdkz;architecture art of jtdkz istype state_type is(A,B,C,D);signal state:state_type;begincnt:process(clk) isvariable s:integer range 0 to 45;variable clr,en:bit;beginif(clk'event and clk='1')thenif clr='0'then s:=0;elsif en='0' then s:=s;else s:=s+1;end if;case state iswhen A=>mr<='0';my0<='0';mg0<='1';br<='1';by0<='0';bg0<='0';if(sb and sm)='1' thenif 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<=B;clr:='0';en:='0';else state<=A;clr:='1';en:='1';end if;when B=>mr<='0';my0<='1';mg0<='0';br<='1';by0<='0';bg0<='0';if s=5 then state<=C;clr:='0';en:='0';else state<=B;clr:='1';en:='1';end if;when C=>mr<='1';my0<='0';mg0<='0';br<='0';by0<='0';bg0<='1';if(sb and sm)='1' thenif s=25 then state<= D;clr:='0';en:='0';else state<=C;clr:='1';en:='1';end if;elsif sb='0' then state<=D;clr:='0';en:='0';else state<=C;clr:='1';en:='1';end if;when D=>mr<='1';my0<='0';mg0<='0';br<='0';by0<='1';bg0<='0'; if s=5 then state<=A;clr:='0';en:='0';else state<=D;clr:='1';en:='1';end if;end case;end if;end process cnt;end architecture art;(2)cskz.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cskz isport(ina:in std_logic;outa:out std_logic);end entity cskz;architecture art of cskz isbeginprocess(ina) isbeginif ina='1' then outa<='1';else outa<='0';end if;end process;end architecture art;(3)—cnt45s.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt45s isport(sb,clk,en45:in std_logic;dout45m,dout45b:out std_logic_vector(7 downto 0)); end entity cnt45s;architecture art of cnt45s issignal cnt6b:std_logic_vector(5 downto 0);beginprocess(sb,clk,en45)isbeginif sb='0'then cnt6b<=cnt6b-cnt6b-1;elsif(clk'event and clk='1')thenif en45='1'then cnt6b<=cnt6b+1;elsif en45='0' then cnt6b<=cnt6b-cnt6b-1;end if;end if;end process;process(cnt6b)isbegincase cnt6b iswhen "000001"=>dout45m<="01000100";dout45b<="01001001"; when "000010"=>dout45m<="01000011";dout45b<="01001000"; when "000011"=>dout45m<="01000010";dout45b<="01000111"; when "000100"=>dout45m<="01000001";dout45b<="01000110"; when "000101"=>dout45m<="01000000";dout45b<="01000101"; when "000110"=>dout45m<="00111001";dout45b<="01000100"; when "000111"=>dout45m<="00111000";dout45b<="01000011"; when "001000"=>dout45m<="00110111";dout45b<="01000010"; when "001001"=>dout45m<="00110110";dout45b<="01000001"; when "001010"=>dout45m<="00110101";dout45b<="01000000"; when "001011"=>dout45m<="00110100";dout45b<="01101001"; when "001100"=>dout45m<="00110011";dout45b<="00111000"; when "001101"=>dout45m<="00110010";dout45b<="00110111"; when "001110"=>dout45m<="00110001";dout45b<="00110110"; when "001111"=>dout45m<="00110000";dout45b<="00110101"; when "010000"=>dout45m<="00101001";dout45b<="00110100"; when "010001"=>dout45m<="00101000";dout45b<="00110011"; when "010010"=>dout45m<="00100111";dout45b<="00110010"; when "010011"=>dout45m<="00100110";dout45b<="00110001"; when "010100"=>dout45m<="00100101";dout45b<="00110000"; when "010101"=>dout45m<="00100100";dout45b<="00101001"; when "010110"=>dout45m<="00100011";dout45b<="00101000"; when "010111"=>dout45m<="00100010";dout45b<="00100111"; when "011000"=>dout45m<="00100001";dout45b<="00100110"; when "011001"=>dout45m<="00100000";dout45b<="00100101"; when "011010"=>dout45m<="00011001";dout45b<="00100100"; when "011011"=>dout45m<="00011000";dout45b<="00100011"; when "011100"=>dout45m<="00010111";dout45b<="00100010"; when "011101"=>dout45m<="00010110";dout45b<="00100001"; when "011110"=>dout45m<="00010101";dout45b<="00100000"; when "011111"=>dout45m<="00010100";dout45b<="00011001"; when "100000"=>dout45m<="00010011";dout45b<="00011000"; when "100001"=>dout45m<="00010010";dout45b<="00010111"; when "100010"=>dout45m<="00010001";dout45b<="00010110"; when "100011"=>dout45m<="00010000";dout45b<="00010101"; when "100100"=>dout45m<="00001001";dout45b<="00010100"; when "100101"=>dout45m<="00001000";dout45b<="00010011"; when "100110"=>dout45m<="00000111";dout45b<="00010010"; when "100111"=>dout45m<="00000110";dout45b<="00010001"; when "101000"=>dout45m<="00000101";dout45b<="00010000"; when "101001"=>dout45m<="00000100";dout45b<="00001001"; when "101010"=>dout45m<="00000011";dout45b<="00001000"; when "101011"=>dout45m<="00000010";dout45b<="00000111";when others=>dout45m<="00000000";dout45b<="00000000"; end case;end process;end architecture art;(4)cnt05s.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt05s isport(clk,en05m,en05b:in std_logic;dout5:out std_logic_vector(7 downto 0));end entity cnt05s;architecture art of cnt05s issignal cnt3b:std_logic_vector(2 downto 0);beginprocess(clk,en05m,en05b)isbeginif(clk'event and clk='1')thenif en05m='1'then cnt3b<=cnt3b+1;elsif en05b='1'then cnt3b<=cnt3b+1;elsif en05b='0'then cnt3b<=cnt3b-cnt3b-1;end if;end if;end process;process(cnt3b)isbegincase cnt3b iswhen "000"=>dout5<="00000101";when "001"=>dout5<="00000100";when "010"=>dout5<="00000011";when "011"=>dout5<="00000010";when "100"=>dout5<="00000001";when others=>dout5<="00000000";end case;end process;end architecture art;(5)—cnt25s.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt25s isport(sb,sm,clk,en25:in std_logic;dout25m,dout25b:out std_logic_vector(7 downto 0)); end entity cnt25s;architecture art of cnt25s issignal cnt5b:std_logic_vector(4 downto 0);beginprocess(sb,sm,clk,en25)isbeginif sb='0'then cnt5b<=cnt5b-cnt5b-1;elsif sm='0' then cnt5b<=cnt5b-cnt5b-1;elsif(clk'event and clk='1') thenif en25='1' then cnt5b<=cnt5b+1;elsif en25='0' then cnt5b<=cnt5b-cnt5b-1;end if;end if;end process;process(cnt5b)isbegincase cnt5b iswhen "00000"=>dout25b<="00100101";dout25m<="00110000";when "00001"=>dout25b<="00100100";dout25m<="00101001";when "00010"=>dout25b<="00100011";dout25m<="00101000";when "00011"=>dout25b<="00100010";dout25m<="00100111";when "00100"=>dout25b<="00100001";dout25m<="00100110";when "00101"=>dout25b<="00100000";dout25m<="00100101";when "00110"=>dout25b<="00011001";dout25m<="00100100";when "00111"=>dout25b<="00011000";dout25m<="00100011";when "01000"=>dout25b<="00010111";dout25m<="00100010";when "01001"=>dout25b<="00010110";dout25m<="00100001";when "01010"=>dout25b<="00010101";dout25m<="00100000";when "01011"=>dout25b<="00010100";dout25m<="00011001";when "01100"=>dout25b<="00010011";dout25m<="00011000";when "01101"=>dout25b<="00010010";dout25m<="00010111";when "01110"=>dout25b<="00010001";dout25m<="00010110";when "01111"=>dout25b<="00010000";dout25m<="00010101";when "10000"=>dout25b<="00001001";dout25m<="00010100";when "10001"=>dout25b<="00001000";dout25m<="00010011";when "10010"=>dout25b<="00000111";dout25m<="00010010";when "10011"=>dout25b<="00000110";dout25m<="00010001";when "10100"=>dout25b<="00000101";dout25m<="00010000";when "10101"=>dout25b<="00000100";dout25m<="00010001";when "10110"=>dout25b<="00000011";dout25m<="00001000";when "10111"=>dout25b<="00000010";dout25m<="00000111";when "11000"=>dout25b<="00000001";dout25m<="00000110";when others=>dout25b<="00000000";dout25m<="00000000";end case;end process;end architecture art;(6)—xskz.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xskz isport(en45,en25,en05m,en05b:in std_logic;ain45m,ain45b,ain25m,ain25b,ain05:in std_logic_vector(7 downto 0); doutm,doutb:out std_logic_vector(7 downto 0));end entity xskz;architecture art of xskz isbeginprocess(en45,en25,en05m,en05b,ain45m,ain45b,ain25m,ain25b,ain05)is beginif en45='1'then doutm<=ain45m(7 downto 0);doutb<=ain45b(7 downto 0);elsif en05m='1'then doutm<=ain05(7 downto 0);doutb<=ain05(7 downto 0); elsif en25='1'then doutm<=ain25m(7 downto 0);doutb<=ain25b(7 downto 0); elsif en05b='1'then doutm<=ain05(7 downto 0);doutb<=ain05(7 downto 0); end if;end process;end architecture art;(7)—ymq.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ymq isport(clk:in std_logic;ain41,ain42,ain43,ain44:in std_logic_vector(3 downto 0);del:out std_logic_vector(2 downto 0);dout7:out std_logic_vector(6 downto 0));end entity ymq;architecture art of ymq issignal ain4: std_logic_vector(3 downto 0);signal cnt: std_logic_vector(2 downto 0);beginprocess(clk)beginif clk'event and clk='1' thenif cnt="011" thencnt<="000";elsecnt<=cnt+1;end if;end if;end process;process(cnt,ain41,ain42,ain43,ain44)begincase cnt iswhen "000" => ain4<=ain41; del<="111";when "001" => ain4<=ain42; del<="110";when "010" => ain4<=ain43; del<="101";when "011" => ain4<=ain44; del<="100";when "100" => ain4<=ain41; del<="000";when "101" => ain4<=ain41; del<="000";when "110" => ain4<=ain41; del<="000";when "111" => ain4<=ain41; del<="000";end case;end process;process(ain4)isbegincase ain4 iswhen "0000"=>dout7<="0111111";when "0001"=>dout7<="0000110";when "0010"=>dout7<="1011011";when "0011"=>dout7<="1001111";when "0100"=>dout7<="1100110";when "0101"=>dout7<="1101101";when "0110"=>dout7<="1111101";when "0111"=>dout7<="0000111";when "1000"=>dout7<="1111111";when "1001"=>dout7<="1101111";when others=>dout7<="0000000";end case;end process;end architecture art;(8)—jtkzq.vhdlibrary ieee;use ieee.std_logic_1164.all;entity jtkzq isport(clk,sm,sb:in std_logic;mr,mg,my,by,br,bg:out std_logic;del1:out std_logic_vector(2 downto 0);dout:out std_logic_vector(6 downto 0));end entity jtkzq;architecture art of jtkzq iscomponent div_clk isport(clk : in std_logic;clk1:out std_logic);end component div_clk;component jtdkz isport(clk,sm,sb:in std_logic;mr,my0,mg0,br,by0,bg0:out std_logic); end component jtdkz;component cskz isport(ina:in std_logic;outa:out std_logic);end component cskz;component cnt45s isport(sb,clk,en45:in std_logic;dout45m,dout45b:out std_logic_vector(7 downto 0));end component cnt45s;component cnt05s isport(clk,en05m,en05b:in std_logic;dout5:out std_logic_vector(7 downto 0));end component cnt05s;component cnt25s isport(sb,sm,clk,en25:in std_logic;dout25m,dout25b:out std_logic_vector(7 downto 0));end component cnt25s;component xskz isport(en45,en25,en05m,en05b:in std_logic;ain45m,ain45b,ain25m,ain25b,ain05:in std_logic_vector(7 downto 0);doutm,doutb:out std_logic_vector(7 downto 0));end component xskz;component ymq isport(clk:in std_logic;ain41,ain42,ain43,ain44:in std_logic_vector(3 downto 0);del:out std_logic_vector(2 downto 0);dout7:out std_logic_vector(6 downto 0));end component ymq;signal clk11:std_logic;signal en1,en2,en3,en4:std_logic;signal s45m,s45b,s05,s25m,s25b:std_logic_vector(7 downto 0);signal ym1,ym2,ym3,ym4:std_logic_vector(3 downto 0);beginu1:div_clk port map(clk=>clk,clk1=>clk11);u2:jtdkz portmap(clk=>clk11,sm=>sm,sb=>sb,mr=>mr,my0=>en2,mg0=>en1,br=>br,by0=>en4,bg0=>en3) ;u3:cskz port map(ina=>en1,outa=>mg);u4:cskz port map(ina=>en2,outa=>my);u5:cskz port map(ina=>en3,outa=>bg);u6:cskz port map(ina=>en4,outa=>by);u7:cnt45s port map(clk=>clk11,sb=>sb,en45=>en1,dout45m=>s45m,dout45b=>s45b);u8:cnt05s port map(clk=>clk11,en05m=>en2,dout5=>s05,en05b=>en4);u9:cnt25s portmap(clk=>clk11,sm=>sm,sb=>sb,en25=>en3,dout25m=>s25m,dout25b=>s25b);u10:xskz portmap(en45=>en1,en05m=>en2,en25=>en3,en05b=>en4,ain45m=>s45m,ain45b=>s45b,ain25m= >s25m,ain25b=>s25b,ain05=>s05,doutm(3 downto 0)=>ym1,doutm(7 downto4)=>ym2,doutb(3 downto 0)=>ym3,doutb(7 downto 4)=>ym4);u11:ymq portmap(clk=>clk,ain41=>ym1,ain42=>ym2,ain43=>ym3,ain44=>ym4,del=>del1,dout7=>dout) ;end architecture art;(9)—div_clk.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div_clk isport(clk : in std_logic;clk1:out std_logic);end div_clk;architecture behav of div_clk issignal cnt:integer range 1000 downto 0;beginprocess(clk)beginif clk'event and clk='1' thenif cnt=999 thencnt<=0;elsecnt<=cnt+1;end if;if cnt<500 thenclk1<='0';elseclk1<='1';end if;end if;end process;end behav;5 引脚分配6 实验现象当主、支道均有车时,两者交替允许通行,主干道每次放行45s,支干道每次放行25s,在每次由亮绿灯变成亮红灯的转换过程中,要亮5s的黄灯作为过度,并进行减计时显示。