交通灯控制系统(,终结)_第1页
交通灯控制系统(,终结)_第2页
交通灯控制系统(,终结)_第3页
交通灯控制系统(,终结)_第4页
交通灯控制系统(,终结)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、河南机电高等专科学校可编程逻辑器件原理与应用课程设计报告交通控制器系统设计专业班级: 医电131 姓 名: 徐长伟 学 号: 130411116 时 间: 2015年6月 成 绩: 交通灯控制系统的设计摘要:随着时代的发展交通事故也急剧增加,为了改善交通秩序减少交通事故,交通灯起着越来越重要的作用。交通灯安装在各个路口上,需要交通灯控制器来对它进行控制,所以设计交通灯控制器有着至关重要的作用。随着EDA技术的大力发展,FPGA等数字可编程器件的出现,数字出租车计费器的设计也就变得更加简单,而且性能更稳定、能实现较复杂的功能,且运用EDA软件可方便的在计算机上实现设计与仿真。本设计基于VHDL(

2、FPGA)语言是电子设计领域中最具活力和发展前途的一项技术,未来必定会取代部分落伍的数字元元件。随着电子技术的不断发展与进步,集成电路的设计方法也在不断地更新。键关词:交通灯、控制器、VHDL语言。目录一、概述4二、课程设计要求5三、总体构思6四、硬件电路的设计8五、软件设计10六仿真及下载调试186.1仿真186.2程序下载21七总结与展望24参考文献251 概述现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。前者以微细加工技术为代表,而后者的代表就

3、是电子设计自动化(electronic design automatic,EDA)技术。本设计采用的VHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述、覆盖面广、抽象能力强,因此在实际应用中越来越广泛。ASIC是专用的系统集成电路,是一种带有逻辑处理的加速处理器。而FPGA是特殊的ASIC芯片,与其他的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。在控制系统中,键盘是常用的人机交换接口,当所设置的功能键或数字键

4、按下的时候,系统应该完成该键所设置的功能。因此,键信息输入是与软件结构密切相关的过程。根据键盘的结构不同,采用不同的编码方法。但无论有无编码以及采用什么样的编码,最后都要转换成为相应的键值,以实现按键功能程序的转移。现在是一个知识爆炸的新时代。新产品、新技术层出不穷,电子技术的发展更是日新月异。可以毫不夸张的说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。在这快速发展的年代,时间对人们来说是越来越宝贵,在快节奏的生活时,人们往往忘记了时间,一旦遇到重要的事情而忘记了时间,这将会带来很大的损失。因此我们需要一个定时系统来提醒这些忙碌的人。数字化的钟表给人们带来了极

5、大的方便。近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。2 课程设计要求随着各种交通工具的发展和交通指挥的需要,交通灯的诞生大大改善了城市交通状况。要求设计一个交通灯控制器 ,控制十字路口主、支两条道路的红、绿、黄三色灯,指挥车辆和行人的安全通行。具体要求: 设计一个十字路口的交通灯控制器,能显示十字路口东西、南北两个方向红、黄、绿灯的指示状态。用两组红、黄、 绿三种颜色的灯分别作为东西、南北两个方向 红、黄、绿等。变化规律为:东西绿灯亮,南北红灯亮东西黄灯亮,南北

6、红灯亮东西红灯亮,南北绿灯亮东西红灯亮,南北黄灯亮东西绿灯亮,南北红灯亮······,这样循环下去。南北方向是主干道车道,东西方向是支干道车道,要求两条交叉道路上的车辆交替运行,主干道每次通行时间为30秒,支干道每次通行时间为20秒,时间可设置修改。 绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道。要求交通灯控制器有复位功能,并要求所有交通灯的状态变化在时钟脉冲上升沿处。3 总体构思根据交通灯系统设计要求,可以用一个有限状态机来实现这个交通灯控制器。首先根据功能要求,明确两组交通灯的状态,这两组交通灯总共共有四种状态,我们用ST

7、0,ST1,ST2,ST3 来表示:St0表示主路绿灯亮,支路红灯亮; St1表示主路黄灯亮,支路红灯亮;St2表示主路红灯亮,支路绿灯亮;St3表示主路红灯亮,支路黄灯亮。(1)根据上述四种状态描述列出的状态转换表如表3-1所示。 表3-1交通灯控制器状态转换表当前状态下一状态转换条件St0St1主路绿灯亮了25秒St1St2主路黄灯亮了5 秒St2St3主路绿灯亮了 15秒St3St0支路黄灯亮了5秒St0 or st1 or st2 or st3St0复位信号使能(2)根据状态转换表得到交通灯控制器的状态转移图如图3-1所示。 St0St3St1St2 图3-1交通灯控制器的状态转移图(

8、3)交通灯控制系统的本质就是一个如图3-2所示的控制器模块。 图3-2交通灯控制器结构示意图其中,clk为时钟信号,时钟上升沿有效。Rst为复位信号,高电平有效。lgt1_red,lgt1_yellow、lgt1_green,分别表示主干道的红灯,黄灯,绿灯显示信号,高电平有效。lgt2_red,lgt2_yellow,lgt2_green分别表示支路的红灯,黄灯,绿灯显示信号, 4 硬件电路的设计硬件电路的设计包括状态控制模块、分频器模块、转换器模块、TOP文件模块的图形设计。(1)状态控制模块的图形符号如图4-1所示。图4-1状态控制模块图形(2)分频器的图形模块如图4-2所示。图4-2分

9、频器模块图形实现频率由5MHZ到1Hz的转变,达到我们素需要的1S的要求。(3)转换器的图形模块如图4-3所示。图4-3转换器模块图形实现BCD码转化成数码块中显示的数字。(4)TOP文件的图形模块如图4-4所示。图4-4TOP文件模块图形5软件设计软件的设计包括对控制状态模块、分频器、转换器和顶层模块的设计,以下分别为控制状态模块、分频器、转换器和顶层模块的代码。(1)状态控制模块的代码如下。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY traffic_ctrl IS GENE

10、RIC( green1_cnt:INTEGER:=25; -定义主通道绿灯亮的时间,这里为25秒 yellow1_cnt:INTEGER:=5; -定义主通道黄灯亮的时间,这里为5秒 green2_cnt:INTEGER:=15; -定义支路绿灯亮的时间,这里为15秒 yellow2_cnt:INTEGER:=5 -定义支路黄灯亮的时间,这里为5秒 ); PORT( CLK:IN STD_LOGIC; -时钟信号 rst:IN STD_LOGIC; -复位信号 lgt1_red:OUT STD_LOGIC; -主通道红灯控制信号 lgt1_yellow:OUT STD_LOGIC; -主通道黄

11、灯控制信号 lgt1_green:OUT STD_LOGIC; -主通道绿灯控制信号 lgt2_red:OUT STD_LOGIC; -支路红灯控制信号 lgt2_yellow:OUT STD_LOGIC; -支路黄灯控制信号 lgt2_green:OUT STD_LOGIC -支路绿灯控制信号 );END ENTITY traffic_ctrl;ARCHITECTURE rt1 OF traffic_ctrl IS -定义结构体TYPE STATES IS(st0,st1,st2,st3); -定义控制器各种状态SIGNAL state:states:=st0; -初始化状态SIGNAL c

12、nt:integer range 0 to 30:=1;-定义计数器SIGNAL cnt_enb:std_logic:='0' -初始化计数器使能信号BEGIN PROCESS(CLK,rst) BEGIN IF(rst='1') THEN -复位信号为高电平则执行复位操作 state<=st0; cnt<=1; ELSIF(rising_edge(CLK) THEN -时钟上升沿 IF(cnt_enb='1') THEN -计数器计数 cnt<=cnt+1; ELSE cnt<=1; END IF; CASE state

13、 IS WHEN st0=> -主通道绿灯亮了一段时间适时转换状态st1 IF(cnt=green1_cnt) THEN state<=st1; ELSE state<=st0; END IF; WHEN st1=> -主通道黄灯亮了一段时间适时转换状态st2 IF(cnt=yellow1_cnt) THEN state<=st2; ELSE state<=st1; END IF; WHEN st2=> -支路绿灯亮了一段时间适时转换状态st3 IF(cnt=green2_cnt) THEN state<=st3; ELSE state<=

14、st2; END IF; WHEN st3=> -支路黄灯亮了一段时间适时转换状态st0 IF(cnt=yellow2_cnt) THEN state<=st0; ELSE state<=st3; END IF; END CASE; END IF; END PROCESS; PROCESS(state) BEGIN CASE state IS WHEN st0=> -st0表示主路绿灯亮,支路红灯亮 lgt1_red<='0' lgt1_yellow<='0' lgt1_green<='1' lgt2_r

15、ed<='1' lgt2_yellow<='0' lgt2_green<='0' cnt_enb<='1' IF(cnt=green1_cnt) THEN cnt_enb<='0' END IF; WHEN st1=> -st1表示主路黄灯亮,支路红灯亮 lgt1_red<='0' lgt1_yellow<='1' lgt1_green<='0' lgt2_red<='1' lgt2_yell

16、ow<='0' lgt2_green<='0' cnt_enb<='1' IF(cnt=yellow1_cnt) THEN cnt_enb<='0' END IF; WHEN st2=> -st2表示主路红灯亮,支路绿灯亮 lgt1_red<='1' lgt1_yellow<='0' lgt1_green<='0' lgt2_red<='0' lgt2_yellow<='0' lgt2_gre

17、en<='1' cnt_enb<='1' IF(cnt=green2_cnt) THEN cnt_enb<='0' END IF; WHEN st3=> -st3表示主路红灯亮,支路黄灯亮 lgt1_red<='1' lgt1_yellow<='0' lgt1_green<='0' lgt2_red<='0' lgt2_yellow<='1' lgt2_green<='0' cnt_enb&l

18、t;='1' IF(cnt=yellow2_cnt) THEN cnt_enb<='0' END IF; END CASE; END PROCESS;END rt1;(2)分频器的代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fenpin ISPORT(CLK: IN STD_LOGIC; OUTCLK: BUFFER STD_LOGIC);END fenpin;ARCHITEC

19、TURE one OF fenpin ISSIGNAL CLK1,CLK2: STD_LOGIC;BEGIN PROCESS(CLK)VARIABLE cnt: INTEGER range 0 to 4; -500khz 50M/500k=100BEGIN IF clk'event AND clk='1' THEN IF cnt=4 THEN OUTCLK<= not OUTCLK; cnt:=0; ELSE cnt:=cnt+1; END IF; END IF;END PROCESS;-PROCESS(CLK1)-VARIABLE cnt: INTEGER ra

20、nge 0 to 49; -5khz 500k/5k=100-BEGIN -IF CLK1'event AND CLK1='1' THEN - IF cnt=49 THEN CLK2<= not CLK2; cnt:=0; -ELSE cnt:=cnt+1; -END IF; - END IF;-END PROCESS;-PROCESS(CLK2)-variable cnt: integer range 0 to 49; -50hz 5k/50=100-BEGIN -IF CLK2'event AND CLK2='1' THEN - IF

21、cnt=49 THEN CLK4<= not CLK4; cnt:=0; - ELSE cnt:=cnt+1; -END IF; -END IF;-END PROCESS;-PROCESS(CLK3)-variable cnt: integer range 0 to 24; -1hz 50/50=1-BEGIN- IF CLK3'event AND CLK3='1' THEN- IF cnt=24 THEN OUTCLK<= not OUTCLK; cnt:=0;- ELSE cnt:=cnt+1;- END IF;- END IF;-END PROCESS

22、;END one;(3)转换器的代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_arith.ALL;ENTITY zhuanhuan ISPORT( clk:in std_logic;zhitime:in STD_LOGIC_VECTOR(6 DOWNTO 0); zhutime:in STD_LOGIC_VECTOR(6 DOWNTO 0);outtime: out STD_LOGIC_VECTOR(7 DOWNTO 0);scan: out STD_

23、LOGIC_VECTOR(0 to 7 );END zhuanhuan;ARCHITECTURE behavior OF zhuanhuan ISSIGNAL data1: STD_LOGIC_VECTOR (7 DOWNTO 0);SIGNAL data2: STD_LOGIC_VECTOR (7 DOWNTO 0);SIGNAL data: STD_LOGIC_VECTOR (3 DOWNTO 0);SIGNAL datatime1: STD_LOGIC_VECTOR (3 DOWNTO 0);SIGNAL datatime10: STD_LOGIC_VECTOR (3 DOWNTO 0)

24、;SIGNAL datatime2: STD_LOGIC_VECTOR (3 DOWNTO 0);SIGNAL datatime20: STD_LOGIC_VECTOR (3 DOWNTO 0);BEGINdatatime10<=data1(7 downto 4);datatime1<=data1(3 downto 0);datatime20<=data2(7 downto 4);datatime2<=data2(3 downto 0); WITH zhitime SELECTdata1 <="00000000" WHEN "0000

25、000", "00000001" WHEN "0000001", "00000010" WHEN "0000010","00000011" WHEN "0000011","00000100" WHEN "0000100","00000101" WHEN "0000101","00000110" WHEN "0000110","000001

26、11" WHEN "0000111","00001000" WHEN "0001000","00001001" WHEN "0001001","00010000" WHEN "0001010", "00010001" WHEN "0001011", "00010010" WHEN "0001100","00010011" WHEN "00

27、01101","00010100" WHEN "0001110","00010101" WHEN "0001111","00010110" WHEN "0010000","00010111" WHEN "0010001","00011000" WHEN "0010010","00011001" WHEN "0010011","001000

28、00" WHEN "0010100", "00100001" WHEN "0010101", "00100010" WHEN "0010110","00100011" WHEN "0010111","00100100" WHEN "0011000","00100101" WHEN "0011001","00100110" WHEN "00

29、11010","00100111" WHEN "0011011","00101000" WHEN "0011100","00101001" WHEN "0011101","00110000" WHEN others;WITH zhutime SELECTdata2 <="00000000" WHEN "0000000", "00000001" WHEN "0000001&

30、quot;, "00000010" WHEN "0000010","00000011" WHEN "0000011","00000100" WHEN "0000100","00000101" WHEN "0000101","00000110" WHEN "0000110","00000111" WHEN "0000111","00001000&qu

31、ot; WHEN "0001000","00001001" WHEN "0001001","00010000" WHEN "0001010", "00010001" WHEN "0001011", "00010010" WHEN "0001100","00010011" WHEN "0001101","00010100" WHEN "0001110

32、","00010101" WHEN "0001111","00010110" WHEN "0010000","00010111" WHEN "0010001","00011000" WHEN "0010010","00011001" WHEN "0010011","00100000" WHEN "0010100", "00100001&q

33、uot; WHEN "0010101", "00100010" WHEN "0010110","00100011" WHEN "0010111","00100100" WHEN "0011000","00100101" WHEN others;process(clk,datatime20,datatime2,datatime10,datatime1)variable cnt: std_logic_vector(1 downto 0);b

34、eginif clk'event and clk='1' thencnt:=cnt+1;end if;case cnt iswhen"00"=> data<=datatime2; scan<="11111110"when"01"=> data<=datatime20; scan<="11111101"when"10"=> data<=datatime1; scan<="10111111"when&q

35、uot;11"=> data<=datatime10; scan<="01111111"end case;end process;process(data)begincase data iswhen"0000"=> outtime<="11111100"when"0001"=> outtime<="01100000"when"0010"=> outtime<="11011010"when&qu

36、ot;0011"=> outtime<="11110010"when"0100"=> outtime<="01100110"when"0101"=> outtime<="10110110"when"0110"=> outtime<="10111110"when"0111"=> outtime<="11100000"when"1000&qu

37、ot;=> outtime<="11111110"when"1001"=> outtime<="11110110"when others=> outtime<="00000000"end case;end process;END behavior;(4)顶层模块的代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY top ISPORT( CLK: IN STD_LOGIC;rst: IN STD_LOGIC; lgt1_red:O

38、UT STD_LOGIC; lgt1_yellow:OUT STD_LOGIC; lgt1_green:OUT STD_LOGIC; lgt2_red:OUT STD_LOGIC; lgt2_yellow:OUT STD_LOGIC; lgt2_green:OUT STD_LOGIC);END top;ARCHITECTURE behvior OF top ISCOMPONENT traffic_ctrl ISPORT( CLK,rst: IN STD_LOGIC; lgt1_red:OUT STD_LOGIC; lgt1_yellow:OUT STD_LOGIC; lgt1_green:OU

39、T STD_LOGIC; lgt2_red:OUT STD_LOGIC; lgt2_yellow:OUT STD_LOGIC; lgt2_green:OUT STD_LOGIC);END COMPONENT traffic_ctrl;COMPONENT fenpin ISPORT(CLK: IN STD_LOGIC; OUTCLK: BUFFER STD_LOGIC);END COMPONENT;SIGNAL clkjtd: STD_LOGIC;BEGINU1:fenpin PORT MAP(CLK,clkjtd); U2:traffic_ctrl PORT MAP(clkjtd,rst,lg

40、t1_red,lgt1_yellow,lgt1_green,lgt2_red,lgt2_yellow,lgt2_green);END behvior;6 仿真及下载调试6.1仿真对该工程的仿真包括对状态控制模块、分频器、转换器和顶层模块的功能和时序仿真。(1)状态控制模块的仿真如图6-1、6-2所示。图6-1控制模块的功能仿真图图6-2控制模块的时序仿真图从图中可看到首先进入st0状态,此时主路绿灯亮,支路红灯亮;计数器计数到25时,交通杰控制器状机进入st1状态,计数器清零,此时主路黄灯亮,支路红灯亮;在st1状态计数器又开始计数,计数器计数到5秒后,交通灯控制器状态机进入st2,计数器清零

41、,此时主路红灯亮,支路绿灯亮;在st2状态计数器又开始计数,计数器计数到15秒后,交通灯控制器状机进入st3状态,计数清零,此时计数主路红灯亮,支路绿灯亮;在st3状态计数器又开始计数,计数器计数到5秒后,交通灯控制器状态机进入st0状态,计数器清零,此时主路绿灯亮,支路红灯亮,如些循环反复,完成十字交通路口的红绿灯控制。(2)分频器的仿真图如图6-3、6-4所示。图6-3五倍分频功能仿真图图6-4五倍分频时序仿真图(3)转换器的仿真如图6-5所示。图6-5转换器的仿真图从仿真波形图可以看出,设计程序完全满足BCD码转化成数码块中显示的数字。(4)顶层模块的仿真如图6-6、6-7所示。图6-6功能仿真图图6-7时序仿真图从仿真波形图可以看出,设计的程序完全满足交通灯控制器的主通道和支路控制红绿灯等的功能要求。首先进入st0状态,此时主路绿灯亮,支路

温馨提示

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

评论

0/150

提交评论