交通灯控制器.doc

上传人:仙人指路1688 文档编号:4144366 上传时间:2023-04-07 格式:DOC 页数:16 大小:47KB
返回 下载 相关 举报
交通灯控制器.doc_第1页
第1页 / 共16页
交通灯控制器.doc_第2页
第2页 / 共16页
交通灯控制器.doc_第3页
第3页 / 共16页
交通灯控制器.doc_第4页
第4页 / 共16页
交通灯控制器.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《交通灯控制器.doc》由会员分享,可在线阅读,更多相关《交通灯控制器.doc(16页珍藏版)》请在三一办公上搜索。

1、VHDL语言与EDA课程设计: 交 通 灯 控 制 器通信与控制工程系电子信息工程摘 要本系统采用GW48 EDA/SOPC实验箱来设计交通灯控制器,模拟实现了红、绿灯指挥交通的功能。它直接采用FPGA/CPLD芯片开发,用VHDL语言编程和QUARTUS 6.0设计。交通灯控制器设计, 系统地阐述了用FPGA/CPLD实现数字电路的设计过程, 展示了FPGA/CPLD的强大功能和非凡特性。本交通灯控制器适用东西方向和南北方向的车流量大致相同的路口,红灯45秒,黄灯5秒,绿灯40秒,同时用数码管指示当前状态(红、黄、绿灯)剩余时间。另有一个紧急状态,当紧急状态出现时,两个方向都禁止通行,指示红

2、灯。紧急状态解除后,重新计时并指示时间。关键词:交通灯控制器,设计要求 . 11方案论证与对比 . 11. 1方案一 . 11. 2方案二 . 12. 设计过程 . 13. 1总体设计慨要 . 12.2 交通灯原理分析 . 24. 模块设计及仿真 . 34.1. 顶层文件的设计 . 34.2. 状态控制模块(jtd ctrl) . 45. 3倒计时模块(jtd time)的设计 . 56. 4数码管显示模块(jtd xs)的设计 . 77. 5信号灯显示模块(jtd light)的设计 . 98. 6引脚锁定 . 114编程下载 . 125结束语 . 126致谢 . 127参考文献 . 13更

3、多论文1. 交通灯控制器设东西方向和南北方向的车流量大致相同,因此红、黄、绿灯的时长也相同,定为红灯45秒,黄灯5秒,绿灯40秒,同时用数码管指示当前状态(红、黄、绿灯)剩余时间。另外,设计一个紧急状态,当紧急状态出现时,两个方向都禁止通行,指示红灯。紧急状态解除后,重新计时并指示时间。采用VHDL语言直接编写,实现交通灯指挥功能。但此方案编写复杂且困难,开发时间较长。编译后,不便读懂,找出错误很困难。采用模块层次化设计,将此设计分为四个模块:计时模块,状态控制模块,信号灯显示模块,数码扫描显示模块。将四个模块再分别用VHDL语言编写成,做成原理图模块,用原理图输入法做整个设计的顶层文件。此方

4、案设计方便、简单,方法易懂、易操作,也易于寻找程序中的错误,故我们采用此方案。根据交通灯控制器的功能与要求,将其总体电路分为状态控制,倒计时,数码管显示,信号灯显示模块(jtd ctrl,jtd time,jtd xs,jtd light)。jtd ctrl实现逻辑和时序控制,外部两路脉冲振荡器的频率选为1 kHz和1 Hz的信号,1khz信号用于显示模块的扫描,1 Hz信号用做倒计时模块的计数脉冲。M为紧急状态和自动运行状态的控制端。总体框图:更多论文22.2 交通灯原理分析当M = 1时,进入紧急状态,S输出为B100100,即南北、东西向均为红灯亮。当M = 0时,交通即开始正常工作。M

5、=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秒M S 备注1. 100100 长时间亮红灯0状态1:100010 持续40秒,转到状态2状态2:100001 持续5秒,转到状态3状态3:010100 持续40秒,转到状态4状态4:001100 持续5秒,转到状态

6、1S的六位分别对应东西方向(A方向)的红绿黄和南北方向(B方向)的红绿黄。1表示亮,0表示灭。 更多论文3 3模块设计及仿真顶层原理图设计可以依据系统框图进行,由反馈控制,倒计时,数码管显示,信号灯显示模块(jtd ctrl,jtd time,jtd xs,jtd light)五部分组成。其顶层原理图如图2所示。图2 顶层原理图 图3 顶层文件的仿真波形更多论文4状态控制模块根据倒计时模块(jtd time)的输出信号和1hz的时钟信号,产生系统的状态机,控制其他部分的协调工作。该模块的源文件程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE I

7、EEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_CTRL ISPORT ( CLK :IN STD_LOGIC;AT,BT : IN STD_LOGIC_VECTOR(7 DOWNTO 0);S: OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END JTD_CTRL;ARCHITECTURE JTD OF JTD_CTRL ISSIGNAL Q :STD_LOGIC_VECTOR (1 DOWNTO 0);BEGINPROCESS(CLK,AT,BT)BEGINIF CLKEVENT AND CLK =1 THENIF(AT =X01)OR (

8、BT = X01) THEN Q=Q+1; 通过AT,BT的反馈信号控制倒计时模块和信号显示jtd_light模块的工作ELSE Q=Q;END IF;END IF;END PROCESS;S=Q;END JTD;:更多论文5倒计时模块用来设定A和B两个方向计时器的初值,并为数码管显示模块提供倒计时时间。倒计时模块源文件程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_TIME ISport( CLK : IN STD_LOGIC;M : IN STD_LOGIC;S

9、 :IN STD_LOGIC_VECTOR(1 DOWNTO 0);AT,BT :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END JTD_TIME;ARCHITECTURE JTD_1 OF JTD_TIME ISSIGNAL ATI : STD_LOGIC_VECTOR(7 DOWNTO 0):=X01;SIGNAL BTI : STD_LOGIC_VECTOR(7 DOWNTO 0):=X01;SIGNAL ART,AGT,AYT : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL BRT,BGT,BYT : STD_LOGIC_VECTO

10、R(7 DOWNTO 0);BEGIN 设定各个红绿黄的工作时间ART=X45; 更多论文6 AGT=X40;AYT=X05;BRT=X45;BGT=X40;BYT=X05;PROCESS (CLK,M,S)BEGINIF M = 1 THEN ATI=ATI; BTIATI=ART; BTIBTIATI=AGT; BTIATI=AYT;END CASE;END IF;IF ATI/=X01 THEN A方向(东西方向)倒计时IF ATI(3 DOWNTO 0)= 0000 THENATI(3 DOWNTO 0)=1001;ATI(7 DOWNTO 4)=ATI(7 DOWNTO 4)-1;E

11、LSE ATI(3 DOWNTO 0)=ATI(3 DOWNTO 0)-1;ATI(7 DOWNTO 4)=ATI(7 DOWNTO 4);END IF;END IF;IF BTI/=X01 THEN B方向(南北方向)倒计时IF BTI(3 DOWNTO 0)=0000 THENBTI(3 DOWNTO 0)=1001;BTI(7 DOWNTO 4)=BTI(7 DOWNTO 4)-1; 更多论文7 ELSE BTI(3 DOWNTO 0)=BTI(3 DOWNTO 0)-1;BTI(7 DOWNTO 4)=BTI(7 DOWNTO 4);END IF;END IF;END IF;END I

12、F;END PROCESS;AT=ATI;BT=BTI;END JTD_1;显示模块用来显示倒计时时间。采用动态扫描显示,通过分位程序,控制四个数码管的显示时间。数码管显示模块的源文件程序为:图5 倒计时模块的仿真波形图更多论文8 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_XS ISPORT ( CLK1K :IN STD_LOGIC;AT,BT :IN STD_LOGIC_VECTOR(7 DOWNTO 0);LED1,LED2,LED3,LED4:OUT STD_L

13、OGIC_VECTOR(3 DOWNTO 0);END JTD_XS;ARCHITECTURE JTD_3 OF JTD_XS ISSIGNAL OU1,OU2,OU3,OU4:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SL:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINPROCESS(CLK1K)BEGINIF CLK1KEVENT AND CLK1K =1 THENIF SL=11 THEN SL=00; 扫描LED显示管ELSE SLOU1OU2OU3OU4=AT(7 DOWNTO 4);END CASE;END PROCESS;LED

14、1=OU1; 更多论文9 LED2=OU2;LED3=OU3;LED4=OU4;END JTD_3;:通过控制模块的输出的状态控制信号,控制六个信号灯的亮灭。信号灯显示模块的源文件程序为:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_LIGHT ISPORT (M :IN STD_LOGIC;S : IN STD_LOGIC_VECTOR(1 DOWNTO 0);ABL :OUT STD_LOGIC_VECTOR(5 DOWNTO 0);图6 数码管显示模块的仿真波形图更多

15、论文10 END JTD_LIGHT;ARCHITECTURE JTD_2 OF JTD_LIGHT ISSIGNAL LT: STD_LOGIC_VECTOR (5 DOWNTO 0);BEGINPROCESS (S,M)BEGINIF M =1 THEN LTLTLTLTLT=001100;END CASE;END IF;END PROCESS;ABL=LT;END JTD_2;图7 信号灯显示模块的仿真波形图更多论文11本次设计我们采用GW48 EDA/SOPC实验箱,选择模式5,引脚锁定如图8所示:图8 引脚锁定更多论文12 4编程下载在实验箱上选择clock2为1Hz, clock5

16、为1024Hz,模式选择模式5,引脚锁定如上图所示。下载后,结果显示正确,六个信号灯依次为东西方向的红绿黄和南北方向的红绿黄。两个方向上的数码管显示的时间完全吻合。键8为紧急状态控制端,按下键8时,两路信号灯都为红灯,时间暂停,再次按下键8,恢复原状态,继续计时。结果证实调试成功!5结束语通过的紧张工作,完成了我们的设计任务用VHDL设计交通灯控制器。通过本次课程设计的学习,我们深深的体会到设计课的重要性和目的性所在。为了完成项目,在网络上找到了许多相关资料,大大扩充自己的知识面,使许多以前想解决却无法解决的困难迎刃而解。对软件设计流程有了更深刻的理解,掌握了EDA软件的使用。将书本上的理论知

17、识和实际有机地结合起来,锻炼了实际分析问题和解决问题的能力,提高了适应实际的能力,为今后的学习和实践打下了良好的基础。本次EDA课程设计的目的和意义:通过设计交通灯控制器,了解EDA技术,了解并掌握VHDL硬件描述语言的设计方法和思想,巩固和综合运用所学过的原理知识,提高分析、解决实际问题的独立工作能力。在指导老师田汉平老师和周桃云老师的精心指导和严格要求下,经过我们自己的努力,终于完成了这次课程设计。同时获得了丰富的理论知识,极大地提高了实践能力,对FPGA技术方面有了更深的了解,这对我们今后进一步学习有极大的帮助。通过大量阅读资料,我拓宽了自己的知识面,并懂得将所学知识融会贯通到实践中去。

18、在获得知识的同时,我也认识到了自己还需要学习的东西很多,理论需要很好的结合实践,全面分析并解决问题的能力有待提高。另外,此次课程设计还获得了我们的同学大力支持,在我们对有些知识掌握不够时,是我们的同学及时伸出帮助之手使我们的课程设计能够及时的完成。在此,我们衷心感谢各位同学的帮助。在未来的工作和学习中,我也将以更好的成绩来回报老师,谢谢你们! 更多论文13 1黄任编著. VHDL入门?解惑?经典实例?经验总结(第一版).2005年.北京:北京航空航天大学出版社.2邹彦编著.EDA技术与数字系统设计. 2007年. 北京:电子工业出版社.3潘松,黄继业编著.EDA技术与VHDL(第二版).2007年. 北京:清华大学出版社.4王锁萍编著.电子设计自动化教程.2000年.成都:电子科技大学出版社.5徐志军,徐光辉编著.CPLD/FPGA的开发与应用.2002年.北京:电子工业出版社.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号