基于FPGA的交通灯设计.doc_第1页
基于FPGA的交通灯设计.doc_第2页
基于FPGA的交通灯设计.doc_第3页
免费预览已结束,剩余7页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

交通信号灯控制器的设计交通信号灯控制器目 录第一章 系统设计1.1设计要求 31.2 方案比较 31.3方案论证 31.3.1总体思路 41.3.2设计方案 5第二章 单元电路设计2.1 4位二进制计数器62.2 两位二进制计数器 62.3定时时间到检测电路 62.4红黄绿灯输出控制电路 62.5计时器 6第三章 软件设计3.1用VHDL编写程序63.2 程序流程73.3程序清单及仿真 7第四章 系统测试 7第五章 结论 8参考文献 9附 录 100 引言随着经济的飞速发展,现代化交通管理成了当今的热点问题。一个完善的交通控制功能,可使混乱的交通变得井然有序,从而保障了人们的正常外出。本系统通过设计一交通信号灯控制器,达到交通控制的目的。除实现交通灯基本的控制功能外,系统还可显示该灯本次距灯灭所剩的时间,具有更完善的控制功能,使行人提前做好起、停准备,具有更强的实用性。第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种状态:干 道交通灯的四种状态主干道A绿(20秒)B黄(4秒)C红(10秒)D红(4秒)支干道红红绿黄 根据设计要求,系统状态转换图如图1.2.2示。ABD C 图1.2.2状态转换图1.3.2设计方案交通信号灯控制器的原理框图如图1.2.1示。状态发生器(两位二进制计数器)预置数产生电路计时器定时时间到检测电路1秒钟脉冲信号发生器红黄绿灯输出控制电路(RYG)时间显示数据输出红黄绿灯信号输出图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为支干道红黄绿灯信号),其真值表如下:输 入输 出ABFR1FY1FG1FR2FY2FG200001100010101001010000111100010红黄绿信号灯输出控制电路RYG的输出,控制两组红黄绿信号灯产生相应的变化。2.5计时器计时器由两个具有预置数功能的十进制减1计数器CDD14和一个4输入或非门(产生借位)组成,计时器的输出控制数码管显示相应的时间。第3章 软件设计进程P1和P21秒信号发生器进程P3、P4和P5计量器进程P6状态寄存器进程P7次态发生器信号灯输出信号信号灯输出输出时间显示信号Clk(8Hz)3.1用VHDL编写程序,来实现交通灯控制器的原理框图如图3.1.1示。 carry图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 程序流程N开始晶 振、分 频计 时时间到否? 主绿、支红灯亮20秒主红、支绿灯亮10秒主黄、支红灯亮4秒主红、支黄灯亮4秒Y 图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;begin if st=0 then count:=0;elsif rising_edge(clk) then if count=4 then count:=0; carry=0; else count:=count+1; if count2 then carry=0;else carry=1;end if;end if;end if;end process p1;p2:process(carry,load,st)begin if st=0 then count0=0000;elsif rising_edge(carry) thenif load=1 thencount0=data0;elsif count0=0000 then count0=1001;elsecount0=count0-1;end if;end if;end process p2;p3:process(carry,st)begin if 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) then if load=1 then count1=data1; elsif count1=0000 then count1=1001; else count1=count1-1; end if;end if;end process p4;p5: process(carry)beginif(falling_edge(carry) thenif(count0=0000 and count1=0000) then load=1;state=next_state;else loadlight =001100;next_state=s1;data0=0000;data1light =010100;next_state=s2;data0=0100;data1light =100001;next_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论