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、当汽车行驶在小路上时,小路的交通灯保持为绿灯,但不能超过给定的延迟时间。
(注:这段时间定义为20秒时间)3、高速公路灯转为绿灯后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定时间内保持高速公路绿灯。
(注:这段时间定义为60秒时间)4、原理框图如下:A B C D高速交通灯绿(60秒)黄(5秒)红(20秒)红(5秒)小道交通灯红红绿黄三、参考设计方案:图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 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'THEN CASE STATE ISWHEN GREEN=>IF A='0'THEN TH:="0101";TL:="1001";A:='1';GA<='1';RA<='0';YA<='0';ELSE IFNOT(TH="0000"AND TL="0001")THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSETH:="0000";TL:="0000";A:='0';STATE:=RED;END IF;END IF;WHEN RED=>IF A='0'THEN TH:="0001";TL:="1001";A:='1';RA<='1';YA<='0';GA<='0';ELSE IFNOT(TH="0000"AND TL="0001") THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSETL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";A:='0';RA<='0';GA<='0';STATE:=YELLOW2;END IF;END IF;WHEN YELLOW2=>IF A='0'THEN TH:="0000";TL:="0101";A:='1';YA<='1';GA<='0';RA<='0';ELSE IF NOT(TH="0000"AND TL="0001")THEN IF TL="0000"THEN TL:="0101";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";GA<='0';RA<='0';YA<='0';A:='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;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);BEGIN PROCESS(CLK)VARIABLE A:STD_LOGIC;VARIABLE TH,TL:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE STATE:RGY;BEGIN IF CLK'EVENT AND CLK='1'THEN CASE STATE ISWHEN YELLOW1=>IF A='0'THEN TH:="0000";TL:="0100";A:='1';YB<='1';GB<='0';RB<='0';CHU<='1';ELSE IF NOT(TH="0000"AND TL="0001")THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";A:='0';STATE:=GREEN;END IF;END IF;WHEN GREEN=>IF A='0'THEN TH:="0001";TL:="1001";A:='1';GB<='1';RB<='0';YB<='0';CHU<='1';ELSE IF NOT(TH="0000"AND TL="0001") THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";A:='0';STATE:=YELLOW2;END IF;END IF;WHEN RED=>IF A='0'THEN TH:="0101";TL:="0100";A:='1';RB<='1';YB<='0';CHU<='1';ELSE IF NOT(TH="0000"AND TL="0001")THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";A:='0';STATE:=YELLOW1;END IF;END IF;WHEN YELLOW2=>IF A='0'THEN TH:="0000";TL:="0100";A:='1';YB<='1';GB<='0';RB<='0';CHU<='1';ELSE IF NOT(TH="0000"AND TL="0001") THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSE TH:="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;五、对源程序进行编译及仿真1、对程序进行编译,结果如下图:2、用waveform对程序进行波形仿真,结果如下图:六、设计思路在听完课程设计指导课前,我们对交通灯的程序设计思路基本上可以称得上是一片茫然,在听完课后虽然有个大致的思路,但还是不知道具体要怎么实施,于是我们开始去图书馆寻找参考书。
交通灯控制器 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 交通灯课程设计报告

十字路口交通灯设计摘要:本课程设计侧重于逻辑电路设计同时采用VHDL硬件描述语言辅助完成对十字路口交通灯电路的功能仿真。
在设计过程中,重点探讨了交通灯控制系统的设计思路和功能模块的划分,对设计过程中出现的问题详细进行分析。
系统主要由四个模块组成:脉冲产生模块、控制模块、选择模块、数码显示模块。
关键词:交通灯功能模块 VHDL语言一.系统设计内容及要求十字路口的方向上各设一组红绿黄灯,显示顺序为:其中一个方向是绿灯、黄灯、红灯,另外一个方向是红灯、绿灯、黄灯。
设置4个数码管,以倒计时的方式显示允许通过或禁止的时间,其中绿灯、黄灯、红灯的持续时间分别是30秒、5秒、35秒。
二.系统硬件设计1.设计思路本实验中主要应用了状态机以及减法器的设计原理。
在状态连续变化的数字系统设计中,采用状态机的设计思想有利于提高设计效率,增加程序的可读性,减少错误的发生几率。
其中,主要模块包括分频模块、控制模块、选择模块、数码显示模块。
各个模块先用EDA技术中的VHDL语言编程仿真,再生成各个模块的模拟元件,最后根据设计连接电路生成顶层原理图文件十字路口交通灯系统。
2.整体设计方案框架图图2-13.顶层文件原理图图2-24.时序仿真图2-3三.系统电路模块设计1.分频模块FENPIN设计模块FENPIN如下图,该模块的功能是将时间256分频,得到占空比为1:256的方波。
模块FENPIN原理图如下:图2-4FENPIN源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport ( clk : in std_logic;d: out std_logic;sel: buffer std_logic_vector(2 downto 0));end;architecture one of fenpin issignal a : std_logic_vector(7 downto 0);beginprocess(clk)beginif clk' event and clk ='1' then a<=a+1;sel<=sel+1;end if; end process;d<=a(7);end;仿真波形如下:图2-52.控制模块KONGZHI设计通过SEL的不同状态选择输出不同的值,当SEL=“000”输出“shi”,当SEL=“001”时输出“ge”。
EDA交通灯控制系统的课程设计报告书

摘要 (1)一设计目的与要求 (2)二设计原理 (2)2.1交通灯控制的系统构成 (3)2.2交通灯控制器的电路控制原理框图 (3)2.3器件下载编程与硬件实现 (4)三设计内容 (4)3.1设计步骤 (5)3.2交通灯控制器各模块的程序 (6)3.3软件仿真结果 (9)3.4硬件实现及调试结果 (10)总结与致谢 (11)参考文献 (12)附录 (21)EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
随着社会经济的发展,城市交通问题越来越引起人们的关注。
人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。
交通控制系统的适用场合主要是用于交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代交通监控指挥系统中最重要的组成部分。
关键字:EDA 交通灯 Verilog HDL QuartusII一设计目的与要求(1) 主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。
(2) 主、支道交替允许通行,主干道每次放行45 s,支干道每次放行25 s,在每次由亮绿灯变成亮红灯的转换过程中,要亮5 s的黄灯作为过渡,并进行减计时显示。
(3) 具有清零、可预置主、支干道通行时间功能。
二设计原理交通灯控制系统的作用主要是实现城市十字交叉路口红绿灯的控制。
在现代化的大城市中,十字交叉路口越来越多,在每个交叉路口都需要使用红绿灯进行交通指挥和管理,红、黄、绿灯的转换要有一个准确的时间间隔和转换顺序,这就需要有一个安全、自动的系统对红、黄、绿灯的转换进行管理,本系统就是基于此目的而开发的。
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)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课设交通灯

《EDA技术及应用》课程设计报告题目:交通灯控制系统的设计院(系):机电与自动化学院专业班级:学生姓名:学号:20142101063指导教师:2017年6月 19日至2016年 6 月 23日武昌首义学院制《EDA技术及应用》课程设计任务书目录1课程设计主要内容与要求 (2)1.1设计目的 (2)1.2控制要求 (2)1.3设计要求 (2)2系统设计 (3)2.1系统原理 (3)2.2 电路功能描述 (3)2.3 交通灯控制器的实现 (3)2.4 软件程序设计 (5)2.5 时钟分频模块 (6)2.6 计数模块 (6)2.7 数码管模块 (7)2.8 LED显示模块 (8)3 软件程序设计 (9)4 硬件电路图、软件仿真图及调试结果 (11)4.1硬件电路 (11)4.2引脚设置 (12)5 软件仿真 (13)6设计过程中的问题及解决办法 (16)7 实验总结和心得体会 (16)8 参考文献 (16)1课程设计主要内容与要求1.1设计目的学习DEA开发软件和QuartusII的使用方法,熟悉可编程逻辑器件的使用。
通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制。
1.2控制要求本课程设计要求利用VHDL对输入的时钟信号进行分频控制产生秒信号,并结合试验箱上的集成电路及芯片,控制十字路口的红绿黄灯交替点亮和熄灭,并用1位7段数码管显示十字路口两个方向的剩余时间。
①根据交通状态控制十字路口红黄绿灯的点亮熄灭及闪烁等。
②倒计时功能:从9秒开始倒计时,3秒时绿灯变黄并闪烁,红灯不变。
9秒结束时一组黄灯变红,另外一组红灯变绿。
③显示功能:使用1位7段数码管动态显示倒计时时间。
1.3设计要求①设计FPGA的基础工作电路;②设计红绿黄12个灯与FPGA芯片的硬件电路连接;③设计显示部分硬件电路;④使用底层及顶层设计完成电路设计,并作出各文件的仿真;⑤程序下载并进行硬件调试。
2系统设计2.1系统原理根据设计要求和系统所具有的功能,可以分析出,。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告课程EDA课程设计题目十字路口交通灯设计系别物理与电子工程学院年级08级专业电子科学与技术班级三学号04 06 10 11 学生姓名张崇光张浩赵峰章维指导教师张惠国职称讲师设计时间2011.6.18-7.8目录前言 (2)第一章题目 (3)1.1题目名称 (3)1.2题目内容及要求 (3)1.3 题目设计意义 (3)第二章分析与设计 (4)2.1交通灯硬件电路控制原理 (4)2.2交通灯程序设计构想 (4)2.3程序设计论证 (4)2.4 系统设计框图 (5)第三章VHDL程序设计 (6)3.1系统输入输出端口设计 (6)3.2系统整体设计 (6)3.2.1系统控制状态机 (6)3.2.2 VHDL状态机代码设计 (7)3.3 红、黄、绿灯控制设计 (9)3.4 数码管显示模块设计 (11)第四章系统仿真及功能描述 (13)4.1 QuartusⅡ时序仿真 (13)4.2 系统功能描述 (13)4.2.1工作模式选择 (13)4.2.2 正常工作模式下的运行状况 (13)4.2.3 其它工作模式介绍 (14)第五章总结与体会 (15)参考文献 (16)附录 (17)前言现代电子产品正在以前所未有的革新速度,向着功能多样化、体积最小化、功耗最低化的方向迅速发展。
它与传统电子产品在设计上的显著区别之一就是大量使用大规模可编程逻辑器件,以提高产品性能、缩写产品体积、降低产品消耗;区别之二就是广泛运用现代计算机技术,以提高电子设计自动化程度,缩短开发周期,提高产品竞争力。
EDA (Electronic Design Automation,电子设计自动化)技术正是为了适应现代电子产品设计的要求,吸收多学科最新成果而形成的一门新技术。
EDA技术伴随着计算机、集成电路、电子系统设计的发展,经历了计算机辅助设计(Computer Assist Design,简称CAD)、计算机辅助工程设计(Computer Assist Engineering Design,简称CAE)和电子设计自动化(Electronic Design Automation,简称EDA)三个发展阶段。
利用EDA技术进行电子系统的设计,具有以下几个特点:○1用软件的方式设计硬件;○2用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;○3设计过程中可用有关软件进行各种仿真;○4系统可现场编程,在线升级;○5整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。
因此,EDA技术是现代电子设计的发展趋势。
EDA技术是一门涉及多学科的综合性技术,内容广泛,所谓EDA技术,就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术。
可编程逻辑器件(简称PLD)是一种由用户编程以实现某种逻辑功能的新型逻辑器件。
FPGA和CPLD分别是现场可编程门阵列和复杂可编程逻辑器件的简称。
现在,FPGA和CPLD 器件的应用已十分广泛,它们将随着EDA技术的发展而成为电子设计领域的重要角色。
国际上生产FPGA/CPLD的主流公司,并且在国内占有市场份额较大的主要是Xilinx,Altera,Lattice三家公司。
FPGA在结构上主要分为三个部分,即可编程逻辑单元,可编程输入/输出单元和可编程连线三个部分。
CPLD在结构上主要包括三个部分,即可编程逻辑宏单元,可编程输入/输出单元和可编程内部连线。
高集成度、高速度和高可靠性是FPGA/CPLD最明显的特点,其时钟延时可小至ns级。
结合其并行工作方式,在超高速应用领域和实时测控方面有着非常广阔的应用前景。
在高可靠应用领域,如果设计得当,将不会存在类似于MCU的复位不可靠和PC机可能跑飞等问题。
FPGA/CPLD的高可靠性还表现在几乎可将整个系统下载于同一芯片中,实现所谓片上系统,从而大大缩小了体积,易于管理和屏蔽。
由于FPGA/CPLD的集成规模非常大,因此可利用先进的EDA工具进行电子系统设计和产品开发。
由于开发工具的通用性、设计语言的标准化以及设计过程几乎与所用器件的硬件结构无关,因而设计开发成功的各类逻辑功能块软件有很好的兼容性和可移植性。
它几乎可用于任何型号和规模的FPGA/CPLD中,从而使得产品设计效率大幅度提高,可以在很短时间内完成十分复杂的系统设计,这正是产品快速进入市场最宝贵的特征。
第一章题目1.1题目名称十字路口交通灯设计1.2题目内容及要求针对现实生活中的十字路口交通灯,实现基于FPGA的控制设计,并实现以下基本功能:1.显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态。
2.用两组红、黄、绿三色灯作为两个方向的红、黄、绿灯。
3.用两组数码管作为东西和南北方向的倒计时显示。
1.3 题目设计意义通过“十字路口交通灯设计”,可训练我们综合运用学过的数字电路的基本知识,独立设计比较复杂的数字电路的能力。
使我们在设计中熟练掌握VHDL语言的编程,并熟练掌握相关编程、仿真软件的操作等。
第二章分析与设计2.1交通灯硬件电路控制原理一般我们生活中的十字路口在硬件电路设计上,采用“对面镜像”的方法设计。
即一个通行道两边的指示灯及倒计时时间相同的。
这是因为道路两边路口需要通行的人、车是相向而行的,这样的设计既降低了软件设计架构要求,在硬件上又容易实现且正确可靠。
2.2交通灯程序设计构想初步构思设想,整个程序架构可以分为以下几个部分来进行设计:1.时钟分频模块,对输入的时钟进行需要的分频,使系统正确工作;2.数码管倒计时时间显示,分别显示主干道和支道通行的倒计时时间;3.红、绿、黄色交通灯的两灭控制设计;4.外部输入控制部分,即调模式、检修模式的控制等。
2.3程序设计论证整个硬件电路以总线输入时钟做为同步信号进行工作,那么针对题目所要求的经过30秒红灯(绿灯)和5秒黄灯的定时时间间隔。
我们必须通过对系统时钟进行分频得到一个较低频率的信号作为计时时间的基准信号。
那么主干道和支道的计时时间主要以数码管的形式进行显示。
每个通道设有两位数码管,共有四位数码管显示当前交通状态的倒计时时间。
使用扫描驱动设计,即分时对位码使能操作,利用人眼睛的成像延时来达到“静态”显示的效果。
在交通灯的每个状态的控制显示可以使用简单的“米里”型状态机实现。
以系统当前状态和系统外部输入的控制信号决定系统的下一个状态。
在程序代码设计上也可简单实现。
2.4 系统设计框图第三章VHDL程序设计3.1系统输入输出端口设计对设计课题的总体考虑,在该交通灯控制系统中所涉及的输入有:系统时钟信号CLK,系统复位RST、调试模式KEY_D、检修模式等按键输入。
输出端口有:数码管显示段码信号DATAOUT,数码管位选信号LED_BIT以及各路口的红灯、绿灯、黄灯显示。
具体定义如下:ENTITY traffic ISPORT (clk : IN std_logic; --系统输入时钟rst : IN std_logic; --复位按键输入key_d : IN std_logic; --调试按键输入key_m : IN std_logic; --主干道(东西)方向通行紧急按键key_b : IN std_logic; --支道(南北)方向通行紧急按键--数码管显示dataout : OUT std_logic_vector(7 DOWNTO 0); --数码管段数据led_bit : OUT std_logic_vector(3 DOWNTO 0); --数码管使能--红绿黄灯显示lightY_m : OUT std_logic_vector(1 DOWNTO 0); --黄灯_主干道(东西)方向lightY_b : OUT std_logic_vector(1 DOWNTO 0); --支道lightG_m : OUT std_logic_vector(1 DOWNTO 0); --绿灯_主干道方向lightG_b : OUT std_logic_vector(1 DOWNTO 0); --支道lightR_m : OUT std_logic_vector(1 DOWNTO 0); --红灯_主干道方向lightR_b : OUT std_logic_vector(1 DOWNTO 0) ); --支道END traffic;3.2系统整体设计3.2.1系统控制状态机在整体控制上,考虑到该系统具有有限个状态,且在各状态机进行转换。
那么可以是用“有限状态机”(FSM)进行设计。
1.系统状态可描述为:○1.当主干道绿灯通行时,显示倒计时(30S)并支道红灯亮;○2.当计时时间到后主干道黄灯亮(5S),支道依然红灯亮;○3.主干道红灯亮,支道绿灯亮(30S);○4.支道黄灯等待,主干道仍然保持红灯亮(5S)○5.转状态○12.系统状态图:3.2.2 VHDL状态机代码设计PROCESS(div_cnt(20),rst,key_m,key_b,key_d)BEGIN--判断是否为调试模式IF (NOT key_d ='1') THEN --调试按键按下,调试模式计时time_s <= "0001"; --红灯10秒time_y <= "0010"; --黄灯2秒ELSE --正常模式运行time_s <= "0011"; --红灯30秒time_y <= "0101"; --黄灯5秒END IF;--正常进程开始IF (NOT rst = '1') THEN --复位亮红灯state <= red_m;second_m <="0011"; --三十秒倒计时初值second_b <="0011";first_m <= "0000";first_b <= "0000";ELSIF(NOT key_m = '1') THEN --主干道紧急通行state <= green_m;ELSIF(NOT key_b = '1') THEN --支道紧急通行state <= red_m;ELSIF(div_cnt(24)'EVENT AND div_cnt(24) = '1')THENCASE state ISWHEN red_m => --主干道红灯状态,支道绿灯IF (first_m /= "0000" or first_b /="0000") THENfirst_m <= first_m - "0001"; --计时秒位减1first_b <= first_b - "0001";ELSEIF (second_m /= "0000" or second_b /="0000") THENsecond_m <= second_m - "0001"; --计时十位减1second_b <= second_b - "0001";first_m <= "1001"; --计时个位复位9first_b <= "1001";ELSEstate <= yellow_b; --红灯计时结束,准备绿灯--first_b <="0101"; --支道黄灯5秒first_b <= time_y; --支道黄灯5秒second_b <="0000";first_m <="0000"; --主干道为0等待second_m <="0000";END IF;END IF;WHEN green_m => --主干道绿灯状态,支道红灯IF (first_m /= "0000" or first_b /="0000") THENfirst_m <= first_m - "0001";first_b <= first_b - "0001";ELSEIF (second_m /= "0000" or second_b /="0000") THENfirst_m <= "1001";first_b <= "1001";second_m <= second_m - "0001";second_b <= second_b - "0001";ELSEstate <= yellow_m; --主干道绿灯计时结束,转为黄灯过渡--first_m <= "0101"; --黄灯计时初值5秒first_m <= time_y; --黄灯计时初值5秒second_m <= "0000";first_b <= "0000";second_b <= "0000";END IF;END IF;WHEN yellow_b => --支道黄灯状态IF (first_b /= "0000" OR second_b /= "0000") THENIF (second_b /= "0000") THEN --此步正常不执行first_b <= "1001";second_b <= second_b - "0001";ELSEfirst_b <= first_b - "0001"; --支道黄灯计时减1END IF;ELSEstate <= green_m; --转为主干道绿灯,支道红灯--second_m <= "0011"; --复位红灯计时初值second_m <= time_s; --复位红灯计时初值first_m <= "0000";--second_b <= "0011";second_b <= time_s;first_b <="0000";END IF;WHEN yellow_m => --主干道黄灯状态IF (first_m /= "0000" OR second_m /= "0000") THENIF (second_m /= "0000") THEN --此步正常不执行first_m <= "1001";second_m <= second_m - "0001";ELSEfirst_m <= first_m - "0001"; --支道黄灯计时减1END IF;ELSEstate <= red_m; --转为主干道红灯,支道绿灯--second_m <= "0011"; --复位红灯计时初值second_m <= time_s; --复位红灯计时初值first_m <= "0000";--second_b <= "0011";second_b <= time_s;first_b <="0000";END IF;WHEN OTHERS =>first_m <= "0000";second_m <= "0000";first_b <= "0000";second_b <= "0000";END CASE;END IF;END PROCESS;3.3 红、黄、绿灯控制设计由于交通灯设计的“对面镜像”原则,所以只需实现对两组红、黄、绿灯的控制即可。