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

交通信号灯控制电路的设计一、设计任务与要求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转到下一工作状态。
基于EDA的交通信号灯电路的设计与仿真

基于EDA的交通信号灯电路的设计与仿真传统的交通信号灯控制电路的设计是基于中、小规模集成电路,电路元件多、焊接复杂、故障率高、可靠性低,而且控制系统的功能扩展及调试都需要硬件电路的支持,为日常维护和管理增加了难度。
目前很多城市的交通信号灯还是应用传统的电路设计,一旦交通信号灯出现故障,不能及时维修和处理,势必会造成道路的交通混乱。
通过技术的改进,采用基于EDA技术的交通信号灯控制电路弥补了传统设计中的缺点,通过VHDL语言编写系统控制程序,利用软件控制整个系统的硬件电路,还可以利用EDA集成开发环境对交通信号灯的设计进行仿真,验证设计结果是否实现。
改进后的交通信号灯电路组成元器件少,可靠性高,操作简单,实现可扩展功能。
1 交通信号灯控制电路1.1 交通信号灯工作原理基于FPGA的交通信号灯控制电路主要用于甲乙两条车道汇合点形成的十字交叉路口,甲乙两车道各有一组红、黄、绿灯和倒计时显示器,用以指挥车辆和行人有序的通行。
两组红绿灯分别对两个方向上的交通运行状态进行管理,红灯亮表示该道路禁止通行,黄灯表示停车,绿灯表示可以通行;倒计时显示器是用来显示允许通行或禁止通行的时间,以倒计时方式显示交通灯闪亮持续时间。
为每个灯的闪亮状态设置一个初始值,指示灯状态改变后,开始按照初始值倒计时,倒计时归零后,灯的状态将会改变至下一个状态。
交通灯两车道的指示灯闪亮状态是相关的,每个方向的灯闪亮状态影响着另一个方向的指示灯闪亮状态,这样才能够协调两个方向的车流。
甲乙两车道交通灯工作状态如表1所示,其中“1”代表点亮,“0”代表熄灭。
当甲车道绿灯亮时,乙车道对应红灯亮,由绿灯转换红灯的过渡阶段黄灯亮。
同理,乙车道绿灯亮时,甲车道的交通灯也遵循此规则。
当出现特殊情况时,各方向均亮红灯,倒计时停止,特殊运行状态结束后,控制器恢复原来状态,继续运行。
1.2 交通信号灯电路结构根据交叉路口交通灯工作原理,图1为交通信号灯控制电路的原理图。
交通灯控制电路综合设计实验

放风筝小学生二年级作文7篇放风筝是清明时节人们所喜爱的一项活动,此时的气候风向也非常适宜放风筝。
下面是小编为大家整理的放风筝小学生二年级作文7篇,仅供参考,欢迎大家阅读借鉴。
放风筝小学生二年级作文1星期天下午,阳光明媚,微风吹拂,天气格外温暖,我的心情也很好,因为叔叔要带我去放风筝。
我和叔叔一路走一路说笑着,不知不觉就来到了广场。
广场上的人可真多呀!很多人都在放风筝。
天上的风筝一个比一个飞得高,像鸟儿一样在空中自由地盘旋。
看着一个个高高飞起的风筝,我的心痒痒的,已经有些迫不及待了。
我是第一次放风筝,所以需要身为高手的叔叔示范一次。
只见叔叔拉着风筝线边跑边慢慢放线,不一会儿,风筝便高高地飞了起来。
看着叔叔的示范,我觉得我会放风筝了。
于是,我学着叔叔的样子慢慢放线。
因为我总站在原地,风一停,风筝就会掉下来。
这时,叔叔对我喊:“跑,跑起来!”听了这话,我立马在广场上跑起来,风筝果然如叔叔说的那样飞了起来。
但是广场上放风筝的人太多了,我一放开跑,风筝线就和别人的风筝线缠在一起。
叔叔赶紧过来帮我解开风筝线,并教了几种方法避开别的风筝。
我又重新开始放,这次很顺利,风筝飞得很高。
我仰望我的风筝,它像鸟儿一样在湛蓝的天空中飞翔,和其他风筝一起,让这场空中舞会变得热闹非凡。
望着天空飞舞的风筝,我不禁想到,有时我们就像那风筝,总想飞得更高更远,可总被拿着风筝线的父母紧紧拽着,可换个角度想,没有了父母的帮助,我们怎会高高飞起?放风筝小学生二年级作文2星期天下午,秋高气爽,微风习习,我兴高采烈地和妈妈去太子山公园放风筝我的风筝是金鱼形状的,它有一双圆溜溜的眼睛、淡蓝色的鱼鳞、金色的脑袋和金黄色的尾巴,非常惹人喜爱!我们来到太子山公园,看道人们三个一群五个一伙的在放风筝。
天上无颜六色、形态各异的风筝让人眼花缭乱,有展翅高飞的老鹰,有精美别致的脸谱,有喜气洋洋的猪八戒,还有拖着长长尾巴的蜻蜓……我一边欣赏,一边和妈妈找了一个空旷的地方放风筝。
交通信号灯控制电路的设计与仿真

交通信号灯控制电路的设计与仿真交通信号灯是城市道路上的重要交通设施。
它不仅能够引导车辆行驶方向、保障行人安全出行,还能有效地控制交通流量,缓解车辆拥堵问题。
然而,要使交通信号灯发挥作用,就需要一个可靠的信号控制电路。
本文将介绍交通信号灯控制电路的设计与仿真。
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 为十进制输出端。
交通灯proteus仿真设计

交通灯proteus仿真设计交通灯是城市交通管理中非常重要的一部分,它们用于控制车辆和行人的流动,确保交通的安全和顺畅。
在这篇文章中,我们将使用Proteus软件来设计一个交通灯的仿真模型。
在Proteus中,我们可以使用ISIS和Ares两个模块进行电子电路的设计和仿真。
首先,我们需要在ISIS中创建一个新的电路图。
我们可以将交通灯的每个部分视为一个独立的电路,包括信号发生器、计时器、红绿灯和行人信号等。
首先,我们需要一个信号发生器来模拟交通灯的计时控制。
我们可以使用Proteus中提供的脉冲发生器来生成一个方波信号作为计时器的输入。
我们可以设置方波的频率和占空比来模拟不同的交通灯状态,比如红灯、绿灯和黄灯。
接下来,我们需要一个计时器来控制交通灯的转换。
我们可以使用Proteus中提供的计时器元件,比如555定时器。
我们可以设置定时器的参数,比如时钟频率和周期,来控制交通灯的转换时间。
然后,我们需要设计红绿灯的电路。
对于红灯,我们可以使用一个LED来表示,可以选择红色的LED。
对于绿灯,我们也可以使用一个LED来表示,可以选择绿色的LED。
我们可以使用Proteus中提供的LED元件,并将其连接到计时器的输出引脚上。
最后,我们还可以添加一个行人信号来模拟行人通过的情况。
我们可以使用一个LED来表示行人信号,可以选择白色的LED。
我们可以将行人信号的LED连接到计时器的输出引脚上,并设置适当的延迟来控制行人信号的亮灭。
完成电路设计后,我们可以在ISIS中进行仿真。
在仿真过程中,我们可以观察交通灯的状态和行人信号的变化。
通过调整计时器的参数,我们可以模拟不同的交通灯时间间隔和行人信号的延迟时间。
除了电路设计和仿真,Proteus还可以进行PCB布局和打印板设计。
我们可以使用Ares模块来创建一个真实的交通灯电路板,并将其制作成实际的交通灯。
总而言之,通过Proteus软件的使用,我们可以方便地设计和仿真交通灯的电路,并进行交通灯的时间间隔和行人信号的延迟的调整。
交通灯控制电路设计与制作

交通灯控制电路设计与制作交通灯控制电路设计与制作随着人口的不断增长和城市化的进程,各种交通工具的数量不断增加,交通技术的创新和发展也越来越受到关注。
交通灯是现代城市交通中非常重要的一种交通设施,它能够有效地控制车辆流量和行人行动,从而提高道路的安全性和交通效率。
交通灯控制电路是交通灯工作的核心系统。
它通过电子元器件将交通灯控制的信号转换成数字控制信号,进而实现交通灯的开关控制和颜色切换。
本文将介绍交通灯控制电路设计和制作的基本原理和步骤。
一、交通灯控制电路设计原理交通灯控制电路主要由以下几部分组成:时钟电路、数字控制电路、继电器控制电路、LED灯管控制电路等。
时钟电路:时钟电路是交通灯控制电路的基础部分,它通过高精度的电子元器件实现系统的节拍同步和计时。
在交通灯控制电路中,时钟电路的作用是控制信号频率和时间周期,为后面的数字控制和继电器控制提供时间基准。
数字控制电路:数字控制电路是交通灯控制电路的核心部分,它是把传统的机械式控制方式转化成数字化控制,实现自动控制的关键部分。
数字控制电路主要采用的是单片机技术,通过熟练掌握单片机编程语言和电路设计原理,可以实现复杂的交通信号控制方案。
继电器控制电路:继电器控制电路是一种实现数字控制信号与物理控制信号相互转换的电路。
它通过将数字控制信号转换成真实的高电平或低电平信号,从而控制车辆和行人信号灯的开关状态,改变交通灯的亮灭状态。
LED灯管控制电路:LED灯管控制电路是一种专门用于LED 灯传输控制信号的电路。
它通过对LED灯管的电流和电压进行调节,实现交通灯颜色的切换和灯管亮度的调节。
以上几个部分组成了一个完整的交通灯控制电路系统。
在实际设计和制作过程中,需要对各部分电路进行精心的设计和调试,以确保系统的可靠性和稳定性。
二、交通灯控制电路制作步骤1.准备材料和测试工具在制作交通灯控制电路时,需要准备一些基本的材料和测试工具。
其中包括电子元器件、电路设计软件、A/D转换器、逻辑单元、控制线缆、继电器、LED灯管、电路板和焊接工具等。
实验二:Multisim交通灯仿真

03
交通灯工作原理
交通灯的种类
01
02
03
红绿灯
红、绿、黄三种颜色,用 于指示车辆和行人停止、 通行和等待。
交通信号灯
包括左转、直行和右转信 号,用于管理不同方向的 交通流。
紧急停车带交通灯
用于指示紧急车辆在紧急 情况下使用紧急停车带。
交通灯的控制逻辑
时序逻辑
实验二Multisim交通 灯仿真
目录
• 实验目的 • Multisim软件介绍 • 交通灯工作原理 • 交通灯控制系统设计 • Multisim仿真过程 • 实验总结与展望
01
实验目的
掌握Multisim软件的使用
掌握Multisim软件的界面布局和基本 操作,如元件库管理、电路图绘制、 仿真运行等。
控制电路
由定时器、微控制器等组成,用于实 现交通灯的时序逻辑和控制逻辑。
04
交通灯控制系统设计
控制系统设计思路
确定控制目标
根据交通需求,确定交通灯控制 系统的目标,如车辆和行人的通
行时间、优先级等。
选择控制策略
根据控制目标,选择合适的控制策 略,如定时控制、感应控制等。
设计控制电路
根据控制策略,设计控制电路,包 括红、绿、黄三个方向的信号灯和 必要的传感器。
03
检查电路的电气特性,如电压、电流等是否符合预 期。
仿真运行与结果分析
01
启动仿真,观察电路的工作过程。
02 使用虚拟仪器记录仿真过程中的电压、电 流等数据。
03
分析仿真结果,并与实际电路的工作情况 进行比较。
04
根据仿真结果,对电路设计进行优化和改 进。
- 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;begint: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 t;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)—t45s.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity t45s isport(sb,clk,en45:in std_logic;dout45m,dout45b:out std_logic_vector(7 downto 0)); end entity t45s;architecture art of t45s issignal t6b:std_logic_vector(5 downto 0);beginprocess(sb,clk,en45)isbeginif sb='0'then t6b<=t6b-t6b-1;elsif(clk'event and clk='1')thenif en45='1'then t6b<=t6b+1;elsif en45='0' then t6b<=t6b-t6b-1;end if;end if;end process;process(t6b)isbegincase t6b 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)t05s.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity t05s isport(clk,en05m,en05b:in std_logic;dout5:out std_logic_vector(7 downto 0));end entity t05s;architecture art of t05s issignal t3b:std_logic_vector(2 downto 0);beginprocess(clk,en05m,en05b)isbeginif(clk'event and clk='1')thenif en05m='1'then t3b<=t3b+1;elsif en05b='1'then t3b<=t3b+1;elsif en05b='0'then t3b<=t3b-t3b-1;end if;end if;end process;process(t3b)isbegincase t3b 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)—t25s.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity t25s isport(sb,sm,clk,en25:in std_logic;dout25m,dout25b:out std_logic_vector(7 downto 0)); end entity t25s;architecture art of t25s issignal t5b:std_logic_vector(4 downto 0);beginprocess(sb,sm,clk,en25)isbeginif sb='0'then t5b<=t5b-t5b-1;elsif sm='0' then t5b<=t5b-t5b-1;elsif(clk'event and clk='1') thenif en25='1' then t5b<=t5b+1;elsif en25='0' then t5b<=t5b-t5b-1;end if;end if;end process;process(t5b)isbegincase t5b 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 t: std_logic_vector(2 downto 0);beginprocess(clk)beginif clk'event and clk='1' thenif t="011" thent<="000";elset<=t+1;end if;end if;end process;process(t,ain41,ain42,ain43,ain44)begincase t 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 isponent div_clk isport(clk : in std_logic;clk1:out std_logic);end ponent div_clk;ponent jtdkz isport(clk,sm,sb:in std_logic;mr,my0,mg0,br,by0,bg0:out std_logic); end ponent jtdkz;ponent cskz isport(ina:in std_logic;outa:out std_logic);end ponent cskz;ponent t45s isport(sb,clk,en45:in std_logic;dout45m,dout45b:out std_logic_vector(7 downto 0));end ponent t45s;ponent t05s isport(clk,en05m,en05b:in std_logic;dout5:out std_logic_vector(7 downto 0));end ponent t05s;ponent t25s isport(sb,sm,clk,en25:in std_logic;dout25m,dout25b:out std_logic_vector(7 downto 0));end ponent t25s;ponent 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 ponent xskz;ponent 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 ponent 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:t45s port map(clk=>clk11,sb=>sb,en45=>en1,dout45m=>s45m,dout45b=>s45b);u8:t05s port map(clk=>clk11,en05m=>en2,dout5=>s05,en05b=>en4);u9:t25s port map(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=>s25 m,ain25b=>s25b,ain05=>s05,doutm(3 downto 0)=>ym1,doutm(7 downto 4)=>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 t:integer range 1000 downto 0;beginprocess(clk)beginif clk'event and clk='1' thenif t=999 thent<=0;elset<=t+1;end if;if t<500 thenclk1<='0';elseclk1<='1';end if;end if;end process;end behav;5 引脚分配6 实验现象当主、支道均有车时,两者交替允许通行,主干道每次放行45s,支干道每次放行25s,在每次由亮绿灯变成亮红灯的转换过程中,要亮5s的黄灯作为过度,并进行减计时显示。