eda交通信号灯控制系统设计

合集下载

EDA交通灯课程设计--CPLD实现交通灯控制系统

EDA交通灯课程设计--CPLD实现交通灯控制系统

CPLD实现交通灯控制系统一.预期功能分别成东西走向和南北走向的主干道和支干道,其交通信号灯,分别实现一下状态:S0:支干道没有车辆行驶,支干道绿灯,支干道红灯S1:支干道有车辆行驶,支干道绿灯,支干道红灯S2:主干道黄灯,支干道绿灯S3:主干道红灯,支干道绿灯S4:主干道红灯,支干道黄灯状态亮灯停留时间S0 G2,R2 50秒S1 G2,R2 45秒S2 Y1,G2 5秒S3 R1,G2 25秒S4 R1,Y2 5秒二.原理框图根据设计要求和系统所具有的功能,并参考相关的文献资料,经行方案设计,可以画出如下图所示的交通信号灯控制器的系统框图。

1kHZ根据以上设计思路,可以得到如下的顶层文件原理图顶层文件的实体图:三.单元模块设计与仿真时钟分频模块系统的动态扫描需要1HZ的脉冲,而系统时钟计时模块需要1HZ的脉冲。

分频模块主要为系统提供所需的时钟计时脉冲。

该模块将1kHZ的脉冲信号进行分频,产生1S的方波,作为系统时钟计时信号。

其实体模块如下:将END TIME改为5SCLK采用系统的1KHZ的时钟脉冲仿真波形如下:可以看到能够得到1s的时钟脉冲交通灯控制及计时模块控制模块根据外部输入信号和计时模块产生的输出信号,产生系统的状态机,控制其他部分协调工作。

计时模块用来设定主干道和支干道计时器的初值,并为扫描显示译码模块提供倒计时时间。

控制及计时模块采用状态机进行设计,可以定义出5种状态,分别为S0:主干道绿灯,支干道红灯且没有车辆行驶;S1:主干道绿灯,支干道红灯或支干道有车辆驶入;S2:主干道黄灯,支干道红灯;S3:主干道红灯,支干道绿灯;S4:主干道红灯,支干道黄灯。

利用CASE语句定义状态的转换方式及时间的变换方式,达到主干道绿灯亮45秒,支干道绿灯亮25秒,黄灯亮5秒的设计要求。

其实体模块如下:CAR为支干道车辆检测开关在支干道有车的情况下,模块可以进行减计时CLK1S为1S的时钟脉冲TIME1H、TIME1L、TIME2H、TIME2L分别为主干道时钟高位、主干道时钟低位、支干道时钟高位、支干道时钟低位LED为LED灯发光情况,分别为主干道绿灯、主干道黄灯、主干道红灯、支干道绿灯、主干道黄灯、主干道红灯Count的总的系统时间,用来改变系统的状态仿真波形如下:通过仿真可以看到:当主干道绿灯,支干道红灯时,主干道倒计时高位置数0100,低位置数0101;支干道高位置数0101,低位置数0000;当主干道黄灯,支干道红灯时,主干道黄灯倒计时置数0101;支干道继续刚才的减计数;当主干道红灯,支干道绿灯时,主干道倒计时高位置数0011,低位置数0000;支干道高位置数0010,低位置数0101;当主干道红灯,支干道黄灯时,支干道黄灯倒计时置数0101;主干道继续刚才的减计数。

EDA实验课程大作业报告:设计制作一个用于十字路口的交通灯控制器

EDA实验课程大作业报告:设计制作一个用于十字路口的交通灯控制器

交通灯控制器设计一.系统功能设计要求设计制作一个用于十字路口的交通灯控制器,要求如下:(1)南北和东西方向各有一组红、绿、黄灯来指挥交通,持续时间分别为25S,20S,和5S。

(2)当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止。

(3)当特殊情况结束后,控制器恢复原来状态,继续正常运行。

(4)用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间。

二.设计原理1.交通灯控制器的状态转换根据题目要求将将红绿灯的状态转换列成如下表:2.设计方案1)由于交通灯需要使用2位7段LED数码管指示通行剩余时间,故采用LED动态扫描方式显示当前时间。

频率设定CLK1k对应的频率为50MHZ。

2)控制模块是交通灯的核心,主要控制交通灯按工作顺序自动变换,同时控制倒计时模块工作,每当倒计时回零时,控制模块接收到一个计时信号,从而控制交通灯进入下一个工作状态。

3)每个方向有一组2位倒计时器模块,用以显示该方向交通灯剩余的点亮时间。

4)显示模块由两部分组成,一是由七段数码管组成的倒计时显示器,每个方向两个七段数码管;二是由发光二极管代替的交通灯,每个方向3个发光二极管。

三.变量符号说明其中,CLK1K为系统时钟信号输入端,SN为禁止通行信号输入通行信号输入端,light0为东西红灯信号输出端,light1为东西黄灯信号输出端,light2为东西绿灯信号输出端,light3为南北红灯信号输出端,light4为南北黄灯信号输出端,light5为南北绿灯信号输出端,led1、led2、led3、led4为数码管地址选择信号输出端。

四.代码说明library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Hongld ISport (clk1k,SN:in std_logic; --SN紧急情况led1, led2, led3, led4 :out std_logic_vector (6 downto 0);--显示管显示时间用light:out std_logic_vector (5 downto 0)); --红绿黄灯end Hongld;architecture traffic1 of Hongld ISsignal S:std_logic_vector (1 downto 0); --状态signal DXT:std_logic_vector(7 downto 0):=X"01"; --东西方向时间signal NBX:std_logic_vector(7 downto 0):=X"01"; --南北方向时间signal ART,AGT,AYT,BRT,BGT,BYT: std_logic_vector(7 downto 0); --红绿黄灯信号signal temp: integer range 0 to 49999999; --产生1s计数器时计数signal clk: std_logic;beginART<="00100101";AGT<="00100000";AYT<="00000100";BRT<="00100101";BGT<="00100000";BYT<="00000100";process(clk1k) -- 选频率为50MHZ beginif (clk1k'event and clk1k='1') thenif temp=49999999 thentemp<=0;clk<='1';elsetemp<=temp+1;clk<='0';end if;end if;end process;process(clk,DXT,NBX) --状态转换进程beginif clk'event and clk ='1' thenif(DXT ="00000001")OR (NBX = "00000001") then S<=S+1;else S<=S;end if; --状态转换结束end if;end process;process (clk,SN,S) --倒计时模块beginif SN = '1' then DXT<=DXT; NBX<=NBX;elseif clk'event and clk='1' thenif (DXT="0000000") OR (NBX="00000000") thencase S ISwhen "00"=>DXT<=ART; NBX<=BGT; --南北红灯、东西绿灯when "01"=>NBX<=BYT; --南北红灯、东西黄灯when "10"=>DXT<=AGT; NBX<=BRT; --南北绿灯、东西红灯when "11"=>DXT<=AYT; --南北黄灯、东西红灯when others=>NULL;end case;end if;if DXT/="00000000" thenif DXT(3 downto 0)= "0000" thenDXT(3 downto 0)<="1001";DXT(7 downto 4)<=DXT(7 downto 4)-1;else DXT(3 downto 0)<=DXT(3 downto 0)-1;DXT(7 downto 4)<=DXT(7 downto 4);end if;end if;if NBX/="00000000" thenif NBX(3 downto 0)="0000" thenNBX(3 downto 0)<="1001";NBX(7 downto 4)<=NBX(7 downto 4)-1;else NBX(3 downto 0)<=NBX(3 downto 0)-1;NBX(7 downto 4)<=NBX(7 downto 4);end if;end if;end if;end if;end process; --倒计时模块结束process(DXT,NBX,S,SN) --显示模块begincase NBX(3 downto 0) iswhen "0000"=>led1<="1000000";when "0010"=>led1<="0100100"; when "0011"=>led1<="0110000"; when "0100"=>led1<="0011001"; when "0101"=>led1<="0010010"; when "0110"=>led1<="0000010"; when "0111"=>led1<="1111000"; when "1000"=>led1<="0000000"; when "1001"=>led1<="0010000"; when others=>led1<="1111111"; end case;case NBX(7 downto 4) iswhen "0000"=>led2<="1000000"; when "0001"=>led2<="1111001"; when "0010"=>led2<="0100100"; when "0011"=>led2<="0110000"; when "0100"=>led2<="0011001"; when "0101"=>led2<="0010010"; when "0110"=>led2<="0000010"; when "0111"=>led2<="1111000"; when "1000"=>led2<="0000000"; when "1001"=>led2<="0010000"; when others=>led2<="1111111"; end case;case DXT(3 downto 0) iswhen "0000"=>led3<="1000000"; when "0001"=>led3<="1111001"; when "0010"=>led3<="0100100"; when "0011"=>led3<="0110000"; when "0100"=>led3<="0011001"; when "0101"=>led3<="0010010"; when "0110"=>led3<="0000010"; when "0111"=>led3<="1111000"; when "1000"=>led3<="0000000"; when "1001"=>led3<="0010000"; when others=>led3<="1111111"; end case;case DXT(7 downto 4) iswhen "0000"=>led4<="1000000"; when "0001"=>led4<="1111001"; when "0010"=>led4<="0100100";when "0100"=>led4<="0011001";when "0101"=>led4<="0010010";when "0110"=>led4<="0000010";when "0111"=>led4<="1111000";when "1000"=>led4<="0000000";when "1001"=>led4<="0010000";when others=>led4<="1111111";end case;if SN ='1' then light<="001001";elsecase S ISwhen "00"=>light<="010001";when "01"=> light <="100001";when "10"=> light <="001010";when "11"=> light <="001100";when others=>NULL;end case;end if;end process;end traffic1;五.仿真波形图仿真时序波形图。

EDA交通灯控制器课程设计

EDA交通灯控制器课程设计

交通灯控制器课程设计该交通信号控制器控制十字路甲、乙两条道路的红、黄和绿三色灯,指挥车辆和行人安全通行。

功能要求如下:1.只有在小路上发现汽车时,高速公路上的交通灯才可能变成红灯。

2.当汽车行驶在小路上时,小路的交通灯保持为绿灯,但不能超过给定的时间。

(20s)3.高速公路灯转为绿色后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定的时间内保持绿灯。

(60s)。

设计如下:——1hz分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fen_pin1 isport(clk100hz:in std_logic;clk1hz:out std_logic);end fen_pin1;architecture bhv of fen_pin1 issignal qan:std_logic_vector(3 downto 0); signal qbn:std_logic_vector(3 downto 0); signal cin:std_logic;beginprocess(clk100hz)beginif(clk100hz'event and clk100hz='1')thenif qan="1001"then qan<="0000";cin<='1';else qan<=qan+1;cin<='0';end if;end if;end process;process(clk100hz,cin)beginif(clk100hz'event and clk100hz='1')thenif cin='1' thenif qbn="1001" then qbn<="0000";else qbn<=qbn+1;end if ;end if ;end if ;end process;process(qan,qbn)beginif (qan="1001"and qbn="1001")then clk1hz<='1'; else clk1hz<='0';end if;end process;end bhv;——2hz分频器library ieee;use ieee.std_logic_1164.all;entity fen_pin2 isport (clk100hz:in std_logic;clk2hz:out std_logic);end fen_pin2;architecture bhv of fen_pin2 isbeginprocess(clk100hz)variable cnt:integer range 0 to 24;variable tmp:std_logic;beginif(clk100hz'event and clk100hz='1')thenif cnt=24 thencnt:=0;tmp:=not tmp;elsecnt:=cnt+1;end if;end if;clk2hz<=tmp;end process;end bhv;——主干道控制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'thencase state iswhen green=>if a='0'thenth:="0101";tl:="1001";a:='1';ga<='1';ra<='0';ya<='0';elseif not(th="0000"and tl="0001")thenif tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;elseth:="0000";tl:="0000";a:='0';state:=red;end if;end if;when red=>if a='0'thenth:="0001";tl:="1001";a:='1';ra<='1';ya<='0';ga<='0';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';ra<='0';ga<='0';state:=yellow2;end if;end if;when yellow2=>if a='0'thenth:="0000";tl:="1001";a:='1';ya<='1';ga<='0';ra<='0';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;tl:=tl-1;end if;elseth:="0000";tl:="0000";ga<='0';ra<='0';ya<='0';a:='0';state:=green;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);beginprocess(clk)variable a:std_logic;variable th,tl:std_logic_vector(3 downto 0);variable state:rgy;beginif clk'event and clk='1'thencase state iswhen yellow1=>if a='0'thenth:="0000";tl:="0100";a:='1';yb<='1';gb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';state:=green;end if;end if;when green=>if a='0'thenth:="0001";tl:="1001";a:='1';gb<='1';rb<='0';yb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';state:=yellow2;end if;end if;when red=>if a='0'thenth:="0101";tl:="0100";a:='1';yb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';state:=yellow1;end if;end if;when yellow2=>if a='0'thenth:="0000";tl:="0100";a:='1';yb<='1';gb<='0';rb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="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;——反馈器library ieee;use ieee.std_logic_1164.all;entity smen isport( sm ,re,gr,ye:in std_logic;jinji:out std_logic);end smen;architecture se of smen isbeginprocess isbeginif(sm='1' and re='0' and gr='0' and ye='0') then jinji<='1'; elsejinji<='0';end if;end process;end se;——消抖电路library ieee;use ieee.std_logic_1164.all;entity xiaodou isport(jinji,clk1hz:in std_logic;b:out std_logic);end xiaodou;architecture bhv of xiaodou issignal temp1:std_logic;beginprocess(clk1hz,jinji)variable temp2:std_logic;beginif(clk1hz'event and clk1hz='0')thentemp1<=jinji;temp2:=not temp1;end if;b<=temp1 and temp2 and clk1hz;end process;end bhv;——状态转换library ieee;use ieee.std_logic_1164.all;entity no isport(a:in std_logic;en:out std_logic);end no;architecture no_arc of no isbeginprocess(a)variable tmp:std_logic;beginif(a'event and a='1')thentmp:=not tmp;end if;en<=tmp;end process;end no_arc;——mux4llibrary ieee;use ieee.std_logic_1164.all;entity mux41 isport(sel:in std_logic_vector(2 downto 0);d0,d1,d2,d3:in std_logic_vector(3 downto 0); q:out std_logic_vector(3 downto 0);so:out std_logic_vector(1 downto 0));end mux41;architecture bhv of mux41 isbeginprocess(sel)begincase sel iswhen"100"=>q<=d2;so<="00"; when"101"=>q<=d3;so<="01"; when"000"=>q<=d0;so<="10";when others=>q<=d1;so<="11";end case;end process;end bhv;——译码器library ieee;use ieee.std_logic_1164.all;entity dec7s isport(d:in std_logic_vector(3 downto 0);q0,q1,q2,q3,q4,q5,q6:out std_logic);end dec7s;architecture bhv of dec7s isbeginprocess(d)variable q:std_logic_vector(6 downto 0); begincase d iswhen"0000"=>q:="0111111"; when"0001"=>q:="0000110"; when"0010"=>q:="1011011"; when"0011"=>q:="1001111"; when"0100"=>q:="1100110"; when"0101"=>q:="1101101"; when"0110"=>q:="1111101"; when"0111"=>q:="0100111"; when"1000"=>q:="1111111"; when"1001"=>q:="1101111";when others=>q:="1111001";end case;q0<=q(0);q1<=q(1);q2<=q(2);q3<=q(3);q4<=q(4);q5<=q(5);q6<=q(6);end process;end bhv;--- - . -word 资料- 仿真图如下:Ya,ra,ga 表示主干道黄红绿灯;yb,rb,gb 表示乡村小路黄红绿灯。

EDA课程设计(交通灯控制器)

EDA课程设计(交通灯控制器)

课程设计年月日大课程设计任务书课程EDA技术课程设计题目交通灯控制器专业姓名学号主要内容、基本要求、主要参考资料等主要内容:设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。

基本要求:1、红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号,实验电路用逻辑开关代替。

2、主干道处于常允许通行的状态,支干道有车来时才允许通行。

主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。

3、主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路,选择1HZ时钟脉冲作为系统时钟。

4、在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。

主要参考资料:[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.[2] 康华光主编.电子技术基础模拟部分. 北京:高教出版社,2006.[3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.完成期限2010.3.12指导教师专业负责人2010年3月8日一、总体设计思想1.基本原理计数模块、置数模块、主控制器模块和译码器模块。

置数模块将交通灯的点亮时间预置到置数电路中,计数模块以秒为单位倒计时,当计数值减为零时,主控电路改变输出状态,电路进入下一个状态的倒计时。

其中,核心部分是主控2.设计框图图一.交通灯控制系统的原理框图图二.交通灯控制器的流程图脉冲发生器 控制器 译码器甲车信号灯乙车信号灯定时器1.设计思路:在某一十字路口交叉地带,可设计东西走向的道路为甲车道,南北走向的道路为乙车道。

甲乙车道的交通灯需按交通法则来依次交替运行。

则可设计一个状态循环的逻辑电路。

2.分析系统的逻辑功能:交通灯控制系统的原理框图如图一所示。

eda交通灯控制器课程设计

eda交通灯控制器课程设计

eda交通灯控制器课程设计课程设计:EDA交通灯控制器1. 课程背景和目标:EDA交通灯控制器是使用EDA(电子设计自动化)工具进行交通灯控制系统设计的课程。

学习该课程的目标是使学生能够熟练运用EDA工具进行交通灯控制系统设计,并能够理解交通灯控制系统的原理和设计方法。

2. 课程内容和安排:(1) 交通灯控制系统原理介绍:介绍交通灯控制系统的基本原理,包括信号机、信号控制方法和交通流量检测等。

(2) EDA工具介绍:介绍常用的EDA工具,如Verilog、VHDL等,并讲解其基本使用方法。

(3) 交通灯控制器设计流程:介绍交通灯控制器的设计流程,包括需求分析、功能设计、模块设计和系统集成等。

(4) 交通灯控制器设计实践:学生通过实践项目,使用EDA工具设计交通灯控制器。

项目涵盖设计、仿真、验证和生成等环节,学生需要独立完成设计并提交设计报告。

3. 课程教学方法:(1) 理论讲解:通过课堂讲解,介绍交通灯控制系统的原理和设计方法,以及EDA工具的使用方法。

(2) 实践项目:学生通过实践项目,运用所学知识设计交通灯控制器,并进行仿真、验证和生成等环节。

(3) 讨论和案例分析:通过课堂讨论和案例分析,加深学生对交通灯控制系统的理解和应用能力。

(4) 指导和批评:教师对学生的设计进行指导和批评,帮助学生不断提高设计能力。

4. 评估方式:(1) 实践项目报告:学生独立完成实践项目,并提交设计报告,包括设计过程、仿真结果和验证结果等。

(2) 课堂测试:通过课堂测试检验学生对交通灯控制系统原理和EDA工具的理解程度。

(3) 课堂表现:评估学生的课堂出勤情况、学习态度和参与度等。

5. 参考教材:(1) 《交通信号控制原理与技术》高新泽(2) 《EDA与数字电路设计》陈骏等(3) 《数字电路与系统设计》刘敏衡等(4) 《系统设计自动化技术与EDA工具应用》杨学庆等以上是对EDA交通灯控制器课程设计的简要介绍。

课程内容涵盖了交通灯控制系统的原理和设计方法,以及EDA工具的使用方法。

EDA的交通灯控制器课程设计

EDA的交通灯控制器课程设计

EDA的交通灯控制设计一、设计背景和设计方案1)设计背景设计一个由一条支干道和一条主干道的汇合点形成的十字交叉路口的交通灯控制器,主要要求如下:1.主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。

2.主干道处于常允许状态,两支干道有车来才允许通行。

3.当主、支干道有车时,两者交替通行,主干道每次放行45s,支干道每次放行25s,在每次由亮绿灯变成亮红灯转换过程中,要亮5s黄灯作为过渡,并进行减计时显示。

2)设计方案2.1背景分析(一)、交通灯的功能是实现一个交叉口的通车控制,交通灯显示有以下4种状态:1.主干道绿灯,支干道红灯;2.主干道绿灯,支干道黄灯;3.主干道红灯,支干道绿灯;4.主干道黄灯,支干道绿灯。

(二)、支干道没车时,主干道一直亮绿灯;主干道没车时,主干道和支干道交替亮绿灯;主干道和支干道都有车时同样交替亮红绿灯。

在红绿灯交替时亮5s黄灯。

2.2方案及思路(一)分模块设计1、红、绿、黄灯控制模块,模块名JTDKZ;2、倒计时传输、控制模块XSKZ;3、倒计时45s——CNT45s;4、倒计时25s——CNT25s;5、倒计时5s——CNT05s。

6、输入、输出。

(二)模块设计思路1、JTDKZ——根据交通灯显示有4种状态,可以采用CASE语句设置选择4种状态。

设置3个输入:CLK(时钟脉冲)、SB(支干道传感器)、SM(主干道传感器)。

2、XSKZ——根据需要交通灯显示的不同数倒计时据设置4个输入使能信号:EN45(45s 倒计时使能信号)、EN25(25s倒计时使能信号)、EN05(5s倒计时使能信号);再设置5个倒计时计数数据输入信号将此时倒计时数据输出:AIN45M、AIN45B、AIN25M、AIN25B、AIN05;2个输出信号使数码管显示正在倒计时的时间。

3、CNT45S——根据倒计时计数的要求设置3个输入信号:CLK(计数脉冲)、EN45(计数使能)、SB(支干道传感器信号);2个输出DOUT45M、DOUT45B,分别用于主、支干道显示。

经典交通灯设计EDA

经典交通灯设计EDA

前言在计算机技术的推动下,20世纪末,电子技术获得了飞速的发展,现在电子产品几乎渗透到社会的各个领域,有力的推动了社会生产力的发展和社会信息化的程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

电子技术发展的基础是微电子技术的进步,表现在大规模集成电路的加工技术。

而EDA技术作为现代电子设计技术的核心,广泛应用于生活中的各个方面。

一.交通信号灯控制器的设计1.交通灯信号控制器的功能描述作为一个十字路口交通灯控制器,其东西、南北两个方向除了设置红、绿、黄三盏信号灯指示是否允许通行外,还有时钟以倒计时方式显示每条路允许通行或禁止通行的时间。

此外,当外界发生特殊状况时,还可以改变设置特殊处理。

现设计一个交通信号灯控制器,要求具有如下功能:(1)东西、南北方向有红、黄、绿指示灯,两个显示数码管分别显示东西、南北方向通行或禁止的时间;(2)信号灯亮、灭的时间可以从外界设置和修改:(3)交通信号灯正常运行的状态转换如下表所示。

表中R1、G1、Y1 分别表示东西方向亮红灯、绿灯和黄灯的时间,R2、G2、Y2分别表示南北方向亮红灯、绿灯和黄灯的时间;要求G1+Y1=R2,G2+Y2=R2。

亮灯状态由S0→S1→S2→S3→S0→S1不断循环。

表一交通灯亮灯状态转换表状态S S0 S1 S2 S3东西方向绿灯黄灯红灯亮灯时间G1 Y1 R1南北方向红灯绿灯黄灯亮灯时间R2 G2 R2当东西、南北两个方向中任何一个出现特殊情况时,可以中断正常运行,进入特殊运行状态。

此时两个方向红灯都亮,始终停止计数显示数字闪烁。

当特殊状态结束时,时钟接着计数,系统恢复正常运行。

图(1)十字路口交通图2.系统的原理框图表二交通灯控制流程表R1 G1 Y1 R2 G2 Y2 S00 1 0 1 0 0 S10 0 1 1 0 0 S2 1 0 0 0 1 0 S3 1 0 0 0 0 1 注:在本次设计中令黄灯时间一定为5S,外部输入的绿灯时间为n(n<=60),则总的计数时间范围为2n+10,计数器为减计数器。

EDA实验报告:基于VHDL语言的交通灯控制系统设计与实现

EDA实验报告:基于VHDL语言的交通灯控制系统设计与实现
(k1=0)
图为k1=0时的输出状态s1,输出恒为011110。即亮灯为R1,y2。保持时间1S。
(k2=0)
上图为k2=0时的输出状态s2,输出恒为101011。即亮灯为G1,R2。保持时间2S。
(k3=0)
上图为k3=0时的输出状态s3,输出恒为110011。即亮灯为R1,G2。保持时间1S。
四、小结及心得体会
else
if counter<5 then
next_state<=s3;
else
next_state<=s0;
end if;
end if;
end if;
end if;
end if;
end case;
end process;
ouput:process(current_state)
begin ——显示程序
begin
u1: jiaotongdeng port map(
clk=>clki,
k0=>k0,
k1=>k1,
k2=>k2,
k3=>k3,
r1=>r1,r2=>r2,g1=>g1,g2=>g2,y1=>y1,y2=>y2
);
u2: div port map(clk=>clk1,clk_out=>clki);
end if;
end if;
end if;
when s3=>
if k0='0' then
next_state<=s0;
else
if k1='0' then
next_state<=s1;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《机电传动控制》河南机电高等专科学校《VHDL程序设计》结课大作业交通信号灯控制系统设计姓名:笑嘻嘻思想专业班级:笑嘻嘻笑嘻嘻思想学号:笑嘻嘻笑嘻嘻思想任课教师:笑嘻嘻笑嘻嘻思想时间:2010-11-23成绩:交通信号灯控制系统设计应电08级1班靳晓龙任课老师:石新峰摘要:伴随着社会的发展以及人类生活水平的提高,汽车的数量的增加。

DEA 技术的发展和应用领域的扩大与深入,EDA技术在电子信息,通信,自动,控制及计算机应用等领域的重要性日益突出。

随着技术市场与人才市场对DEA的不断的增加,交通的问题日益突出,单单依靠人力来指挥交通已经不可行了,所以,设计交通灯来完成这个需求就显的越加迫切了.为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。

交通灯控制系统设计城市路口交通信号控制系统大体上分为三种类型:定周期的信号机、多时段且具有无电缆协调功能的微电脑型信号机以及联网式自适应多相位智能型信号机。

具体采用哪种类型,应根据其应用场合及特点加以确定。

其中,第一种类型以其成本低,设计简单,安装及维护方便等特点得到了广泛应用。

以下就是运用数字电子设计出的交通灯:其中红灯亮,表示该条路禁止通行;黄灯亮表示停车;绿灯亮表示允许通行。

交通灯控制器控制两个主干道交叉路口的交通,路口车辆多,直行信号、左转弯信号分开显示,a,b两个主干道的通行时间相等,其中指示直行的绿灯亮30s,指示左转弯的绿灯亮12s,绿灯变至红灯时,黄灯亮3s,以便于车辆能停在停车线内,红灯信号的最后3s相应的黄灯也同时亮,以便提示驾驶人员准备起步。

在两个主干道路口都配备传感器用来检测有无车辆通行。

当两个主干道都有车辆时,自动处于主干道a 绿灯,主干道b红灯的状态,然后轮流切换通行。

当主干道a无车辆时,自动处于主干道b绿灯,主干道a红灯的状态;反之亦然,以提高通行效率。

关键词:交通灯控制系统;分频器;信号控制器;VHDL语言目录1概述 (1)2设计要求 (4)3总体构思 (10)4各单元电路的设计和实现 (15)5功能仿真及其结果 (19)6编译、下载及调试 (25)7总结与展望 (30)参考文献 (35)1概述随着社会经济的发展,城市交通问题越来越引起人们的关注。

人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。

城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。

随着城市机动车量的不断增加,许多大城市如北京、上海、南京等出现了交通超负荷运行的情况,因此,自80年代后期,这些城市纷纷修建城市高速道路,在高速道路建设完成的初期,它们也曾有效地改善了交通状况。

然而,随着交通量的快速增长和缺乏对高速道路的系统研究和控制,高速道路没有充分发挥出预期的作用。

而城市高速道路在构造上的特点,也决定了城市高速道路的交通状况必然受高速道路与普通道路耦合处交通状况的制约。

所以,如何采用合适的控制方法,最大限度利用好耗费巨资修建的城市高速道路,缓解主干道与匝道、城区同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的主要问题。

2设计要求设计一个十字路口的交通灯控制系统,用实验平台上的LED发光二极管显示车辆通过的方向(东西和南北各一组),用数码管显示该方向的剩余时间。

要求:工作顺序为东西方向红灯亮45秒,前40秒南北方向绿灯亮,后5秒黄灯亮。

然后南北方向红灯亮45秒,前40秒东西方向绿灯亮,后5秒黄灯亮。

依次重复。

有紧急事件时允许将某方向一直开绿灯或者开红灯,另外允许特定情况两方向均为红灯,车辆禁行,比如十字路口恶性交通事故时,东西,南北两个方向均有两位数码管适时显示该方向亮灯时间。

3总体构思(1)该交通灯控制器应具备的功能设东西和南北方向的车流量大致相同,因此红、黄、绿灯的时长也相同,定为红灯45sec,黄灯5sec,绿灯40sec,同时用数码管指示当前状态(红、黄、绿)剩余时间。

另外,设计一个紧急状态,当紧急状态出现时,两个方向都禁止通行,指示红灯。

紧急状态解除后,重新计数并指示时间。

(2)实现方案一从题目中计数值与交通灯的亮灭的关系如图(1)所示4各单元电路的设计和实现(1)分频器分频器实现的是将高频时钟信号转换成底频的时钟信号,用于触发控制器、计数器和扫描显示电路。

该分频器实现的是一千分频,将一千赫兹的时钟信号分频成一赫兹的时钟信号。

(2)控制器设计控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的分位译码电路。

此外,当检测到特殊情况(HOLD=‘1’)发生时,无条件点亮红灯的二极管。

本控制器可以有两种设计方法,一种是利用时钟烟的下降沿读取前级计数器的计数值,然后作出反应;另一种则是将本模块设计成纯组合逻辑电路,不需要时钟驱动。

这两种方法各有所长,必须根据所用器件的特性进行选择:比如有些FPGA有丰富的寄存器资源,而且可用与组合逻辑的资源则相对较少,那么使用第一种方法会比较节省资源;而有些CPLD的组合逻辑资源则比较多,用第二种方法可能更好。

(3)计数器设计这里需要的计数器的计数范围为0-90。

计到90后,下一个时钟沿回复到0,开始下一轮计数。

此外,当检测到特殊情况(HOLD=‘1’)发生是,计数器暂停计数,而系统复位信号RESET则使计数器异步清零。

(4)分位译码电路设计--1因为控制器输出的到计时数值可能是1位或者2位十进制数,所以在七段数码管的译码电路前要加上分位电路(即将其分为2个1位的十进制数,如25分为2和5,7分为0和7)。

与控制器一样,分位电路同样可以由时钟驱动,也可以设计成纯组合逻辑电路。

控制器中,引入了寄存器。

分位电路用组合逻辑电路实现。

(5)分位译码电路设计—2(6)数码管驱动设计串行连接,即每个数码管对应的引脚都接在一起(如每个数码管的a引脚都接到一起,然后再接到CPLD/FPGA上的一个引脚上),通过控制公共端为高电平控制相应数码管的亮、灭(共阴极数码管的公共端为高电平时,LED不亮;共阳极的公共端为低电平时,LED不亮)。

串行法的优点在于消耗的系统资源少,占用的I/O口少,N个数码管只需要(7+N)个引脚(如果需要小数点,则是(8+N)个引脚)。

其缺点是控制起来不如并行法容易。

(7)下图为交通灯控制系统硬件框图图4:交通灯控制系统硬件框图5功能仿真及其结果根据交通灯控制器的功能与要求,将其总体电路分为分频器、信号控制器两个模块。

外部脉冲振荡器的频率选为32768kHz,经分频器分频得1Hz的信号,1Hz 信号用做信号控制器的计数脉冲,用VHDL设计组成交通灯控制器的分频器、信号控制器两个模块,在QuartusⅡ开发平台上,分别编译两个模块的VHDL程序,然后用原理图输入法形成图1所示的总体框图。

其中,Sa,Sb分别是a,b路口传感器的信号,aR,aY,aG,aLR,aLY,aLG分别代表控制主干道a的直行红灯、黄灯、绿灯,左转弯红灯、黄灯、绿灯的信号;bR,bY,bG,bLR,bLY,bLG分别代表控制主干道b的直行红灯、黄灯、绿灯,左转弯红灯、黄灯、绿灯的信号;aPR,aPG,bPR,bPG是人行道信号,enl是使能信号。

enl=0时a,b两路口红灯同时亮,便于处理特殊情况。

用QuartusⅡ对程序编译、仿真,得到的仿真波形如图2所示,经程序下载、实验验证,系统功能符合要求。

6编译、下载及调试(1)分频器的设计LIBRARYIEEE;USEIEEE.Std_Logic_1164.ALL;ENTITYFreDeviderISPORT(Clkin:INStd_Logic;Clkout:OUTStd_Logic);END;ARCHITECTUREDeviderOFFreDeviderISCONSTANTN:Integer:=499;signalcounter:Integerrange0toN;signalClk:Std_Logic;BEGINPROCESS(Clkin)beginIFrising_edge(Clkin)THENIFCounter=Nthencounter<=0;Clk<=notclk;elsecounter<=counter+1;endif;endif;endprocess;clkout<=clk;end;(2)控制设计控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段译管的分译码电路。

此外,当检测到特殊情况(Hold=‘1’)发生时,无条件点亮红色的发光二极管。

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcountrollerISPORT(Clock:INSTD_LOGIC;Hold:instd_logic;CountNum:inINTEGER RANGE0TO89;NumA,NumB:outINTEGER RANGE0TO45;RedA,GreenA,YellowA:outstd_logic;RedB,GreenB,YellowB:outstd_logic);END;ARCHITECTUREbehaviorOFCountrollerISBEGINprocess(Clock)BEGINIFfalling_edge(Clock)THENIFHold='1'THENRedA<='1';RedB<='1';GreenA<='0';GreenA<='0';YellowA<='0'; YellowB<='0'; ELSIFCountNum<=39THEN NumA<=40-CountNum; RedA<='0';GreenA<='1';YellowA<='0'; ELSIFCountNum<=44THEN NumA<=45-CountNum; RedA<='0';GreenA<='0';YellowA<='1';ELSENumA<=90-CountNum; RedA<='1';GreenA<='0';YellowA<='0'; ENDIF;IFCountNum<=44THEN NumB<=45-CountNum; RedB<='1';GreenB<='0';YellowB<='0'; ELSIFCountNum<=84THENNumB<=85-CountNum;RedB<='0';GreenB<='1';YellowB<='0';ELSeNumB<=90-CountNum;RedB<='0';GreenB<='0';YellowB<='1';ENDIF;ENDIF;ENDPROCESS;END;(3)计数器的设计这里计数器的计数范围为0—45S。

相关文档
最新文档