EDA实验报告实验五:交通灯控制器设计
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/ State1交通灯 stasreset State2南北方向 on_off 4/ 交通灯7/ Showtime17/ Showtime27/ Showtime37/ Showtime4Choose44/- 2 -2.软件:(1)在VHDL设计描述中,采用自顶向下的设计思路,该思路,首先要描述顶层的接口,上面的描述已经规定了交通灯控制的输入输出信号:输入信号:复位开关信号reset;紧急情况控制信号on_off;外部时钟信号clk。
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技术交通灯控制器(课程设计)

课程设计报告课程设计:交通灯控制器一:实验目的:实现高速公路与乡间小路的交叉路口红绿灯的控制二:功能要求: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课程设计(交通灯控制器)

课程设计年月日大课程设计任务书课程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交通灯控制器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实验 交通灯设计

实验五交通灯控制器设计一、实验目的(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实验报告:基于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、设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。
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)VARIABLE 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)VARIABLE 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;分频器2LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF2 ISPORT(CLK:IN STD_LOGIC;--D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);FOUT:OUT STD_LOGIC);END;ARCHITECTURE one OF DVF2 ISSIGNAL FULL:STD_LOGIC;BEGINP_REG:PROCESS(CLK)VARIABLE CNT8:INTEGER RANGE 48000000 DOWNTO 0; BEGINIF CLK'EVENT AND CLK='1' THENIF CNT8=20000 THENCNT8:=0;FULL<='1';ELSE CNT8:=CNT8+1;FULL<='0';END IF;END IF;END PROCESS P_REG;P_DIV:PROCESS(FULL)VARIABLE 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;说明:改变了分频器的大小,这个频率很高,是给扫描数码管模块使用的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五十字路口交通灯控制器设计一.实验目的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脉冲。