1、数电综合实验报告记录2交通灯数电综合实验报告记录2交通灯 作者: 日期: 数字逻辑与数字系统设计综合实验二十字路口交通灯自动控制器的设计学 院 电子工程学院 班 级 卓越001012班 学 号 00101201 姓 名 冉 艳 伟 实验时间 2012.6.8 十字路口交通灯自动控制器的设计一、实验目的 学习Quartus的使用方法,熟悉可编程逻辑器件的使用。通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制。二、设计任务 设计一个十字路口交通控制系统,其东西,南北两个方向除了有红、黄、绿灯指示是否允许通行外,还设有时钟,以倒计时方式显示每一路允许通行的时间,绿灯
2、,黄灯,红灯的持续时间分别是40、5和45秒。当东西或南北两路中任一道上出现特殊情况,例如有消防车,警车要去执行任务,此时交通控制系统应可由交警手动控制立即进入特殊运行状态,即两条道上的所有车辆皆停止通行,红灯全亮,时钟停止计时,且其数字在闪烁。当特殊运行状态结束后,管理系统恢复原来的状态,继续正常运行。 南北干道 东西干道图1 路口交通管理示意图ABCD南北干道交通灯绿(40秒)黄(5秒)红(40秒)红(5秒)东西干道交通灯红红绿黄表1 交通信号灯的4种状态三、实验要求 (1)按照设计任务设计,采用VHDL语言编写程序,并在QUARTUSII工具平台中进行仿真,下载到EDA实验箱进行验证。交
3、通灯用发光二级管模拟,观察交通灯的运行是否正常,如果不正常,排除故障直至正确为止。(2)编写设计报告,要求包括方案选择、程序清单、调试过程、测试结果及心得体会。要求:必须用可编程器件实现电路功能。可以是原理图,也可以是VHDL代码,也可以混合输入。五、设计说明 (1)第一模块:CLK时钟秒脉冲发生电路在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作,故对1MHz的时钟信号进行1000000分频。模块说明:系统输入信号: CLKi: 由外接信号发生器提供1MHz的时钟信号;系统输出信号: CLK
4、:产生每秒一个脉冲的信号;(2)第二模块:模90倒计数器按照实验要求,交通灯循环一次为90秒,且显示倒数的计数值,故设计一模90倒计数器通过主程序运算即可显示各路计数值。模块说明:系统输入:CLK: 接收由CLK电路的提供的1hz的时钟脉冲信号; reset:紧急情况输入系统输出信号: L1:倒计数值 秒数十位变化控制信号; L0:倒计数值 秒数个位变化控制信号;(3)交通灯主程序说明:系统输入:CLK: 接收由CLK电路的提供的1hz的时钟脉冲信号; reset:紧急情况输入系统输出信号:Lx:东西方向红绿黄灯控制信号; Ly:南北方向红绿黄灯控制信号; NUMx1:东西方向倒计数值秒数十位
5、变化控制信号;NUMx0:东西方向倒计数值秒数个位变化控制信号;NUMx1:南北方向倒计数值秒数十位变化控制信号;NUMx0:南北方向倒计数值秒数个位变化控制信号;六、设计方案 图2 交通灯控制系统示意图 时间显示数据输出 红黄绿灯信号输出 图2 交通信号灯控制器的原理框图采用VHDL语言输入的方式实现交通信号灯控制器秒脉冲信号发生器计数器状态寄存器次态发生器信号灯输出信号CLK 时间显示数据输出 信号灯输出 图3 交通信号灯控制器程序原理框图 七、程序清单(1)第一模块:CLK时钟秒脉冲发生电路entity defreq is port(CLKi:in std_logic; CLK:out
6、std_logic );end defreq;architecture behav of defreq is signal q:integer range 999999 downto 0;begin process(CLKi,q) begin if(CLKievent and CLKi =1) then if(q=999999) then q=0; else q=q+1; end if; end if; if (q500000) then CLK=0; else CLK=1; end if; end process;end behav;(2)第二模块:模90倒计数器library ieee;u
7、se ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity subcounter90 is port(CLK:in std_logic; reset:in std_logic; L1,L0:out std_logic_vector(3 downto 0) );end subcounter90;architecture behav of subcounter90 is signal lt1,lt0:std_logic_vector(3 downto 0);begin process(CLK,reset,lt1,lt0) be
8、gin if(reset=0) then if(CLKevent and CLK =1) then if(lt0=0000) then if(lt1=0000) then lt1=1000; lt0=1001; else lt1=lt1-1; lt0=1001; end if; else lt0=lt0-1; end if; end if; else lt0=lt0; lt1=lt1; end if; end process; L1=lt1; L00100) then Lx=100; NUMxt1=lt1-5; NUMxt00100) then Lx=010; NUMxt1=lt1-4; NU
9、Mxt0=lt0-5; else Lx=001; NUMxt1=lt1; NUMxt00100) or (lt1=0100 and lt00100) then Ly0100) then NUMyt1=lt1-4; NUMyt0=lt0-5; else NUMyt1=lt1-5; NUMyt00000) or (lt1=0000 and lt00100) then Ly0100) then NUMyt1=lt1; NUMyt0=lt0-5; else NUMyt1=lt1-1; NUMyt0=lt0+5; end if; else Ly=010; NUMyt1=lt1; NUMyt0=lt0;
10、end if; NUMx1=NUMxt1; NUMx0=NUMxt0; NUMy1=NUMyt1; NUMy0=NUMyt0; else Lx=001; Ly=001; if(CLKt=0) then NUMx1=NUMxt1; NUMx0=NUMxt0; NUMy1=NUMyt1; NUMy0=NUMyt0; else NUMx1=0000; NUMx0=0000; NUMy1=0000; NUMy0=0000; end if; end if; end process;end structure;八、仿真结果1.第一模块:CLK时钟秒脉冲发生电路(1)功能仿真: (2)时序仿真(2)第二模块
11、:模90倒计数器(1)功能仿真:(2)时序仿真(3)交通灯总程序仿真(1)功能仿真:(2)时序仿真九、引脚设置接下来就要选择目标器件并对相应的引脚进行锁定了,引脚锁定方法如下图所示。十、实验总结(故障排除与收获体会)综合设计实验对学生而言是其对所学课程内容掌握情况的一次自我验证,从而有着极其重要的意义。通过设计能提高学生对所学知识的综合应用能力,能全面检查并掌握所学内容,我们进行了数字电路设计,老师命题,进行设计。趣味性强,同时也可以学到很多东西。我们做的是交通灯控制器的设计。在这学期的课程设计中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈
12、的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。通过这个程序设计,我进一步加深了对电子设计自动化的了解,并进一步熟练了对QuartusII软件的操作。在编写程序的过程中,遇到了很多问题,有些函数不太熟悉,使我发现自己以前学习上存在的不足。通过与同学探讨和请教老师,终于把问题都解决了,并加深了对交通灯原理和设计思路的了解。同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计
13、方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。这次课程设计虽然结束了,也留下了很多遗憾,因为由于时间的紧缺和许多课业的繁忙,并没有做到最好,但是,最起码我们没有放弃,它是我们的骄傲!相信以后我们会以更加积极地态度对待我们的学习、对待我们的生活。我们的激情永远不会结束,相反,我们会更加努力,努力的去弥补自己的缺点,发展自己的优点,去充实自己,只有在了解了自己的长短之后,我们会更加珍惜拥有的,更加努力的去完善它,增进它。只有不断的测试自己,挑战自己,才能拥有更多的成功和快乐!快乐至上,享受过程,而不是结果!认真对待每一个实验,珍惜每一分一秒,学到最多的知识和方法,锻炼自己的能力,这个是我们在实时测量技术试验上学到的最重要的东西,也是以后都将受益匪浅的!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1