1、EDA技术应用技术应用南京信息职业技术学院南京信息职业技术学院 电子信息学院电子信息学院P6 交通灯控制系统的设计交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计6.1 6.1 有限状态机的设计原理有限状态机的设计原理6.2 6.2 单向交通灯控制系统的设计单向交通灯控制系统的设计6.3 6.3 双向交通灯控制系统的设计双向交通灯控制系统的设计习题习题6.1 有限状态机的设计原理有限状态机的设计原理n 实际设计中比较复杂的时序逻辑电路的设计通常采用有限状态机实现。n 有限状态机的特征:1)用有限个状态概括系统整个工作过程;2)各状态可根据条件进行相
2、互转换;3)各状态均有相应输出信号;4)系统复位时指定具体初始状态。P6 P6 交通灯控制系统的设计交通灯控制系统的设计EDA技术应用技术应用n 根据是否具有外部输入控制信号,有限状态机可以分为:1)米勒型(mealy)状态机,状态的转移由当前状态、时钟与外部输入控制信号共同控制;2)摩尔型(moore)状态机,状态的转移只受当前状态和时钟的控制。EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计6.1 有限状态机的设计原理有限状态机的设计原理n 该状态机共有3个状态(S0、S1、S2),X为外部控制信号,Y为输出控制信号。EDA技术应用技术应用P6 P6 交通灯控制系
3、统的设计交通灯控制系统的设计6.1 有限状态机的设计原理有限状态机的设计原理LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mealy IS PORT (x,clk:IN BIT;y:OUT BIT);END mealy;ARCHITECTURE behave OF mealy IS TYPE fmst IS (s0,s1,s2);SIGNAL state:fmst;EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计6.1 有限状态机的设计原理有限状态机的设计原理 BEGINP1:PROCESS(clk)BEGIN IF
4、clkevent AND clk=1THEN CASE state IS WHEN s0=IF x=0 THEN state=s0;ELSE state IF x=0 THEN state=s0;ELSE state IF x=0 THEN state=s0;ELSE state y IF state=s2 THEN y=1;ELSE y=0;END IF;END CASE;END PROCESS P2;END behave;EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计6.1 有限状态机的设计原理有限状态机的设计原理 设计一个单方向交通灯控制系统;设计指标:1)控
5、制红黄绿三盏灯交替工作,数码管显示倒计时时间;2)绿灯时间为30秒(S0),黄灯时间为3秒(S1),红灯时间为20秒(S2);3)能通过按键复位;EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计6.2 单向交通灯控制系统的设计单向交通灯控制系统的设计 分频模块:对外部时钟信号进行分频得到1Hz信号;系统控制模块:控制交通灯状态的转换,并输出相应控制信号;显示模块:控制数码管及发光二极管;6.2 单向交通灯控制系统的设计单向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计 外部输入脉冲为12MHz,分频后输出信号为1Hz。(
6、分频模块设计详见数字钟设计部分)6.2 单向交通灯控制系统的设计单向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计 系统控制模块由倒计时模块和状态机模块构成;倒计时模块主要实现数码管倒计时信号的控制;状态机模块主要实现交通灯各状态间的转换。6.2 单向交通灯控制系统的设计单向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UN
7、SIGNED.ALL;ENTITY SM ISPORT(CLK:IN STD_LOGIC;CR:IN STD_LOGIC;LAMP:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);LEDM:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);LEDS:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END SM;库文件定义实体6.2 单向交通灯控制系统的设计单向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计ARCHITECTURE BEHAVIORAL OF SM ISTYPE STATES IS
8、(S2,S1,S0);SIGNAL STATE:STATES:=S0;SIGNAL NEXT_STATE:STATES:=S0;SIGNAL SEC:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL MIN:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL DATAS:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL DATAM:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL LIGHT:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL LOAD:STD_LOGIC;BEGIN定义状
9、态定义信号6.2 单向交通灯控制系统的设计单向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计倒计时结束倒计时结束转为下一状态转为下一状态倒计时结束倒计时结束为倒计时模块赋初值为倒计时模块赋初值倒计时程序倒计时程序6.2 单向交通灯控制系统的设计单向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计P1:PROCESS(CLK,CR,LOAD)BEGIN IF CR=0 THENSEC=0000;MIN=0000;ELSIF RISING_EDGE(CLK)THENIF LOAD=1 THENSEC=DA
10、TAS;MIN=DATAM;ELSEIF SEC=0000 THENSEC=1001;ELSESEC=SEC-1;END IF;IF SEC=0000 THENMIN=MIN-1;END IF;END IF;END IF;END PROCESS P1;P2:PROCESS(CLK)BEGINIF(FALLING_EDGE(CLK)THENIF(SEC=0000)AND(MIN=0000)THENLOAD=1;STATE=NEXT_STATE;ELSELOAD LIGHT=100;-GREEN 30SNEXT_STATE=S1;-NEXT YELLOWDATAM=0010;DATAS LIGHT
11、=010;-YELLOW 3SNEXT_STATE=S2;-NEXT REDDATAM=0000;DATAS LIGHT=001;-RED 20SNEXT_STATE=S0;-NEXT GREENDATAM=0001;DATAS=“1001;END CASE;END PROCESS P3;LAMP=LIGHT;LEDM=MIN;LEDS=SEC;END BEHAVIORAL;数码管采用静态显示模式,该模块功能即是将输入的8421BCD码转换为7段数码管控制信号。6.2 单向交通灯控制系统的设计单向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计LI
12、BRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LED ISPORT(DATA_IN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);-输入8421BCD码 SEG_OUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)-输出数码管段位码);END LED;ARCHITECTURE BIN27SEG OF LED ISBEGIN6.2 单向交通灯控制系统的设计单向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计显示译码程序显示译码程序6.2 单向交通灯控制系统的设计单向交
13、通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计PROCESS(DATA_IN)BEGIN SEG_OUT 0);CASE DATA_IN ISWHEN 0000=SEG_OUT SEG_OUT SEG_OUT SEG_OUT SEG_OUT SEG_OUT SEG_OUT SEG_OUT SEG_OUT SEG_OUT NULL;END CASE;END PROCESS;END BIN27SEG;6.2 单向交通灯控制系统的设计单向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计6.2 单向交通灯控制系
14、统的设计单向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计n 模仿6.2单向交通灯控制系统方法,设计双向交通灯控制系统;n 项目技术指标:1)设计一个双向(南北向、东西向)交通灯控制系统;2)控制南北向和东西向红黄绿三盏灯交替工作,两个二位数码管显示倒计时时间;3)要求南北向和东西向红黄绿灯时间相互协调。6.3 双向交通灯控制系统的设计双向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计n 交通灯通常有东、西、南、北四个方向,其中东西方向完全一致,南北方向也完全一致,因此只需两个控制器来控制;n 每组
15、交通灯共有红、黄、绿三盏灯和数码管组成,按绿灯黄灯红灯绿灯顺序变化,并通过数码管显示倒计时时间;n 交通灯控制系统可简单看作摩尔型状态机,可分为4种不同状态,详见下表;6.3 双向交通灯控制系统的设计双向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计状 态东 西 方 向南 北 方 向绿 黄 红绿 黄 红11 0 00 0 120 1 00 0 130 0 11 0 040 0 10 1 06.3 双向交通灯控制系统的设计双向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计 交通灯时间分配:1)东西向绿
16、灯时间30秒,黄灯3秒,红灯20秒;2)南北向红灯时间33秒,黄灯3秒,绿灯17秒。6.3 双向交通灯控制系统的设计双向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计 交通灯状态:1)东西向绿灯(S0);2)东西向黄灯(S1);3)南北向绿灯(S2);4)南北向黄灯(S3)。6.3 双向交通灯控制系统的设计双向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE
17、 IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SM4 ISPORT(CLK:IN STD_LOGIC;-时钟信号时钟信号 CR:IN STD_LOGIC;-复位信号复位信号 LAMP:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);-红黄绿灯信号红黄绿灯信号 WELED1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-东西向倒计时十位信号东西向倒计时十位信号 WELED0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-东西向倒计时个位信号东西向倒计时个位信号 NSLED1:OUT STD_LOGIC_VEC
18、TOR(3 DOWNTO 0);-南北向倒计时十位信号南北向倒计时十位信号 NSLED0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)-南北向倒计时个位信号南北向倒计时个位信号);END SM4;库文件定义实体6.3 双向交通灯控制系统的设计双向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计ARCHITECTURE BEHAVIORAL OF SM4 ISTYPE STATES IS(S3,S2,S1,S0);SIGNAL STATE:STATES:=S0;SIGNAL NEXT_STATE:STATES:=S0;SIGNAL
19、 COUNT0:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL COUNT1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL CDATA0:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL CDATA1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL WESEC0:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL WESEC1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL WEDATA0:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGN
20、AL WEDATA1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL NSSEC0:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL NSSEC1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL NSDATA0:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL NSDATA1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL LIGHT:STD_LOGIC_VECTOR(5 DOWNTO 0);SIGNAL LOAD:STD_LOGIC;BEGIN定义状态定义信号6.3 双向交通灯
21、控制系统的设计双向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计P1:PROCESS(CLK,CR,LOAD)BEGINIF CR=0 THENCOUNT0=0000;COUNT1=0000;ELSIF RISING_EDGE(CLK)THENIF LOAD=1THENCOUNT0=CDATA0;COUNT1=CDATA1;ELSEIF COUNT0=0000 THEN COUNT0=1001;ELSECOUNT0=COUNT0-1;END IF;IF COUNT0=0000THENCOUNT1=COUNT1-1;END IF;END IF;EN
22、D IF;END PROCESS P1;倒计时器复位倒计时结束为倒计时模块赋初值倒计时程序6.3 双向交通灯控制系统的设计双向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计P2:PROCESS(CLK)BEGINIF(FALLING_EDGE(CLK)THENIF(COUNT0=0000)AND(COUNT1=0000)THENLOAD=1;STATE=NEXT_STATE;ELSELOADLIGHT=100001;NEXT_STATE=S1;CDATA1=0010;CDATA0LIGHT=010001;NEXT_STATE=S2;CDATA1=
23、0000;CDATA0LIGHT=001100;NEXT_STATE=S3;CDATA1=0001;CDATA0LIGHT=001010;NEXT_STATE=S0;CDATA1=0000;CDATA0 WEDATA1=0010;WEDATA0=1001;NSDATA1=0011;NSDATA0 WEDATA1=0000;WEDATA0 WEDATA1=0001;WEDATA0=1001;NSDATA1=0001;NSDATA0 NSDATA1=0000;NSDATA0=0010;END CASE;END PROCESS P4;根据不同状态为两个方向的倒计时计数器赋初值东西向绿灯(S0)东西向
24、黄灯(S1)南北向绿灯(S2)南北向黄灯(S3)6.3 双向交通灯控制系统的设计双向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计P5:PROCESS(CLK,LOAD,STATE)BEGINIF RISING_EDGE(CLK)THENIF(LOAD=1)AND(NOT(STATE=S3)THENWESEC0=WEDATA0;WESEC1=WEDATA1;ELSEIF WESEC0=0000 THENWESEC0=1001;ELSEWESEC0=WESEC0-1;END IF;IF WESEC0=0000THENWESEC1=WESEC1-1;
25、END IF;END IF;END IF;END PROCESS P5;东西向交通灯倒计时器6.3 双向交通灯控制系统的设计双向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计P6:PROCESS(CLK,LOAD)BEGINIF RISING_EDGE(CLK)THENIF(LOAD=1)AND(NOT(STATE=S1)THENNSSEC0=NSDATA0;NSSEC1=NSDATA1;ELSEIF NSSEC0=0000 THENNSSEC0=1001;ELSENSSEC0=NSSEC0-1;END IF;IF NSSEC0=0000THEN
26、NSSEC1=NSSEC1-1;END IF;END IF;END IF;END PROCESS P6;南北向交通灯倒计时器6.3 双向交通灯控制系统的设计双向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计LAMP=LIGHT;WELED1=WESEC1;WELED0=WESEC0;NSLED1=NSSEC1;NSLED0=NSSEC0;END BEHAVIORAL;将寄存器信号赋给输出结束结构体6.3 双向交通灯控制系统的设计双向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计6.3 双向交通灯控制
27、系统的设计双向交通灯控制系统的设计EDA技术应用技术应用P6 P6 交通灯控制系统的设计交通灯控制系统的设计EDA技术应用技术应用习 题P6 P6 交通灯控制系统的设计交通灯控制系统的设计十字路口的示意图如图十字路口的示意图如图6-16-1所示,在主干道和支干所示,在主干道和支干道的两个方向上都安装有红、黄、绿三色信号灯,道的两个方向上都安装有红、黄、绿三色信号灯,CxCx和和CyCy分别是安装在主干道和支干道上的传感器,分别是安装在主干道和支干道上的传感器,输出高电平说明有车需要通过,设计要求为:输出高电平说明有车需要通过,设计要求为:1 1、如果只有一个方向有灯时,则保持该方向畅、如果只有
28、一个方向有灯时,则保持该方向畅通;当两个方向有车时,主干道和支干道交替通通;当两个方向有车时,主干道和支干道交替通行。行。2 2、在只有主干道有车时,主干道亮绿灯、支干道、在只有主干道有车时,主干道亮绿灯、支干道亮红灯;当只有支干道有车时,支干道亮红灯、主亮红灯;当只有支干道有车时,支干道亮红灯、主干道亮绿灯。干道亮绿灯。3 3、在两个方向都有车时,轮流点亮绿灯和红灯,、在两个方向都有车时,轮流点亮绿灯和红灯,主干道每次亮绿灯主干道每次亮绿灯40s40s,支干道每次亮绿灯,支干道每次亮绿灯20s20s,在,在由绿灯转红灯之间亮由绿灯转红灯之间亮5s5s的黄灯。的黄灯。EDA技术应用技术应用习
29、题P6 P6 交通灯控制系统的设计交通灯控制系统的设计图图6-26-2为交通灯控制系统结构框图,控制系为交通灯控制系统结构框图,控制系统由控制器和定时器两部分构成,定时器统由控制器和定时器两部分构成,定时器用于亮灯时间控制。用于亮灯时间控制。CNTCNT是定时的值,是定时的值,LDLD是是定时值的同步预置信号,高电平有效,定时值的同步预置信号,高电平有效,STST是定时器的状态信号,当定时结束时,是定时器的状态信号,当定时结束时,STST输出为输出为1 1,clkclk是周期为秒的时钟信号,是周期为秒的时钟信号,resetreset是复位信号,低电平有效。是复位信号,低电平有效。根据交通灯控制系统的技术要求和结构图,根据交通灯控制系统的技术要求和结构图,完成以下内容:完成以下内容:1 1)画出控制器的)画出控制器的ASMASM图;图;2 2)用)用VHDLVHDL语言对定时器和控制器进行描述;语言对定时器和控制器进行描述;3 3)设计交通灯控制系统的顶层原理图;)设计交通灯控制系统的顶层原理图;4 4)完成实际电路制作。)完成实际电路制作。