




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、hunan university 课程设计实验报告课题:交通信号灯控制 学院:电气与信息工程学院姓名: 班级:电气工程及其自动化(3)班 学号:一、课程设计的要求及目的:1了解电子设计的具体流程和方法。2. 掌握电子设计的基本要求,能够运用所学的知识解决生活中的一些问题。3. 初步掌握vhdl语言编程,并设计出一个有意义的小型系统。4. 掌握altium designer6软件的应用,并且了解相关硬件的组成和功能。5. 用eda(electronic design automation)或者原理图完成一个课题的设计,并达到相应的功能要求。二、设计的功能要求:众所周知,随着生活的进步,我们身边的
2、交通也日益繁忙,在众多的十字交叉路口,为了确保车辆安全,迅速地通行,就必须在每个入口设置红绿灯。本系统中设置了红,绿,黄三色共三种信号灯。红灯亮禁止一切该方向的行人和车辆通行,绿灯亮允许行人和车辆通行,黄灯亮则提示行驶中的车辆注意不要抢道,并让它们有时间停靠到禁行线之外或者加快通过,同时提醒行人加快行进或者等待下一次绿灯。人行道灯亮时,允许行人通过。本交通信号灯控制系统以东西,南北方向走向的十字路口为例讲述设计的功能要求和设计的具体过程1、 用八个发光二极管作信号指示灯。顺序为东西主干道红、绿、黄、人行灯,南北主干道红、绿、黄、人行灯。2、考虑到没有设置到车辆的转弯信号指示灯,而且作为交通繁忙
3、的交通干道,为了节省车辆的等待时间,所以设置了红灯亮的时间为45s,绿灯亮和人行灯亮的时间均为40s,黄灯亮的时间为5s。当东西方向的干道禁止通行时,该干道亮红灯,南北方向干道亮绿灯,同时南北方向的人行道灯亮;当南北方向的干道转变为黄灯闪烁时,进入了黄灯警示时间,黄灯闪烁结束以后,东西方向干道亮绿灯允许通行,同时东西方向的人行道灯亮,南北方向的红灯亮,人行道灯灭;当东西方向干道转变为黄灯闪烁时,进入黄灯警示时间,黄灯闪烁结束以后,东西方向干道亮红灯,人行道灯灭,南北方向亮绿灯亮,人行道灯亮。如此反复进行,当遇到紧急(故障)情况时候,进入到紧急状态。3、该信号控制系统的初始状态为东西方向主干道亮
4、红灯(45s),南北方向主干道亮绿灯(40s)和人行灯,黄灯灭。指示牌会显示出45和40两个数字。4、 交通灯正常运行时,用数字显示器显示东西、南北两主干道允许通过的剩余时间(采用倒计时的形式显示ascii数字)。5、当出现故障的时候,此时东西,南北两方向主干道均亮红灯,数字显示管均停止计数并将当前的停留时间和错误信号(eeee)轮流显示。故障解除后能返回正常工作状态(复位后为初始状态)。6、 能实现系统手动复位,复位后回到初始状态,并从初始状态开始倒计时。三、设计方案选择由于该交通控制电路比较复杂,用现有库元器件可能导致耗用较多器件且其功能又不能完全达到设计要求,还可能出现其他的意想不到的情
5、况,造成电路复杂,设计困难,难以排错等问题。而由于该系统的状态有限而且简单可以一一列举,故采用状态机设计方案。状态机设计使得设计更为简单明了,系统容错能力也大为提升,而且状态机顺序控制灵活,结构简单,便于修改,同时其对付竞争冒险的现象能力很强,运行速度快,使其成为数字系统设计中的重要部分,也是调高效率的重要途径。因此本次设计采用状态机的vhdl描述,生成相应的器件模块。最后将器件模块和少数的库元件有机的结合在一起,构成总的原理图,从而形成了交通灯控制系统。而在本次交通灯的控制电路设计中,一共设置有六种状态,分别为s1(初始状态),s2,s3,s4为正常工作状态;s5,s6为故障时候的状态。四、
6、 设计思路和框架分析 1.交通路口位置东 :人行过道 :红绿黄灯:人行过道灯南北 西 2、状态表状态东西主干道南北主干道指示灯亮灯时间指示灯亮灯时间s1红灯亮45s绿灯亮40ss2红灯亮黄灯亮5ss3绿灯亮40s红灯亮45ss4黄灯亮5s红灯亮s5红灯亮当前时间红灯亮当前时间s6红灯亮ee红灯亮ee3、状态转换图复 位s1s2s4s3按复位键s6s5故 障五、交通灯的控制电路的vhdl程序1.主控制电路模块的程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_log
7、ic_arith.all;entity traffic light is port ( hold:in std_logic; reset: in std_logic; clk: in std_logic; ah: out std_logic_vector (3 downto 0); al: out std_logic_vector (3 downto 0); bh: out std_logic_vector (3 downto 0); bl: out std_logic_vector (3 downto 0); l: out std_logic_vector (7 downto 0) );en
8、d traffic light;architecture a of traffic light istype state_type is (s1,s2,s3,s4,s5,s6); signal s: state_type; signal n,m: std_logic; signal a,b,c,d,tah,tal,tbh,tbl:std_logic_vector (3 downto 0);begin zt:process(clk,hold,reset) variable snow:state_type; begin if reset='1' then tbh<="
9、;0100"tah<="0100" tbl<="0000"tal<="0101" n<='0' s<=s1; elsif clk='1' and clk 'event then if hold='1' then if s/=s5 and s/=s6 then s<=s5; a<=tah; b<=tal; c<=tbh; d<=tbl; elsif s=s5 then s<=s6; else if n=
10、39;0' then n<='1' tah<="1111" tbh<="1111" tal<="1111" tbl<="1111" else n<='0' tah<=a;tal<=b;tbh<=c;tbl<=d; end if; end if; elsif n='0' then n<='1' else n<='0' case s is when s1=>
11、; if tbh="0000" and tbl="0001" and tah="0000" and tal="0110" then s<=s2 ;snow:=s2; tbl<="0101" tal<=tal-1; else if tal="0000" then tal<="1001" tah<=tah-1; else tal<=tal-1; end if; if tbl="0000" then tbl
12、<="1001" tbh<=tbh-1; else tbl<=tbl-1; end if; end if; when s2=>if tal=1 and tbl=1 then s<=s3;snow:=s3; tah<="0100"tal<="0000"tbh<="0100"tbl<="0101" else tal<=tal-1;tbl<=tbl-1; end if; when s3=> if tah="0000&qu
13、ot; and tal="0001" and tbh="0000" and tbl="0110" then s<=s4 ;snow:=s4; tal<="0101" tbl<=tbl-1; else if tal="0000" then tal<="1001" tah<=tah-1; else tal<=tal-1; end if; if tbl="0000" then tbl<="1001"
14、tbh<=tbh-1; else tbl<=tbl-1; end if; end if; when s4=>if tbl=1 and tal=1 then s<=s1;snow:=s1; tah<="0100"tal<="0101"tbh<="0100"tbl<="0000" else tal<=tal-1;tbl<=tbl-1; end if; when s5=>s<=s6; when s6=>s<=snow; tah<=a
15、;tal<=b;tbh<=c;tbl<=d; when others=>null; end case; end if; end if; end process zt; process(tah) begin ah<=tah; end process; process(tal) begin al<=tal; end process; process(tbh) begin bh<=tbh; end process; process(tbl) begin bl<=tbl; end process; shch:process(s,n) begin case
16、 s is when s1=>l<="10000101" when s2=>if n='0' then l<="10000010" else l<="10000000" end if; when s3=>l<="01011000" when s4=>if n='0' then l<="00101000" else l<="00001000" end if; when s5=>l&
17、lt;="10001000" when s6=>l<="10001000" end case;end process shch;end a;由上述的程序生成的器件模块如下图:其中clk为时钟脉冲信号, reset为复位信号,hold为故障输入信号。l是交通信号灯信号的输出,al,ah, bl, bh都是二进制bcd码输出。当reset为1时,返回到s1状态在clk为上升沿且hold为1时,显示为故障状态也即s5和s6状态。2.译码电路器件模块由于上述模块输出的是bcd二进制码,而altium designer6 下载模块上的数字显示管输入是a
18、scii码,故,还需要一个编译电路模块作为译码输出转换电路。译码电路器件模块的程序如下:library ieee;use ieee.std_logic_1164.all;entity coding is port( bcd_in : in std_logic_vector(3 downto 0); asc_out : out std_logic_vector(7 downto 0);end coding;architecture structure of coding issignal asc_out_reg :std_logic_vector(7 downto 0);begin asc_ou
19、t <= asc_out_reg; process(bcd_in) begin case bcd_in is when"0000"=> asc_out_reg<=x"30" when"0001"=> asc_out_reg<=x"31" when"0010"=> asc_out_reg<=x"32" when"0011"=> asc_out_reg<=x"33" when"
20、0100"=> asc_out_reg<=x"34" when"0101"=> asc_out_reg<=x"35" when"0110"=> asc_out_reg<=x"36" when"0111"=> asc_out_reg<=x"37" when"1000"=> asc_out_reg<=x"38" when"1001"
21、=> asc_out_reg<=x"39" when others=> asc_out_reg<=x"45" end case; end process;end structure;形成译码器电路器件形式如下:3.lcd控制器 采用altium designer6 下载模块上的lcd1602数字显示管显示倒计时数字,向lcd输入的数据为ascii码,需要通过数码扫描依次送到lcd显示,仍需编译一块lcd控制器ip核lcd16x2a的程序。lcd控制器的程序如下:library ieee;use ieee.std_logic_116
22、4.all;entity lcd_scan is port( clk_in: in std_logic; rstn_in: in std_logic; ascii_1_in: in std_logic_vector(7 downto 0); ascii_2_in: in std_logic_vector(7 downto 0); ascii_3_in: in std_logic_vector(7 downto 0); ascii_4_in : in std_logic_vector(7 downto 0); busy_in : in std_logic; data_out: out std_l
23、ogic_vector(7 downto 0); addr_out: out std_logic_vector(3 downto 0); line_out: out std_logic; strobe_out: out std_logic );end lcd_scan;architecture art of lcd_scan istype m_state is( ready, lcd_1_out, lcd_1_strobe, lcd_1_wait, lcd_2_out, lcd_2_strobe, lcd_2_wait, lcd_3_out, lcd_3_strobe, lcd_3_wait,
24、 lcd_4_out, lcd_4_strobe, lcd_4_wait );signal data_out_reg : std_logic_vector(7 downto 0); signal addr_out_reg : std_logic_vector(3 downto 0); signal line_out_reg : std_logic;signal strobe_out_reg : std_logic;begin data_out <= data_out_reg; addr_out <= addr_out_reg; line_out <= line_out_reg
25、; strobe_out <= strobe_out_reg; process(clk_in) variable state: m_state; begin if clk_in'event and clk_in = '0' then if rstn_in = '0' then state := ready; else if busy_in = '0' then case state is when ready => state := lcd_1_out; data_out_reg <= x"00" a
26、ddr_out_reg <= x"0" line_out_reg <= '1' strobe_out_reg <= '0' when lcd_1_out => state := lcd_1_strobe; data_out_reg <= ascii_1_in; addr_out_reg <= x"f" when lcd_1_strobe => state := lcd_1_wait; strobe_out_reg <= '1' when lcd_1_wait
27、=> state := lcd_2_out; strobe_out_reg <= '0' when lcd_2_out => state := lcd_2_strobe; data_out_reg <= ascii_2_in; addr_out_reg <= x"e" when lcd_2_strobe => state := lcd_2_wait; strobe_out_reg <= '1' when lcd_2_wait => state := lcd_3_out; strobe_out_r
28、eg <= '0' when lcd_3_out => state := lcd_3_strobe; data_out_reg <= ascii_3_in; addr_out_reg <= x"d" when lcd_3_strobe => state := lcd_3_wait; strobe_out_reg <= '1' when lcd_3_wait => state := lcd_4_out; strobe_out_reg <= '0' when lcd_4_out =&
29、gt; state := lcd_4_strobe; data_out_reg <= ascii_4_in; addr_out_reg <= x"c" when lcd_4_strobe => state := lcd_4_wait; strobe_out_reg <= '1' when lcd_4_wait => state := lcd_1_out; strobe_out_reg <= '0' state := ready; end case; else state := state; strobe_o
30、ut_reg <= '0' end if; end if; end if; end process; end art;形成lcd控制器器件形式如下:4.综合电路图在进行仿真模拟时,所用仿真输入的时钟脉冲信号周期是4ns,下载到硬件上时,为了能够观察到所要求的灯光信号,输入脉冲信号定为2hz(用于保证黄灯闪烁的观测),由于模板上最小的脉冲为10mhz,所以要采用分频器。5.综合仿真结果:心得体会经过为其两周的课程设计,本人受益匪浅。这是我们自己大学三年以来自己第一次动手设计自己的东西,而不仅仅是停留在理论上。这一次的课程设计让我懂得了理论的指导意义,同时也深深知道自己实际动手能力的缺乏,深深认识到加强自己的理论指导实践的能力的紧迫性和重要性。选了交通灯控制这一小项目,因为它很简单,很容易的就用原理图或者状态机设计完成。这是我选择它的最重要的原因。但是看是简单的交通灯控制,却让我明白,要想靠自己成功的完成,还得老老实实的花大力气去做。刚开始,由于altium designer 6这软件对我来说完全陌生
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绿色食品加工产业园项目建筑工程方案
- DB54T 0065-2012 古建筑分布式高压喷雾灭火系统设计、施工及验收技术规程
- 新版2025年幼儿园大班保育员初级考试试题试题(附答案)
- 2025年医院招聘护士考试真题库(含答案)
- 2025年电气专业知识试题及答案
- 2025年中级银行从业资格之《中级银行管理》基础试题库附答案详解
- 混凝土基础施工详细方案
- 项目评分标准制定及应用细则
- 2025年计算机二级Access数据库程序设计春季培训试题及答案
- 员工职业健康安全防护指导
- 税务尽职调查报告
- 梅毒病人的护理教学查房
- 石渣清运施工方案
- 高速公路无人机施工方案
- 2023-2024学年山东省泰安市肥城市白云山学校六年级(上)月考数学试卷(含解析)
- 语法填空-动词公开课一等奖市赛课获奖课件
- 深静脉血栓形成的诊断和治疗指南第三版
- 春之声圆舞曲-教学设计教案
- 农业政策学 孔祥智课件 第08章 农业土地政策
- WB/T 1119-2022数字化仓库评估规范
- GB/T 15972.20-2021光纤试验方法规范第20部分:尺寸参数的测量方法和试验程序光纤几何参数
评论
0/150
提交评论