1、实验五 交通灯实验南昌大学实验报告学生姓名: 学 号: 6100210173 专业班级: 中兴101班实验类型: 验证 综合 设计 创新 实验日期: 2012 实验五 十字路口交通灯控制器设计一、实验目的1) 熟悉状态机的使用; 2) 熟悉多进程程序设计; 3) 熟悉实验设备和软件,掌握实验操作。 二、实验内容和要求1、一条主干道,一条乡间公路。组成十字路口,要求优先保证主干道通行。有MR(主红)、MY(主黄)、MG(主绿)、BR(乡红)、BY(乡黄)、BG(乡绿)六盏交通灯需要控制;交通灯由绿红有5秒黄灯亮的间隔时间,由红绿没有间隔时间;系统有MRBY、MRBG、MYBR、MGBR四个状态;
2、2、乡间公路右侧埋有一个传感器,当有车辆通过乡间公路时,发出请求信号SB=1,余时间S=0;主干道也有一个,当有车经过的时候,发出请求信号SM=1;3、平时系统停留在MGBR(主干道通行)状态,一旦SB信号有效,经MYBR(黄灯状态)转入MRBG(乡间公路通行)状态,但要保证MGBR的状态不得短于45s;一旦SB信号无效,系统脱离MRBG状态。随即经MRBY(黄灯状态)进入MGBR状态,即使SB信号一直有效,MRBG状态也不得长于25秒钟。三、设计思想1、程序部共分为五大模块1、五秒倒计时2、二十五秒倒计时3、四十五秒倒计时4、状态机设计5、数码管选择并分配其中有一个问题,计时时钟和数码管选择
3、不能使用一个时钟,因为数码管选择需要很高频率的时钟,而计时时钟需要1HZ时钟,因此在结构体中还有一个进程,用于把CLKS数码管选择时钟分频后得到CLK,把它用于计时时钟。2、程序设计所要达到的效果 开始,SM=0、SB=0,处于主绿从红的状态,且这时数码管不计数。若SM=1(主有车)、SB=0(从无车),状态不变;若SM=0、SB=1,此时主干道由绿变黄再变红,而从干道待主干道变红时即变绿;若SM=1、SB=1,此时数码管进行45s倒计时后,转入主黄从红的状态,计时5s后转入主红从绿的状态,计时25s后,在转入主红从黄的状态,最后计时5s后又从新回到主绿从黄的状态。若在状态进行转换的时候SM、
4、SB的状态发生了变化,即按上述SM、SB如何变化进行状态转换。3、状态转移图如下 (仅当SM=1时) SB=0 C45s MGBR MYBR SB=1 5秒后 5秒后 C5 SB=1 C25四、试验程序实验总框图-1000分频程序 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cou1 ISGENERIC(N: INTEGER :=4); -定义一个genericPORT(CLK:IN STD_LOGIC; CLK1:OUT STD_LOGIC); END cou1;ARCHITE
5、CTURE behav OF cou1 ISSIGNAL CNT :STD_LOGIC_VECTOR(9 DOWNTO 0) ;BEGINPROCESS(CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN -产生一个占空比为50%的方波 IF CNT=N/2-1 THEN CLK1=1;CNT=CNT+1; IF CNT=N-1 THEN CLK1=0;CNT=0000000000; END IF; ELSE CLK1=0;CNTMR=0; MY=0; MG=1; -状态一:主绿从红 BR=1; BY=0; BG=0; IF(SB AND SM)=1 THEN -主
6、从干道都有车时进行45s倒 IF S=45 THEN -计时,计完后转入状态二 STATE=B; CLR:=0; EN:=0; ELSE STATE=A; CLR:=1; EN:=1; END IF; ELSIF(SB AND (NOT SM)=1 THEN -主干道无车,从干道有车转到状态二 STATE=B; CLR:=0; EN:=0; ELSE STATEMR=0; MY=1; MG=0; -状态二:主黄从红 BR=1; BY=0; BG=0; IF S=5 THEN -5s倒计时,计完转入状态三 STATE=C;CLR:=0; EN:=0; ELSE STATEMR=1; MY=0;
7、MG=0; -状态三:主红从绿 BR=0; BY=0; BG=1; IF(SM AND SB)=1 THEN -主从干道都有车,25s倒计时后转入 IF S=25 THEN -状态四 STATE=D; CLR:=0; EN:=0; ELSE STATE=C; CLR:=1; EN:=1; END IF;ELSIF SB=0 THEN -若从干道此时无车,直接转入状态四 STATE=D; CLR:=0; EN:=0; ELSE STATEMR=1; MY=0; MG=0; -状态四:主红从黄 BR=0; BY=1; BG=0; IF S=5 THEN -5s倒计时后转入状态一 STATE=A;C
8、LR:=0; EN:=0; ELSE STATE=D; CLR:=1; EN:=1; END IF; END CASE; END IF; END PROCESS CNT;END ARCHITECTURE ART;-45s延时-CNT45S.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT45S IS PORT(SB,CLK,EN45:IN STD_LOGIC; DOUT45M,DOUT45B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENT
9、ITY CNT45S;ARCHITECTURE ART OF CNT45S IS SIGNAL CNT6B: STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN PROCESS(SB,CLK,EN45) IS BEGIN IF SB=0THEN CNT6B=CNT6B-CNT6B-1; -若从干道无车,不计时 ELSIF(CLKEVENT AND CLK= 1)THEN IF EN45=1THEN CNT6B=CNT6B+1;ELSIF EN45=0THEN CNT6BDOUT45M=01000101; DOUT45BDOUT45M=01000100; DOUT45BDOU
10、T45M=01000011; DOUT45BDOUT45M=01000010; DOUT45BDOUT45M=01000001; DOUT45BDOUT45M=01000000; DOUT45BDOUT45M=00111001; DOUT45BDOUT45M=00111000; DOUT45BDOUT45M=00110111; DOUT45BDOUT45M=00110110; DOUT45BDOUT45M=00110101;DOUT45BDOUT45M=00110100; DOUT45BDOUT45M=00110011; DOUT45BDOUT45M=00110010; DOUT45BDOUT
11、45M=00110001; DOUT45BDOUT45M=00110000; DOUT45BDOUT45M=00101001; DOUT45BDOUT45M=00101000; DOUT45BDOUT45M=00100111; DOUT45BDOUT45M=00100110; DOUT45BDOUT45M=00100101; DOUT45BDOUT45M=00100100; DOUT45BDOUT45M=00100011; DOUT45BDOUT45M=00100010; DOUT45BDOUT45M=00100001; DOUT45BDOUT45M=00100000; DOUT45BDOUT
12、45M=00011001; DOUT45BDOUT45M=00011000; DOUT45BDOUT45M=00010111; DOUT45BDOUT45M=00010110; DOUT45BDOUT45M=00010101; DOUT45BDOUT45M=00010100; DOUT45BDOUT45M=00010011; DOUT45BDOUT45M=00010010; DOUT45BDOUT45M=00010001; DOUT45BDOUT45M=00010000; DOUT45BDOUT45M=00001001; DOUT45BDOUT45M=00001000; DOUT45BDOUT
13、45M=00000111; DOUT45BDOUT45M=00000110; DOUT45BDOUT45M=00000101; DOUT45BDOUT45M=00000100; DOUT45BDOUT45M=00000011; DOUT45BDOUT45M=00000010; DOUT45BDOUT45M=00000001; DOUT45BDOUT45M=00000000; DOUT45B=00000000; END CASE; END PROCESS;END ARCHITECTURE ART;-25s延时 (与45s延时编程思想一样,这里不做说明了)-CNT25S.VHDLIBRARY IE
14、EE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT25S IS PORT(SB,SM,CLK,EN25:IN STD_LOGIC; DOUT25M,DOUT25B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY CNT25S;ARCHITECTURE ART OF CNT25S IS SIGNAL CNT5B: STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN PROCESS(SB,SM,CLK,EN25) IS BEGIN IF SB=
15、0 OR SM=0 THEN CNT5B=CNT5B-CNT5B-1;ELSIF(CLKEVENT AND CLK= 1)THEN IF EN25=1 THEN CNT5B=CNT5B+1; ELSIF EN25=0THEN CNT5BDOUT25B=00100101; DOUT25MDOUT25B=00100100; DOUT25MDOUT25B=00100011; DOUT25MDOUT25B=00100010; DOUT25MDOUT25B=00100001; DOUT25MDOUT25B=00100000; DOUT25MDOUT25B=00011001; DOUT25MDOUT25B
16、=00011000; DOUT25MDOUT25B=00010111; DOUT25MDOUT25B=00010110; DOUT25MDOUT25B=00010101; DOUT25MDOUT25B=00010100; DOUT25MDOUT25B=00010011; DOUT25MDOUT25B=00010010; DOUT25MDOUT25B=00010001; DOUT25MDOUT25B=00010000; DOUT25MDOUT25B=00001001; DOUT25MDOUT25B=00001000; DOUT25MDOUT25B=00000111; DOUT25MDOUT25B
17、=00000110; DOUT25MDOUT25B=00000101; DOUT25MDOUT25B=00000100; DOUT25MDOUT25B=00000011; DOUT25MDOUT25B=00000010; DOUT25MDOUT25B=00000001; DOUT25MDOUT25B=00000000; DOUT25M=00000000; END CASE; END PROCESS;END ARCHITECTURE ART;-5s延时 (与45s类似)-CNT05S.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD
18、_LOGIC_UNSIGNED.ALL;ENTITY CNT05S IS PORT(CLK,EN05M,EN05B:IN STD_LOGIC; DOUT5: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY CNT05S;ARCHITECTURE ART OF CNT05S IS SIGNAL CNT3B: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN PROCESS(CLK,EN05M,EN05B) IS BEGIN IF(CLKEVENT AND CLK= 1)THEN IF EN05M=1 OR EN05B=1 THEN CNT3B=CNT3B+1; ELSE CNT3BDOUT5DOUT5DOUT5DOUT5DOUT5-DOUT5=00000000; END CASE; END PROCESS;END ARCHITECTURE ART;-数码管显示控制程序-XSKZ.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_11
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1