EDA课程设计-交通信号灯控制器设计_第1页
EDA课程设计-交通信号灯控制器设计_第2页
EDA课程设计-交通信号灯控制器设计_第3页
EDA课程设计-交通信号灯控制器设计_第4页
EDA课程设计-交通信号灯控制器设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PAGE - 21 -交通信号灯控制器设计摘要VHDL作为一种规范的硬件描述语言,被广泛的运用于电路的设计之中,本设计主要针对日常生活中十字路口交通灯控制,通过FPGA芯片来实现交通信号灯控制电路的设计而做出的研究。本文采用VHDL 硬件描述语言描述了十字路口交通信号灯电路,并完成了对电路的功能仿真。交通灯的循环点亮方式采用状态机的设计思路,实现环形计数器的功能。输出部分通过组合逻辑电路实现。系统控制主要由计数器、控制器、分频器、分位译码器、和扫描显示电路等组成。通过输入输出接口控制红绿灯发光二极管的亮灭和七段数码管的显示。与传统的设计方式相比,本设计由于采用了FPGA芯片来实现,它将大量的电

2、路功能集成到一个芯片中,并且可以由用户自行设计逻辑功能,提高了系统的功率密集度、可靠性和工作速度。关键词:现场可编程门阵列、硬件描述语言、交通灯、状态机、环形计数器AbstractVHDL as a standard of hardware description language, is widely used in the circuit design. this design is mainly aiming at the crossroads traffic lights control in daily life, through the FPGA chip to realize t

3、he traffic lights control circuit design and research. In this article, the VHDL hardware description language describes the intersection traffic light circuit, and completed the function of circuit simulation. The traffic light cycle light way using the state machine design train of thought, to rea

4、lize the function of the annular counter. Output part through the assembly logic circuit implementation. System control mainly by the counter, controller, frequency division device, points a decoder, and scanning display circuit etc. Through the input/output interface control traffic lights led ligh

5、t destroyed and seven section of pipe that digital. Compared with the traditional design methods, the design with FPGA chips to realize, it will be a lot of circuit function integration to a chip, and can be by the user to design logical function, improve the system of power consumed, reliability an

6、d the speed of work. Keywords: FPGA Hardware Description Language Traffic lights State Machine Ring Counter目录 TOC o 1-3 h z u HYPERLINK l _Toc170484615 第一章 问题分析 PAGEREF _Toc170484615 h 2 HYPERLINK l _Toc170484621 第二章 总体方案设计 PAGEREF _Toc170484621 h 4 HYPERLINK l _Toc170484622 2.1方案分析 PAGEREF _Toc1704

7、84622 h 4 HYPERLINK l _Toc170484623 2.1方案状态机控制设计 PAGEREF _Toc170484623 h 4 HYPERLINK l _Toc170484629 2.3 整体设计方案 PAGEREF _Toc170484629 h 15 HYPERLINK l _Toc170484630 第三章 软硬件电路的设计 PAGEREF _Toc170484630 h 16 HYPERLINK l _Toc170484631 3.1 各模块的原理设计 PAGEREF _Toc170484631 h 16 HYPERLINK l _Toc170484632 3.1

8、.1 时钟模块设计 PAGEREF _Toc170484632 h 17 HYPERLINK l _Toc170484633 3.1.2 交通灯控制及计时模块 PAGEREF _Toc170484633 h 17 HYPERLINK l _Toc170484633 3.1.3 扫描显示译码模块 PAGEREF _Toc170484633 h 173.1.4顶层文件的编写 HYPERLINK l _Toc170484633 PAGEREF _Toc170484633 h 17 HYPERLINK l _Toc170484633 3.1.5 顶层原理图 PAGEREF _Toc170484633

9、h 17 HYPERLINK l _Toc170484631 3.2 各模块程序及仿真 PAGEREF _Toc170484631 h 16 HYPERLINK l _Toc170484631 3.2.1时钟分频模块VHDL程序及仿真 PAGEREF _Toc170484631 h 16 HYPERLINK l _Toc170484631 3.2.2交通灯控制及计时模块VHDL程序和仿真 PAGEREF _Toc170484631 h 16 HYPERLINK l _Toc170484631 3.2.3 扫描显示译码模块VHDL程序及仿真 PAGEREF _Toc170484631 h 16

10、HYPERLINK l _Toc170484634 第四章 整体系统程序及仿真 PAGEREF _Toc170484634 h 18 HYPERLINK l _Toc170484635 第五章 结论 PAGEREF _Toc170484635 h 19第六章 心得体会 PAGEREF _Toc170484635 h 19 HYPERLINK l _Toc170484636 参考文献 PAGEREF _Toc170484636 h 19 第一章 问题分析在现代城市中,人口和汽车日益增长,市区交通也日益拥挤,人们的安全问题也日益重要。因此,红绿交通信号灯成为了交管部门管理交通的重要手段。那么,要想

11、在十字路口中做到车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊,要靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通控制系统是近现代社会随着物流、出行等交通发展产生的一套独特的公共管理系统。要保证高效安全的交通秩序,除了制定一系列的交通规则,还必须通过一定的技术手段加以实现。现代电子科学技术的发展和成熟能比较好的解决系统建立中硬软件方面要求的技术难题。目前,交通控制方面的研究能完全实现自动智能化,甚至将整个区域整合成一个统一的系统范围,还能根据正常时段以及特定突发时段的情况进行科学的自动调整。传统的交通信号灯控制电路是由振荡电路、三进制计数器、译码电路、显示驱动电路和开关控制电

12、路等电路组成。在本课程设计中,通过EDA设计程序使十字路口的工作顺序为主干道方向红灯亮30秒,前25秒为支干道方向绿灯亮,后5秒黄灯亮。然后支干道方向红灯亮50秒,前45秒主干道方向绿灯亮,后5秒黄灯亮,依次重复。第二章 总体方案设计2.1 方案分析通过分析课程设计的要求可以知道,所要设计的交通信号灯控制电路要能够适用于由一条主干道和一条支干道的汇合点形成的十字交叉路口,其主要功能是:主干道处于常允许通行的状态,支干道有车来时才允许通行;当支干道没有车通行时,主干道亮绿灯,而支干道亮红灯,主、支干道的倒计时数码管不显示数字;当支干道有车通行时,进入了主干道和支干道交替通行的情况。 当进入到交替

13、通行时,主干道每次放行45秒,支干道每次放行25秒。首先主干道通行45秒,并且主干道显示45秒的倒计时,此45秒内主干道亮绿灯,当45秒计时结束,主干道亮黄灯5秒,而且显示5秒倒计时,用于绿灯转为红灯作为过渡,使行驶中的车辆有时间停到禁行线外,在主干道亮绿灯和黄灯的50秒内,支干道亮红灯50秒,而且支干道显示50秒的倒计时。然后,当支干道亮红灯50秒结束时,主干道由黄灯转为红灯,并且主干道的红灯亮30秒,显示30秒的倒计时,在此过程中,支干道先亮绿灯25秒,显示25秒的倒计时,25秒过后绿灯转为黄灯,而且黄灯亮5秒,显示5秒倒计时,用于绿灯转为红灯作为过渡,使行驶中的车辆有时间停到禁行线外。支

14、干道通行结束后,主干道通行,以此交替。2.2方案状态机控制设计将十字路口分成东西走向和南北走向的主干道和支干道。交通灯的工作明显可以分成5个状态,如下表3.1所示:表3.1 工作状态表支干道是否有车状态实现功能支干道没车St0支干道亮红灯,主干道亮绿灯,数码管不显示。支干道有车St1主干道亮绿灯45秒,数码管显示45秒倒计时;支干道亮红灯,数码管显示从49秒倒计时到05秒。St2主干道亮黄灯5秒,数码管显示5秒倒计时;支干道亮红灯,数码管显示从04秒倒计时到00秒。St3支干道亮绿灯25秒,数码管显示25秒倒计时;主干道亮红灯,数码管显示从29秒倒计时到05秒。St4支干道亮黄灯5秒,数码管显

15、示5秒倒计时;主干道亮红灯,数码管显示从04秒倒计时到00秒。2.3 整体设计方案根据交通灯控制器的功能与要求,可以把整体设计分为三个模块:分频模块,把2kHz的频率分成1Hz,1Hz用于倒计时计数的时钟信号,而2kHz则可以用于数码管扫描显示的片选时钟信号;交通灯控制及倒计时(五个状态的控制)模块;数码管译码扫描显示模块。整体的系统框图如图2.1所示: 图2.1 系统框架图分频模块就是把输入的2kHz时钟频率2000分频得到1Hz的频率用于数码管倒计时的时钟信号,其原理就是设计一个0到999循环计数的的计数器,当计数溢出,即计数到999时使输出量取反,则输出为0.5秒的高电平和0.5秒的低电

16、平交替出现,就得到了1Hz的方波,作为秒倒计时的时钟信号。 交通灯控制及倒计时模块就是五个状态的转换模块,是整个系统的核心模块,其五个状态分别st0、st1、st2、st3、st4。其中st0是当支干道没有车通行的状态,st1是主干道绿灯亮45秒的状态,st2是主干道亮黄灯5秒的状态,st3是支干道亮绿灯25秒的状态,st4是支干道亮黄灯5秒的状态。当主干道亮绿灯和黄灯时,支干道都是亮红灯,当支干道亮绿灯和黄灯时,主干道都是亮红灯,并且主、支干道都会显示亮灯的倒计时时间,主、支干道的红黄绿灯用六个LED发光二极管代替。五个状态图如下图2.2所示:图2.2 状态图 数码管倒计时显示,是用四个一体

17、的数码管,分别表示主干道和支干道的秒倒计时,所以是动态扫描显示,扫描的频率直接用2KHz的输入时钟频率。第三章 软硬件电路的设计3.1 各模块的原理设计3.1.1 时钟模块设计时钟分频模块就是把输入的2kHz时钟频率2000分频得到1Hz的频率用于数码管倒计时的时钟信号,其原理就是设计一个0到999循环计数的的计数器,当计数溢出,即计数到999时使输出量取反,则输出为0.5秒的高电平和0.5秒的低电平交替出现,就得到了1Hz的方波,作为秒倒计时的时钟信号。时钟分频模块生成的元件符号如下图3.1所示:图3.1 时钟分频模块clk2khz是频率为为2khz的输入时钟信号,clk1hz是经过2000

18、分频后得到的频率为1hz方波的输出信号。3.1.2 交通灯控制及计时模块 此模块是整个系统的核心部分,主要功能是完成五个状态的转换,并且在每个状态里完成相应的控制作用,即控制主干道和支干道的红黄绿灯的点亮和各自数码管倒计时显示。编程时主要是用一个进程语句,其敏感信号是时钟分频模块产生的1Hz时钟信号,进程里主要用case语句完成五个状态的控制,在每个状态里要控制主干道和支干道的红黄绿灯的点亮,而且要控制各自数码管倒计时的显示,并为扫描显示译码模块提供倒计时时间,同时要使每个状态结束时能顺利进入下一个状态。五个状态及相应的功能是:St0,支干道亮红灯,主干道亮绿灯,数码管不显示;St1,主干道亮

19、绿灯45秒,数码管显示45秒倒计时;支干道亮红灯,数码管显示从49秒倒计时到05秒;St2,主干道亮黄灯5秒,数码管显示5秒倒计时;支干道亮红灯,数码管显示从04秒倒计时到00秒;St3,支干道亮绿灯25秒,数码管显示25秒倒计时;主干道亮红灯,数码管显示从29秒倒计时到05秒;St4,支干道亮黄灯5秒,数码管显示5秒倒计时;主干道亮红灯,数码管显示从04秒倒计时到00秒。状态转换条件参照图3.2。此模块生成的元件符号如下图3.2所示:图3.2 交通灯控制及计时模块clk1hz是分频模块输出的1Hz的时钟信号,car是支干道是否有车的判断信号,one1、ten1、one2、ten2分别是主干道

20、倒计时的个位和十位,支干道倒计时的个位和十位。r_a、g_a、y_a、r_b、g_b、y_b分别是主干道和支干道的红、绿、黄灯控制信号。3.1.3 扫描显示译码模块此模块中含有七段数码管译码和扫描显示两个部分。七段译码可以使用case语句,将数码管要显示的数译成对应的七位二进制数,用来控制数码管的a、b、c、d、e、f、g的导通。主干道和支干道倒计时要用到4个数码管,且是四位一体的,则要使用扫描显示的方法:设计一个00到11循环计数的计数器,而且计数的时钟要比较大,选用输入的2KHz的时钟信号;当计数器计数为00时,选通第一个数码管,给它主干道倒计时个位的七段译码,当计数器计数为01时,选通第

21、二个数码管,给它主干道倒计时十位的七段译码,当计数器计数为10时,选通第三个数码管,给它支干道倒计时个位的七段译码,当计数器计数为11时,选通第四个数码管,给它支干道倒计时十位的七段译码,并以此循环扫描显示,达到人眼看上去四个数码管全显示的效果。此模块生成的元件符号如下图3.3所示: 图3.3 扫描显示译码模块元件符号其中clk2khz是输入的扫描时钟信号。one1、ten1分别是主干道倒计时的个位和十位,one2、ten2分别是支干道倒计时的个位和十位,这四个信号都是有交通灯控制及倒计时模块输出的。Scan是四个数码管的片选信号,seg_7是七段译码输出信号。3.1.4顶层文件的编写 顶层文

22、件就是将上述的三个模块进行例化,把它们连接起来组成一个整体。元件例化语句由两部分组成,第一部分是将一个现成的设计实体定义为一个元件,它的最简单表达式如下: component 元件名 is port (端口名表); end component 文件名; 元件例化语句的第二部分是此元件与当前设计实体中元件间及端口的连接说明,语句的表达式如下: 例化名:元件名 port map (端口名=连接端口名,.);由顶层文件生成的元件符号如下图3.4所示:图3.4 顶层文件生成元件符号clk_2k是外部输入的频率为2khz的时钟信号,car是判断支干道是否有车的输入信号。scan1.0是四位一体数码管的片

23、选输出信号,seg_76.0是数码管的七段译码输出信号,ra、ga、ya、rb、gb、yb分别是主干道和支干道红、绿、黄灯的输出控制信号。3.1.5 顶层原理图系统原理图如下图3.5所示:图3.5 顶层原理图系统工作原理: 把car置为低电平,系统处于 st0状态,即表示支干道没有车来时,主干道亮绿灯,支干道亮红灯,四个倒计时数码管都是灭的。当把car置为高电平并不变后,主干道和支干道分别进入状态st1,st2,st3,st4,并分别正常显示四个状态的内容,实现主干道每次放行45秒,支干道每次放行25秒,从而正确实现交叉路口交通灯的控制。3.2 各模块程序及仿真3.2.1时钟分频模块VHDL程

24、序及仿真library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div isport(clk2khz:in std_logic;-2khz的输入时钟 clk1hz:out std_logic);-经2000分频后的1hz时钟输出信号end;architecture one of div isbeginprocess(clk2khz)2KHz to 1Hzvariable count:integer range 0 to 999;-0到999计数器variable clk1:std_logic

25、;beginif clk2khzevent and clk2khz=1 then if count=999 then clk1:=not clk1;count:=0; else count:=count+1; end if;end if;clk1hzif car=0 then支干道没车经过 g1=1;r1=0;y1=0;g2=0;r2=1;y2=0; h1:=10;l1:=10;h2:=10;l2:=10;st=000; else stif car=0 then st=000;主干道绿灯亮45秒 else if eoc=0 then h1:=4;l1:=4; h2:=4;l2:=9; eoc:

26、=1; g1=1;r1=0;y1=0;g2=0;r2=1;y2=0; else if h1=0 and l1=1 then stif car=0 then st=000;主干道黄灯亮5秒 else if eoc=0 then h1:=0;l1:=4; h2:=0;l2:=4; eoc:=1; g1=0;r1=0;y1=1;g2=0;r2=1;y2=0; else if l1=1 then stif car=0 then st=000;支干道绿灯亮25秒 else if eoc=0 then h1:=2;l1:=9; h2:=2;l2:=4; eoc:=1; g1=0;r1=1;y1=0;g2=

27、1;r2=0;y2=0; else if h2=0 and l2=1 then stif car=0 then st=000;支干道黄灯亮5秒 else if eoc=0 then h1:=0;l1:=4; h2:=0;l2:=4; eoc:=1; g1=0;r1=1;y1=0;g2=0;r2=0;y2=1; else if l2=1 then stNULL;end case;end if;r_a=r1;g_a=g1;y_a=y1;r_b=r2;g_b=g2;y_b=y2;one1=l1;ten1=h1;one2=l2;ten2seg77seg77seg77seg77seg77seg77seg

28、77seg77seg77seg77seg77=0000000;end case;end process;seg_7=seg77;process(clk2khz,one1,ten1,one2,ten2)数码管动态扫描计数beginif clk2khzevent and clk2khz=1 then -00到11循环计数器 if cnt=11 then cnt=00; else cntdata=one1;scandata=ten1;scandata=one2;scandata=ten2;scannull;end case;end process;end three;波形仿真和分析:方便仿真设设置的

29、end time为6ms,clk2khz周期为500us。 当one和ten为10时对应的七段译码是0000000,使数码管不显示,用于支干道没有车的情况!扫描显示译码模块的波形仿真图波形仿真说明:为方便观察one1、ten1、one2、ten2及scan用的是无符号十进制数,当scan=0时显示one1,当scan=1时显示ten1,当scan=2时显示one2,当scan=3时显示ten2。Seg_7的从高到低七位分别对应数码管gfedcba七段。第四章 整体系统程序及仿真顶层文件模块VHDL程序及仿真library ieee;use ieee.std_logic_1164.all;use

30、 ieee.std_logic_unsigned.all;entity jtd isport(clk_2k,car:in std_logic;-2khz输入时钟信号 scan:out std_logic_vector(1 downto 0);-数码管片选输出信号 seg7:out std_logic_vector(6 downto 0);-七段译码输出信号 ra,ga,ya,rb,gb,yb:out std_logic);-主支干道红黄绿灯end;architecture behave of jtd iscomponent div-定义时钟分频元件port(clk2khz:in std_log

31、ic; clk1hz:out std_logic);end component;component state5-定义交通灯控制及计时元件port(clk1hz,car:in std_logic; one1,ten1,one2,ten2:out integer range 0 to 10; r_a,g_a,y_a,r_b,g_b,y_b:out std_logic);end component;component display-定义扫描显示译码元件port(clk2khz:in std_logic; one1,ten1,one2,ten2:in integer range 0 to 10;

32、scan:out std_logic_vector(1 downto 0); seg_7:out std_logic_vector(6 downto 0);end component;signal clk_1hz:std_logic;signal onea,tena,oneb,tenb:integer range 0 to 10;beginu1:div port map(clk2khz=clk_2k,clk1hz=clk_1hz);u2:state5 port map (clk1hz=clk_1hz,car=car,r_a=ra,g_a=ga,y_a=ya, r_b=rb,g_b=gb,y_b

33、=yb,one1=onea,ten1=tena,one2=oneb,ten2=tenb);u3:display port map (clk2khz=clk_2k,one1=onea,ten1=tena, one2=oneb,ten2=tenb,scan=scan,seg_7=seg7); end;波形仿真及分析:为了方便波形仿真,设置end time为1.2s,clk_2k是周期为5us的方波。顶层文件波形仿真图仿真波形分析:当car为0时,为状态st0,ga、rb为高电平,即主干道亮绿灯,支干道亮红灯;当car由0变为1且不变时,状态转为st1,ga、rb为高电平,即主干道亮绿灯,支干道亮红

34、灯;当st1倒计时结束,则转为st2,ya、rb为高电平,即主干道亮黄灯,支干道亮红灯;当st2倒计时结束,则转为st3,ra、gb为高电平,即主干道亮红灯,支干道亮绿灯;当st3倒计时结束,则转为st4,ra、yb为高电平,即主干道亮红灯,支干道亮黄灯;当st4倒计时结束,则转为st1。当在状态st1,大约在1s处car由高电平变为低电平时,状态则会转为st0。鉴于上图中的scan和seg7太密而看不出其中的变化,所以要把其中几段放大才能便于观察。1、st=st0时放大的波形如下图3.6所示:图3.6 st=st0时放大的一段波形波形分析:通过图3.6可以清晰地观察到当st=st0时,主干道

35、和支干道的数码管都是灭的,即seg7=”0000000”。2、st=st1时放大的一段波形如下图3.7所示:图3.7 st=st1时放大的一段波形波形分析:由于要经过clk_2k两千分频后才能得到1hz的倒计时时钟信号,则要经过clk_2k两千个周期后主干道和支干道的数码管秒倒计时才减一秒,所以在顶层文件波形仿真时不好看到倒计时的变化。在图3.7中可以看到在st为st1时主干道的数码管显示为44,支干道的数码管显示为49,即scan为0时,seg7是“1100110”,scan为1时,seg7是“1100110”,scan为2时,seg7是“1101111”,scan为3时,seg7是“1100110”。而st2、st3、st4放大后的波形和图3.6相似。第五章 结论开始时把car置为低电平,即表示支干道没有车来时,主干道亮绿灯,支干道亮红灯,四个倒计时数码管都是灭的。当把car置为高电平并不变后,主干道和支干道分别继续亮绿灯和红灯,同时主干道的数码管从44开始一秒一秒地倒计时显示直至倒计时到00,而支干道的数码管从49开始一秒一秒地倒计时显示,并且主、支干道的数码管显示值始终相差5。当主干道的倒计时到00(支干道倒计时到05)后的下一秒,主干道的绿灯灭,亮起了黄灯,而且主干道的数码管从

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论