EDA课程实训设计(交通信号灯设计实现)12页
- 格式:doc
- 大小:85.50 KB
- 文档页数:12
课程EDA技术课程设计题目交通灯控制器专业电子信息工程姓名学号主要内容、基本要求、主要参考资料等主要内容:设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。
基本要求:1、红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号,实验电路用逻辑开关代替。
2、主干道处于常允许通行的状态,支干道有车来时才允许通行。
主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。
3、主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路,选择1HZ时钟脉冲作为系统时钟。
4、在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。
主要参考资料:[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.[2] 康华光主编.电子技术基础模拟部分. 北京:高教出版社,2006.[3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.完成期限2012.3.2指导教师专业负责人2012年2月27日一、总体设计思想1.基本原理交通灯是城市交通中不可缺少的重要工具,是城市交通秩序的重要保障。
本实例就是实现一个常见的十字路通灯功能。
读者通过学习这个交通灯控制器,可以实现一个更加完整的交通灯。
例如实现实时配置各种灯的时间,手动控制各个灯的状态等。
一个十字路口的交通一般分为两个方向,每个方向具有红灯、绿灯和黄灯3种,另外每个方向还具有左转灯,因此每个方向具有4个灯。
这个交通灯还为每一个灯的状态设计了倒计时数码管显示功能。
可以为每一个灯的状态设置一个初始值,灯状态改变后,开始按照这个初始值倒计时。
倒计时归零后,灯的状态将会改变至下一个状态。
值得注意的是,交通灯两个方向的灯的状态是相关的。
一、课程设计目的和要求目的:掌握基于FPGA 的复杂数字系统的设计和验证方法。
提高学生复杂数字系统的设计能力。
要求:使用实验箱为W48-PK2SOPC 试验开发系统,核心器件为Alatera 公司的EP1C6Q240C8芯片,开发软件为Quartus4.0.本实验环节要求学生以FPGA 器件为目标器件,设计典型的数字系统,如:A/D 、D/A 接口;电子密码锁,交通灯控制系统,数字表等复杂硬件电路,完成设计综合、仿真和硬件测试,并写实验报告。
二、设计方案工作原理:本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。
设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续40S 后,主干道和支干道上的黄灯都亮启,持续5S 后,主干道上红灯亮启,支干道上绿灯亮启持续40S ,之后主干道和支干道上的黄灯都亮启5s ,一个循环完成。
用LED 灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。
实现方法:本次采用文本编辑法,即利用Verilog HDL 语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。
设计中用两组红黄绿LED 模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。
状状状状状状状状状状状状00状状10状状11状状01状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状001100010010001010100010图2.交通灯控制状态转化说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。
进入10状态两路黄灯亮起。
结束一个循环,从00状态重新开始循环。
EDA交通灯设计学院:信息工程学院班级:学号:姓名:目录第一章设计原理 (1)第二章设计流程 (2)第三章程序设计说明 (3)3.1 程序设计流程图 (3)3.2 分频模块 (3)3.3 特殊功能及清零模块 (4)3.4 交通灯运行模块 (4)3.5 扫描显示模块 (6)第四章仿真及调试 (8)4.1调试步骤 (8)第五章总程序设计 (9)参考文献 (15)摘要:Verilog HDL作为一种规范的硬件描述语言,被广泛应用于电路的设计中。
他的设计描述可被不同的工具所支持,可用不同器件来实现。
本设计选用了目前应用较为广泛的Verilog HDL 硬件描述语言。
第一章设计原理Verilog hdl提供了简单实用的状态机语句,在设计时把它和实验箱结合起来控制扫描显示交通灯的运行情况。
其原理框图如图1:图1通过外部时钟控制整个交通灯的运行,先将外部时钟经过分频电路变为周期1HZ的时钟,以这个时钟来控制各个路口灯的亮灭及时间显示。
即和计数器结合起来,每一秒钟计数器计一次数并传送给扫描模块显示输出。
当计数器达到设定的最大值便清零,相应的灯的状态便改变,如此反复。
至于复位和特殊功能的实现皆是通过单独的时钟翻转来控制,本设计中采用置数的方法来实现。
当需要的时候直接将对应的时钟置为高电平即可,再置为低电平时从一开始的状态显示。
第二章设计流程当控制开关打开后,主干路和支干路的灯暂时不显示,等待初始化信号。
待信号来临后,两路灯均开始显示。
其中,主干路红灯和支干路绿灯先亮,待主干路红灯显示35秒后,绿灯开始显示,20s后黄灯显示,黄灯显示5s后红灯再一次点亮,如此循环。
支干路绿灯亮了30s后黄灯点亮,5s后红灯点亮,红灯显示25s后绿灯再一次点亮,如此循环。
其流程图如下图2所示:图2第三章程序设计说明3.1 程序设计流程图流程图如图3:图33.2 分频模块通过提供一个60hz的外部时钟wclk,经过分频得到一个1hz的时钟clk。
课程设计报告课程设计:交通灯控制器一:实验目的:实现高速公路与乡间小路的交叉路口红绿灯的控制二:功能要求:1.只有在小路上发现汽车时,高速公路上的交通灯才可能变为红灯。
2.当汽车行驶在小路上时、小路的交通灯保持为绿灯,但不能超过给定的延迟时间.〔注;这段时间定义为20S时间)。
3.高速公路灯转为绿灯后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定的时间内保持高速公路绿灯(注:这段时间定义为60S)。
三:设计思路:五:VHDL源程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TrafficLight ISPORT (Clk : IN STD_LOGIC;S,Reset : IN STD_LOGIC;mg,my,mr,cg,cy,cr : OUT STD_LOGIC );END TrafficLight ;ARCHITECTURE rtl OF TrafficLight ISTYPE TrafficState IS (mgcr, mycr, mrcg, mrcy);SIGNAL current_state,next_state : TrafficState ;SIGNAL Count : STD_LOGIC_VECTOR(5 DOWNTO 0);SIGNAL Clrn : STD_LOGIC ;BEGINCounter : PROCESS(clk)BEGINIF Reset = '1' OR (Clrn = '1' AND NOT(Count = "000000")) THEN Count <= "000000";ELSIF clk'EVENT AND clk = '1' THENIF NOT(s='0' AND current_state = mgcr) THEN Count <= Count + 1;END IF;END IF;END PROCESS Counter;StateTransition : PROCESS(clk,Count, current_state)BEGINIF Reset = '1' THEN next_state <= mgcr;Clrn <= '0';ELSIF clk'EVENT AND clk = '1' THENCASE current_state ISWHEN mgcr => mr<='0';mg<='1';my<='0';cr<='1';cg<='0';cy<='0';IF Count >= "111011" AND S = '1' THEN next_state <= mycr;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN mycr => mr<='0';mg<='0';my<='1';cr<='1';cg<='0';cy<='0';IF Count >= "000100" THEN next_state <= mrcg;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN mrcg => mr<='1';mg<='0';my<='0';cr<='0';cg<='1';cy<='0';IF Count >= "010011" OR S = '0' THEN next_state <= mrcy;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN mrcy => mr<='1';mg<='0';my<='0';cr<='0';cg<='0';cy<='1';IF Count >= "000100" THEN next_state <= mgcr;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN OTHERS => NULL;END CASE;END IF;END PROCESS StateTransition;PROCESS(clk)BEGINIF clk'EVENT AND clk='1' THENcurrent_state <= next_state;END IF;END PROCESS;END rtl;仿真图如下:六:实验心得:通过本次课程设计,使用进一步熟悉了MAX-PLUSLL这种EDA软件工具。
EDA技术课程设计报告交通灯控制器一、设计功能:实现高速公路与乡间小路的交叉路口红绿灯的控制二、具体功能要求:1、只有在小路上发现汽车时,高速公路上的交通灯才可能变成红灯。
2、当汽车行驶在小路上时,小路的交通灯保持为绿灯,但不能超过给定的延迟时间。
(注:这段时间定义为20秒时间)3、高速公路灯转为绿灯后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定时间内保持高速公路绿灯。
(注:这段时间定义为60秒时间)4、原理框图如下:A B C D高速交通灯绿(60秒)黄(5秒)红(20秒)红(5秒)小道交通灯红红绿黄三、参考设计方案:图2 交通信号灯控制器的原理框图采用VHDL语言输入的方式实现交通信号灯控制器图3 交通信号灯控制器程序原理框图该程序由7个进程组成,进程P1和P2将CLK信号分频后产生1秒信号,进程P3、P4、P5构成两个带有预置数功能的十进制计数器,其中P4产生允许十位计数器计数的控制信号。
进程P6实现状态转换和产生状态转换的控制信号,进程P7产生次态信号和信号灯输出信号,以及每一个状态的时间值。
计数器驱动脉冲如图所示:四、编写相应源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED. ALL;ENTITY CONTRALZ ISPORT(CLK:IN STD_LOGIC;RA,GA,YA:OUT STD_LOGIC;TIMEAH,TIMEAL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END CONTRALZ;ARCHITECTURE BHV OF CONTRALZ ISTYPE RG IS (GREEN,RED,YELLOW2);BEGINPROCESS(CLK)VARIABLE A:STD_LOGIC;VARIABLE TH,TL:STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE STATE:RG;BEGINIF CLK'EVENT AND CLK='1'THEN CASE STATE ISWHEN GREEN=>IF A='0'THEN TH:="0101";TL:="1001";A:='1';GA<='1';RA<='0';YA<='0';ELSE IFNOT(TH="0000"AND TL="0001")THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSETH:="0000";TL:="0000";A:='0';STATE:=RED;END IF;END IF;WHEN RED=>IF A='0'THEN TH:="0001";TL:="1001";A:='1';RA<='1';YA<='0';GA<='0';ELSE IFNOT(TH="0000"AND TL="0001") THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSETL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";A:='0';RA<='0';GA<='0';STATE:=YELLOW2;END IF;END IF;WHEN YELLOW2=>IF A='0'THEN TH:="0000";TL:="0101";A:='1';YA<='1';GA<='0';RA<='0';ELSE IF NOT(TH="0000"AND TL="0001")THEN IF TL="0000"THEN TL:="0101";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";GA<='0';RA<='0';YA<='0';A:='0';STATE:=RED;END IF;END IF;END CASE;END IF; TIMEAH<=TH;TIMEAL<=TL;END PROCESS;END BHV;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CONTRALX ISPORT(CLK:IN STD_LOGIC;RB,GB,YB,CHU:OUT STD_LOGIC;TIMEAH,TIMEAL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END CONTRALX;ARCHITECTURE BHV OF CONTRALX ISTYPE RGY IS(RED,YELLOW1,GREEN,YELLOW2);BEGIN PROCESS(CLK)VARIABLE A:STD_LOGIC;VARIABLE TH,TL:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE STATE:RGY;BEGIN IF CLK'EVENT AND CLK='1'THEN CASE STATE ISWHEN YELLOW1=>IF A='0'THEN TH:="0000";TL:="0100";A:='1';YB<='1';GB<='0';RB<='0';CHU<='1';ELSE IF NOT(TH="0000"AND TL="0001")THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";A:='0';STATE:=GREEN;END IF;END IF;WHEN GREEN=>IF A='0'THEN TH:="0001";TL:="1001";A:='1';GB<='1';RB<='0';YB<='0';CHU<='1';ELSE IF NOT(TH="0000"AND TL="0001") THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";A:='0';STATE:=YELLOW2;END IF;END IF;WHEN RED=>IF A='0'THEN TH:="0101";TL:="0100";A:='1';RB<='1';YB<='0';CHU<='1';ELSE IF NOT(TH="0000"AND TL="0001")THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";A:='0';STATE:=YELLOW1;END IF;END IF;WHEN YELLOW2=>IF A='0'THEN TH:="0000";TL:="0100";A:='1';YB<='1';GB<='0';RB<='0';CHU<='1';ELSE IF NOT(TH="0000"AND TL="0001") THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";A:='0';CHU<='0';STATE:=RED;END IF;END IF;END CASE;END IF;TIMEAH<=TH;TIMEAL<=TL;END PROCESS;END BHV;五、对源程序进行编译及仿真1、对程序进行编译,结果如下图:2、用waveform对程序进行波形仿真,结果如下图:六、设计思路在听完课程设计指导课前,我们对交通灯的程序设计思路基本上可以称得上是一片茫然,在听完课后虽然有个大致的思路,但还是不知道具体要怎么实施,于是我们开始去图书馆寻找参考书。
课程设计说明书课程设计名称:EDA交通信号灯题目:学生姓名:专业:学号:指导教师:日期:年月日目录1 前言 (1)2 总体方案设计 (2)2.1 方案分析与选择 (2)2.2 实现方案 (3)3 单元模块设计 (6)3.1 晶体振荡器 (6)3.2 供电电路 (7)3.3 LED灯输出 (8)3.4数码管输出电路 (8)4特殊器件的介绍 (10)4 .1CPLD器件介绍 (10)4.2 FPGA器件介绍 (10)4.3 EPF10K系列器件介绍 (10)5 软件仿真与调试 (11)5.1源代码及说明 (11)5.2 仿真结果 (15)5.3 调试 (17)6 总结 (18)6.1设计收获 (18)6.2 设计改进 (18)参考文献 (19)附录一:电路原理图 (20)1前言随着电子技术的发展,人们的生活水平和质量不断提高,生活设备的智能化程度也越来越高,这些都离不开电子产品的进步。
现代电子产品在性能提高、复杂度增大的同时,价格却一直呈下降趋势,而且产品更新换代的步伐也越来越快,实现这种进步的主要因素是生产制造技术和电子设计技术的发展。
前者以微细加工技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数千万个晶体管。
后者的核心就是EDA技术,EDA是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包。
特别是近年来科技的飞速发展,EDA技术的应用不断深入,不仅带动传统控制检测技术日益更新,更在电子信息,通信,自动,控制及计算机应用等领域越显重要。
没有EDA技术的支持,想要完成上述超大规模集成电路的设计制造是不可想象的,反过来,生产制造技术的不断进步又必将对EDA技术提出新的要求。
随着电子技术的发展和人们对电子设计开发的难度及周期要求,EDA技术必将广发应用于电子设计的各个领域,因此本设计也采用了EDA的设计方法,其设计的优越性明显高于传统的设计方法。
E D A交通灯课程设计(得过优的哦)(总10页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--EDA交通灯课程设计姓名:XXX学号:*********专业:*******学院:电气与信息工程学院1 系统功能设计要求1. 东西各设有一个绿、黄、红指示灯;一个2位7段数码管(1)南北和东西方向各有一组绿,黄,红灯,各自的持续时间分别为20s,5s,25s;(2)当有特殊情况时,两个方向均为红灯,计时暂停,当特殊情况结束后,控制器恢复原来状态,继续正常工作。
(3)用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的剩余时间。
3. 能实现正常的倒计时显示功能。
能实现总体清理功能,计数器由初始状态开始计数,对应状态的指示灯亮。
2 设计原理交通灯控制器的状态转换根据论文题目要求,将红绿灯的状态转换列成如下表上表为交通灯控制器的状态转换表设计方案1、显示模块由两部分组成,一是由七段数码管组成的倒计时显示器,每个方向两个七段数码管;二是由发光二极管代替的交通灯,每个方向3个发光二极管。
2、每个方向有一组2位倒计时器模块,用以显示该方向交通灯剩余的点亮时间。
3、控制模块是交通灯的核心,主要控制交通灯按工作顺序自动变换,同时控制倒计时模块工作,每当倒计时回零时,控制模块接收到一个计时信号,从而控制交通灯进入下一个工作状态。
LED动态显示与频率由于交通灯需要使用2位7段LED数码管指示通行剩余时间,故采用LED动态扫描方式显示当前时间。
频率设定CLK1k对应的频率为1024hz3 电路符号交通控制器的电路符号如图所示。
其中,CLK1K为系统时钟信号输入端,SN为禁止通行信号输入通行信号输入端,light0为东西红灯信号输出端,light1为东西黄灯信号输出端,light2为东西绿灯信号输出端,light3为南北红灯信号输出端,light4为南北黄灯信号输出端,light5为南北绿灯信号输出端,led1、led2、led3、led4、为数码管地址选择信号输出端。
EDA 交通灯课程设计一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握交通灯系统的原理与设计流程。
2. 学生能够运用所学知识,设计并实现一个具备基本功能的交通灯控制系统。
3. 学生了解交通灯控制系统在实际应用中的重要性,理解不同颜色灯亮灭的时间间隔及其意义。
技能目标:1. 学生能够运用EDA软件进行电路设计,完成交通灯控制系统的原理图与PCB布线图绘制。
2. 学生能够通过编程实现对交通灯控制系统的仿真与调试,解决简单问题。
3. 学生能够运用团队协作、沟通技巧,共同完成课程设计任务,提高实践操作能力。
情感态度价值观目标:1. 学生培养对电子设计自动化技术的兴趣,激发创新意识和探索精神。
2. 学生通过实践操作,培养动手能力、问题解决能力和自主学习能力。
3. 学生认识到遵守交通规则的重要性,增强社会责任感和安全意识。
课程性质:本课程设计为实践性课程,注重培养学生的动手能力和团队协作能力。
学生特点:初三学生,具有一定电子基础知识,好奇心强,喜欢动手实践。
教学要求:结合学生特点,课程设计应注重理论与实践相结合,鼓励学生自主探究和团队协作,提高学生的综合能力。
通过分解课程目标为具体学习成果,使学生在完成课程设计的过程中达到预期目标。
二、教学内容1. 电子设计自动化(EDA)基本原理介绍:包括EDA的概念、发展历程、应用领域。
2. 交通灯控制系统原理:讲解交通灯的工作原理、控制逻辑、信号灯颜色时间设置。
3. EDA软件操作:学习并掌握EDA软件的使用,如原理图绘制、PCB布线图设计。
4. 交通灯控制系统设计:根据实际需求,设计具备基本功能的交通灯控制系统。
- 知识点:数字电路、逻辑门、时序逻辑、微控制器应用。
- 教材章节:第四章 电子设计自动化,第三节 数字电路设计。
5. 编程与仿真:学习编程实现对交通灯控制系统的仿真与调试。
- 知识点:基础编程知识、仿真软件使用。
- 教材章节:第五章 嵌入式系统设计,第一节 嵌入式编程基础。
EDA课程设计-交通灯-图文交通信号灯控制电路设计一、概述城市道路交叉口是城市道路网络的基本节点,也是网络交通流的瓶颈。
目前,大部分无控制交叉口都存在高峰小时车流混乱、车速缓慢、延误情况严重、事故多发、通行能力和服务水平低下等问题。
特别是随着城市车流量的快速增长,城市无控制道路交叉口的交通压力越来越大。
因此,做好基于EDA技术平台的交叉口信号控制设计是缓解交通阻塞、提高城市道路交叉口车辆通行效率的有效方法。
交通信号控制的目的是为城市道路交叉口(或交通网络)提供安全可靠和有效的交通流,通常最为常用的原则是车辆在交叉口的通过量最大或车辆在交叉口的延误最小。
交通信号灯控制电路是显示主干道和支干道交替放行时间并用试验箱左上角的彩灯来红黄绿支红代替信号灯的一种实际电路。
设计一个基于FPGA的红绿灯交通信号控制器。
假设某个十干黄绿道字路口是由一条主干道和一条次干道汇合而成,在每个方向设置红绿黄三种信号灯,红灯亮禁止通行,绿灯亮允许通行。
黄灯亮允许行驶中车辆有时间停靠到禁止线以外。
第-1-页共18页二、方案设计与论证在硬件时钟电路的基础上,采用分频器,输出一个1S的时钟信号,在时钟信号的控制下,实现主干道和支干道红绿灯交替显示。
红绿灯交通灯控制器层次设计:EDA技术的基本设计方法有电路级设计方法和系统级设计方法。
电路级设计方法已经不能适应新的形势,本系统采用的是系统级层次设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片FPGA芯片实现,首先用VHDL语言编写各个功能模块程序,最后通过综合器和适配器生成最终的目标器件,然后用顶层原理图将各功能模块连接起来。
下面给出各模块的VHDL设计过程和仿真结果。
1、系统时序发生电路clk_gen的VHDL设计在红绿灯交通信号控制系统中,大多数的情况是通过自动控制的方式指挥交通的。
因此,为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。
EDA课程实训设计交通信号灯设计实现本文主要介绍我们的EDA课程实训设计——交通信号灯设计实现。
一、实训背景随着城市化的不断加速,交通拥堵已成为我们生活中的一个严重问题。
交通信号灯系统是城市道路上必不可少的设施,对于城市交通流的控制起着重要的作用。
因此,通过本次实训,我们将学习如何设计和实现一个交通信号灯系统。
二、实训目的本次实训的主要目的如下:1.理解EDA(Electronic Design Automation)电子设计自动化工具的作用和基本使用方法。
2.了解PLD(Programmable Logic Device)可编程逻辑器件的基本知识。
3.学习如何使用EDA工具进行原理图的绘制和电路仿真。
4.实现一个简单的交通信号灯系统,并掌握系统的原理和设计方法。
三、实训内容本次实训的内容主要包括如下几个方面:1.交通信号灯系统的原理与设计首先,我们需要了解交通信号灯系统的原理。
交通信号灯系统分为控制器、交通信号灯和控制线路三个部分,其中控制器是指用于控制信号灯状态的设备,交通信号灯是指道路上设置的红、黄、绿三种颜色的灯,控制线路是指用于实现控制信号灯状态的电气线路和电气元件。
然后,我们需要学习如何设计一个交通信号灯系统。
首先,我们需要确定系统所能支持的最大车流量,再根据这个车流量计算出每个方向的红绿灯持续时间,并以此为基础设计出控制器和控制线路。
2.原理图绘制与电路仿真其次,我们需要使用EDA工具进行原理图的绘制和电路仿真。
EDA工具可以帮助我们快速和准确地绘制出原理图,并能够通过电路仿真快速测试和分析电路的性能和稳定性。
同时,使用EDA工具还能够将电路的图形化表示与物理元件的位置和性能进行精确的匹配,从而更好地进行系统的设计和调试。
3.交通信号灯系统的实现最后,我们需要实现一个简单的交通信号灯系统,使用PLD可编程逻辑器件进行实现。
PLD是一种可编程的数字集成电路,它可以实现各种功能的逻辑实现。
交通灯的设计与实现一、实训目的提高学生动手编程能力和对EDA可编程逻辑器件课程在实际生活中的应用的能力。
二、实训内容及要求在EDA实验箱上完成十字路口交通灯的设计与实现。
要求将实验箱上的8个LED灯中的6个表示东西方向和南北方向的红黄绿交通灯。
同时在数码管上显示等待时间,并在数秒后进行红绿灯的转换,可增加扩展功能。
三、实训软硬件简介1.Quartus II 8.0Quartus II 8.0是著名可编程逻辑器件生产商Altera的综合性开发软件,在21世纪推出,可以在XP,linux,unix上使用,已取代MAX+PLUSⅡ,它提供了一种与结构无关的设计与环境,使设计者能方便地进行设计输入、快速处理和器件编程。
其便于其支持的硬件描述语言有VHDL、Verilog等,解决了原理图与HDL混合输入设计的问题。
编译仿真检测无误后,便可以下载信息通过编程器下载至目标器件中了。
2.EDA综合实验箱综合实验箱可分为实验主板和可编程逻辑器件核心两部分,可编程逻辑器件核心板可以按需更换,以满足不同要求。
实验箱主要具有以下几个特点:★实验箱电路动态可重组:可按需配置成不同连接,以满足不同实验项目的需要★可独立支持MCS—51单片机实验:具有仿真功能,不需要额外配备昂贵的仿真器。
★可独立完成可编程逻辑器件实验:可按需更换不同芯片模板,满足不同实验需要;★提供了扩展接口:让学生可以设计自己的电路连接到试验箱;★灵活支撑综合性、创造性实验:有利于训练学生综合创新能力。
综合实验箱采用模式化结构,可以通过不同的模式选择是进行单片机实验还是可编程实验。
通过主控电路选择左侧的单片机或者是下侧的可编程器件,选择需要的外围资源。
主要硬件资源由三个部分构成:单片机资源、可编程逻辑器件资源、以及一些常用外设资源。
四、实训设计思想1.设计效果将实训要求和实际生活中的交通信号灯状态相结合,本系统设计实现数码管实时显示东西和南北两个方向的交通信号灯的通行和等待的剩余时间,在实验箱的LED灯中选取6个灯分别代表两个方向的红绿黄灯同时与数码管显示的时间相对应,为了防止出现交通灯出现临时性错误,设计一个复位键,以能够及时恢复至正常状态。
因深夜时车辆较少,故而设计一个按键在深夜时将交通灯全部变为黄灯闪烁,提醒车辆减速行驶。
2.程序代码设计思想经过分析,交通信号灯在正常情况下分为6个状态,同时增加两种特殊情况下出现的两种状态;本系统运用状态机,将系统频率clk通过分频器分频,实现了LED灯的闪烁和数码管的显示功能,同时增加了两个额外特殊情况处理功能,成功模拟了现实生活中的交通信号灯的运作状况。
(1)分频设计因数码管和LED 灯的显示频率不同,故需要对系统clk 进行分频,分频器实现的是将高频时钟信号转换成低频的时钟信号,用于触发控制器、计数器和扫描显示电路。
该分频器实现的是一千分频,将一千赫兹的时钟信号分频成一赫兹的时钟信号。
图1 分频器部分原理图(2)状态机设计根据要实现的功能及各状态之间的转换经分析,正常状态下交通信号灯可以分为4个状态分别为表一中的S1、S2、S3、S4,在出现特殊情况或者在深夜时,状态转移分别是S5、S6,各状态之间持续时间详见表一,状态转移图详见图2.。
(3)显示模块设计串行连接,即每个数码管对应的引脚都连接在一起,通过控制公共端为高电平控制相应数码管的亮,灭(共阴极数码管的公共端为高电平时,LED 不亮;共阳极的公共端为低电平时,LED 不亮) 五、实训步骤及仿真结果CNT1=CNT1=图 2 交通信号灯状态转1.实训步骤·设计输入:使用原理图、硬件描述语言(VHDL、AHDL、VerilogHDL)等设计文件对待设计的功能做设计图。
·综合:将硬件描述语言翻译成由逻辑门、触发器、寄存器等组成的电路结构。
·布局布线:利用综合后的网表文件,将逻辑和时序要求映射到目标器件中,进行目标器件逻辑资源的分配、布线、互联等。
·仿真:利用软件,验证设计的正确性。
仿真分为功能仿真和时序仿真,功能仿真仅验证逻辑功能,不包含时延信息。
·时序分析:观察和报告时序信息,并可进行时序约束。
主要参数有:建立时间(tsu)、保持时间(th)、时钟至输出延时(tco)、引脚至引脚延时(tpd)、最大时钟频率(fmax)等.·编程和配置:设计流程的最后一步,将软件产生的配置文件下载到目标器件中,进行硬件的实现和验证。
2.时序仿真3.硬件仿真在完成设计输入及成功编译、仿真后经编译无错后,设置pins锁定引脚,(详见管脚分配表2),经过硬件检验,可以实现如下功能:1)在交通信号灯开始工作前,等待系统指令。
2)按下key0键,系统切换至正常工作,交通信号灯在正常的顺序下开始闪烁,同时数码管可以实时显示剩余等待时间。
3)按下key1键,系统切换至红灯状态,目的为了在交通事故出现后及时进行事故处理。
4)按下key2键,系统切换至深夜工作状态,全部亮黄灯提醒,过往车辆慢速行驶。
六、实训总结在这次EDA实训中,我们充分运用了上学期学习的知识,将分频器和状态机等知识融入其中,实现了更加智能化的交通灯系统设计,程序代码更易扩展。
通过一个星期的实训,我们对于交通灯的控制原理有了清晰的了解,进一步加深了EDA程序设计的熟练程度。
对Quartus II 8.0 仿真工具使用更加得心应手。
这次实训,我们分工明确,积极配合,体现了团队协作的精神,圆满完成了实训任务。
附录(十字路口交通灯程序代码)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity jtd isport( clock : in std_logic;reset,reset1,reset2 : in std_logic;seg_out : out std_logic_vector(7 downto 0); q_out : out std_logic_vector(7 downto 0); w:out std_logic_vector(7 downto 0)end ;architecture bhv of jtd iscomponent qhz_anyport( clk: in std_logic;Q: out std_logicend component;component qhz_any1port( clk: in std_logic;Q: out std_logicend component;component jsq0123port( clk: in std_logic;Q: out std_logic_vector(1 downto 0));end component;component mux21aport( s : in std_logic_vector(1 downto 0);a,b,c,d : in std_logic_vector(7 downto 0); y : out std_logic_vector(7 downto 0);w1:out std_logic_vector(7 downto 0)end component;component trafficport( clk : in std_logic;rst,rst1 ,rst2: in std_logic;times : out integer range 0 to 100;q : out std_logic_vector(7 downto 0);shi0,shi1: out std_logic_vector(7 downto 0); ge0,ge1: out std_logic_vector(7 downto 0) end component;signal m1 : std_logic;signal m2 : std_logic;signal m3 : integer range 0 to 100;signal m4 : std_logic_vector(7 downto 0);signal m5 : std_logic_vector(7 downto 0);signal m6 : std_logic_vector(1 downto 0);signal m7 : std_logic_vector(7 downto 0);signal m8 : std_logic_vector(7 downto 0);beginu1 : qhz_any port map(clk=>clock,Q=>m1);u2 : qhz_any1 port map(clk=>clock,Q=>m2);u3 : jsq0123 port map(clk=>m2,Q=>m6);u4 : traffic port map(clk=>m1,q=>q_out,rst=>reset,rst1=>reset1,rst2=>reset2,ge0=>m4,shi0=> m5,ge1=>m7,shi1=>m8);u5 : mux21a port map(a=>m4,b=>m5,c=>m7,d=>m8,y=>seg_out,s=>m6,w1=>w);end bhv;-------------miao fenpin-----------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qhz_any isgeneric(n:integer:=20000);port( clk: in std_logic;Q: out std_logic);end qhz_any;architecture bhv of qhz_any isbeginprocess(clk)variable cout:integer:=0;beginif clk'event and clk='1' thenif cout<(n/2) thenQ<='1'; cout:=cout+1;elsif cout<(n-1) thenQ<='0'; cout:=cout+1;else cout:=0;end if;end if;end process;end bhv;-------------jishuqi0123-----------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jsq0123 isport( clk: in std_logic;Q: out std_logic_vector(1 downto 0));end jsq0123;architecture bhv of jsq0123 issignal cqi:std_logic_vector(1 downto 0);beginprocess(clk)beginif clk'event and clk='1' thencqi<=cqi+1;end if;end process;Q<=cqi;end bhv;----------------scan fenpin----------- library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qhz_any1 isgeneric(n:integer:=20);port( clk: in std_logic;Q: out std_logic);end qhz_any1;architecture bhv of qhz_any1 isbeginprocess(clk)variable cout:integer:=0;beginif clk'event and clk='1' thenif cout<(n/2) thenQ<='1'; cout:=cout+1;elsif cout<(n-1) thenQ<='0'; cout:=cout+1;else cout:=0;end if;end if;end process;end bhv;--------------------traffic-------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity traffic isport( clk : in std_logic;rst ,rst1,rst2: in std_logic;times : out integer range 0 to 100;q : out std_logic_vector(7 downto 0);shi0,ge0,ge1,shi1:out std_logic_vector(7 downto 0)); end traffic;architecture bhv of traffic issignal cnt0,cnt1 : integer range 0 to 100;signal l10,l20,l11,l21:integer range 0 to 9;type state_value is (s1,s2,s3,s4,s5,s6);signal state : state_value;beginprocess(clk,rst,rst1,rst2)beginif rst='0' thenstate<=s1; --S,N travel E,W stop cnt0<=11;cnt1<=7;q<="10000001";elsif rst1='0' thenstate<=s5;cnt1<=00;cnt0<=00;q<="10001000";elsif rst2='0' thenstate<=s6;cnt1<=00;cnt0<=00;q<="01000010";elsif rising_edge(clk) thencase state iswhen s1=> --s1if cnt1=0 thenstate<=s2;q<="10000010";cnt0<=3;cnt1<=3;elsestate<=s1;cnt0<=cnt0-1;cnt1<=cnt1-1;end if;when s2=> --s2 if cnt1=0 thenstate<=s3;q<="00100100";cnt1<=11;cnt0<=7;elsestate<=s2;cnt1<=cnt1-1;cnt0<=cnt0-1;end if;when s3=> --s3 if cnt1=4 thenstate<=s4;q<="01000100";cnt0<=3;cnt1<=3;elsestate<=s3;cnt1<=cnt1-1;cnt0<=cnt0-1;end if;when s4=> --s4 if cnt1=0 thenstate<=s1;cnt0<=11;cnt1<=7;q<="10000001";elsestate<=s4;cnt0<=cnt0-1;cnt1<=cnt1-1;end if;when s5=> --s4state<=s5;cnt0<=00;cnt1<=00;when s6=> --s4 state<=s6;cnt0<=00;cnt1<=00;end case;--end if;end if;end process;l10<=cnt0/10; l20<=cnt0 rem 10;---- JI SUAN SHI WEI ; GE WEIl11<=cnt1/10; l21<=cnt1 rem 10;---- JI SUAN SHI WEI ; GE WEI process(l10)begincase l10 is ------- XIAN SHI SHI WEIwhen 0=>shi0<="00111111"; --0when 1=>shi0<="00000110"; --1when 2=>shi0<="01011011"; --2when 3=>shi0<="01001111"; --3when 4=>shi0<="01100110"; --4when 5=>shi0<="01101101"; --5when 6=>shi0<="01111101"; --6when 7=>shi0<="00000111"; --7when 8=>shi0<="01111111"; --8when 9=>shi0<="01101111"; --9end case;end process;process(l20)begincase l20 is -------- XIAN SHI GE WEIwhen 0=>ge0<="00111111"; --0when 1=>ge0<="00000110"; --1when 2=>ge0<="01011011"; --2when 3=>ge0<="01001111"; --3when 4=>ge0<="01100110"; --4when 5=>ge0<="01101101"; --5when 6=>ge0<="01111101"; --6when 7=>ge0<="00000111"; --7when 8=>ge0<="01111111"; --8when 9=>ge0<="01101111"; --9end case;end process;process(l11)begincase l11 is ------- XIAN SHI SHI WEI when 0=>shi1<="00111111"; --0when 1=>shi1<="00000110"; --1when 2=>shi1<="01011011"; --2when 3=>shi1<="01001111"; --3when 4=>shi1<="01100110"; --4when 5=>shi1<="01101101"; --5when 6=>shi1<="01111101"; --6when 7=>shi1<="00000111"; --7when 8=>shi1<="01111111"; --8when 9=>shi1<="01101111"; --9end case;end process;process(l21)begincase l21 is -------- XIAN SHI GE WEI when 0=>ge1<="00111111"; --0when 1=>ge1<="00000110"; --1when 2=>ge1<="01011011"; --2when 3=>ge1<="01001111"; --3when 4=>ge1<="01100110"; --4when 5=>ge1<="01101101"; --5when 6=>ge1<="01111101"; --6when 7=>ge1<="00000111"; --7when 8=>ge1<="01111111"; --8when 9=>ge1<="01101111"; --9end case;end process;end bhv;---------------------------2 xuan 1-----------library ieee;use ieee.std_logic_1164.all;entity mux21a isport( s : in std_logic_vector(1 downto 0);a,b,c,d : in std_logic_vector(7 downto 0);y : out std_logic_vector(7 downto 0);w1:out std_logic_vector(7 downto 0)end mux21a;architecture one of mux21a isbeginprocess(a,b,s)begincase s iswhen "00" => y<=a; w1<="10111111";when "01"=>y<=b; w1<="01111111";when "10"=>y<=c;w1<="11111011";when "11"=>y<=d;w1<="11110111";end case;end process;end one;希望以上资料对你有所帮助,附励志名言3条:1、宁可辛苦一阵子,不要苦一辈子。