




免费预览已结束,剩余11页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南大学课程设计论文 hunan university 课程设计实验报告课题:交通信号灯控制 学院:电气与信息工程学院姓名: 班级:电气工程及其自动化(3)班 学号:第 16 页 共 16 页一、课程设计的要求及目的:1了解电子设计的具体流程和方法。2. 掌握电子设计的基本要求,能够运用所学的知识解决生活中的一些问题。3. 初步掌握vhdl语言编程,并设计出一个有意义的小型系统。4. 掌握altium designer6软件的应用,并且了解相关硬件的组成和功能。5. 用eda(electronic design automation)或者原理图完成一个课题的设计,并达到相应的功能要求。二、设计的功能要求:众所周知,随着生活的进步,我们身边的交通也日益繁忙,在众多的十字交叉路口,为了确保车辆安全,迅速地通行,就必须在每个入口设置红绿灯。本系统中设置了红,绿,黄三色共三种信号灯。红灯亮禁止一切该方向的行人和车辆通行,绿灯亮允许行人和车辆通行,黄灯亮则提示行驶中的车辆注意不要抢道,并让它们有时间停靠到禁行线之外或者加快通过,同时提醒行人加快行进或者等待下一次绿灯。人行道灯亮时,允许行人通过。本交通信号灯控制系统以东西,南北方向走向的十字路口为例讲述设计的功能要求和设计的具体过程1、 用八个发光二极管作信号指示灯。顺序为东西主干道红、绿、黄、人行灯,南北主干道红、绿、黄、人行灯。2、考虑到没有设置到车辆的转弯信号指示灯,而且作为交通繁忙的交通干道,为了节省车辆的等待时间,所以设置了红灯亮的时间为45s,绿灯亮和人行灯亮的时间均为40s,黄灯亮的时间为5s。当东西方向的干道禁止通行时,该干道亮红灯,南北方向干道亮绿灯,同时南北方向的人行道灯亮;当南北方向的干道转变为黄灯闪烁时,进入了黄灯警示时间,黄灯闪烁结束以后,东西方向干道亮绿灯允许通行,同时东西方向的人行道灯亮,南北方向的红灯亮,人行道灯灭;当东西方向干道转变为黄灯闪烁时,进入黄灯警示时间,黄灯闪烁结束以后,东西方向干道亮红灯,人行道灯灭,南北方向亮绿灯亮,人行道灯亮。如此反复进行,当遇到紧急(故障)情况时候,进入到紧急状态。3、该信号控制系统的初始状态为东西方向主干道亮红灯(45s),南北方向主干道亮绿灯(40s)和人行灯,黄灯灭。指示牌会显示出45和40两个数字。4、 交通灯正常运行时,用数字显示器显示东西、南北两主干道允许通过的剩余时间(采用倒计时的形式显示ascii数字)。5、当出现故障的时候,此时东西,南北两方向主干道均亮红灯,数字显示管均停止计数并将当前的停留时间和错误信号(eeee)轮流显示。故障解除后能返回正常工作状态(复位后为初始状态)。6、 能实现系统手动复位,复位后回到初始状态,并从初始状态开始倒计时。三、设计方案选择由于该交通控制电路比较复杂,用现有库元器件可能导致耗用较多器件且其功能又不能完全达到设计要求,还可能出现其他的意想不到的情况,造成电路复杂,设计困难,难以排错等问题。而由于该系统的状态有限而且简单可以一一列举,故采用状态机设计方案。状态机设计使得设计更为简单明了,系统容错能力也大为提升,而且状态机顺序控制灵活,结构简单,便于修改,同时其对付竞争冒险的现象能力很强,运行速度快,使其成为数字系统设计中的重要部分,也是调高效率的重要途径。因此本次设计采用状态机的vhdl描述,生成相应的器件模块。最后将器件模块和少数的库元件有机的结合在一起,构成总的原理图,从而形成了交通灯控制系统。而在本次交通灯的控制电路设计中,一共设置有六种状态,分别为s1(初始状态),s2,s3,s4为正常工作状态;s5,s6为故障时候的状态。四、 设计思路和框架分析 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_logic_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) );end 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=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=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 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=1001; tbh=tbh-1; else tblif tal=1 and tbl=1 then s=s3;snow:=s3; tah=0100;tal=0000;tbh=0100;tbl=0101; else tal=tal-1;tbl if tah=0000 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; tbh=tbh-1; else tblif tbl=1 and tal=1 then s=s1;snow:=s1; tah=0100;tal=0101;tbh=0100;tbl=0000; else tal=tal-1;tblss=snow; tah=a;tal=b;tbh=c;tblnull; 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 bllif n=0 then l=10000010; else llif n=0 then l=00101000; else lll=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 下载模块上的数字显示管输入是ascii码,故,还需要一个编译电路模块作为译码输出转换电路。译码电路器件模块的程序如下: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_out asc_out_reg asc_out_reg asc_out_reg asc_out_reg asc_out_reg asc_out_reg asc_out_reg asc_out_reg asc_out_reg asc_out_reg asc_out_reg=x45; end case; end process;end structure;形成译码器电路器件形式如下:3.lcd控制器 采用altium designer6 下载模块上的lcd1602数字显示管显示倒计时数字,向lcd输入的数据为ascii码,需要通过数码扫描依次送到lcd显示,仍需编译一块lcd控制器ip核lcd16x2a的程序。lcd控制器的程序如下:library ieee;use ieee.std_logic_1164.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_logic_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, 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; strobe_out state := lcd_1_out; data_out_reg = x00; addr_out_reg = x0; line_out_reg = 1; strobe_out_reg state := lcd_1_strobe; data_out_reg = ascii_1_in; addr_out_reg state := lcd_1_wait; strobe_out_reg state := lcd_2_out; strobe_out_reg state := lcd_2_strobe; data_out_reg = ascii_2_in; addr_out_reg state := lcd_2_wait; strobe_out_reg state := lcd_3_out; strobe_out_reg state := lcd_3_strobe; data_out_reg = ascii_3_in; addr_out_reg state := lcd_3_wait; strobe_out_reg state := lcd_4_out; strobe_out_reg state := lcd_4_strobe; data_out_reg = ascii_4_in; addr_out_reg state := lcd_4_wait; strobe_out_reg state := lcd_1_out; strobe_out_reg = 0; state := ready; end case; else state := state; strobe_out_reg = 0; end if; end if; end if; end process; end art;形成lcd控制器器件形式如下:4.综合电路图在进行仿真模拟时,所用仿真输入的时钟脉冲信号周期是4ns,下载到硬件上时,为了能够观察到所要求的灯光信号,输入脉冲信号定为2hz(用于保证黄灯闪烁的观测),由于模板上最小的脉冲为10mhz,所以要采用分频器。5.综合仿真结果:心得体会经过为其两周的课程设计,本人受益匪浅。这是我们自己大学三年以来自己第一次动手设计自己的东西,而不仅仅是停留在理论上。这一次的课程设计让我懂得了理论的指导意义,同时也深深知道自己实际动手能力的缺乏,深深认识到加强自己的理论指导实践的能力的紧迫性和重要性。选了交通灯控制这一小项目,因为它很简单,很容易的就用原理图或者状态机设计完成。这是我选择它的最重要的原因。但是看是简单的交通灯控制,却让我明白,要想靠自己成功的完成,还得老老实实的花大力气去做。刚开始,由于altium designer 6这软件对我来说完全陌生,不知道怎么操作,我花了几乎三天的时间去熟悉它,但是还是不能很好的“驾驭”它,而vhdl语言虽然简单,可是由于仓促上阵,一时间难以接受。在开始的两天,完全不知从何下手,我几乎有点想放弃的感觉,尽管之前参加过课程设计的同学都说很简单,但是我觉得非也。接下来的几天,实验室,图书馆,旧书店开始出现了忙碌的身影,我拼命的找资料。有关eda的和电子系统设计的书,我前后下来看了不少于6本,研究书中的有关例子,寻求设计思路和设计方法,方案,同时学习vhdl这门硬件描述语言,边学边做,仿佛自己在做一个惊天动地大项目,“废寝忘食”。在进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年丽水市缙云县人民法院招聘笔试真题
- 2024年金昌市中级人民法院招聘笔试真题
- 2024年恒丰银行成都分行招聘笔试真题
- 重视员工意见与建议计划
- 行业动态与自身发展的关联计划
- 网络管理实践中的案例借鉴试题及答案
- 网络工具使用技巧试题及答案
- 2025年战略管理中的人力资源考量试题及答案
- 企业环境风险与长远战略目标的互动研究试题及答案
- 提升竞争力2025年软件设计师考试试题及答案
- 2024年中国家具电商行业市场竞争格局及投资方向研究报告(智研咨询)
- 导数(30题)-2024年考前15天高考数学冲刺大题训练(新高考)含答案
- 高层建筑一栋一册消防安全档案
- 创造性思维与创新方法智慧树知到期末考试答案章节答案2024年大连理工大学
- 外科围手术期营养支持疗法
- 广东省深圳市南山区2023-2024学年四年级下学期期末科学试题
- 2024年江苏省高考化学试卷(含答案)
- 2024年安徽省初中(八年级)学业水平考试初二会考地理试卷真题
- 小学二年级数学100以内三数加减混合运算综合测验试题大全附答案
- 中国特色社会主义期中测试题-2023-2024学年中职高教版
- 学习康复科常见物理治疗法课件
评论
0/150
提交评论