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.系统设计1.1 设计要求设计交通灯控制电路。
1.1.1 设计任务①.借助EDA实训仪实现一个十字路口的交通灯控制系统。
数码管显示时间。
发光二极管显示东西南北方向的红、黄、绿灯情况,其中绿灯亮灯时间总是比同一时间红灯要少4秒,绿灯倒数结束后变黄灯,红灯倒数结束后变绿灯。
②.有些路段车流量较少或者突发紧急情况时,可以通过控制拨动开关调整交通灯控制。
以实现整个电路符合实际交通道路控制要求。
1.1.2 技术要求①.用EDA实训仪上的4只八段数码管分别显示道路东西和南北通行和禁止的倒计时时间。
②.能设置道路东西和南北两侧通行和禁止的倒计时时间,最大设置时间为99秒,最小设置时间为1秒。
③. 交通灯用红、绿、黄三种发光二极管(LED)显示控制的结果。
④. 红、绿、黄灯显示的次序应符合实际交通道路控制的要求。
1.2 方案比较①.老师给的原理图只有一个方向的数码管显示,操作比较简单。
②.实现四个方向和白天黑夜模式的数码管显示,有突发情况还可以使得交通灯倒计时停止在某个时间。
比较上种方案复杂。
1.3 方案论证通过方案①和②的比较,最终选择方案②。
因为东西南北方向都会有红、黄、绿灯的显示,其中绿灯亮灯时间总是比同一时间红灯要少4秒,绿灯倒数结束后变黄灯,红灯倒数结束后变绿灯。
有些路段车流量较少或者突发紧急情况时,可以通过控制拨动开关调整交通灯控制。
更符合十字路口交通灯实际的工作原理。
1.3.1 总体思路fpq分频器,将EDA实训仪主板提供的20MHz的主频经20000000分频后,得到电路所需的1Hz(秒)时钟。
减法器,产生道路东西和南北通行和禁止的倒计时时间。
kzq控制器控制电路,控制整个系统的工作。
控制器接收倒计时的结果,当倒计时归0时,改变电路的控制模式,输出倒计时的初始时间和交通灯亮灭控制信号。
以下为交通灯总体框图。
交通灯工作的四种工作状态:工作状态一:东西——红——倒计时:20→4南北——绿——倒计时:16→0 工作状态二:东西——红——倒计时:3→0南北——黄——倒计时:3→0 工作状态三:东西——绿——倒计时:16→0南北——红——倒计时:20→4 工作状态四:东西——黄——倒计时:3→0南北——红——倒计时:3→0 (以上四种工作状态循环进行)1.3.2 设计方案分频器计数器计数器控制器计数器2.各个模块程序的设计<1>.分频器的设计该模块自带的频率为20000000Hz的一个晶振接入,经过分频器后产生1S的时钟信号,然后由cout脚输出。
交通灯控制器 EDA课程设计实验报告
目录1课程设计要求 (3)2 电路功能描述 (3)3 设计方案 (3)4设计原理图 (4)5 VHDL语言 (4)6仿真截图 (6)7心得体会 (11)8参考文献 (11)1. 课程设计要求1.1.红、黄、绿灯分别控制显示;1.2.每一个状态分别分配一个时间显示(两位十进制,倒计时);1.3.符合实际交通规律。
2.电路功能描述本设计是实现交通灯的控制,模拟实现了红、绿、黄灯指挥交通的功能。
本设计适用东西和南北方向的车流量大致相同的路口,红灯显示时间30S,绿灯显示时间25S,黄灯显示时间5S,同时用数码管指示当前的状态(红、绿、黄灯)的剩余时间。
当有紧急状况发生时,两个方向都禁止通行,并且显示红灯,当紧急状况解除后,重新计时并且指示时间。
3.设计方案根据设计要求,需要控制显示红、黄、绿三个灯的亮灭状态及显示的时间。
这个设计主要由两部分组成,红黄绿灯的显示模块,显示时间模块。
由实际的交通情况可知,东西方向的显示情况是一致的,南北方向的显示情况也是一致,故在设计的时候就只考虑两种状态,将东西方向合成一种,南北方向合成一种。
红黄绿灯的显示模块用两组共6个灯显示,时间显示模块用LED数码管显示。
此外,本交通灯控制器设置的红黄绿显示方式是参照一些城市的显示规律,红灯30S,绿灯25S,黄灯5S,同时用数码管指示当前状(红、绿、黄灯)的剩余时间。
另外还设有一个紧急状态,当特殊情况发生时,两个方向都禁止通行,指示红灯,紧急状态解除后,重新计时并指示时间。
时间采用倒计时的方式显示。
本设计采用VHDL语言编程,描述各个硬件模块实现的功能,使红、黄、绿灯的转换有一个准确的转换顺序和时间间隔,并进行仿真,通过仿真的结果,得出实验的结果。
在正常情况下的一个完整周期内,交通灯控制器系统一共有四种状态,分别是东西红、南北绿,东西红、南北黄,东西绿、南北红,东西黄、南北红。
其运行方式为东西红、南北绿→东西红、南北黄→东西绿、南北红→东西黄、南北绿,东西黄、南北绿结束后再回到东西红、南北绿的状态,整个周期持续60s。
EDA实验 交通灯设计
实验五交通灯控制器设计一、实验目的(1)进一步熟练EDA设计流程、系统仿真及硬件测试分析。
(2)学会用分层次设计的方法设计交通灯控制器。
(3)掌握动态数码管的原理,学会用VHDL语言编程使用数码管。
(4)学习较复杂数字电路系统的设计。
二、实验内容与要求一条主干道,一条乡间公路,组成十字路口,要求保证主干道先通行,有MR(主红),MY(主黄),MG(主绿),CR(乡红),CY(乡黄),CG(乡绿)。
六盏交通灯需要控制;交通灯由绿变红有4秒黄灯亮的时间间隔,由红到绿没有时间间隔;系统有MRCY、MRCG、MYCR、MGCR四个状态;乡间公路右侧各埋有一个传感器,当有车辆通过乡间公路时,发出请求信号s=1,其余时间s=0;平时系统停留在MGCR(主干道通行)状态,当s=1时,经MYCR(黄灯)状态转到MRCG状态,但保证MGCR不短于一分钟;一旦s=0系统将脱离MRCG状态。
随即由MRCY进入MGCR状态,即使s一直为1,MRCG持续时间也不得超过20秒。
三、设计思路/原理图图一、交通灯控制器原理图采用分层设计的方法分为其中jishuqi为倒计数器模块预置数有60、3、19三种。
yimaqi 为8位二进制数译码成8421BCD码的译码模块,dongtaism为动态扫描显示模块,deng 为交通灯状态转移模块。
当s=0时系统处以MGCR状态,一旦s=1且一直有效则状态转移:MGCR——>MYCR——>MRCG——>MRCY——>MGCR。
其中MGCR持续时间为61秒,MYCR持续时间为4秒,MRCG最长持续时间为20秒。
MRCY持续时间为4秒。
四、实验程序(程序来源:王鸿亮6100208031 )(1)倒计数器模块jishuqilibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity jishuqi isport(clk,s:in std_logic;count:out std_logic_vector(7 downto 0);state:out std_logic_vector(1 downto 0));end jishuqi;architecture one of jishuqi issignal st:std_logic_vector(1 downto 0):="00";signal cnt:std_logic_vector(7 downto 0);type states is (st0,st1);signal stx:states;beginprocess(clk,s)beginif clk'event and clk='1' thencase st iswhen "00" =>if s='1' then case stx is when st0=>cnt<="00111100";stx<=st1;when st1=>if cnt>0 then cnt<=cnt-1;else cnt<="00000011";st<="01";end if;when others=>null;end case;else cnt<="00000000";stx<=st0;st<="00";end if;when "01" =>if s='1' then case stx is when st1=>if cnt>0 then cnt<=cnt-1;else cnt<="00010011";st<="10";end if;when others=>null;end case;else case stx is when st1=>if cnt>0 then cnt<=cnt-1;else cnt<="00000000";st<="00";end if;when others=>null;end case;end if; when "10"=> if s='1' then case stx is when st1=>if cnt>0 then cnt<=cnt-1;else cnt<="00000011";st<="11";end if;when others=>null;end case;else cnt<="00000011";st<="11";end if;when "11"=> if cnt>0 then cnt<=cnt-1;else cnt<="00000000";st<="00";stx<=st0;end if; when others=>null;end case;end if;end process;state<=st;count<=cnt;end architecture;(2)交通灯状态转移模块denglibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity deng isport(state:in std_logic_vector(1 downto 0);mg,cr,my,cg,mr,cy:out std_logic ) ;end entity deng ;architecture one of deng isbeginprocess(state)begincase state iswhen "00"=>mg<='1';cr<='1';my<='0';mr<='0';cg<='0';cy<='0'; when "01"=>mg<='0';cr<='1';my<='1';mr<='0';cg<='0';cy<='0'; when "10"=>mg<='0';cr<='0';my<='0';mr<='1';cg<='1';cy<='0'; when "11"=>mg<='0';cr<='0';my<='0';mr<='1';cg<='0';cy<='1'; end case;end process;end architecture one;(5) 八位二进制向八位BCD译码的译码模块yimaqi library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity yimaqi isport(count:in std_logic_vector(7 downto 0);p:out std_logic_vector(7 downto 0));end entity yimaqi;architecture one of yimaqi isbeginprocess(count)variable h:std_logic_vector(7 downto 0);beginh:=count;if h<10 then h:=h;elsif h>=10 and h<20 then h:=h+6;elsif h>=20 and h<30 then h:=h+12;elsif h>=30 and h<40 then h:=h+18;elsif h>=40 and h<50 then h:=h+24;elsif h>=50 and h<60 then h:=h+30;elsif h>=60 and h<70 then h:=h+36;end if;p<=h;end process;end architecture one;(6)动态数据选择器模块dongtaismlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dongtaism isport(clk2:in std_logic;count:in std_logic_vector(7 downto 0);y:out std_logic_vector(2 downto 0);pu:out std_logic_vector(3 downto 0));end entity dongtaism;architecture one of dongtaism issignal y1:std_logic_vector(2 downto 0);type states is (st0,st1);signal stx1:states;beginprocess(clk2)beginif clk2'event and clk2='1' thencase stx1 is when st0=>y1<="000";pu<=count(3 downto 0);stx1<=st1;when st1=>y1<="001";pu<=count(7 downto 4);stx1<=st0;when others=>stx1<=st0;end case;end if;end process;y<=y1; end architecture one ;五、实验步骤1.建立工作库文件夹和编辑设计文件2.编译过程3.系统仿真(1)建立新的波形激励文件。
EDA交通灯实验报告
5秒计数器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY HZ0_2 ISPORT(CLK0,RST0:IN STD_LOGIC;COUT:OUT STD_LOGIC);END HZ0_2;ARCHITECTURE behav OF HZ0_2 ISBEGINPROCESS(CLK0,RST0)VARIABLE COUNT:INTEGER RANGE 0 TO 250000000; BEGINIF RST0='0' THEN COUNT:=1;ELSIF(CLK0'EVENT AND CLK0='1') THENIF(COUNT<250000000) THENCOUNT:=COUNT+1;COUT<='0';ELSE COUNT :=1;COUT<='1';END IF;END IF;END PROCESS;END behav;交通显示部分:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD ISPORT(CLK1,RST1:IN STD_LOGIC;SOUT:OUT STD_LOGIC_VECTOR(0 TO 5);XW :IN STD_LOGIC_VECTOR(0 TO 1));END JTD;ARCHITECTURE behav1 OF JTD ISTYPE states IS(S0,S1,S2,S3);SIGNAL C_ST,NEXT_STATE:STATES:=S0;BEGINCOM:PROCESS(C_ST,XW)BEGINCASE C_ST ISWHEN S0=>IF XW="00" OR XW="01" THEN NEXT_STATE<=S1;ELSE NEXT_STATE<=S0;END IF;WHEN S1=>NEXT_STATE<=S2;WHEN S2=>IF XW="10" OR XW="00" THEN NEXT_STATE<=S3;ELSE NEXT_STATE<=S2;END IF;WHEN S3=>NEXT_STATE<=S0;WHEN OTHERS=>NEXT_STATE<=S0;END CASE;END PROCESS;REG:PROCESS(CLK1,RST1)BEGINIF RST1='0' THEN C_ST<=S0;ELSIF CLK1'EVENT AND CLK1='1' THEN C_ST<=NEXT_STATE; END IF;END PROCESS REG;SOUT<="010100" WHEN C_ST=S0 ELSE"001100" WHEN C_ST=S1 ELSE"100010" WHEN C_ST=S2 ELSE"100001";END behav1;主程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ZCX ISPORT(CLK,RST:IN STD_LOGIC;AB:IN STD_LOGIC_VECTOR(0 TO 1);LED:OUT STD_LOGIC_VECTOR(0 TO 5)); END ZCX;ARCHITECTURE behav2 OF ZCX ISCOMPONENT JTDPORT(CLK1,RST1:IN STD_LOGIC;SOUT:OUT STD_LOGIC_VECTOR(0 TO 5);XW :IN STD_LOGIC_VECTOR(0 TO 1));END COMPONENT;COMPONENT HZ0_2PORT(CLK0,RST0:IN STD_LOGIC;COUT:OUT STD_LOGIC);END COMPONENT;SIGNAL M:STD_LOGIC;BEGINU1:HZ0_2 PORT MAP(CLK0=>CLK,COUT=>M,RST0=>RST);U2:JTD PORT MAP(CLK1=>M,XW=>AB,RST1=>RST,SOUT=>LED); END ARCHITECTURE behav2;。
EDA实验报告:基于VHDL语言的交通灯控制系统设计与实现
图为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;
EDA课程设计之交通灯设计报告
EDA综合设计与实践一、设计目的和要求1.熟练掌握QuartusII软件的使用方法和系统总体设计。
2.学会设计较复杂的数字系统,用Verilog HDL描述语言编写设计代码,并综合仿真验证设计,用FPGA试验箱验证设计。
3.学习FPGA试验箱的使用,各种电路图的引脚接法及其功能。
4.本实验要求学生以FPGA器件为目标器件,设计典型的数字系统。
本设计选题为交通灯控制系统设计。
二、设计方案:方案一:(1)明确系统的功能图1-1所示为位于主干道和支干道的十字路口交通灯系统,支干道两边是安装传感器S,要求优先保证主干道的畅通。
平时处于主干道绿灯、支干道红灯的状态。
当支干道有车时,传感器发出信号S=1,主干道绿灯先转换成黄灯再转换成红灯,支干道由红灯转换为绿灯,支干道绿灯亮不超过30s,主干道每次通行不少于60s(在此期间,不管S是否有信号,都不改状态)。
(2)画状态转换图说明:1)Tl:主干道绿灯亮的最短时间间隔,不少于60s;2)Ts:支干道绿灯亮的最长时间间隔不多于30s。
3)T y:主干道或支干道黄灯亮的时间间隔为5s4)HR、HY、HG分别表示主干道红黄绿灯;5)FR、FY、FG分别表示支干道红黄绿灯。
注:H表示Header,F表示Follower,R表示Red,Y表示Yellow,G表示Green交通灯控制单元控制过程分四个阶段:分别用S0,S1,S2,S3表示:S0:主干道绿灯亮,支干道红灯亮,此时若支干道有车等待,且主干道已亮足时间Tl,则控制器发出状态转换信号,输出从S0转换到S1。
S1:主干道黄灯亮,支干道红灯亮,进入此状态,黄灯亮足规定时间间隔Ty时,控制器发出状态转换信号St,输出从此状态S1到S2。
S2:支干道绿灯亮,主干道红灯亮,若此时支干道继续有车,则继续保持此状态,但支干道绿灯亮时间不超过Ts时间间隔,否则控制单元发出状态转换信号St,使输出转换到S3状态。
S3:支干道黄灯亮,主干道红灯亮,此时状态与S1状态持续时间间隔相同,均为Ty,时间到时,控制器发出St信号,输出从状态S3回到S0状态。
EDA实验报告实验五:交通灯控制器设计
实验五十字路口交通灯控制器设计一.实验目的1.进一步加强经典状态机的设计2.学会设计模可变倒计时计数器二.实验要求一条主干道,一条乡间公路。
组成十字路口,要求优先保证主干道通行。
有MR(主红)、MY(主黄)、MG(主绿)、CR(乡红)、CY(乡黄)、CG(乡绿)六盏交通灯需要控制;交通灯由绿→红有4秒黄灯亮的间隔时间,由红→绿没有间隔时间;系统有MRCY、MRCG、MYCR、MGCR四个状态;乡间公路右侧各埋有一个传感器,当有车辆通过乡间公路时,发出请求信号S=1,其余时间S=0;平时系统停留在MGCR(主干道通行)状态,一旦S信号有效,经MYCR(黄灯状态)转入MRCG(乡间公路通行)状态,但要保证MGCR的状态不得短于一分钟;一旦S信号无效,系统脱离MRCG状态。
随即经MRCY(黄灯状态)进入MGCR 状态,即使S信号一直有效,MRCG状态也不得长于20秒钟。
三.实验设计:1.一条主道,一条乡道,组成十字路口,要求优先保证主道通行。
2.当主道没有车通行,且乡道友车要通行时,并且此时主道通行时间大于1分钟,则主道变黄灯,乡道保持红灯,经过4秒倒计时时间进入主道为红灯乡道为绿灯的状态。
再倒计时20秒钟。
在倒计时过程中,若乡道突然没有车通行,马上进入主道红灯,乡道黄灯状态,倒计时4秒。
3.之后主道变为绿灯,乡道为红灯,这时无论乡道有无车通行都要倒计时60秒,然后若乡道有车通行则主道为黄灯,乡道为红灯,若乡道一直没有车要通行则保持主道通行,若乡道友车通行则按照上面的状态依次进行转换。
按照以上的思路,设计两个底层文件和一个顶层文件:1.模块1是状态改变控制6盏灯的亮与灭。
2.模块2是控制数码管显示倒计时数并且输出作为模块1的输入控制状态改变3.将两个模块连接成顶层文件,即可完成设计。
四.实验步骤1.分别将两个模块的代码输入,两个模块的代码如下:1)控制6盏灯的模块代码LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jtd ISPORT(clk,RESET,S:IN STD_LOGIC;COUNT:IN STD_LOGIC_VECTOR(7 DOWNTO 0);MG,MY,MR,CG,CY,CR:OUT STD_LOGIC);END jtd;ARCHITECTURE behav OF jtd ISTYPE jtdSTATE IS(mgcr,mycr,mrcg,mrcy);SIGNAL STATE:jtdSTATE;BEGINPROCESS(RESET,STATE,clk, S)BEGINIF RESET='1' THEN STATE<=mgcr;MG<='1';CR<='1';MY<='0';MR<='0';CG<='0';CY<='0';ELSIF clk'EVENT AND clk='1' thenCASE STATE ISWHEN mgcr=>IF COUNT="00000000" AND S='1'THENSTATE<=mycr;MY<='1';CR<='1';MG<='0';MR<='0';CG<='0';CY<='0';ELSESTATE<=mgcr;MG<='1';CR<='1';MY<='0';MR<='0';CG<='0';CY<='0';END IF;WHEN mycr=>IF COUNT="00000000" THENSTATE<=mrcg;MR<='1';CG<='1';MG<='0';MY<='0';CR<='0';CY<='0';ELSESTATE<=mycr;MY<='1';CR<='1';MG<='0';MR<='0';CG<='0';CY<='0';END IF;WHEN mrcg=>IF COUNT="00000000" OR S='0'THENSTATE<=mrcy;MR<='1';CY<='1';MY<='0';MG<='0';CR<='0';CG<='0';ELSESTATE<=mrcg;MR<='1';CG<='1';MG<='0';MY<='0';CR<='0';CY<='0';END IF;WHEN mrcy=>IF COUNT="00000000" THENSTATE<=mgcr;MG<='1';CR<='1';MR<='0';MY<='0';CY<='0';CG<='0';ELSESTATE<=mrcy;MR<='1';CY<='1';MY<='0';MG<='0';CR<='0';CG<='0';END IF;END CASE;END IF;END PROCESS;END behav;2)控制数码管显示倒计时数并且输出:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JISHU ISPORT(clk,S:IN STD_LOGIC;tim:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END JISHU;ARCHITECTURE behav OF JISHU ISTYPE RGY IS(mgcr,mycr,mrcg,mrcy);SIGNAL STATE:RGY;BEGINPROCESS(clk)VARIABLE b:STD_LOGIC:='0';VARIABLE a:STD_LOGIC:='0';VARIABLE th,tl:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN--IF RESET='1' THEN STATE<=mgcr; th:="0000" ;tl:="0000";a:='0';b:='0';IF clk'EVENT AND clk='1' THENCASE STATE ISWHEN mgcr => IF S='1' AND b='1' THEN STATE<=mycr;a:='0';th:="0000";tl:="0100";b:='0';ELSIF S='0' AND b='1' THEN STATE<=mgcr;a:='1';th:="0000";tl:="0001";ELSEIF a='0' THENth:="0110";tl:="0000";a:='1';elseIF NOT(th="0000" AND tl="0010") thenIF tl="0000" thentl:="1001";th:=th-1;else tl:=tl-1;END IF;ELSEth:="0000";tl:="0001";a:='0';b:='1';END IF;END IF;END IF;WHEN mycr => IF a='0' THENth:="0000";tl:="0100";a:='1';elseIF NOT(th="0000" AND tl="0010") thentl:=tl-1;ELSEth:="0000";tl:="0001";a:='0';STATE<=mrcg;END IF;END IF;WHEN mrcg =>IF S='1' THENIF a='0' THENth:="0010";tl:="0000";a:='1';elseIF NOT(th="0000" AND tl="0010") thenIF tl="0000" thentl:="1001";th:=th-1;else tl:=tl-1;END IF;ELSEth:="0000";tl:="0001";a:='0';STATE<=mrcy;END IF;END IF;ELSE a:='0';STATE<=mrcy;th:="0000";tl:="0100"; END IF;WHEN mrcy =>IF a='0' THENth:="0000";tl:="0100";a:='1';elseIF NOT(th="0000" AND tl="0010") thentl:=tl-1;ELSEth:="0000";tl:="0001";a:='0';STATE<=mgcr;END IF;END IF;END CASE;tim <= th & tl;END IF;end process;END behav;2.对各模块进行仿真:6盏灯颜色变化控制:倒计时60计数:倒计时20计数:3.顶层文件设计:顶层文件原理图如下:主道绿灯乡道红灯模60倒计时:主道红灯乡道黄灯模4倒计时:4.引脚锁定:时钟信号CLK接CLK3,78号引脚,选择2HZ脉冲。
EDA实验报告实验四_交通灯控制器设计说明
实验四交通灯控制器设计一、实验目的1、学习与日常生活相关且较复杂数字系统设计;2、进一步熟悉EDA实验装置和Quartus U软件的使用方法;3、学习二进制码到BCD码的转换;4、学习有限状态机的设计应用。
二、设计要求完成设计、仿真、调试、下载、硬件测试等环节,在型EDA实验装置上实现一个由一条主干道和一条乡间公路的汇合点形成的十字交叉路口的交通灯控制器功能,具体要求如下:1、有MR(主红)、MY(主黄)、MG(主绿)、CR(乡红)、CY(乡黄)、CG(乡绿)六盏交通灯需要控制;2、交通灯由绿转红前有4秒亮黄灯的间隔时间,由红转绿没有间隔时间;3、乡间公路右侧各埋有一个串连传感器,当有车辆准备通过乡间公路时,发出请求信号S=1,其余时间S=0;4、平时系统停留在主干道通行(MGCR状态,一旦S信号有效,经主道黄灯4秒(MYC R状态后转入乡间公路通行(MRC)状态,但要保证主干道通行大于一分钟后才能转换;5、一旦S信号消失,系统脱离MRC状态,即经乡道黄灯4秒(MRC)伏态进入MGCR状态,即使S信号一直有效,MRC状态也不得长于20秒钟;6、控制对象除红绿灯之外,还包括分别在主干道和乡间公路各有一个两位十进制倒计时数码管显示。
三、主要仪器设备1 、微机 1 台2、Q uartusII 集成开发软件 1 套3、EDA实验装置1套四、实验思路1、设计一个状态寄存器,控制六盏灯的亮与灭2、设计一个计时器,控制各状态的持续时间,计时器应满足以下要求:1 )当S=1,且计数器已完成60计数时,计数器进入模4计数,随后进入模20 计数,再进入模4计数,再回到模60计数2 )当计数器进行摸20计数时,一旦S变为0,计数器立马进入模4计数,再进入模60 计数3 )完成模20计数后,不论S为0或1,计数器进入模4计数,再进入模60计数4 )若计数器未完成模60计数,不论S如何变话,计数器将继续进行模60 计数3、设计一个译码显示电路,将计时器的八位BCD码转化为数码管可以显示的段位码通过动态扫描电路实现。
EDA交通灯报告2
广东水利电力职业技术学院可编程逻辑器件技术项目设计报告课题名称:交通灯控制器班级:13电子一班报告制作人:陈沛基学号:131201103指导老师:龚兰芳报告制作时间:7月8日前言学习了一个学期的可编程逻辑器件技术,在期末进行总结,通过编写项目“交通灯控制器”来对整个学期以来的知识进行综合复习,总结,应用,通过QuartusII编写该项目,并在芯片EPM240T100C5的开发板上下载,测试,改进,最终完成该项目。
通过该项目了解可编程逻辑器件技术在实际应用中的重要性。
使之对该项技术更了解,对学习的内容掌握的更好。
目录一.课题名称---------------4 二.设计目的---------------4 三.设计要求---------------4 四.设计原理---------------5 五.设计方案---------------5 六.硬件要求---------------6 七.程序设计---------------7 八.引脚接法--------------17 九.实物测试--------------18 十.心得体会--------------18一.课题名称:交通灯控制器二.设计目的:能通过设计使更熟悉VHDL编程语言,加深对VHDL编程语言的理解,结合生活例子模拟真实环境,编写出程序控制彩灯的亮灭,以及在数码管上显示对应时间,实现十字路口交通灯的现象。
三.设计要求:(1)在十字路口的两个方向上各设一组红,绿,黄灯,显示顺序为其中一方向(东西方向)是绿灯,黄灯,红灯;另一方向是(南北方向)是红灯,绿灯,黄灯。
(2)设置两组数码管,以倒计时的方式显示允许通行或禁止通行的时间,其中绿灯,黄灯,红灯的持续时间分别是20s,5s和25s.(3)当各条路上任意一条上出现特殊情况时,如当消防车,救护车或其他需要优先放行的车辆通过时,各方向上均是红灯亮,倒计时停止,且显示数字在闪烁。
当特殊运行状态结束后,控制器恢复原来状态,继续正常运行。
EDA实验交通灯设计报告
EDA原理及应用实验报告题目:交通灯控制器专业:电子信息工程班级:姓名:学号:一、设计题目:交通灯控制器二、设计目标:1、设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。
2、红、绿、黄发光二极管作信号灯。
3、主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。
4、主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。
5、在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。
三、设计原理:(含系统总的原理图)由两个分频器模块,三个计数器模块及它的选择器,一个扫描数码管模块,和一个红绿灯控制模块连接而成。
RTL状态图四、设计内容:(含状态转换图、软件流程图、说明文字等,每单独模块的图标和VHDL程序;最后为总体程序框图)分频器1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF ISPORT(CLK:IN STD_LOGIC;--D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);FOUT:OUT STD_LOGIC);END;ARCHITECTURE one OF DVF ISSIGNAL FULL:STD_LOGIC;BEGINP_REG:PROCESS(CLK)V ARIABLE CNT8:INTEGER RANGE 48000000 DOWNTO 0;BEGINIF CLK'EVENT AND CLK='1' THENIF CNT8=24000000 THENCNT8:=0;FULL<='1';精选文库ELSE CNT8:=CNT8+1;FULL<='0';END IF;END IF;END PROCESS P_REG;P_DIV:PROCESS(FULL)V ARIABLE CNT2:STD_LOGIC;BEGINIF FULL'EVENT AND FULL='1' THENCNT2:=NOT CNT2;IF CNT2='1' THEN FOUT<='1';ELSE FOUT<='0';END IF;END IF;END PROCESS P_DIV;END;说明:采用的是48M时钟输入,作为后面的时钟信号。
EDA交通灯实验报告.pdf
EDA实验报告题目:交通灯设计学院:电子工程学院专业:电子信息工程作者:王正帅 14020120007 导师:孙万蓉EDA实验报告:交通灯设计一、设计任务及要求:设计任务:模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。
要求:(1)交通灯从绿变红时,有5秒黄灯亮的间隔时间;(2)交通灯红变绿是直接进行的,没有间隔时间;(3)东西主干道上的绿灯时间为25秒,南北支干道的绿灯时间为25秒;(4)在任意时间,显示每个状态到该状态结束所需的时间。
路口示意图如下:图 1 路口交通示意图表1 交通信号灯的4种状态A B C东西主干道交通灯绿(25秒)黄(5秒)红(30秒)南北支干道交通灯红(30秒)黄(5秒)绿(25秒)设计要求:(1)采用VHDL语言编写程序,并在QuartusII工具平台中进行仿真,下载到EDA实验箱进行验证。
(2)编写设计报告,要求包括方案选择、程序清单、调试过程及测试结果。
二、设计原理1、设计目的:学习DEA开发软件和QuartusII的使用方法,熟悉可编程逻辑器件的使用。
通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制2、设计说明(1)第一模块:clk时钟秒脉冲发生电路在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。
因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。
模块说明:系统输入信号:Clk: 由外接信号发生器提供50MHz的时钟信号;系统输出信号: full:产生每秒一个脉冲的信号;(2)第二模块:计数秒数选择电路计数电路最主要的功能就是记数负责显示倒数的计数值,对下一个模块提供状态转换信号。
模块说明:系统输入:full: 接收由clk电路的提供的1HZ的时钟脉冲信号;系统输出信号:tm:产生显示电路状态转换信号tl:倒计数值秒数个位变化控制信号th:倒计数值秒数十位变化控制信号(3)第三模块:红绿灯状态转换电路本电路负责红绿灯的转换。
EDA课程设计报告-交通灯控制器
.EDA课程设计报告交通灯控制器一、设计任务要求1、控制器按东西、南北两个方向控制两组交通灯(红、绿、黄)2、两组灯亮的顺序满足交通安全的规则要求.3、东西向绿灯每次亮30S ,接着黄灯亮2S ,红灯亮20S ;南北向绿灯每次亮28S ,接着黄灯亮2S ,红灯亮30S. 4、有两组数码管给出灯亮的时间倒计时显示。
二、设计思路及总体结构框图设计思路:1.硬件:由设计任务要求可知,总体输入电路有:(1)在开始计时之前的等待状态,复位键reset 接低电位,接通电源后,首先要将它接高电位,表示计时开始。
(2)当按一下(on_off )键,表示紧急情况发生,两个方向均为红灯亮,计时停止,当再次按下(on_off )键时,控制器恢复原来状态,正常工作。
输出电路:(1)由于东西和南北方向都要显示时间,因此需要4个数码管,这样在设计中就需要四条输出线choose4,用来选通指定一个LED 七段显示数码管。
(2)显示器的每一位都采用LED 七段显示数码管进行显示,每一个LED 七段显示数码管都要有七条输出线控制,一共使用4个七段数码管,故输出电路使用四个七位输出信号:showtime1,showtime2,showtime3,showtime4。
(3)东西和南北方向都有交通灯亮的情况,故输出电路中要有两个状态控制信号state1,state2分别控制东西和南北的灯,每个方向上有4个灯(增加了左、右转弯显示控制功能),所以state1,state2的类型应该是4位数组型的。
外部电路图如下:clk 4/ stas reset on_off 4/ 7/ 7/ 7/ 7/ 4/State1State2Showtime1Showtime2Showtime3Showtime4Choose4东西方向交通灯南北方向交通灯2.软件:(1)在VHDL设计描述中,采用自顶向下的设计思路,该思路,首先要描述顶层的接口,上面的描述已经规定了交通灯控制的输入输出信号:输入信号:复位开关信号reset;紧急情况控制信号on_off;外部时钟信号clk。
EDA交通灯实验报告
EDA交通灯实验报告交通灯是道路上常见的交通设施之一,其功能是对行人和机动车辆进行交通管理,维护道路交通秩序,保障道路交通安全。
而交通信号灯则是交通灯的一种常见形式,通过信号灯的亮灭来指示不同方向的车辆和行人行进或停车。
为了更好地了解交通灯的工作原理和实际应用场景,本次实验通过自制交通灯,进行了一系列的观察和数据收集,从而对交通灯的工作原理和交通信号的规律有了更深入的理解。
首先,我们采用LED灯作为交通信号灯的光源,LED灯具有亮度高、寿命长、能耗低等优势,非常适合用于交通信号灯的制作。
我们选择了红、黄、绿三种颜色的LED灯,分别用于表示停车、准备行进和行进的状态。
通过连接电路,我们可以对不同颜色的LED灯进行控制。
在实验中,我们选择了两个参数进行观察和数据收集,分别是信号灯的亮灭时间和不同信号灯的显示顺序。
首先,我们观察到每个信号灯的亮灭时间是固定的,红灯亮灭时间为30秒,黄灯亮灭时间为5秒,绿灯亮灭时间为40秒。
在实际应用中,交通信号灯的时间设置是根据道路交通流量和道路安全等因素综合考虑的,我们的实验结果也验证了这一设定的合理性。
其次,我们进行了不同信号灯的显示顺序的实验。
选择了三种不同的显示顺序进行观察,分别是红-黄-绿、绿-黄-红和黄-红-绿。
实验结果显示,红-黄-绿的显示顺序是最常见的,也是最符合交通规则的。
因为红灯表示停车,黄灯表示准备行进,绿灯表示行进,这样的显示顺序可以保障车辆和行人按照规则进行。
最后,我们还观察到了交通灯的故障现象,即交通灯不正常工作或者显示混乱。
这种情况在实际应用中是非常危险的,会导致交通事故的发生。
因此,交通灯的维护和保养非常重要,需要定期检查和维修,确保其正常工作。
通过本次实验,我们对交通灯的工作原理和交通信号的规律有了更深入的了解。
交通灯作为一种重要的交通设施,对于道路交通的安全和秩序维护起着重要的作用。
我们应当遵守交通信号,不仅是为了自己的安全,也是为了他人的安全。
EDA交通信号灯的设计报告
课题:交通信号灯控制学院:电气与信息工程学院姓名:班级:电气工程及其自动化(3)班 学号:课程设计实验报告HUNAN UNIVERSITY一、课程设计的要求及目的:1.了解电子设计的具体流程和方法。
2. 掌握电子设计的基本要求,能够运用所学的知识解决生活中的一些问题。
3. 初步掌握VHDL语言编程,并设计出一个有意义的小型系统。
4. 掌握Altium Designer6软件的应用,并且了解相关硬件的组成和功能。
5. 用EDA(Electronic Design Automation)或者原理图完成一个课题的设计,并达到相应的功能要求。
二、设计的功能要求:众所周知,随着生活的进步,我们身边的交通也日益繁忙,在众多的十字交叉路口,为了确保车辆安全,迅速地通行,就必须在每个入口设置红绿灯。
本系统中设置了红,绿,黄三色共三种信号灯。
红灯亮禁止一切该方向的行人和车辆通行,绿灯亮允许行人和车辆通行,黄灯亮则提示行驶中的车辆注意不要抢道,并让它们有时间停靠到禁行线之外或者加快通过,同时提醒行人加快行进或者等待下一次绿灯。
人行道灯亮时,允许行人通过。
本交通信号灯控制系统以东西,南北方向走向的十字路口为例讲述设计的功能要求和设计的具体过程1、用八个发光二极管作信号指示灯。
顺序为东西主干道红、绿、黄、人行灯,南北主干道红、绿、黄、人行灯。
2、考虑到没有设置到车辆的转弯信号指示灯,而且作为交通繁忙的交通干道,为了节省车辆的等待时间,所以设置了红灯亮的时间为45s,绿灯亮和人行灯亮的时间均为40s,黄灯亮的时间为5s。
当东西方向的干道禁止通行时,该干道亮红灯,南北方向干道亮绿灯,同时南北方向的人行道灯亮;当南北方向的干道转变为黄灯闪烁时,进入了黄灯警示时间,黄灯闪烁结束以后,东西方向干道亮绿灯允许通行,同时东西方向的人行道灯亮,南北方向的红灯亮,人行道灯灭;当东西方向干道转变为黄灯闪烁时,进入黄灯警示时间,黄灯闪烁结束以后,东西方向干道亮红灯,人行道灯灭,南北方向亮绿灯亮,人行道灯亮。
EDA实验三-交通灯
tbh(十位) tbl(个位)
spe clk
Ctrl
特殊信号控制
en
br0 bg0
Br(B方向红灯) bg by bl
by0
bl0
jtd顶层电路
程序的总体功能
整个程序只有三个 输入信号,12个输 出信号(atime和 btime分别各连接2 个数码管) 程序中的其他信号 均为中间过程,在 各子模块间相互连 接
S1 -> en<='1' S2 -> en<='0' S3 -> en<='1'
例程讲解-count.vhd子模块
S对应着A方向和B 方向的8种状态
ta不等于1,说明a 方向的倒计时未结 束,然后再判断个 位和十位的情况
S对应着A方向和B 方向的8种状态
此处的light并非是 连接实验箱LED的 变量,而是用于提 供给ltout模块的内 部变量
用于在子模块间进 行内部参数传递的 中间变量或信号
实验要求
在理解源程序的基础上修改程序 通信3班的任务:增加B方向的人行道红灯, 如果a方向的左转灯或有紧急车通过时,该红 灯亮起,其他情况该灯不亮。(这个功能程 序可能已经实现了) 电信1、2班的任务:增加b方向的右转灯,如 果a方向的绿灯亮或b方向的绿灯亮时,该灯 均亮,其他情况下,该灯不亮。
例程讲解-ctrl.vhd子模块
S0
Spe='0'
Spe='1'
Spe='0 的切换条件 Spe='1' Spe='1' 状态机的作用:为系统 的状态(红、绿、黄、 左拐、紧急情况)转换 S3 S2 提供依据Spe='0' 使能信号en送至倒计时 Spe='0' Spe='1' 模块count和显示模块 ltout S0 -> en<='0'
EDA十字路口交通灯设计实验
实验三十字路口交通灯设计实验一、实验目的:1、熟悉FPGA的设计过程。
2、掌握复杂时序逻辑电路的设计方法,掌握可综合的VHDL语言的设计风格;3、熟悉FPGA是验板,掌握FPGA下载的设计方法;利用硬件验证设计的正确性4、掌握设计文档的书写方法。
二、实验任务:1、本实验要求根据设计要求设计十字路口交通灯管理系统。
2、用testbench waveform 建立合适的测试向量,看行为仿真和布线后仿真波形。
在仿真正确的前提下,下载至实验板,并演示功能。
三、实验设备:1、PC 机一台。
2、清华大学EDA可编程ASIC实验箱一套。
3、导线若干。
四、实验原理一、设计思路1、实现的功能A.通常情况下,交通灯按正常状态依次点亮红黄绿灯,交警可以根据路口流量的情况分别设置红、绿、黄灯持续点亮时间。
B、在夜深时,因为各路口的车流量减少,按交通规则,四个路口可以同时闪烁黄灯,在该设计中对正常情况下的持续时间进行初始化,当达到设定时间后,四个黄灯开始同时闪烁。
C、当手动控制时,可以将四个路口依次置为绿灯或者将相对的两个路口置为绿灯。
2、该设计的状态图自动情况下的状态转移图为:各状态对应的交通灯的状态见下表手动情况下的状态转移图为:状态转移表如下图:五、实验报告要求1、对交通灯的控制原理及流程进行描述与分析;2、贴出部分仿真图形3、时间显示改为减计数4、画出交通灯控制器的状态机,写出状态编码方案;5、通过此次实验的收获、感想及建议;6、有同学,重写该代码。
实验分数满分。
有人懂得是一种幸福,懂得别人是一种襟怀,互为懂得是一种境界。
懂得,真好!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA实验报告题目:交通灯设计学院:电子工程学院专业:电子信息工程作者:导师:孙万蓉EDA实验报告:交通灯设计一、设计任务及要求:设计任务:模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。
要求:(1)交通灯从绿变红时,有5秒黄灯亮的间隔时间;(2)交通灯红变绿是直接进行的,没有间隔时间;(3)东西主干道上的绿灯时间为25秒,南北支干道的绿灯时间为25秒;(4)在任意时间,显示每个状态到该状态结束所需的时间。
路口示意图如下:图 1 路口交通示意图设计要求:(1)采用VHDL语言编写程序,并在QuartusII工具平台中进行仿真,下载到EDA实验箱进行验证。
(2)编写设计报告,要求包括方案选择、程序清单、调试过程及测试结果。
二、设计原理1、设计目的:学习DEA开发软件和QuartusII的使用方法,熟悉可编程逻辑器件的使用。
通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制2、设计说明(1)第一模块:clk时钟秒脉冲发生电路在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。
因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。
模块说明:系统输入信号:Clk: 由外接信号发生器提供50MHz的时钟信号;系统输出信号: full:产生每秒一个脉冲的信号;(2)第二模块:计数秒数选择电路计数电路最主要的功能就是记数负责显示倒数的计数值,对下一个模块提供状态转换信号。
模块说明:系统输入:full: 接收由clk电路的提供的1HZ的时钟脉冲信号;系统输出信号: tm : 产生显示电路状态转换信号tl :倒计数值 秒数个位变化控制信号th :倒计数值 秒数十位变化控制信号(3)第三模块:红绿灯状态转换电路本电路负责红绿灯的转换。
模块说明:系统输入信号:full: 接收由clk 电路的提供的1Hz 的时钟脉冲信号;tm: 接收计数秒数选择电路状态转换信号;系统输出信号: comb_out: 负责红绿灯的状态显示。
(4)第四模块:时间显示电路本电路负责红绿灯的计数时间的显示。
模块说明:系统输入信号:tl :倒计数值 秒数个位变化控制信号;th :倒计数值 秒数十位变化控制信号;系统输出信号: led7s1: 负责红绿灯的显示秒数个位。
led7s2: 负责红绿灯的显示秒数十位。
三、设计方案时间显示数据输出红黄绿灯信号输出图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 traffic ISPORT (clk:in std_logic;led7s1:out std_logic_vector(6 downto 0);led7s2:out std_logic_vector(6 downto 0);comb_out:out std_logic_vector(5 downto 0));END;ARCHITECTURE one OF traffic ISTYPE dm IS (s0,s1,s2,s3);SIgnal current_state,next_state:dm;SIGNAL FULL : STD_LOGIC;SIGNAL tl :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL th:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL tm :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL TIME :STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINP_REG: PROCESS(CLK)VARIABLE CNT8:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF CLK'EVENT AND CLK='1' THENCNT8:="01111111";FULL<='1';ELSE CNT8 := CNT8+1;FULL <= '0';END IF; END IF;END PROCESS P_REG;PROCESS(full)BEGINIF full'EVENT AND full='1' THENIF TIME<"1000011" THENTIME<=TIME+1;ELSe TIME <="0000000";END IF;END IF;END PROCESS;REG:process( full,current_state)BEGINIF full='1' AND full'EVENT THENcurrent_state<=next_state;END IF;END process;COM:process(current_state, time) begincase current_state iswhen s0=>comb_out<="001100";tm<=39-time;if time=39 then next_state<=s1;else next_state<=s0;end if;when s1=>comb_out<="010100";tm<=43-time;if time=43 then next_state<=s2;else next_state<=s1;end if;when s2=>comb_out<="100010";tm<=63-time;if time=63 then next_state<=s3;else next_state<=s2;end if;when s3=>comb_out<="100001";tm<=67-time;if time=67 then next_state<=s0;else next_state<=s3;end if;end case;end process;PROCESS(tm)BEGINIF tm>=30 THEN th<="11";tl<=tm-30;ELSIF tm>=20 THEN th<="10";tl<=tm-20; ELSIF tm>=10 THEN th<="01";tl<=tm-10; ELSE th<="00";tl<=tm;END IF;END PROCESS;process(th,tl)begincase th iswhen"00"=>led7s1<="0111111";when"01"=>led7s1<="0000110";when"10"=>led7s1<="1011011";when"11"=>led7s1<="1001111";when others=>null;end case;case tl iswhen "0000000"=>led7s2<="0111111";when"0000001"=>led7s2<="0000110";when "0000010"=>led7s2<="1011011";when"0000011"=>led7s2<="1001111";when"0000100"=>led7s2<="1100110";when "0000101"=>led7s2<="1101101";when "0000110"=>led7s2<="1111101";when"0000111"=>led7s2<="0000111";when "0001000"=>led7s2<="1111111";when "0001001"=>led7s2<="1101111";when others=>null;end case;end process;end;五、电路及波形图1.波形图图4 仿真波形图2.引脚设置选择的器件为cyclone3系列的EP3C16F484C6芯片,引脚锁定方法如下图所示。
将未使用的管脚设置为三态输入(一定要设置,否则可能会损坏芯片)。
图 5 引脚使用图六、硬件测试及说明用实验板上的6个LED作为交通信号灯,设计一个交通信号灯控制器。
1、交通灯从绿变红时,有5秒黄灯亮的间隔时间;2、交通灯红变绿是直接进行的,没有间隔时间;3、红灯时间为30秒。
绿灯时间为25秒。
黄灯时间为5秒。
七、实验心得体会通过这次课程设计,我进一步加深了对数字系统设计的了解。
并进一步熟练了对QuartusII软件的操作。
在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上存在的不足。
同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。
做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。