




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于VHDL的交通灯设计摘要随着社会上特别是城市中机动车辆保有量的不断增加,在现代城市的日常运行控制中,车辆的交通控制越来越重要,在十字交叉路口,越来越多的使用红绿灯进行交通指挥和管理。本文以VHDL硬件描述语言为设计手段,完成了交通信号灯控制电路的设计,其中交通信号灯控制电路的开发目的是设计一个适用于主、支干道十字交叉路口的红黄绿交通灯的控制系统,通过合理设计系统功能,使红黄绿灯的转换有一个准确的时间间隔和转换顺序。所设计的交通信号灯控制电路经过在Quartus 6.0软件下进行模拟仿真,观察其波形,证明所设计的交通信号灯控制电路完全可以实现预定的功能,并有一定的实用性。关键词:FPGA; VHDL; Quartus; 交通灯一、 设计思路本设计主要是利用状态机控制,交通灯的工作分成5个状态,如下:St0:支干道亮红灯,主干道亮绿灯,数码管不显示。St1:主干道亮绿灯45秒,数码管显示45秒倒计时;支干道亮红灯,数码管显示从49秒倒计时到05秒。St2:主干道亮黄灯5秒,数码管显示5秒倒计时;支干道亮红灯,数码管显示从04秒倒计时到00秒。St3:支干道亮绿灯25秒,数码管显示25秒倒计时;主干道亮红灯,数码管显示从29秒倒计时到05秒。St4:支干道亮黄灯5秒,数码管显示5秒倒计时;主干道亮红灯,数码管显示从04秒倒计时到00秒。 把交通灯的工作分成五个状态,则写程序的时候思路就比较清晰,只要在相应的状态里完成相应的工作,控制好黄绿红灯和数码管的倒计时显示,而且把握好五个状态转换的条件即可。实现起来也方便。二、设计分析根据设计思路可以把整体设计分为三个模块:1、 分频模块:把实验板上的50MHz的频率分成1Hz信号(用于倒计时计数的时钟信号)、1kHz信号(用于数码管扫描显示的片选时钟信号)和2hz(用于黄灯的闪烁);2、 交通灯控制以及倒计时(五个状态的控制)模块;3、 数码管译码扫描显示模块。整体的系统框图如下: 段码输出 位码输出 1khz信号 50Mhz信号 分频 2hz信号 数码显 1hz信号 示模块 七段译码 数码管位选 交通灯控制以 及倒计时模块 六个led灯输出 分频模块,就是把输入的50MHz时钟频率50000分频得到1KHz的频率用于数码管的位选信号,其原理就是设计一个0到50000循环计数的的计数器,当计数溢出,即计数到50000时使输出量取反,就得到了1KHz的方波,作为数码管位选信号。同理,1Khz再经分频即可得到2hz(黄灯闪烁信号)和1hz(倒计时计数信号)。交通灯控制及倒计时模块,就是五个状态的转换模块,是整个系统的最主要模块,其五个状态分别st0、st1、st2、st3、st4。其中st0是当支干道没有车通行的状态,st1是主干道绿灯亮45秒的状态,st2是主干道黄灯闪烁5秒的状态,st3是支干道亮绿灯25秒的状态,st4是支干道黄灯闪烁5秒的状态。当主干道亮绿灯和黄灯闪烁时,支干道都是亮红灯,当支干道亮绿灯和黄灯闪烁时,主干道都是亮红灯,并且主、支干道都会显示亮灯的倒计时时间,主、支干道的红黄绿灯用实验板上的的最左边三个和最右边三个LED发光二极管代替。 数码管倒计时显示,是用实验板上的其中四个数码管,分别表示主干道和支干道的秒倒计时,动态扫描的频率用的是1KHz的频率。三、 各模块电路符号如下:1、顶层电路图如下:图2-3顶层文件原理图三、单元模块设计与仿真3.1时钟分频模块时钟分频模块就是把输入的2kHz时钟频率2000分频得到1Hz的频率用于数码管倒计时的时钟信号,其原理就是设计一个0到999循环计数的的计数器,当计数溢出,即计数到999时使输出量取反,则输出为0.5秒的高电平和0.5秒的低电平交替出现,就得到了1Hz的方波,作为秒倒计时的时钟信号。时钟分频模块生成的元件符号如下:2、分频模块 实验板上的50Mhz频率经分频后得到1Khz、2hz、1hz三路信号。3、交通灯控制及计时模块 此模块是整个系统的核心部分,主要功能是完成五个状态的转换,并且在每个状态里完成相应的控制作用,即控制主干道和支干道的红黄绿灯的点亮和各自数码管倒计时显示。编程时主要是用一个进程语句,其敏感信号是时钟分频模块产生的1Hz时钟信号,进程里主要用case语句完成五个状态的控制,在每个状态里要控制主干道和支干道的红黄绿灯的点亮,而且要控制各自数码管倒计时的显示,并为扫描显示译码模块提供倒计时时间,同时要使每个状态结束时能顺利进入下一个状态。 4、数码管显示译码和扫描模块此模块中含有七段数码管译码和扫描显示两个部分。其中clk1khz是输入的扫描时钟信号四、 硬件验证结果1、引脚配置如下:2、硬件验证效果如下:说明:主干道和支干道分别继续亮绿灯和红灯,同时主干道的数码管从44开始一秒一秒地倒计时显示直至倒计时到00,而支干道的数码管从49开始一秒一秒地倒计时显示,并且主、支干道的数码管显示值始终相差5。当主干道的倒计时到00(支干道倒计时到05)后的下一秒,主干道的绿灯灭,黄灯闪烁,而且主干道的数码管从04开始秒倒计时直至00,支干道的红灯在这一过程中始终是亮的,而且数码管正常倒计时,和主干道的数码管显示。当主、支干道数码管倒计时到00后的下一秒,主干道的黄灯灭,红灯亮,数码管从29开始一秒一秒地倒计时,而支干道的红灯灭,绿灯亮,数码管开始从24一秒一秒地倒计时,始终和主干道的数码管少5,直至倒计时到00。当支干道数码管倒计时到00(主干道为05)的下一秒后,支干道的绿灯灭,黄灯闪烁,数码管开始从04一秒一秒地倒计时直至00,而主干道在这一过程中继续亮红灯,数码管继续正常地倒计时,而和支干道数码管显示相同。当主、支干道倒计时到00的下一秒,则进入到主干道亮绿灯,支干道亮红灯的状态。五、心得体会这次设计给我最大的收获就是做什么事都不要急,要一步一步的做好前提工作,我开始看到这个课题的时候就动手去写程序,只是凭着自己脑子里想一点就写一点,但是经过几次反复的修改还是没有成功,看不到效果,所以后来干脆就放下来先把每一步每一个模块都弄清楚再动手去写,可以再本子上把各个模块的端口以及连接都画好,再去写,这样能做到事半工倍的效果,而且在设计的时候不懂得地方可以参考别人写的程序,毕竟,不管做什么课程设计都是为了让自己弄懂、学好,只要将别人的程序设计转为自己的知识就ok了,在次基础上加上自己的一些想法,学会变通, 或许还有些知识没学到,比如状态机这部分,但是通过别人的程序能让自己学到更多的知识,而且能巩固知识,所以我觉得要想把程序写好平常一定要多写多练多参考,这就是我这次设计的收获。附:各模块程序代码1、 分频模块library ieee; -对开发板上的50MHZ信号进行分频得到1khz位选信号、-2hz黄灯闪烁信号和1hz计时信号use ieee.std_logic_1164.all;entity div_freq isport(freq_in:in std_logic;flag_1khz,flag_2hz,flag_1hz: buffer std_logic);end entity;architecture one of div_freq issignal complete_1khz: integer range 0 to 50000;signal complete_2hz:integer range 0 to 499;signal complete_1hz: integer range 0 to 1000;beginprocess(freq_in) -此进程得到的是1khz的位选信号beginif(freq_in event and freq_in=1) thencomplete_1khz=complete_1khz+1;if(complete_1khz=50000) thencomplete_1khz=0;elsif(complete_1khz25000) thenflag_1khz=0;elseflag_1khz=1;end if;end if;end process;process(flag_1khz) -此进程是得到2hz信号beginif(flag_1khz event and flag_1khz=1) thencomplete_2hz=complete_2hz+1;if(complete_2hz=500)thencomplete_2hz=0;flag_2hz=0;elseflag_2hz=1;end if;end if;end process;process(flag_1khz) -此进程是得到1hz信号beginif(flag_1khz event and flag_1khz=1) thencomplete_1hz=complete_1hz+1;if(complete_1hz=1000)thencomplete_1hz=0;flag_1hz=0;elseflag_1hz st:=st1; h1:=4;l1:=4; h2:=4;l2:=9; when st1=-主干道绿灯亮45秒 if eoc=0 then h1:=4;l1:=4; h2:=4;l2:=9; eoc:=1; g1=1;r1=0;y1=0;g2=0;r2=1;y2-主干道黄灯亮5秒 if eoc=0 then h1:=0;l1:=4; h2:=0;l2:=4; eoc:=1;-g1=0;r1=0;y1=1;g2=0;r2=1;y2-支干道绿灯亮25秒 if eoc=0 then h1:=2;l1:=9; h2:=2;l2:=4; eoc:=1; g1=0;r1=1;y1=0;g2=1;r2=0;y2-支干道黄灯亮5秒 if eoc=0 then h1:=0;l1:=4; h2:=0;l2:=4; eoc:=1; g1=0;r1=1;y1=0;g2=0;r2=0;y2=1; else if l2=1 then st:=st1;eoc:=0;h1:=0;l1:=0;h2:=0;l2:=0; else l1:=l1-1;l2:=l2-1; end if; end if;end case;end if;ra=r1;ga=g1;ya=y11;rb=r2;gb=g2;yb=y22;-one1=l1;ten1=h1;one2=l2;ten2=h2;end process;process(clk2hz)begin if clk2hzevent and clk2hz=1 then a= not a; if(y1=1)then y11=a;else y11=0;end if; if(y2=1)then y22=a;else y22seg77seg77seg77seg77seg77seg77seg77seg77seg77seg77seg77null;end case;end process
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业风险防范试题及答案解析
- 行政法学考试真题及答案汇编
- 多元化2025年VB考试试题及答案
- 班级事务分工与协作计划
- 【金华】2025年浙江金华市永康市部分事业单位招聘工作人员99人笔试历年典型考题及考点剖析附带答案详解
- 数据安全中的加密技术试题及答案
- 人才继任计划的制定与落实
- 提升仓库服务质量的思考计划
- 秋季实践教学与实习安排计划
- 软件水平考试复习试题及答案
- 医疗器械配送方案
- 2023年定西地区水利系统事业单位招聘笔试题库及答案
- GB/T 14352.2-2010钨矿石、钼矿石化学分析方法第2部分:钼量测定
- GB/T 10069.3-2008旋转电机噪声测定方法及限值第3部分:噪声限值
- GB 252-2015普通柴油
- 《活着》作品简介名著导读PPT
- 硅酸钙板、含锆型硅酸铝纤维棉、高铝型硅酸铝纤维棉技术规格
- 2018年可行性研究报告投资估算及财务分析全套计算表格共14个附表excle带公式只更改标红部分即可带说明
- 企业落实安全生产主体责任重点事项清单(20项要点)
- 《人机工程学》第5章人的作业能力与疲劳课件
- 彩钢产品合格证
评论
0/150
提交评论