您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 交通信号控制器设计报告
交通灯控制器设计报告专业:勘查技术与工程班级:勘查学号:姓名:日期:2009-12-232目录一、设计要求:……………………………………………………3二、设计思路:……………………………………………………3三、硬件电路设计:……………………………………………4四、程序设计:……………………………………………………6五、实验总结:……………………………………………………12六、参考文献:……………………………………………………123一、设计要求利用EDA/SOPC实验开发平台提供的八位七段管码显示模块以及EP2C35核心板,实现交通灯信号控制器。设交通灯信号控制器用于主干道的交叉路口,要求是优先保证主干道的畅通,因此,平时处于“主干道绿灯,支道红灯”状态。(1)当处于“主干道绿灯,支道红灯”状态A.主干道有车要求通行,支道也有车要求通行时,若主干道通行时间大于等于30秒,切换到“主黄,支红”,4秒后切换到“主红,支绿”状态。B.主干道无车要求通行,支道有车要求通行时,立即切换到“主黄,支红”,4秒后切换到“主红,支绿”。C.其它情况保持“主绿,支红”。(2)当处于“主干道红灯,支道绿灯”状态A.支道有车要求通行时,保持“主红,支绿”状态,但最多保持30秒然后自动切换到“主红,支黄”状态,4秒后切换到“主绿,支红”状态。B.支道无车要求通行时,立即切换到“主红,支黄”,4秒后切换到“主绿,支红”。C.其它情况保持“主绿,支红”。(3)利用八位七段管码显示模块其中的2位实现时间显示。(4)扩展要求:自主设计(如改变各交通灯亮灭的时间,丰富控制逻辑等)二、设计思路1.从题目要求中不难看出交通灯一共有四个状态,分别为主绿,支红;主黄,支红;主红,支绿;主红,支黄。根据题目要求得各状态之间转换关系如图(1)所示图(1)注:SM=1,主干道有车;SM=0,主干道无车;SR=1,支干道有车;SR=0,支干道无车;num灯亮时间;4根据设计要求和系统所具有的功能,并参考相关的文献资料,经行方案设计,可以画出如图(2)所示的交通信号灯控制器的系统框图。图(2)三﹑硬件电路设计(1)分频器分频器实现的是将高频时钟信号转换成低频的时钟信号,用于触发控制器、计数器和扫描显示电路。本实验一共用两个分频器,分别实现的是把50MHz分为1Hz,512Hz的时钟信号,前者用于触发控制器、计数器,后者用于扫描显示电路。其模块如图(3)、图(4)所示。图(3)分频器模块(50MHz分位1Hz)图(4)分频器模块(50MHz分位512Hz)(2)控制器设计控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的分位译码电路。本控制器的设计方法为利用时钟沿的上升沿读取前级计数器的计数值,然后作出反应。其模块如图(5)所示。图(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基准时钟Segout1[0]J4七段数码管aSegout1[1]H6七段数码管bSegout1[2]H5七段数码管cSegout1[3]H4七段数码管d6Segout1[4]H3七段数码管eSegout1[5]G7七段数码管fSegout1[6]G6七段数码管gLed_sel[0]G5数码管选择控制端0Led_sel[1]G3数码管选择控制端1Led_sel[2]F4数码管选择控制端2MRD3主干道红灯MYD4主干道黄灯MGD5主干道绿灯BRE3支干道红灯BYE4支干道黄灯BGF3支干道绿灯SME15主干道通车请求开关SRB14支干道通车请求开关表(1)管脚锁定表根据管脚锁定表,锁定各管脚。下图为交通灯控制器的顶层文件连接图(锁定管脚)图(8)交通灯控制器的顶层文件连接图(锁定管脚)四、程序设计(1)分频器的设计A、50MHz分为1Hz的时钟信号libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityfenpinis7port(clk:instd_logic;finout:outstd_logic);endfenpin;architecturebhvoffenpinissignaltmp:INTEGERRANGE0TO49999999;beginprocess(clk)beginifclk'eventandclk='1'theniftmp=49999999thentmp=00000000;elsetmp=tmp+1;endif;iftmp25000000thenfinout='0';elsefinout='1';endif;endif;endprocess;endbhv;B、50MHz分为512Hz的时钟信号libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityfenpin123isport(clk:instd_logic;clkfen:outstd_logic);endfenpin123;architecturefenpinoffenpin123issignalclk_mid:std_logic;beginprocess(clk)variabledata:integerrange0to48828;ifclk'eventandclk='1'thenifdata=48828thendata:=0;clk_mid=notclk_mid;elsedata:=data+1;endif;endif;clkfen=clk_mid;endprocess;endfenpin;8(2)控制器设计LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH;ENTITYtrafficISPORT(CLK,SM,SB:INBIT;MR,MY,MG,BR,BY,BG:OUTBIT;reset:OUTstd_logic;CountNum:inINTEGERRANGE0TO64;Num:outINTEGERRANGE0TO31);ENDtraffic;ARCHITECTUREBEHAVOFtrafficISTYPESTATE_TYPEIS(A,B,C,D);SIGNALSTATE:STATE_TYPE;BEGINCNT:PROCESS(CLK,SM,SB,CountNum)BEGINIFCLK'EVENTANDCLK='1'THENCASESTATEISWHENA=MR='0';MY='0';MG='1';--主绿支红BR='1';BY='0';BG='0';RESET='0';IF(SBANDSM)='1'THENIFCountNum=29THENNum=30-CountNum;ELSESTATE=B;RESET='1';ENDIF;ENDIF;IF(SBAND(NOTSM))='1'THENSTATE=B;RESET='1';ENDIF;WHENB=MR='0';MY='1';MG='0';--主黄支红BR='1';BY='0';BG='0';RESET='0';IFCountNum=3THENNum=4-CountNum;ELSESTATE=C;RESET='1';ENDIF;9WHENC=MR='1';MY='0';MG='0';--主红支绿BR='0';BY='0';BG='1';RESET='0';IF(SBANDSM)='1'THENIFCountNum=29THENNum=30-CountNum;ELSESTATE=D;RESET='1';ENDIF;ENDIF;IFSB='0'THENSTATE=D;RESET='1';ENDIF;WHEND=MR='1';MY='0';MG='0';--主红支黄BR='0';BY='1';BG='0';RESET='0';IFCountNum=3THENNum=4-CountNum;ELSESTATE=A;RESET='1';ENDIF;WHENOTHERS=STATE=A;ENDCASE;ENDIF;ENDPROCESSCNT;ENDBEHAV;(3)计数器设计LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcounterISPORT(clk:INSTD_LOGIC;reset:instd_logic;countNum:BuFFeRINTEGERRANGE0TO64);END;ARCHITECTUREbehaviorOFcounterISBEGINprocess(reset,Clk)BEGINIFReset='1'THENcountNum=0;ELSIFrising_edge(Clk)THENIFcountNum=64THENcountNum=0;ELSE10countNum=countNum+1;ENDIF;ENDIF;ENDPROCESS;END;(4)分位译码电路设计LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH;ENTITYFENWEIISPORT(Numin:INintegerRANGE0TO31;NumA,NumB:OUTIntegerRANGE0to9);END;ARCHITECTUREbehaviorOFFENWEIISBEGINprocess(Numin)BEGINIFNumin=30THENNumA=3;NumB=Numin-30;ELSIFNumin=20THENNumA=2;NumB=Numin-20;ELSIFNumin=10THENNumA=1;NumB=Numin-10;ELSENumA=0;NumB=Numin;ENDIF;ENDPROCESS;END;(5)数码管驱动设计LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYbcd_dataISPORT(bcd_data:inSTD_LOGIC_VECTOR(3downto0);segout:outSTD_LOGIC_VECTOR(6downto0));END;ARCHITECTUREbehaviorOFbcd_dataIS11BEGINprocess(bcd_data)BEGINcasebcd_dataiswhen0000=segout=1111110;when0001=segout=0110000;when0010=segout=1101101;when0011=segout=1111001;when0100=segout=0110011;when0101=segout=1011011;when0110=segout=1011111;w
本文标题:交通信号控制器设计报告
链接地址:https://www.777doc.com/doc-2750515 .html