交通信号控制器设计报告.doc_第1页
交通信号控制器设计报告.doc_第2页
交通信号控制器设计报告.doc_第3页
交通信号控制器设计报告.doc_第4页
交通信号控制器设计报告.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

交通灯控制器设计报告 专 业:勘查技术与工程班 级:勘查07-5 学 号:07012520姓 名:丁维盼 日 期:2009-12-23目 录 一、设计要求:3二、设计思路:3三、硬件电路设计: 4四、程序设计:6 五、实验总结:12 六、参考文献:12一、设计要求利用EDA/SOPC实验开发平台提供的八位七段管码显示模块以及EP2C35核心板,实现交通灯信号控制器。设交通灯信号控制器用于主干道的交叉路口,要求是优先保证主干道的畅通,因此,平时处于“主干道绿灯,支道红灯”状态。(1)当处于“主干道绿灯,支道红灯”状态A.主干道有车要求通行,支道也有车要求通行时,若主干道通行时间大于等于30秒,切换到“主黄,支红”,4秒后切换到“主红,支绿”状态。B. 主干道无车要求通行,支道有车要求通行时,立即切换到“主黄,支红”, 4秒后切换到“主红,支绿”。C.其它情况保持“主绿,支红”。(2)当处于“主干道红灯,支道绿灯”状态A. 支道有车要求通行时,保持“主红,支绿”状态,但最多保持30秒然后自动切换到“主红,支黄”状态,4秒后切换到“主绿,支红”状态。B. 支道无车要求通行时,立即切换到“主红,支黄”, 4秒后切换到“主绿,支红”。C.其它情况保持“主绿,支红”。(3)利用八位七段管码显示模块其中的2位实现时间显示。(4)扩展要求:自主设计(如改变各交通灯亮灭的时间,丰富控制逻辑等)二、设计思路1. 从题目要求中不难看出交通灯一共有四个状态,分别为主绿,支红;主黄,支红;主红,支绿;主红,支黄。根据题目要求得各状态之间转换关系如图(1)所示图(1)注:,主干道有车;,主干道无车;,支干道有车;,支干道无车;灯亮时间; 根据设计要求和系统所具有的功能,并参考相关的文献资料,经行方案设计,可以画出如图(2)所示的交通信号灯控制器的系统框图。 图(2)三硬件电路设计(1)分频器 分频器实现的是将高频时钟信号转换成低频的时钟信号,用于触发控制器、计数器和扫描显示电路。本实验一共用两个分频器,分别实现的是把50MHz分为1Hz,512Hz的时钟信号,前者用于触发控制器、计数器,后者用于扫描显示电路。其模块如图(3)、图(4)所示。 图(3) 分频器模块(50MHz分位1Hz) 图(4)分频器模块 (50MHz分位512Hz)(2)控制器设计控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的分位译码电路。本控制器的设计方法为利用时钟沿的上升沿读取前级计数器的计数值,然后作出反应。其模块如图(5)所示。 图(5) 控制器模块(3)计数器设计这里选用的计数器的计数范围为0-64。计到64秒后,在下一个时钟上升沿回复到0,开始下一轮计数。此外,当检测到reset=1发生时,计数器异步清零。其模块如图(6)所示。图(6)计数器模块(4)分位译码电路设计 因为控制器输出的倒计时数值可能是1位或者2位十进制数,所以在七段数码管的译码电路前要加上分位电路(即将其分为2个1位的十进制数,如27分为2和7,6分为0和6)。其模块如图(7)所示。 图(7)分位译码模块(5)数码管驱动设计 串行连接,即每个数码管对应的引脚都接在一起(如每个数码管的a引脚都接到一起,然后再接到FPGA上的一个引脚上),通过内置的3-8译码器来选择控制相应数码管的亮、灭(实验箱为共阴极数码管)。其模块如图(8)所示。 图(7)数码管驱动模块(6)管脚锁定信号名称对应FPGA管脚名说明50MHzL1基准时钟Segout10J4七段数码管aSegout11H6七段数码管bSegout12H5七段数码管cSegout13H4七段数码管dSegout14H3七段数码管eSegout15G7七段数码管fSegout16G6七段数码管gLed_sel0G5数码管选择控制端0Led_sel1G3数码管选择控制端1Led_sel2F4数码管选择控制端2MRD3主干道红灯MYD4主干道黄灯MGD5主干道绿灯BRE3支干道红灯BYE4支干道黄灯BGF3支干道绿灯SME15主干道通车请求开关SRB14支干道通车请求开关 表(1)管脚锁定表根据管脚锁定表,锁定各管脚。下图为交通灯控制器的顶层文件连接图(锁定管脚)图(8)交通灯控制器的顶层文件连接图(锁定管脚)四、程序设计(1)分频器的设计A、50MHz分为1Hz的时钟信号library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport( clk:in std_logic; finout:out std_logic);end fenpin;architecture bhv of fenpin is signal tmp:INTEGER RANGE 0 TO 49999999;begin process(clk)beginif clkevent and clk=1 then if tmp=49999999 then tmp=00000000; else tmp=tmp+1; end if; if tmp25000000 then finout=0; else finout=1; end if;end if;end process;end bhv;B、50MHz分为512Hz的时钟信号library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin123 isport (clk: in std_logic; clkfen: out std_logic);end fenpin123;architecture fenpin of fenpin123 issignal clk_mid: std_logic;begin process(clk) variable data:integer range 0 to 48828; if clkevent and clk=1 then if data=48828 then data:=0; clk_mid=not clk_mid; else data:=data+1; end if; end if; clkfen MR=0;MY=0;MG=1;-主绿支红 BR=1;BY=0;BG=0; RESET=0; IF (SB AND SM)=1 THEN IF CountNum=29 THEN Num=30-CountNum; ELSE STATE=B;RESET=1; END IF; END IF; IF (SB AND(NOT SM)=1 THEN STATE=B;RESET MR=0;MY=1;MG=0;-主黄支红 BR=1;BY=0;BG=0; RESET=0; IF CountNum=3 THEN Num=4-CountNum; ELSE STATE=C;RESET MR=1;MY=0;MG=0;-主红支绿 BR=0;BY=0;BG=1; RESET=0; IF (SB AND SM)=1 THEN IF CountNum=29 THEN Num=30-CountNum; ELSE STATE=D;RESET=1; END IF; END IF; IF SB=0 THEN STATE=D;RESET MR=1;MY=0;MG=0;-主红支黄 BR=0;BY=1;BG=0; RESET=0; IF CountNum=3 THEN Num=4-CountNum; ELSE STATE=A;RESETSTATE=A; END CASE; END IF; END PROCESS CNT;END BEHAV;(3)计数器设计LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY counter IS PORT (clk:IN STD_LOGIC; reset:in std_logic; countNum:BuFFeR INTEGER RANGE 0 TO 64);END;ARCHITECTURE behavior OF counter IS BEGINprocess(reset,Clk)BEGINIF Reset=1 THEN countNum=0;ELSIF rising_edge(Clk) THENIF countNum=64 THEN countNum=0;ELSEcountNum=30 THENNumA=3;NumB=20 THENNumA=2;NumB=10 THENNumA=1;NumB=Numin-10;ELSE NumA=0;NumBsegoutsegoutsegoutsegoutsegoutsegoutsegoutsegoutsegoutsegoutnull;END CASE;END PROCESS;END;LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_unsigned.ALL; ENTITY dtsm ISPORT(clk:in STD_LOGIC; NumA,NumB: in STD_LOGIC_VECTOR(3 downto 0); segout1:out STD_LOGIC_VECTOR(6 downto 0); led_sel:out STD_LOGIC_VECTOR(2 downto 0);END dtsm;architecture bhv of dtsm iscomponent bcd_data is port (bcd_data:in STD_LOGIC_VECTOR(3 downto 0); segout:out STD_LOGIC_VECTOR(6 downto 0);end component; signal x:STD_LOGIC_VECTOR(3 downto 0); signal Q:STD_LOGIC;beginp1:process(clk)beginif clkevent and clk =1 then if Q=1 THEN Q=0; ELSE Qled_sel=010;xled_sel=001;xnull;end case;end process;u1:bcd_data PORT map(bcd_data=x,segout=segout1);end ;五实验总结本次数电课程设计我选题为交通灯,经过一周多时间的编程与下载测试,收获颇多。其中我感觉程序调试最重要,试验软件、硬件熟悉其次,必须认识到失败是成功之母,多下载,多查错,多修改。我在编完各模块程序之后,编译查错最初有十几个错误,一遍一遍的编译查错,直到没有错误,其中必须注意文件名和实体名一致,不然一般会出错。编译无错,进行管脚配对之后,就可以下载测试了,我一共下载测试了 5次,最后一次取得圆满成功。前几次下载测试有问题,有状态转换问题,时间显示问题,测试完都认真的检查了程序,修改不对的地方,然后再重新编译,再去下载,直到成功。通过此次课程设计我对Quartus II7.0软件更加熟悉,对VHDL语言有了更深一步的掌握,为了这次课程设计,我在图书馆查找了大量的相关资料,极大地拓宽了我的知识面,锻炼了能力,综合素质得到较大提高。最后在调试结果出来后,无比的兴奋,无比的自豪.总之,此次课程设计的收获,我将在以后的学习和生活中终身受益。在此,衷心感谢3为老师耐心的指导!六参考文献 (1)

温馨提示

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

评论

0/150

提交评论