基于FPGA的交通灯设计说明

合集下载

基于FPGA的交通灯控制器的设计说明书

基于FPGA的交通灯控制器的设计说明书


设计内容及要求
1、主、支干道的四个路口各设绿、黄、红、左拐、右拐、人行六个指示灯用于 指示状态,两位显示数码管用于显示倒计时时间。 2、当主、支道均有车时,两者交替允许通行,主干道每次放行45s,支干道每次 放行40s,在每次由绿灯转换为左拐,左拐变换为红灯时,要有5s的黄灯作为 过渡。 3、每个灯亮到最后5s时,都有闪烁。 4、通行延时功能,智能交通灯控制:当某一干道遇到紧急情况时,需要一直通 行时,允许这支干道处于常通行状态,相应另一条干道处于禁行状态。 5、电子眼功能:当某一干道处于红灯时,如果有车闯过警戒线,那么就会被高 清数码照相机照下来。 6、路况显示功能:当某一干道处于通行时,可以动态的显示:车速,以及路况 信息。 7、硬件主要由FPGA构成,电路复杂,结构紧凑 ,硬件成本比较低。 8、用Verilog HDL语言设计上述功能的交通灯控制器,并用层次化设计方法该电 路。
闪烁子程序
12864显 示子程序
交通灯6个指示灯子程序流程图
状态机设计
整个程序包括五个状态机 例:十字路口左上角的交通灯对应这的9个状态: 分别是红、绿、黄、左拐、黄、右拐、黄、人行、红。
通行延时控制子程序流程图
交通灯闪烁子程序流程图
闯红灯监测子程序流程图
测车辆速度子程序流程图
MS12864R显示子程序流程图
例:主干道绿灯通行,且通行不畅的状态。
此时键8为1,从图4-24看出二极管D7(绿灯)亮,(交通处于通 行状态)数码管显示为11,MS12864R第一行显示的是车013km/h ,第二行显示的是路况:不畅。(此时有车通过,且第一辆车作为 开启MS12864R)
谢谢大家!
谢谢大家!
感谢您的观看!
欢迎批评指导!!

基于FPGA实现的交通灯控制器详解

基于FPGA实现的交通灯控制器详解

基于FPGA实现的交通灯控制器详解交通灯控制器是城市交通管理中的重要设备,用来控制红绿灯的改变。

传统的交通灯控制器多采用微控制器或单片机实现,但是这些方式在处理大规模的交通路口时会受到性能和并发处理能力的限制。

为了克服这些问题,近年来,基于FPGA(Field-Programmable Gate Array,现场可编程门阵列)的交通灯控制器逐渐得到应用。

FPGA是一种可编程逻辑器件,能够根据用户需求进行现场编程,具有高度灵活性和可重构性。

基于FPGA的交通灯控制器可以通过并行处理和精确时间管理来提高性能。

FPGA可以为每个交通灯信号灯分配独立的处理器核,同时可以对不同的交通灯进行并发处理。

这种并行处理的方式大大提高了系统的响应速度和处理能力,可以更好地适应高负载的交通场景。

此外,FPGA还可以提供更精确的时间管理。

交通灯的信号改变需要精确地控制时间,以确保交通流畅和交通安全。

传统的微控制器或单片机无法提供足够的精确性和实时性,而FPGA可以通过硬件电路和时钟管理单元来实现高精度的时间控制。

这种精确的时间管理能够对交通流量进行准确的判断和调度,提高交通效率。

此外,基于FPGA的交通灯控制器还具有可扩展性和灵活性。

FPGA的可编程特性使得交通灯控制器可以轻松地进行功能扩展和升级,满足不同场景和需求的要求。

而且,FPGA还可以进行实时调度和优化,可以根据实际交通情况进行动态调整,使交通灯控制系统更加智能和高效。

总之,基于FPGA的交通灯控制器具有高性能、精确的时间管理、可扩展性和灵活性等优点。

它可以提供更好的交通管理和安全保障,适用于大规模的交通路口和复杂的交通场景。

随着FPGA技术的不断发展和成熟,基于FPGA的交通灯控制器将会得到更广泛的应用。

基于FPGA的交通灯的设计

基于FPGA的交通灯的设计

课程设计一、设计任务要求基于FPGA的交通灯控制器设计1、总体要求:实现十字路口的交通灯有序显示2、具体要求:按照开发板上的两组红、黄、绿做为南北双向指示灯红灯亮60秒,绿灯亮55秒,黄灯亮5秒要求采用状态机实现状态切换3、附加要求:采用两组两位数码管实现时间倒计时显示二、设计思路1、总体设计方案由设计任务要求可知输入部分有:CLK时钟频率输入,可由实验板上直接提供,本设计选用1kHZ时钟频率。

输出部分有:1)东西方向和南北方向各使用3个LED显示,红黄绿各代表红黄绿灯。

2)东西方向和南北方向计时均为2位数,共需要4个LED七段数码管显示。

由于为共阴极控制,输出三个SEL0,SEL1,SEL2信号控制选择数码管显示,A,B,C,D,E,F,G信号为输出显示的内容。

3)R1,G1,Y1;R2,G2,Y2信号分别为东西南北红绿灯的输出控制信号。

总体设计软件原理图如下所示设计方案原理图:图1A对应13脚; B对应30脚;C对应15脚; D对应31脚;E对应33脚; F对应32脚;G对应35脚; R1对应4脚;R2对应5脚;Y1对应3脚;Y2对应10脚;G2对应8脚;SEL0对应14脚; SEL1对应11脚;SEL2对应12脚.CLK对应24脚;交通灯系统结构图如下所示:红黄绿红黄绿图2状态切换的状态图如下图:图2、模块设计及结果在VHDL设计中,采用自顶向下的设计思路。

顶层模块中,根据硬件设计,设置如下端口:外部时钟信号:Clk东西方向状态灯控制信号:R1,G1,Y1;南北方向状态灯控制信号:R2,G2,Y2;(1)分频模块:由于外部时钟信号clk的频率为1KHz,而实际需要的内部计时时钟频率为1Hz,需要一个分频电路。

输入端口:clk外部时钟信号输出端口:clk_out分频后信号源程序代码如下:数码管显示信号:A,B,C,D,E,F,G;数码管共阴极控制:SEL0,SEL1,SEL2;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Frequency1 isport(clk:in std_logic; --外部时钟信号clk_out:out std_logic --分频后信号);end Frequency1;architecture Frequency1_arc of Frequency1 isbeginprocess(clk)variable temp:integer range 0 to 999;beginif(clk'event and clk='1')thenif(temp=999)then --分频计数temp:=0;clk_out<='0';elsetemp:=temp+1;clk_out<='1';end if;end if;end process;end;图4(2)状态选择模块:由于共需要显示4个数字,需要循环点亮7位数码管,该模块通过输入的时钟信号,循环输出4个选择信号。

基于FPGA的交通灯

基于FPGA的交通灯

《EDA技术使用教程》课程设计报告题目名称:基于FPGA的十字路口交通灯控制器设计学生姓名:学号:专业年级:指导教师:时间:2015年1月3日目录目录 (1)1 设计任务与要求 (2)2 方案设计与论证 (2)2.1系统设计思路 (2)2.2系统设计方案分析 (4)3 交通控制灯各模块电路设计 (5)3.1分位电路模块fenwei (5)3.2 控制模块 controller (6)3.3 时钟分频模块frequency10Hz和frequency (11)3.4 带闪烁功能的七段数码驱动显示模块display (14)4 交通控制灯顶层电路设计 (16)4.1 原理说明 (16)4.2 端口设计说明 (17)4.3 仿真与结果分析 (17)5 心得体会 (19)6 参考文献 (20)1设计任务与要求基于FPGA的十字路口交通灯控制器1)红、黄、绿灯分别用1bit控制;2)每一个状态分配一个时间显示(两位十进制数,倒计时);3)符合实际交通规律。

2方案设计与论证2.1系统设计思路(1)本系统设计中均采用混合设计的方法,将整体方案划分成若干个模块进行设计。

采用VHDL硬件描述语言和原理图描述相结合的方式,对多种应用电路进行设计,其中底层电路(即模块电路)采用VHDL硬件描述语言方式实现,顶层电路采用原理图描述方式实现。

(2)在十字路口的两个方向上各设一组红、绿、黄灯,显示顺序为其中一个方向是(东西方向)是绿灯、黄灯、红灯;另一方向(南北方向)是红灯、绿灯、黄灯。

设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间。

其中绿灯、黄灯、红灯的持续时间分别是20s、5s和25s。

当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其他需要优先放行的车辆通过时,各方向上均是红灯,倒计时停止,且显示数字在闪烁。

当特殊运行状态结束时,控制器恢复原来状态,继续正常运行。

(3)系统设计流程提出系统设计要求需求分析模块化方案设计底层电路设计----VHDL模块电路设计顶层电路设计----原理图描述+各模块连接FPGA整体方案设计实现FPGA整体方案编译仿真功能仿真时序仿真硬件搭接和运行FPGA整体方案设计完成图1 系统设计流程2.2系统设计方案分析根据任务要求,计数器的值和交通灯亮灭关系如图2所示。

基于FPGA的交通灯设计

基于FPGA的交通灯设计

交通信号灯控制器目录第一章系统设计1.1设计要求 (3)1.2 方案比较 (3)1.3方案论证 (3)1.3.1总体思路 (4)1.3.2设计方案 (5)第二章单元电路设计2.1 4位二进制计数器 (6)2.2 两位二进制计数器 (6)2.3定时时间到检测电路 (6)2.4红黄绿灯输出控制电路 (6)2.5计时器 (6)第三章软件设计3.1用VHDL编写程序 (6)3.2 程序流程 (7)3.3程序清单及仿真 (7)第四章系统测试 (7)第五章结论 (8)参考文献 (9)附录 (10)0 引言随着经济的飞速发展,现代化交通管理成了当今的热点问题。

一个完善的交通控制功能,可使混乱的交通变得井然有序,从而保障了人们的正常外出。

本系统通过设计一交通信号灯控制器,达到交通控制的目的。

除实现交通灯基本的控制功能外,系统还可显示该灯本次距灯灭所剩的时间,具有更完善的控制功能,使行人提前做好起、停准备,具有更强的实用性。

第1章 系统设计1.1设计要求(1) 交通灯从绿变红时,有4秒黄灯亮的间隔时间。

(2) 交通灯红变绿是直接进行的,没有间隔时间。

(3) 主干道上的绿灯时间为20秒,支干道的绿灯时间为10秒。

(4) 在任意时间,显示每个状态到该状态结束所需要的时间。

1.2方案比较要实现对交通灯的控制,有很多的方案可供选择。

方案一:由两块CMOS 集成电路完成定时和序列控制功能,三只双向晶体管完成实际的电源切换功能。

电路中采用10V 负电源(可由市电电压经降压、整流、滤波、稳压而得)、CD4049集成电路、计数器CD4017等器件。

其中双向晶闸管选用400V 、4A 的,二极管选用BY127型和1N4148型,稳压管选用10V 、1W 的。

因直接使用市电工作,故在安装和使用时安全系数较低,且硬件电路复杂,所用器件多。

方案二:运用VHDL 语言分别控制分频和状态机两个模块, 即信号源经分频器分频后得到1Hz 脉冲,输出脉冲控制状态机中预置四个状态的循环,从而达到交通控制作用.该方案电路结构简单,使用器件少,易于安装和使用.但不宜于电路扩展,适用范围小,应用不广泛.方案三:采用VHDL 语言输入的方式实现交通信号灯控制器,并灵活运用了通用元件CBU14和CBU12作为4位二进制计数器和两位二进制计数器,简化了硬件电路,同时也给调试、维护和功能的扩展、性能的提高带来了极大的方便。

基于FPGA的交通信号灯课程设计(以VHDL语言实现)

基于FPGA的交通信号灯课程设计(以VHDL语言实现)

基于FPGA的数字电子技术课程设计(以VHDL语言实现)课题:交通信号灯设计题目:1.由主干道A和支干道B的汇合点形成十字交叉路口,在交叉路口处设有红绿黄三色信号灯。

红灯亮禁止通行;绿灯亮允许通行;黄灯亮则让行驶到路口的车辆有时间停靠到禁止线外。

用两位数码管显示当前主支干道所处的状态。

红黄绿分别用R,Y,G表示。

2.主干道车辆较多,所以绿灯亮灯时间为50S;支干道亮绿灯时间设为30S。

当主干道允许通行亮绿灯时则支干道亮红灯;支干道亮绿灯时也相反。

每次由绿灯转变为红灯时,期间要亮5S的黄灯。

3.交通灯正常运行时,用四位数码管显示主干道和支干道的倒计时时间。

4.能实现系统总清0,清0后计数器由初始状态开始计数。

5.具有一定的扩展功能。

一.设计思路1.根据设计题目要求可以得出交通信号灯控制器的设计用“状态法”来实现较好,因此先划分出交通灯显示时的几个较大的状态。

设状态用S表示。

S0:主干道亮黄灯支干道亮红灯亮灯5SS1:主干道亮红灯支干道亮绿灯亮灯30SS2:主干道亮红灯支干道亮黄灯亮灯5SS3:主干道亮绿灯支干道亮红灯亮灯50S状态之间应该要能实现循环:S0=>S1=>S2=>S3=>S02.然后再考虑在每个状态下要能够实现的功能。

根据题目可知在每个状态下要能实现将交通灯的颜色变换以字母的形式显示在两位数码管上,每位各表示一条道路。

在交通灯颜色输出的同时还要能够实现计数的输出,也就是各路灯转换前剩余的时间量。

3.在实现了各个状态下的功能后就要考虑加上清0功能与紧急功能,清0也就是复位功能。

在复位时实现系统清0,并且清0后计数器从初始状态开始计时,在此将S0状态视为初始状态。

也就是清0完毕后系统进入S0状态。

课题中将紧急功能设为两条路都显示红灯,并且计数器全置0。

4.这些实现的功能都加入后就可以对所写的VHDL语言进行测试与仿真了。

在其中实现对所写语言的改进和完善,并得到仿真图结合仿真图再进行修改。

基于FPGA的交通灯设计(课程设计)

基于FPGA的交通灯设计(课程设计)

FPGA综合设计实验报告题目基于FPGA的交通灯控制器的设计作者专业日期 2013年3月29日1.设计任务:基于FPGA的交通灯控制器的设计2.设计要求:(1)十字路口由一条东西方向的主干道和一条南北方向的支干道构成,主干道和支干道均有红、黄、绿3种信号灯;(2)保持主、支干道红、绿交替变换;(3)绿灯转红灯过程中,先由绿灯转为黄灯,5秒后再由黄灯转为红灯;同时对方由红灯转为绿灯;(4)系统需具有复位及特殊情况紧急处理功能。

(5)了解交通灯控制器的工作原理,完成控制器的硬件电路设计及软件设计。

3.总体设计方案:从题目中计数值与交通灯的亮灭的关系如图(1)所示。

当主干道绿灯55秒和5秒黄灯过渡时,支干道必须禁止通行,即支干道红灯亮55+5=60秒;当支干道由红灯转为绿灯时,支干道亮55秒绿灯和5秒黄灯过渡,此时主干道红灯应亮55+5=60秒。

图1 交通灯控制要求4.硬件电路基本原理分析:动态LED显示的设计方法是将不同LED模块的所有的LED的驱动端一对一地连接到一起,而将其公共极(阴极或阳极)分别由不同的IO口来驱动(主要针对7段码和LED点阵模块)。

动态显示方式主要是出于简化电路和产品成本考虑在大多数场合都可以达到用户要求。

动态显示虽然占用的CPU时间多,但使用的硬件少,能节省线路板空间。

另外,本设计显示需要使用的是4个七段显示数码管。

在计时结果显示电路中,七段数码管显示部分是一个不容忽视的环节,如若处理不得当,可能引起系统功率过大,产生散热问题,严重时甚至会导致系统的烧毁。

为了解决好以上问题,下面就对七段数码管显示电路做简要的分析和介绍。

通常点亮一个LED所需的电流是5~50 mA,通电的电流愈大,LED的亮度愈高,相对的也会使其寿命缩短。

一般以10 mA的导通电流来估算它所必须串联的阻值,其计算方式参考如图1所示。

图1 单个LED的串接电阻计算方式七段显示器可分为共阳极、共阴极型两种,它们都可以等效成8个LED的连接电路,其中如图2就是共阴极型七段显示器的等效电路和每节LED的定义位置图。

基于FPGA的交通灯控制器设计06876

基于FPGA的交通灯控制器设计06876

基于FPGA的交通灯控制器设计06876交通灯控制器是城市交通系统中非常重要的一部分,其正确的设计和运行对于交通的安全与效率至关重要。

在本文中,我们将介绍一种基于FPGA(现场可编程门阵列)的交通灯控制器设计。

首先,我们需要了解交通灯控制器的基本原理。

传统的交通灯控制器通常由定时器和状态机组成。

定时器用于控制信号灯的时间段,状态机用于根据规定的时间段和信号灯的状态切换来确定交通灯的工作状态。

FPGA是一种可编程的芯片,可以用来实现各种数字电路的功能。

它具有高度的可编程性和灵活性,可以通过改变编程来实现不同的功能。

基于FPGA的交通灯控制器设计可以提供更大的灵活性和可扩展性,因为它可以根据实际需求进行定制和修改。

在基于FPGA的交通灯控制器设计中,我们需要考虑以下几个方面:1.信号灯的时间控制:根据不同的道路交通流量和需要的通行效率,我们可以灵活地设置每个信号灯的时长。

这可以通过FPGA中的计数器和定时器来实现。

通过编程可以设置不同的时长,并确保相应的信号灯按照预定的规则进行切换。

2.交通流量检测:为了合理地分配交通灯的时间,我们需要在交通道路上安装传感器来检测交通流量。

这些传感器可以根据车辆的数量和速度来确定不同的交通流量。

在基于FPGA的设计中,我们可以使用IO接口将传感器与FPGA相连,并通过编程来读取和处理传感器数据。

3. 状态机设计:状态机是交通灯控制的核心。

它可以根据预先确定的规则和输入,确定交通灯的状态。

基于FPGA的设计中,我们可以使用状态机设计的编程语言(如VHDL或Verilog)来实现状态机。

状态机可以根据交通流量和交通灯状态的不同情况来切换不同的状态,并通过FPGA中的逻辑门来控制交通灯。

4.故障检测和容错设计:在交通灯控制器中,故障检测和容错设计非常重要。

当一些部件发生故障时,控制器应能够自动切换到备用部件或安全模式,以确保交通的安全和通行效率。

通过FPGA的灵活性,我们可以轻松地实现故障检测和容错设计,例如通过监测一些部件的输出电压或信号来检测故障。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

交通信号灯控制器目录第一章系统设计1.1设计要求 (3)1.2 方案比较 (3)1.3方案论证 (3)1.3.1总体思路 (4)1.3.2设计方案 (5)第二章单元电路设计2.1 4位二进制计数器 (6)2.2 两位二进制计数器 (6)2.3定时时间到检测电路 (6)2.4红黄绿灯输出控制电路 (6)2.5计时器 (6)第三章软件设计3.1用VHDL编写程序 (6)3.2 程序流程 (7)3.3程序清单及仿真 (7)第四章系统测试 (7)第五章结论 (8)参考文献 (9)附录 (10)0 引言随着经济的飞速发展,现代化交通管理成了当今的热点问题。

一个完善的交通控制功能,可使混乱的交通变得井然有序,从而保障了人们的正常外出。

本系统通过设计一交通信号灯控制器,达到交通控制的目的。

除实现交通灯基本的控制功能外,系统还可显示该灯本次距灯灭所剩的时间,具有更完善的控制功能,使行人提前做好起、停准备,具有更强的实用性。

第1章 系统设计1.1设计要求(1) 交通灯从绿变红时,有4秒黄灯亮的间隔时间。

(2) 交通灯红变绿是直接进行的,没有间隔时间。

(3) 主干道上的绿灯时间为20秒,支干道的绿灯时间为10秒。

(4) 在任意时间,显示每个状态到该状态结束所需要的时间。

1.2方案比较要实现对交通灯的控制,有很多的方案可供选择。

方案一:由两块CMOS 集成电路完成定时和序列控制功能,三只双向晶体管完成实际的电源切换功能。

电路中采用10V 负电源(可由市电电压经降压、整流、滤波、稳压而得)、CD4049集成电路、计数器CD4017等器件。

其中双向晶闸管选用400V 、4A 的,二极管选用BY127型和1N4148型,稳压管选用10V 、1W 的。

因直接使用市电工作,故在安装和使用时安全系数较低,且硬件电路复杂,所用器件多。

方案二:运用VHDL 语言分别控制分频和状态机两个模块, 即信号源经分频器分频后得到1Hz 脉冲,输出脉冲控制状态机中预置四个状态的循环,从而达到交通控制作用.该方案电路结构简单,使用器件少,易于安装和使用.但不宜于电路扩展,适用围小,应用不广泛.方案三:采用VHDL 语言输入的方式实现交通信号灯控制器,并灵活运用了通用元件CBU14和CBU12作为4位二进制计数器和两位二进制计数器,简化了硬件电路,同时也给调试、维护和功能的扩展、性能的提高带来了极大的方便。

分析以上三种方案的优缺点,显然第三种方案具有更大的优越性、灵活性,所以采用第三种方案进行设计。

1.3 方案论证1.3.1 总体思路 系统交通管理示意图如图1.3.1.主干道支干道图1.3.1 路口交通管理示意图由此可得出交通信号灯A 、B 、C 、D 的4种状态:根据设计要求,系统状态转换图如图1.2.2示。

图1.2.2状态转换图1.3.2设计方案图1.2.1交通信号灯控制器的原理框图状态发生器是一个两位二进制计数器,产生交通信号灯的4种状态。

状态发生器的输出通过预置数产生电路,输出每一种状态所需要的时间.预置数产生电路是一组四选一的多路转换器,多路转换器的输出信号作为可预置数十进制减法计数器的预置数输入信号,状态发生器的输出也决定了红黄绿灯信号的输出通断状态。

可预置数十进制减法计数器作为每一种状态的计时器,其输出信号既是时间显示的输出信号,也是定时时间到检测电路的输入信号。

定时时间到检测电路检测到电路到每一种状态的时间显示数据输出等于0时,发出信号通知状态发生器,完成状态转换。

第2章单元电路设计该电路由4位二进制计数器、两位二进制计数器、可预置十进制减法计数器、红黄绿灯信号输出控制电路(RYG)、四选一的多路转换器和一些门电路组成.2.1 4位二进制计数器CBU14将输入的信号分频后,产生1秒时钟信号。

2.2 两位二进制计数器CBU12提供当前的状态决定了红黄绿信号灯的通断状态,还控制多路转化开关,决定每一个状态的定时预置数。

(1)A状态时,CBU12的输出为00;(2)B状态时,CBU12的输出为01;(3)C状态时,CBU12的输出为10;(4)D状态时,CBU12的输出为11。

如:在A状态时,预置数为20秒,多路转换器的输出作为可预置数十进制减法计数器的预置数输入信号决定了每一种状态的预置时间的大小。

2.3定时时间到检测电路两个或非门和一个与非门组成定时时间到检测电路.每当计时器为0时,输出高电平,通知状态发生器转化到下一个状态。

2.4红黄绿灯输出控制电路(RYG)根据交通信号灯的ABCD4种状态,设计一个红黄绿灯输出控制电路模块(RYG)。

RYG由两个输入信号A和B(对应4种状态)和6个输出信号(对应两组红黄绿灯,FR1、FY1和FG1主干道红黄绿灯信号,FR2、FY2和FG2为支干道红黄绿灯信号),其真值表如下:红黄绿信号灯输出控制电路RYG的输出,控制两组红黄绿信号灯产生相应的变化。

2.5计时器计时器由两个具有预置数功能的十进制减1计数器CDD14和一个4输入或非门(产生借位)组成,计时器的输出控制数码管显示相应的时间。

第3章软件设计图3.1.1交通信号灯控制器程序原理框图程序中的时钟信号clk为石英晶体(327868HZ)分频后的8Hz标准信号作为产生1秒信号的输入信号,为LED数码管驱动电路(MC4511)提供输入信号,用于县市交通灯所处的状态的时间。

6个输出信号(对应两组红黄绿灯,FR1、FY1和FG1为主干道红黄绿灯信号, FR2、FY2和FG2为支干道红黄绿灯信号)。

该程序由7个进程组成,进程P1和P2将8Hz标准信号分频后产生1秒信号(carry),进程P3、P4和P5构成两个带有预置数功能的十进制计数器,其中P4产生允许十位计数器计数的控制信号(en)。

进程P6实现状态转换和产生状态转换的控制信号(load),进程P7产生次态信号(next_state)和信号灯输出信号(FR1、FY1、FG1、FR2、FY2和FG2),以及每一个状态的时间值(即计数器的预置数)和下一个状态。

3.2 程序流程图3.2.1程序流程图3.3程序清单及仿真.(见附录)第4章系统测试4.1测试仪器采用清华同方股份教学仪器设备公司生产的TPG_FPGA教学系统。

4.2测试方法采用xilinx公司生产的ISE仿真软件,仿真波形符合要求,将程序下载到芯片中,烧制成功,系统能正常工作。

4.3测试结果系统符合设计要求,并能正常工作。

第5章结论整个设计本着简单可靠、选用低价格、通用元件的原则,成功地完成了设计任务。

提高了系统的性价比,增强了实用性。

该设计还可作进一步改进,如:可设置从22:00到次日早上7:00时间让黄灯闪亮方便车辆缓行;还可以考虑采用全自动监控系统设计,对交通状况适时处理,实现交通管理的智能化。

参考文献:1.王金明、吉斌. [数字系统设计与Verilog HDL].:电子工业,2002年第1版.210页.2.友汉、建永.[电子线路设计应用手册].:科学技术,2000年第1版.142页.3.自美.[电子线路设计•••••实验•测试].:华中理工大学,2000年第2版.233页.4.辉.[ISP系统设计技术入门与应用].:电子工业,2002年第1版.184页.附录:1.程序清单:Library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL; entity traffic1 isport(clk,st: in std_logic;q0,q1:out std_logic_vector(6 downto 0);R1,Y1,G1,R2,Y2,G2: out std_logic);end traffic1;architecture arch of traffic1 istype states is(s0,s1,s2,s3);signal state,next_state: states; signal count0: std_logic_vector(3 downto 0);signal count1: std_logic_vector(3 downto 0);signal data0: std_logic_vector(3 downto 0);signal data1: std_logic_vector(3 downto 0);signal light: std_logic_vector(5 downto 0);signal load, carry: std_logic;signal en: std_logic;beginp1:process(clk,st)variable count: integer range 4 downto 0;beginif st='0' then count:=0;elsif rising_edge(clk) then if count>=4 thencount:=0;carry<='0';elsecount:=count+1;if count<2 thencarry<='0';else carry<='1';end if;end if;end if;end process p1;p2:process(carry,load,st) beginif st='0' then count0<="0000"; elsif rising_edge(carry) then if load='1' thencount0<=data0;elsif count0="0000" thencount0<="1001";elsecount0<=count0-'1';end if;end if;end process p2;p3:process(carry,st)beginif st='1' thenif falling_edge(carry) thenif count0="0000" thenen<='1';elseen<='0';end if;end if;else en<='Z';end if;end process p3;p4:process(carry,load,en,st)beginif st='0' then count1<="0000";elsif(rising_edge(carry) and en='1') thenif load='1' thencount1<=data1;elsif count1="0000" thencount1<="1001";elsecount1<=count1-'1';end if;end if;end process p4;p5: process(carry)beginif(falling_edge(carry)) thenif(count0="0000" and count1="0000") thenload<='1';state<=next_state;elseload<='0';end if;end if;end process p5;p6:process(state)begincase state iswhen s0 =>light <="001100";next_state<=s1;data0<="0000";data1<="0010";when s1 =>light <="010100";next_state<=s2;data0<="0100";data1<="0000";when s2 =>light <="100001";next_state<=s3; data0<="0000";data1<="0001";when s3 =>light <="100010";next_state<=s0;data0<="0000";data1<="0010";end case;end process p6;p7: process(count0)begincase count0 iswhen "0000" =>q0<="0000001"; --0when "0001" =>q0<="1001111"; --1when "0010" =>q0<="0010010"; --2when "0011" =>q0<="0000110"; --3when "0100" =>q0<="1001100"; --4when "0101" =>q0<="0100100"; --5when "0110" =>q0<="0100000"; --6when "0111" =>q0<="0001111"; when "1000" =>q0<="0000000"; --8when "1001" =>q0<="0000100"; --9when others =>q0<="1111111";end case;end process p7;p8: process(count1)begincase count1 iswhen "0000" =>q1<="0000001";--0when "0001" =>q1<="1001111";--1when "0010" =>q1<="0010010";--2when "0011" =>q1<="0000110";--3when "0100" =>q1<="1001100";--4when "0101" =>q1<="0100100";--5when "0110" =>q1<="0100000";--6when "0111" =>q1<="0001111";when "1000" =>q1<="0000000";--8when "1001" =>q1<="0000100";--9when others =>q1<="1111111";end case;end process p8;R1<=light(5); Y1<=light(4);G1<=light(3);R2<=light(2); Y2<=light(1);G2<=light(0);end arch;2.仿真波形:。

相关文档
最新文档