您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 基于VHDL语言与EDA交通灯控制器设计-毕业论文
课程名称:VHDL语言与EDA课程设计设计题目:交通灯控制器系别:通信与控制工程系专业:电子信息工程摘要本系统采用GW48EDA/SOPC实验箱来设计交通灯控制器,模拟实现了红、绿灯指挥交通的功能。它直接采用FPGA/CPLD芯片开发,用VHDL语言编程和QUARTUSⅡ6.0设计。交通灯控制器设计,系统地阐述了用FPGA/CPLD实现数字电路的设计过程,展示了FPGA/CPLD的强大功能和非凡特性。本交通灯控制器适用东西方向和南北方向的车流量大致相同的路口,红灯45秒,黄灯5秒,绿灯40秒,同时用数码管指示当前状态(红、黄、绿灯)剩余时间。另有一个紧急状态,当紧急状态出现时,两个方向都禁止通行,指示红灯。紧急状态解除后,重新计时并指示时间。关键词:交通灯控制器,EDA,FPGA,quartusII目录设计要求.................................................................11方案论证与对比..........................................................11.1方案一............................................................11.2方案二............................................................12设计过程...............................................................12.1总体设计慨要......................................................12.2交通灯原理分析....................................................23模块设计及仿真.........................................................33.1顶层文件的设计....................................................33.2状态控制模块(jtdctrl)..........................................43.3倒计时模块(jtdtime)的设计......................................53.4数码管显示模块(jtdxs)的设计....................................73.5信号灯显示模块(jtdlight)的设计.................................93.6引脚锁定.........................................................114编程下载...............................................................125结束语.................................................................126致谢...................................................................127参考文献...............................................................13更多论文交通灯控制器设计要求设东西方向和南北方向的车流量大致相同,因此红、黄、绿灯的时长也相同,定为红灯45秒,黄灯5秒,绿灯40秒,同时用数码管指示当前状态(红、黄、绿灯)剩余时间。另外,设计一个紧急状态,当紧急状态出现时,两个方向都禁止通行,指示红灯。紧急状态解除后,重新计时并指示时间。1方案论证与对比1.1方案一采用VHDL语言直接编写,实现交通灯指挥功能。但此方案编写复杂且困难,开发时间较长。编译后,不便读懂,找出错误很困难。1.2方案二采用模块层次化设计,将此设计分为四个模块:计时模块,状态控制模块,信号灯显示模块,数码扫描显示模块。将四个模块再分别用VHDL语言编写成,做成原理图模块,用原理图输入法做整个设计的顶层文件。此方案设计方便、简单,方法易懂、易操作,也易于寻找程序中的错误,故我们采用此方案。2设计过程2.1总体设计慨要根据交通灯控制器的功能与要求,将其总体电路分为状态控制,倒计时,数码管显示,信号灯显示模块(jtdctrl,jtdtime,jtdxs,jtdlight)。jtdctrl实现逻辑和时序控制,外部两路脉冲振荡器的频率选为1kHz和1Hz的信号,1khz信号用于显示模块的扫描,1Hz信号用做倒计时模块的计数脉冲。M为紧急状态和自动运行状态的控制端。总体框图:更多论文交通灯原理分析当M='1'时,进入紧急状态,S输出为B100100,即南北、东西向均为红灯亮。当M='0'时,交通即开始正常工作。M=‘0’时,经过40秒,S由B100010变为B100001,再经过5秒,S变为B010100,再经过40秒,S变为B001100,再经过5秒,S变为B100010……如此循环下去。当M=‘1’跳变到M=‘0’时,数码管继续计时,恢复正常工作状态。南北、东西方向的红绿灯按表一表二变化。表一交通灯状态转换表东西(A)方向红灯红灯绿灯黄灯45秒40秒5秒南北(B)方向绿灯黄灯红灯红灯40秒5秒45秒表二交通灯状态转换表MS备注1100100长时间亮红灯0状态1:100010持续40秒,转到状态2状态2:100001持续5秒,转到状态3状态3:010100持续40秒,转到状态4状态4:001100持续5秒,转到状态1注:S的六位分别对应东西方向(A方向)的红绿黄和南北方向(B方向)的红绿黄。‘1’表示亮,‘0’表示灭。更多论文模块设计及仿真3.1顶层文件的设计顶层原理图设计可以依据系统框图进行,由反馈控制,倒计时,数码管显示,信号灯显示模块(jtdctrl,jtdtime,jtdxs,jtdlight)五部分组成。其顶层原理图如图2所示。顶层文件的仿真波形图如图3所示:图2顶层原理图图3顶层文件的仿真波形更多论文状态控制模块(jtdctrl)状态控制模块根据倒计时模块(jtdtime)的输出信号和1hz的时钟信号,产生系统的状态机,控制其他部分的协调工作。该模块的源文件程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYJTD_CTRLISPORT(CLK:INSTD_LOGIC;AT,BT:INSTD_LOGIC_VECTOR(7DOWNTO0);S:OUTSTD_LOGIC_VECTOR(1DOWNTO0));ENDJTD_CTRL;ARCHITECTUREJTDOFJTD_CTRLISSIGNALQ:STD_LOGIC_VECTOR(1DOWNTO0);BEGINPROCESS(CLK,AT,BT)BEGINIFCLK'EVENTANDCLK='1'THENIF(AT=X01)OR(BT=X01)THENQ=Q+1;——通过AT,BT的反馈信号控制倒计时模块和信号显示jtd_light模块的工作ELSEQ=Q;ENDIF;ENDIF;ENDPROCESS;S=Q;ENDJTD;状态控制模块的仿真波形图如图4所示:更多论文倒计时模块(jtdtime)的设计倒计时模块用来设定A和B两个方向计时器的初值,并为数码管显示模块提供倒计时时间。倒计时模块源文件程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYJTD_TIMEISport(CLK:INSTD_LOGIC;M:INSTD_LOGIC;S:INSTD_LOGIC_VECTOR(1DOWNTO0);AT,BT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDJTD_TIME;ARCHITECTUREJTD_1OFJTD_TIMEISSIGNALATI:STD_LOGIC_VECTOR(7DOWNTO0):=X01;SIGNALBTI:STD_LOGIC_VECTOR(7DOWNTO0):=X01;SIGNALART,AGT,AYT:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALBRT,BGT,BYT:STD_LOGIC_VECTOR(7DOWNTO0);BEGIN——设定各个红绿黄的工作时间ART=X45;更多论文=X40;AYT=X05;BRT=X45;BGT=X40;BYT=X05;PROCESS(CLK,M,S)BEGINIFM='1'THENATI=ATI;BTI=BTI;ELSEIFCLK'EVENTANDCLK='1'THENIF(ATI=X01)OR(BTI=X01)THENCASESIS——通过S的变化控制各个状态,给倒计时显示灯赋值WHEN00=ATI=ART;BTI=BGT;WHEN01=BTI=BYT;WHEN10=ATI=AGT;BTI=BRT;WHEN11=ATI=AYT;ENDCASE;ENDIF;IFATI/=X01THEN——A方向(东西方向)倒计时IFATI(3DOWNTO0)=0000THENATI(3DOWNTO0)=1001;ATI(7DOWNTO4)=ATI(7DOWNTO4)-1;ELSEATI(3DOWNTO0)=ATI(3DOWNTO0)-1;ATI(7DOWNTO4)=ATI(7DOWNTO4);ENDIF;ENDIF;IFBTI/=X01THEN——B方向(南北方向)倒计时IFBTI(3DOWNTO0)=0000THENBTI(3DOWNTO0)=1001;BTI(7DOWNTO4)=BTI(7DOWNTO4)-1;更多论文(3DOWNTO0)=BTI(3DOWNTO0)-1;BTI(7DOWNTO4)=BTI(7DOWNTO4);ENDIF;ENDIF;ENDIF;ENDIF;ENDPROCESS;AT=ATI;BT=BTI;ENDJTD_1;倒计时模块的仿真波形图如图5所示为:3.4数码管显示模块(jtdxs)的设计显示模块用来显示倒计时时间。采用动态扫描显示,通过分位程序,控制四个数码管的显示时间。数码管显示模块的源文件程序为:图5倒计时模块的仿真波形图更多论文(CLK1K:INSTD_LOGIC;AT,BT:INSTD_LOGIC_VECTOR(7DOWNTO0);LED1,LED2,LED3,LED4:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDJTD_XS;ARCHITECTUREJTD_3OFJTD_XSISSIGNALOU1,OU2,OU3
本文标题:基于VHDL语言与EDA交通灯控制器设计-毕业论文
链接地址:https://www.777doc.com/doc-3717865 .html