收藏 分销(赏)

课程设计十字路口交通灯控制器.docx

上传人:胜**** 文档编号:966373 上传时间:2024-04-09 格式:DOCX 页数:11 大小:299.99KB
下载 相关 举报
课程设计十字路口交通灯控制器.docx_第1页
第1页 / 共11页
课程设计十字路口交通灯控制器.docx_第2页
第2页 / 共11页
点击查看更多>>
资源描述
目 录 1.设计原理 1 1.1设计任务 1 1.2方案构思 1 1.2.1该交通灯控制器应具备的功能 1 1.2.2实现方案 1 2.程序设计 3 3. 编译/仿真 4 3.1编译过程 4 3.1.1 建立顶层设计文件夹TRAFFIC_CTROL 4 3.1.2 TRAFFIC_CTROL.VHD模块设计 4 3.1.3 TRAFFIC_CTROL.SCf波形文件设计 5 3.2仿真结果 5 4.心得体会 6 参考文献 7 附录A VHDL源程序代码 8 附录B 仿真时序波形图 10 交通灯控制器设计 1.设计原理 1.1设计任务 设计一个十字路口的交通灯控制系统,用实验平台上的LED发光二极管显示车辆通过的方向(东西和南北各一组),用数码管显示该方向的剩余时间。 1.2方案构思 1.2.1该交通灯控制器应具备的功能 设东西和南北方向的车流量大致相同,因此红、黄、绿灯的时长也相同,定为红灯35sec,黄灯5sec,绿灯30sec,同时用数码管指示当前状态(红、黄、绿)剩余时间。另外,设计一个紧急状态,当紧急状态出现时,两个方向都禁止通行,指示红灯。紧急状态解除后,重新计数并指示时间。 1.2.2实现方案 交通灯控制器是状态机的一个典型应用,除了计数器是状态机外,还有东西、南北方向的不同状态组合(红绿、红黄、绿红、黄红4个状态),如表1.1所示。 表1.1 交通灯的4种可能亮灯状态 状 态 东 西 方 向 南 北 方 向 红 黄 绿 红 黄 绿 1 1 0 0 0 0 1 2 1 0 0 0 1 0 3 0 0 1 1 0 0 4 0 1 0 1 0 00 我们可以简单的将其看成两个(东西、南北)减1计数器,通过检测两个方向的计数值,可以检测红、黄、绿灯组合的跳变。这样使一个较复杂的状态机设计变成一个较简单的计数器设计。 本例假设东西方向和南北方向的黄灯时间均为5sec,在设计交通灯控制器时,可在简单计数器的基础上增加一些状态检测,即可通过检测两个方向的计数值判断交通灯应处于4种状态中的哪个状态。 本交通灯控制器外部接口如图1.1所示。在表1.2中列出了需检测的状态跳变点,从中可以看出,有两种情况出现了东西和南北方向计数值均为1的情况,因此在检查跳变点时还应同时判断当前是处于状态2还是状态4,这样就可以决定次状态是状态3还是状态1。对于紧急状态,只需设计一个异步时序电路即可解决。 图1.1交通灯控制器方框图 表1.2 交通灯设计设计中的状态跳变点 交通灯 现状态 计数器计数值 交通灯 次状态 计数器计数值 东西方向 计数值 南北方向 计数值 东西方向 计数值 南北方向 计数值 1 6 1 2 5 5 2 1 1 3 30 35 3 1 6 4 5 5 4 1 1 1 35 30 程序中还应防止出现非法状态,即程序运行后应判断东西方向和南北方向的计数值是否超出范围。此电路仅在电路启动运行时有效,因为一旦两个方向的计数值正确后,就可能再计数到非法状态。 2.程序设计 该交通灯控制器的源程序TRAFFIC_CTROL.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY TRAFFIC_CTROL IS PORT(clk,urgency: IN STD_LOGIC; led: BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0); East_West,South_North:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0)); END TRAFFIC_CTROL; ARCHITECTURE A OF TRAFFIC_CTROL IS BEGIN PROCESS(clk,urgency) BEGIN IF urgency='0' THEN led<="10000001"; East_West<="00000000"; South_North<="00000000"; ELSIF clk'event AND clk='1' THEN IF East_West>"00110110" OR South_North>"00110110"THEN East_West<="00110101"; South_North<="00110000"; led<="10000100"; ELSIF East_West="00000110"AND South_North="00000001" THEN East_West<="00000101"; South_North<="00000101"; led<="10000010"; ELSIF East_West="00000001"AND South_North="00000001" AND led="10000010" THEN East_West<="00110000"; South_North<="00110101"; led<="00100001"; ELSIF East_West="00000001"AND South_North="00000110" THEN East_West<="00000101"; South_North<="00000101"; led<="01000001"; ELSIF East_West="00000001"AND South_North="00000001" AND led="01000001" THEN East_West<="00110101"; South_North<="00110000"; led<="10000100"; ELSIF East_West(3 DOWNTO 0)=0 THEN East_West<=East_West-7; South_North<=South_North-1; ELSIF South_North(3 DOWNTO 0)=0 THEN East_West<=East_West-1; South_North<=South_North-7; ELSE East_West<=East_West-1; South_North<=South_North-1; END IF; END IF; END PROCESS; END A; 3. 编译/仿真 3.1编译过程 3.1.1 建立顶层设计文件夹TRAFFIC_CTROL 在硬盘适当位置建立TRAFFIC_CTROL文件夹。注意:该文件夹的路径中不能包含汉字。路径中的所有目录和子目录的名称都必须符合VHDL语言的语法规则。 3.1.2 TRAFFIC_CTROL.VHD模块设计 新建一个.VHD格式文件,输入TRAFFIC_CTROL.VHD源程序后保存在顶层设计文件夹中,并进行语法查错、编译。 3.1.3 TRAFFIC_CTROL.SCf波形文件设计 新建一个.SCF格式文件,输入时钟及紧急状态波形后保存文件,此后即可仿真。 3.2仿真结果 仿真结果如图3.1所示。图中LED[7..0]以自然二进制表示,EAST_WEST[7..4]、EAST_WEST[3..0]、SOUTH_NORTH[7..4]、SOUTH_NORTH[3..0]为十进制表示。 图3.1 交通灯控制器功能与时序仿真结果 4.心得体会 EDA课程设计就要结束了,这次课程设计历时近一个星期,通过这一个星期的学习,发现了自己的很多不足,发现了很多知识上的漏洞。同时也看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。这次课程设计让我学到了很多,不仅是巩固了先前学的EDA技术的理论知识,而且也培养了我的动手能力,更令我的创造性思维得到拓展。在课程设计中一个人的力量是远远不够的,真正的完成任务需要共同的智慧与劳动,团结协作是我们成功的一项非常重要的保证。在这个过程中,我也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。 还有一点是我们做任何事情都无法缺少的,那就是细心认真。此次设计我们就深深地体会到了,由于编程的时候没有做到足够的细心,导致一串代码弄混了。但是密密麻麻的英文字母混在一起,我始终没有发现。最终在调试的时候,就出现了问题。只知道出现了问题,就是不知道到问题的根源在哪里,好长时间都没有找出问题的所在。这也让我真正的明白了,科学的严谨性,它不允许出半点差错,否则后果会是比较麻烦的。做其他事情也一样,都需要我们付出足够的认真去对待,才能顺利的完成。 生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。虽然我这次做的课程设计不是非常的复杂,但在设计和仿真的过程中,我们也遇到了不少的困难,回首整个过程,却受益匪浅。 对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆! 参考文献 [1] 阎石 主编,《数字电子技术基础》,高等教育出版社,1998 [2] 谭会生 主编,《EDA技术及应用》,西安电子科技大学出版社,2001 [3] 廖裕评 主编,《CPLD数字电路设计——使用MAX+plusⅡ入门篇》,清华大学出版,2001 [4] 冯涛 主编,《可编程逻辑器件开发技术:MAX+plusⅡ入门与提高》,人民邮电出版社,2002 [5] 杨崇志,《特殊新型电子元件手册》,辽宁科学技术出版社,1999 [6] 彭介华,《电子技术课程设计指导》高等教育出版社.2000年出版. [7] Mark Zwolinski, Digital System Design with VHDL, 电子工业出版社,2002 [8] Alan B. Marcovitz Introduction to logic Design, 电子工业出版社,2002 附录A VHDL源程序代码 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY TRAFFIC_CTROL IS PORT(clk,urgency: IN STD_LOGIC; led: BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0); East_West,South_North:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0)); END TRAFFIC_CTROL; ARCHITECTURE A OF TRAFFIC_CTROL IS BEGIN PROCESS(clk,urgency) BEGIN IF urgency='0' THEN led<="10000001"; East_West<="00000000"; South_North<="00000000"; ELSIF clk'event AND clk='1' THEN IF East_West>"00110110" OR South_North>"00110110"THEN East_West<="00110101"; South_North<="00110000"; led<="10000100"; ELSIF East_West="00000110"AND South_North="00000001" THEN East_West<="00000101"; South_North<="00000101"; led<="10000010"; ELSIF East_West="00000001"AND South_North="00000001" AND led="10000010" THEN East_West<="00110000"; South_North<="00110101"; led<="00100001"; ELSIF East_West="00000001"AND South_North="00000110" THEN East_West<="00000101"; South_North<="00000101"; led<="01000001"; ELSIF East_West="00000001"AND South_North="00000001" AND led="01000001" THEN East_West<="00110101"; South_North<="00110000"; led<="10000100"; ELSIF East_West(3 DOWNTO 0)=0 THEN East_West<=East_West-7; South_North<=South_North-1; ELSIF South_North(3 DOWNTO 0)=0 THEN East_West<=East_West-1; South_North<=South_North-7; ELSE East_West<=East_West-1; South_North<=South_North-1; END IF; END IF; END PROCESS; END A; 附录B 仿真时序波形图
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服