EDA课程设计实验报告交通信号灯控制 .doc

上传人:laozhun 文档编号:4144101 上传时间:2023-04-07 格式:DOC 页数:16 大小:176KB
返回 下载 相关 举报
EDA课程设计实验报告交通信号灯控制 .doc_第1页
第1页 / 共16页
EDA课程设计实验报告交通信号灯控制 .doc_第2页
第2页 / 共16页
EDA课程设计实验报告交通信号灯控制 .doc_第3页
第3页 / 共16页
EDA课程设计实验报告交通信号灯控制 .doc_第4页
第4页 / 共16页
EDA课程设计实验报告交通信号灯控制 .doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《EDA课程设计实验报告交通信号灯控制 .doc》由会员分享,可在线阅读,更多相关《EDA课程设计实验报告交通信号灯控制 .doc(16页珍藏版)》请在三一办公上搜索。

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=0100;TAH=0100; TBL=

9、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=0

10、000 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=

11、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

12、; 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

13、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_1

14、164.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

15、_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

16、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);

17、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,

18、 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

19、_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

20、 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_

21、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.综合仿真结果:心得体会经过为其两周的课程设计,本人受益匪浅。这是我们自己大学三年以来自己第一次动手设计

22、自己的东西,而不仅仅是停留在理论上。这一次的课程设计让我懂得了理论的指导意义,同时也深深知道自己实际动手能力的缺乏,深深认识到加强自己的理论指导实践的能力的紧迫性和重要性。选了交通灯控制这一小项目,因为它很简单,很容易的就用原理图或者状态机设计完成。这是我选择它的最重要的原因。但是看是简单的交通灯控制,却让我明白,要想靠自己成功的完成,还得老老实实的花大力气去做。刚开始,由于Altium Designer 6这软件对我来说完全陌生,不知道怎么操作,我花了几乎三天的时间去熟悉它,但是还是不能很好的“驾驭”它,而VHDL语言虽然简单,可是由于仓促上阵,一时间难以接受。在开始的两天,完全不知从何下手

23、,我几乎有点想放弃的感觉,尽管之前参加过课程设计的同学都说很简单,但是我觉得非也。接下来的几天,实验室,图书馆,旧书店开始出现了忙碌的身影,我拼命的找资料。有关EDA的和电子系统设计的书,我前后下来看了不少于6本,研究书中的有关例子,寻求设计思路和设计方法,方案,同时学习VHDL这门硬件描述语言,边学边做,仿佛自己在做一个惊天动地大项目,“废寝忘食”。在进行课程设计这两周,是我最忙的两周,每天晚上几乎都到奋战到10点才回去,很冷,但是我还是坚持下来了,尽管后面的项目做得不是很成功,但是我觉得我还是收获了不少,至起码我懂得了VHDL语言,学会了一些小系统的设计方法和设计思路。在后面的设计过程中,

24、我得到了不少帮助。老师的悉心指导,同学们的热心关怀,让我有一种动力,在最关键的时候没有放弃,坚持了下来。期间遇到很多困难,比如程序出了一些很不明显的错误,或者在下载到芯片上的时候没有办法下载,又或者不能达到设计要求而又不知道哪里出错等等,面对着这些问题,我感到十分烦躁,但是在同学们的耐心的帮助,我还是抑制了情绪,平静下来好好的做完了课程设计。在进行交通灯设计的时候,交通灯状态设定是很重要的,我开始的时候没有想到用状态机来了描述,结果弄了好久都没有搞清楚到底如何才能实现信号控制,后来参考了书上的设计和老师的指导我很快就明白了,用状态机要快得多而且简单得多。但是在设置状态的时候有出现了问题,理由是

25、状态的设定怎样才能算是完美的呢?经过了两天的思考和查阅资料,我觉得设置六个状态的最完美的,四个工作状态,两个紧急状态。由于开始时候没有考虑到行人的情况,后来就加了行人过道的指示信号灯。但是我还是觉得不是很完美,我的设计中,只有东西南北方向的直行指示信号灯没有拐弯的指示,这是有缺陷的不适用的设计,而要设置拐弯信号,情况就要复杂多了,而我还没有考虑好怎样解决这个问题,而且当初的设计方案里面就没有考虑到出现拐弯的情况,实在是有失远虑。在进行每一个设计之前必须充分考虑各种情况,明白自己设计的目的和要求,然后围绕着设计要求为中心,充分考虑设计的条件,为实现设计要求和设计目的找到最优的方案,而不是没有考虑清楚就急着去做。这是我这次的切身体会,正所谓是看得远看得清才不会摔跤。

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号