当前位置:文档之家› 基于FPGA的交通灯课程设计报告

基于FPGA的交通灯课程设计报告

基于FPGA的交通灯课程设计报告
基于FPGA的交通灯课程设计报告

总体设计要求和技术要点

1.任务及要求

(1)设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。

(2)红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号。

(3)主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。

(4)主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。

(5)在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。

(6)按《湖南涉外经济学院课程设计管理办法》要求提交课程设计报告。

工作内容及时间进度安排

第17周:周1---周2 :立题、论证方案设计

周3---周5 :程序设计与调试

第18周:周1---周3 :硬件调试与测试、撰写课程设计报告

周4---周5 :验收答辩

课程设计成果

1.与设计内容对应的软件程序

2.课程设计总结报告

摘要

本实验为自主选题设计实验,实验选择具有倒计时显示功能的红黄绿三色交通设计,实验中采用VHDL 作为设计功能描述语言,选用Altera公司的EP1K30144-PIN TQFP最为主控芯片,实验报告中简要介绍了FPGA器件,并给出了设计原理图,详细的介绍了交通灯的设计流程,实验报告中还附有实验代码实验结果照片图。

Abstract

This experiment designed for independent choice experiment, experiment choice which has the function of the countdown display red yellow green traffic design, description language (VHDL as design function is applied in the experiments, the most main control chip select MAX II EPM240T100C5 Altera company, experiment report, this paper briefly introduces the MAX II device series, and gives the design diagram, detailed introduces the traffic lights of the design process, the experiment report with the code results photo graph.

目录

一、概述 (1)

1.1课程设计背景 (1)

1.2课程设计题目 (1)

1.3课题功能补充 (1)

二、系统设计与论证 (2)

2.1系统设计思路 (2)

2.2系统框架设计 (3)

2.3输入输出设计 (4)

2.4模块设计过程 (4)

2.4.1状态转换模块 (4)

2.4.2数码管显示模块 (5)

2.5模块描述 (5)

2.5.1主控制模块 (5)

2.5.2 45s时间倒计时模块 (6)

2.5.3 25s时间倒计时模块 (6)

2.5.4 5s时间倒计时模块 (7)

2.5.5 数据选择模块 (7)

2.6整体电路图 (8)

三、系统仿真 (9)

四、心得体会 (9)

五、附录 (10)

5.1主控制模块源程序 (10)

5.2 45s模块源程序 (12)

5.3 25s模块源程序 (13)

5.4 5s模块源程序 (14)

5.5 数据选择模块源程序 (16)

六、参考文献 (16)

七、老师评语及成绩 (17)

一、概述

1.1课程设计背景

经过两个学期的电子线路设计测试实验,我们从基础的模电、数电典型电路的设计和实现做起,从PSpice和MAXⅡ的设计与仿真,到面包板搭建电路的实践与测试,在不断的学习和积累中,了解了电子技术设计的基本过程和基础知识。在本学期,我们迎来了电子技术课程设计,这是一次将理论付诸实践的宝贵机会,是提升我们运用电子技术设计手段实现实际问题的能力的良好机遇。

在选题阶段,我踌躇满志的和另一个同学选择了SD卡音乐播放器这个选做题,但是由于没有足够地去深入了解相关的技术问题,致使在开题时没有通过曾老师的验收,只能十分遗憾的选择了基础题,改做交通灯控制器了。虽然有些遗憾,因为当初觉得自己有能力完成那样一个选做题,但是这也给了我一个深刻的教训,在机遇和挑战面前,再有信心也要做好充足的准备来证明你的实力。另一方面给我的启示就是,尽管一个相同的题目前人做了很多工作,给我们提供了一个很好的平台,但是如果我们只是去读懂和使用它们,仅限在这样一个层次是远远不够了,要学会从前人的研究成果中寻找新的突破点,利用自己已掌握的知识或者所具备的能力,在原有的基础上实现更加丰富的功能,这才应该是我们做课程设计的最终目的。仅仅看懂别人的设计思路和代码并不是能力的体现,而真正锻炼我们能力的是在充分掌握前人设计手段的

基础上,融会贯通地使原有的设计更加结合实际,更加完善。

1.2课程设计题目

设计一个十字路口交通信号灯的控制电路。要求红、绿灯按照一定的要求亮和灭,并在亮灯期间进行倒计时,且将运行时间用数码管显示出来。

要求主干道每次通行时间为45秒,支干道每次通行时间为25秒。每次变换运行车道前绿灯闪烁,持续时间为5秒。即车道要由45转换为25时,主干道在通行时间只剩下5秒钟时,绿灯闪烁显示,支干道仍为红灯。

可以对主、支方向上的交通灯运行时间进行重新设置。

1.3课题功能补充

在原有题目功能要求的基础上,我对交通灯控制器的功能在设计方面进行了补充,主要体现在:

(1)增加主、支干道左转红绿信号灯;

(2)增加主、支干道左转运行时间倒计时,并用数码管显示;

(3)增加LED同步显示当前运行状态功能,即用LED显示信号灯状态;

功能增加了,可以说任务量也增加了不少。就最为关键的时间设置和显示方面,由于增加了两个左转方向的运行时间,虽然只是增加了两个状态,但是同时显示四个方向的等待和通行的倒计时,确实在开始设计时,我有些茫然,觉得无从下手。我花了很长时间在网上查阅实际中的交通灯到底是如何计时和运行的,也到学校周围的路口实地调查过几种十字路口交通灯的设置,慢慢的从实际设置需求中理清头绪,具体的设计思路将在后面的部分详细说明。

二、系统设计

2.1系统设计思路

前面讲到,基于状态机的方法可以轻松实现交通灯的控制,而状态转换利用Verilog中的case和循环语句很容易实现。我将四种状态的转换顺序设置为:主直→主左→次直→次左→主直→……(依次循环),每个状态在设置时间的基础上由倒计时进行状态的变换。以上都是比较容易实现的,也是很多经典的例子上有讲解过的,下面我着重说明下如何实现四个方向同时进行等待和通行的倒计时。

用四组数码管来显示主、次干道直行和左转倒计时,首先需要了解这四组数码管显示的规律,也就是显示计数的规律。在网上查阅资料的时候,通过观看一段视频,我茅塞顿开。这个视频展示的是基于51单片机实现的交通灯控制器的实物功能演示,它也是利用了四组数码管分别显示四个方向的倒计时。通过反复观看我发现,其实在四个方向中,一个是通行倒计时,另外三个是等待倒计时,而等待倒计时又是它之前状态通行时间之和,在显示的效果上就是总会有两组倒计时数值是相同的,即相邻状态的那两个是相同的,一个是正在通行,一个是等待上一状态通行的结束。这之后的两个状态显示的倒计时是累加上之前未通行状态的设置时间和正在通行状态的剩余时间之和。如图所示:

主干道左转次干道左转主干道直行次干道直行

图1 状态转换图

主干道左转等待时间次干道左转等待时间

主干道直行通行时间次干道直行等待时间

主直剩余时间主直剩余时间

主直剩余时间

主左通行时间次直通行时间

主左通行时间

图2 倒计时显示方式(以主干道正在通行为例)

2.2系统框架设计

通过以上分析,可以较为清晰地看出在系统设计状态转换和一些实现方式的设计思路,下面说明系统的框架整体设计思路。

整体框架思路为:首先将教学实验箱提供的50MHZ时钟信号分频,转换为可利用的1Hz CP信号,同时为了实现绿灯在1s内闪烁一次,再转换出一个2Hz的CP信号提供给需要闪烁的绿灯。然后是设置时间的功能模块,通过开关可以分别设置四个方向的运行时间,并将设置的时间传送到状态转换模块中。在状态转换功能模块中,通过前面传送来的设定通行时间进行倒计时和转换状态,并输出当前方向通行剩余时间和四向使能EN信号。在时间显示功能模块中,接收到前面的设置时间、剩余时间、使能信号,运用前面说明的现实方式的逻辑,计算出等待时间,在该向通行时显示剩余时间,在该向等待时显示等待时间,最终将时间信号输出到数码管显示模块;另外,由于数码管数量的限制,只能一次性显示8个(即四组),那么究竟是显示倒计时还是显示设置时间就需要一个开关信号来区分,于是设置一个输入信号来判别是否进入设置模式,并且只能在设置模式下设置时间。LED信号灯显示功能模块则将状态转换模块输出的EN使能信号和2Hz的CP信号以及当前剩余时间作为输入,根据状态点亮相应的LED信号灯。LED显示功能模块的原理和LED信号灯显示模块类似,也是根据同步状态EN使能信号,通过刷新字符的方式,改变和显示当前通行状态。最后,数码管显示功能模块是结合DE2教学开发板数码管的编码规则将BCD码转换为七段码,在译码后显示出来。

分频 1Hz/2Hz

四向时间设置状态转换

时间显示

LED信号灯显示

数码管显示LCD显示

设定时间

运行时间EN使能信号

CP信号

图3 系统框图

上图所示的系统框图只是大致说明系统的框架和流程,没有具体到每个模块的输入和输出,在前面的文字描述中有所说明,更加详细的设计说明将在后面模块功能说明的详细介绍。

2.3输入输出设计

根据功能需要,输入设计采用两个按键,模拟主干道、支干道有车过来。时钟信号输入为1MHz的时钟频率振荡器。输入设计采用4个数码管用于显示倒计时,8个LED灯作为交通信号。

2.4模块设计过程

2.4.1状态转换模块

该模块是控制器的核心部分,但是原理其实很简单,只是输入输出量很多,获取的信息多,处理后输出的信息也多。前文已说明了状态转换的思想是该控制器实现的主要思路,那么如何处理好这么多输入输出的关系就成为了重点需要解决的问题了。

输入部分的关键是四向设定通行时间的传入,这可以从时间设置模块的输出获取。这四个设定时间传入的时间需要选择好,即选择恰当的时机读取新的设置通行时间,因为设置时间的操作可能发生在任何运行时间,如果不能选择很好的时机来读入新的设置通行时间,可能造成逻辑上的混乱,致使状态不能按照正常的顺序进行转移,也给实际的交通信号控制造成了一定的影响。在这里,我选取了在每个状态运行结束的同时来读取新的设置通行时间,这样在任意状态时刻设置时间,将会在下一个状态

到来时切换到新的通行时间上去运行,一方面不会使设置的效果延时太长,另一方面也不会出现如果恰巧在该方向上设置时间,那么该方向可能一直显示通行而不能正常转换状态的逻辑错误。

输出部分的关键是四个方向的EN使能信号和通行倒计时时间。根据所在的状态,可以对四个方向的EN使能信号进行赋值输出,用于控制信号灯显示和LED同步状态显示等。通行时间倒计时是为了数码管能够显示出通行剩余时间和等待通行时间,这个显示的方式在前文也有描述,这里不再赘述。通行剩余时间就是状态转换过程所依据的倒计时时间,在状态转换中需要根据各向通行时间在每个通行状态进行减计数倒计时,当计数到01时切换状态,而这个倒计时的时间正好是该方向通行的剩余时间,输出后经过显示方式的逻辑处理,就可以变成其它禁止方向的等待通行时间了。

2.4.2数码管显示模块

该功能模块同样建立在DE2底层函数调用基础上,实现4个数码管的时间显示。根据DE2教学开发板上数码管的七段编码规则,将输入时间的8位BCD码转换为七段码显示出来,我根据实际需要修改了底层函数,使得调用更加方便和集成化。

根据数码管七段的位置进行编码,每个段位的管子仍然是共阳极的,所以高电平实现熄灭管子,低电平实现点亮管子。小数点在物理上没有连接,所以无法使用。

图4 七段数码管的原理图和每段的标识位置

该功能在实现上,只要有输入就会有相应的输出,所以原理上比较简单,只要编码正确不会出现问题,所以不再赘述。

2.5模块描述

2.5.1主控制模块

说明:下面每个模块的源程序都在附录中

图5 主控制模块原理图

input CLK //时钟,复位信号输入

input SM、SB //SM为主干道模拟检测开关,SB为支干道模拟检测开关output MR、MY、MG //主干道的红、黄、绿led灯显示引脚

output BR、BY、BG //支干道红、黄、绿led灯显示引脚

模块源程序:

2.5.2 45s时间倒计时模块

图6 45s时间倒计时原理图

input en45 //45s模块使能信号

input sb //支干道使能信号

input clk //模块时钟源

output dout45m[7..0] //主干道倒计时时间输出

output dount45b[7..0] //支干道倒计时时间输出

2.5.3 25s时间倒计时模块

图7 25s时间倒计时

input en25 //25s模块使能信号

input sb //支干道使能信号

input sm //主干道使能信号

input clk //模块时钟源

output dout25m[7..0] //主干道倒计时时间输出

output dount25b[7..0] //支干道倒计时时间输出

2.5.4 5s时间倒计时模块

图8 5s时间倒计时原理图input en05b //支干道使能信号

input en05m //主干道使能信号

input clk //模块时钟源

output dout5[7..0] //倒计时时间输出

2.5.5 数据选择模块

图9 数据选择器原理图input en45 //45s模块使能端,高电平有效

input en25 //25s模块使能端,高电平有效

input en05m //主干道5s模块使能端,高电平有效input en05b //支干道5s模块使能端,高电平有效input ain45m[7..0] //主干道45s时间输出端

input ain25m[7..0] //主干道25s时间输出端

input ain25b[7..0] //支干道25s时间输出端

input ain05[7..0] // 5s时间输出端

2.6整体电路图

将上面设计的各功能模块依据逻辑思路,结合输入输出设计搭建成如下图所示的整体电路图。

图10 系统总原理图

三、系统仿真

先设置系统结束时间为10us(默认为1us,加长时间为了得到更多的周期),设置时钟clk的值为时钟且周期为10ps

图11 时序仿真整个周期图

图12 放大后的时序仿真图

3.2试验箱硬件仿真结果

图13 试验箱硬件仿真图

四、心得体会

做事不能眼高手低。就像我们在选择选做题的时候,虽然可以找到现成的代码,感觉应该不会太难,但是仅仅靠感觉是做不成事的,只有耐心细致地去深入研究,进行充分论证,才能得出准确可靠的结果。尽管有现成的代码,但最终能不能为我所用还要靠认真的研读,充分体会编程的思想,这样别人的代码才能转化为自己的。

要有工程的进度安排。对于时间的规划其实是我们最欠缺的,记得在软件开发的课程中学到过利用甘特图来划定开发进度,但是实际中我们却完全没有按照它来实现。每次课程设计,大部分同学都是最后一段时间拼命赶,在验收的前几天还在通宵写代码。以前我也是这样,不过这次有所改善了,因为我大致规划了设计、实现和调试的时间,使得其他同学还在写程序进行仿真的时候,我已经开始了逐步的下载测试和修改完善工作,这为我在功能方面的完善提供了宝贵的时间。

要善于借鉴别人的想法。很多时候自己独立思考可以充分锻炼能力,但是汲取他人之所长会对自己的工作产生事倍功半的效果。但是借鉴要有限度,要讲究方式方法。很多同学容易走两个极端,一种是埋头编程,中途遇到很多困难其实前人也都遇到并且很好地解决了,但是他们还要继续重复地探寻解决途径;另一种是照单全收,完全不明白作者的用意和初衷,只知道看结果对就拿来用,没弄明白其所以然,显然是荒废了学习的机会。

五、附录

5.1主控制模块源程序

library ieee;

use ieee.std_logic_1164.all;

entity jtdkz is

port(clk,sm,sb:in std_logic;

mr,my,mg,br,by,bg:out std_logic);

end entity jtdkz;

architecture art of jtdkz is

type state_type is(a,b,c,d);

signal state:state_type;

begin

cnt:process(clk)is

variable s:integer range 0 to 45;

variable clr,en:bit;

begin

if(clk'event and clk='1')then

if clr='0'then s:=0;

elsif en='0'then s:=s;

else s:=s+1;

end if;

case state is

when a=>mr<='0';my<='0';mg<='1';

br<='1';by<='0';bg<='0';

if(sb and sm)='1'then

if s=45 then

state<=b;clr:='0';en:='0';

else

state<=a;clr:='1';en:='1';

end if;

elsif(sb and(not sm))='1'then

state<=b;clr:='0';en:='0';

else

state<=a;clr:='1';en:='1';

end if;

when b=>mr<='0';my<='1';mg<='0';

br<='1';by<='0';bg<='0';

if s=5 then

state<=c;clr:='0';en:='0';

else

state<=b;clr:='1';en:='1';

end if;

when c=>mr<='1';my<='0';mg<='0';

br<='0';by<='0';bg<='1';

if(sm and sb)='1' then

if s=25 then

state<=d;clr:='0';en:='0';

else

state<=c;clr:='1';en:='1';

end if;

elsif sb='0' then

state<=d;clr:='0';en:='0';

else

state<=c;clr:='1';en:='1';

end if;

when d=>mr<='1';my<='0';mg<='0';

br<='0';by<='1';bg<='0';

if s=5 then

state<=a;clr:='0';en:='0';

else

state<=d;clr:='1';en:='1';

end if;

end case;

end if;

end process cnt;

end architecture art;

5.2 45s模块源程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

---------------------------------------

entity time_45 is

port(sb,clk,en45:in std_logic;

dout45m,dout45b:out std_logic_vector(7 downto 0));

end entity time_45;

---------------------------------------

architecture art of time_45 is

signal cnt6b:std_logic_vector(5 downto 0);

begin

process(sb,clk,en45)is

begin

if sb='0'then cnt6b<=cnt6b-cnt6b-1;

elsif(clk'event and clk='1')then

if en45='1' then cnt6b<=cnt6b+1;

elsif en45='0'then cnt6b<=cnt6b-cnt6b-1;

end if;

end if;

end process;

process(cnt6b)is

begin

case cnt6b is

when "000000"=>dout45m<="01000101";dout45b<="01010000";--45 50

when "000001"=>dout45m<="01000100";dout45b<="01001001";--44 49

when "000010"=>dout45m<="01000011";dout45b<="01001000";--43 48

when "000011"=>dout45m<="01000010";dout45b<="01000111";--42 47

when "000100"=>dout45m<="01000001";dout45b<="01000110";--41 46

when "000101"=>dout45m<="01000000";dout45b<="01000101";--40 45

when "000110"=>dout45m<="00111001";dout45b<="01000100";--39 44

when "000111"=>dout45m<="00111000";dout45b<="01000011";--38 43

when "001000"=>dout45m<="00110111";dout45b<="01000010";--37 42

when "001001"=>dout45m<="00110110";dout45b<="01000001";--36 41

when "001010"=>dout45m<="00110101";dout45b<="01000000";--35 40

when "001011"=>dout45m<="00110100";dout45b<="00111001";--34 39

when "001100"=>dout45m<="00110011";dout45b<="00111000";--33 38

when "001101"=>dout45m<="00110010";dout45b<="00110111";--32 37

when "001110"=>dout45m<="00110001";dout45b<="00110110";--31 36

when "001111"=>dout45m<="00110000";dout45b<="00110101";--30 35

when "010000"=>dout45m<="00101001";dout45b<="00110100";--29 34

when "010001"=>dout45m<="00101000";dout45b<="00110011";--28 33

when "010010"=>dout45m<="00100111";dout45b<="00110010";--27 32

when "010011"=>dout45m<="00100110";dout45b<="00110001";--26 31

when "010100"=>dout45m<="00100101";dout45b<="00110000";--25 30

when "010101"=>dout45m<="00100100";dout45b<="00101001";--24 29

when "010110"=>dout45m<="00100011";dout45b<="00101000";--23 28

when "010111"=>dout45m<="00100010";dout45b<="00100111";--22 27

when "011000"=>dout45m<="00100001";dout45b<="00100110";--21 26

when "011001"=>dout45m<="00100000";dout45b<="00100101";--20 25

when "011010"=>dout45m<="00011001";dout45b<="00100100";--19 24

when "011011"=>dout45m<="00011000";dout45b<="00100011";--18 23

when "011100"=>dout45m<="00010111";dout45b<="00100010";--17 22

when "011101"=>dout45m<="00010110";dout45b<="00100001";--16 21

when "011110"=>dout45m<="00010101";dout45b<="00100000";--15 20

when "011111"=>dout45m<="00010100";dout45b<="00011001";--14 19

when "100000"=>dout45m<="00010011";dout45b<="00011000";--13 18

when "100001"=>dout45m<="00010010";dout45b<="00010111";--12 17

when "100010"=>dout45m<="00010001";dout45b<="00010110";--11 16

when "100011"=>dout45m<="00001010";dout45b<="00010101";--10 15

when "100100"=>dout45m<="01001001";dout45b<="00010100";--9 14

when "100101"=>dout45m<="00001000";dout45b<="00010011";--8 13

when "100110"=>dout45m<="00000111";dout45b<="00010010";--7 12

when "100111"=>dout45m<="00000110";dout45b<="00010001";--6 11

when "101000"=>dout45m<="00000101";dout45b<="00001010";--5 10

when "101001"=>dout45m<="01000100";dout45b<="01001001";--4 9

when "101010"=>dout45m<="00000011";dout45b<="00001000";--3 8

when "101011"=>dout45m<="00000010";dout45b<="00000111";--2 7

when "101100"=>dout45m<="00000001";dout45b<="00000110";--1 6

when others=>dout45m<="00000000";dout45b<="00000000"; --0 0 end case;

end process;

end architecture art;

5.3 25s模块源程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

------------------------------------

entity time_25 is

port(sb,sm,clk,en25:in std_logic;

dout25m,dout25b:out std_logic_vector(7 downto 0));

end entity time_25;

------------------------------------

architecture art of time_25 is

signal cnt5b:std_logic_vector(4 downto 0);

begin

process(sb,sm,clk,en25)is

begin

if sb='0'or sm='0'then

cnt5b<=cnt5b-cnt5b-1;

elsif(clk'event and clk='1')then

if en25='1' then

cnt5b<=cnt5b+1;

elsif en25='0'then

cnt5b<=cnt5b-cnt5b-1;

end if;

end if;

end process;

process(cnt5b)is

begin

case cnt5b is

when "00000"=>dout25m<="00100101";dout25b<="00110000";--25 30

when "00001"=>dout25m<="00100100";dout25b<="00101001";--24 29

when "00010"=>dout25m<="00100011";dout25b<="00101000";--23 28

when "00011"=>dout25m<="00100010";dout25b<="00100111";--22 27

when "00100"=>dout25m<="00100001";dout25b<="00100110";--21 26

when "00101"=>dout25m<="00100000";dout25b<="00100101";--20 25

when "00110"=>dout25m<="00011001";dout25b<="00100100";--19 24

when "00111"=>dout25m<="00011000";dout25b<="00100011";--18 23

when "01000"=>dout25m<="00010111";dout25b<="00100010";--17 22

when "01001"=>dout25m<="00010110";dout25b<="00100001";--16 21

when "01010"=>dout25m<="00010101";dout25b<="00100000";--15 20

when "01011"=>dout25m<="00010100";dout25b<="00011001";--14 19

when "01100"=>dout25m<="00010011";dout25b<="00011000";--13 18

when "01101"=>dout25m<="00010010";dout25b<="00010111";--12 17

when "01110"=>dout25m<="00010001";dout25b<="00010110";--11 16

when "01111"=>dout25m<="00001010";dout25b<="00010101";--10 15

when "10000"=>dout25m<="01001001";dout25b<="00010100";--9 14

when "10001"=>dout25m<="00001000";dout25b<="00010011";--8 13

when "10011"=>dout25m<="00000111";dout25b<="00010010";--7 12

when "10100"=>dout25m<="00000110";dout25b<="00010001";--6 11

when "10110"=>dout25m<="00000101";dout25b<="00001010";--5 10

when "10111"=>dout25m<="01000100";dout25b<="01001001";--4 9

when "11000"=>dout25m<="00000011";dout25b<="00001000";--3 8

when "11001"=>dout25m<="00000010";dout25b<="00000111";--2 7

when "11010"=>dout25m<="00000001";dout25b<="00000110";--1 6

when others=>dout25m<="00000000";dout25b<="00000000"; --0 0

end case;

end process;

end architecture art;

5.4 5s模块源程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

------------------------------------

entity time_5 is

port(clk,en05m,en05b:in std_logic;

dout5:out std_logic_vector(7 downto 0));

end entity time_5;

------------------------------------

architecture art of time_5 is

signal cnt3b:std_logic_vector(2 downto 0);

begin

process(clk,en05m,en05b)is

begin

if(clk'event and clk='1')then

if en05m='1' or en05b='1' then

cnt3b<=cnt3b+1;

else

cnt3b<="000";

end if;

end if;

end process;

process(cnt3b)is

begin

case cnt3b is

when"000"=>dout5<="00000101";

when"001"=>dout5<="00000100";

when"010"=>dout5<="00000011";

when"011"=>dout5<="00000010";

when"100"=>dout5<="00000001";

when others=>dout5<="00000000";

end case;

end process;

end architecture art;

5.5 数据选择模块源程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

------------------------------------

entity xskz is

port(en45,en25,en05m,en05b:in std_logic;

ain45m,ain45b:in std_logic_vector(7 downto 0);

ain25m,ain25b,ain05:in std_logic_vector(7 downto 0);

doutm,doutb:out std_logic_vector(7 downto 0));

end entity xskz;

-------------------------------------

architecture art of xskz is

begin

process(en45,en25,en05m,en05b)is

begin

if en45='1'then

doutm<=ain45m(7 downto 0);doutb<=ain45b(7 downto 0);

elsif en05m='1' then

doutm<=ain05(7 downto 0);doutb<=ain05(7 downto 0);

elsif en25='1' then

doutm<=ain25m(7 downto 0);doutb<=ain25b(7 downto 0);

elsif en05b='1' then

doutm<=ain05(7 downto 0);doutb<=ain05(7 downto 0);

end if;

end process;

end architecture art;

六、参考文献

[1]谭会生、张昌凡,EDA技术及应用(第三版),西安电子科技大学出版社,2011

[2]陈忠平、高金定、高见芳,基于Quartus||的FPGA/CPLD设计与实践,电子工业出版社,2010

七、老师评语及成绩

教师评语:

课程设计成绩:

指导教师:(签名)

日期:年月日

微机原理课程设计报告交通灯

WORD格式微机原理课程设计 设计题目交通灯的设计 实验课程名称微机原理 姓名王培培 学号080309069 专业09自动化班级2 指导教师张朝龙 开课学期2011至2012学年上学期

一、实验设计方案 实验名称:交通灯的设计实验时间:2011/12/23 小组合作:是□否?小组成员:无 1、实验目的: 分析实际的十字路口交通灯的亮灭过程,用实验箱上的8255实现交通灯的控制。(红,黄,绿三色灯) 2、实验设备及材料: 微机原理和接口技术实验室的实验箱和电脑设备等。 3、理论依据: 此设计是通过并行接口芯片8255A和8086计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。 如硬件连接图所示(在后),红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255 的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接1,2,3,4(南东北西)路口的红灯,B,C口类推。8086工作在最小模式,低八位端口AD0~AD7接到8255和8253的D0~D7,AD8~AD15通过地址锁存器8282,接到三八译码器,译码后分别连到8255和8253的CS片选端。8253的 三个门控端接+5V,CLOCK0接由分频器产生的1MHZ的时钟脉冲,OUT0接到CLOCK1和CLOCK,2 OUT1接到8086的AD18,8086通过检测此端口是否有高电平来判断是否30s定时到。OUT2产生 1MHZ方波通过或门和8255的B口共同控制黄灯的闪烁。8255三个口全部工作在方式0既基本 输入输出方式,红绿灯的转换由软件编程实现。

4、实验方法步骤及注意事项: ○1设计思路 红,黄,绿灯可分别接在8255的A口,B口和C口上,灯的亮灭可直接由8086输出0,1 控制。 设8253各口地址分别为:设8253基地址即通道0地址为04A0H,通道1为04A2H,通道2 为04A4H,命令控制口为04A6H。 黄灯闪烁的频率为1HZ,所以想到由8253产生一个1HZ的方波,8255控制或门打开的时 间,在或门打开的时间内,8253将方波信号输入或门使黄灯闪烁。 由于计数值最大为65535,1MHZ/65536的值远大于2HZ,所以采用两个计数器级联的方 式,8253通道0的clock0输入由分频器产生的1MHZ时钟脉冲,工作在方式3即方波发生器方 式,理论设计输出周期为0.01s的方波。1MHZ的时钟脉冲其重复周期为T=1/1MHZ=1s,因此 通道0的计数初值为10000=2710H。由此方波分别作为clock1和clock2的输入时钟脉冲,所以 通道1和通道2的输入时钟频率为100HZ,通道1作计数器工作在方式1,计数初值3000=BB8H 既30s,计数到则输出一个高电平到8255的PA7口,8255将A口数据输入到8086,8086检测 到高电平既完成30s定时。通道2工作在方式3需输出一个1HZ的方波,通过一个或门和8086 共同控制黄灯的闪烁,因此也是工作在方波发生器方式,其计数初值为100=64H,将黄灯的状态 反馈到8055的端口PB7和PC7,同样输入到8086,8086通过两次检测端口状态可知黄灯的状态 变化,计9次状态变化可完成5次闪烁。 三个通道的门控信号都未用,均接+5V即可。 ○ 2硬件原理及电路图 由于8255A与8086CPU是以低八位数据线相连接的,所以应该是8255A的A1、A 0 线分别与 8086CPU的A2、A线相连,而将8086的 1 A 0 线作为选通信号。如果是按8255A内部地址来看, 则在图中它的地址是PA口地址即(CS+000H),PB口地址为(CS+001H),PC口地址为(CS+002H),

微机原理课程设计——交通灯控制系统

南通大学电子信息学院 微机原理课程设计 报告书 课题名交通灯控制系统 班级 _______ 学号 __________ 姓名 ____ 指导教师 ______ 日期 _________

目录 1 设计目的 (1) 2 设计内容 (1) 3 设计要求 (1) 4 设计原理与硬件电路 (2) 5 程序流程图 (4) 6 程序代码 (4) 7 程序及硬件系统调试情况 (8) 8 设计总结与体会 (9) 9 参考文献 (9)

1 设计目的 电子课程设计是电子技术学习中非常重要的一个环节,是将理论知识和实践能力相统一的一个环节,是真正锻炼学生能力的一个环节。交通灯能保证行人过马路的安全,控制交通状况等优点受到人们的欢迎,在很多场合得到了广泛的应用。 交通灯是采用计算机通过编写汇编语言程序控制的。红灯停,绿灯行的交通规则。广泛用于十字路口,车站, 码头等公共场所,成为人们出行生活中不可少的必需品,由于计算机技术的成熟与广泛应用,使得交通灯的功能多样化,远远超过老式交通灯, 交通灯的数字化给人们生产生活带来了极大的方便,而且大大地扩展了交通灯的功能。诸如闪烁警示、鸣笛警示,时间程序自动控制、倒计时显示,所有这些,都是以计算机为基础的。还可以根据主、次干道的交通状况的不同任意设置各自的不同的通行时间。或者给红绿色盲声音警示的人性化设计。现在的交通灯系统很多都增加了智能控制环节,比如对闯红灯的车辆进行拍照。当某方向红灯亮时,此时相应的传感器开始工作,当有车辆通过时,照相机就把车辆拍下。 要将交通灯系统产品化,应该根据客户不同的需求进行不同的设计,应该在程序中增加一些可以人为改变的参数,以便客户根据不同的需要随时调节交通灯。因此,研究交通灯及扩大其应用,有着非常现实的意义。 2 设计内容 交通灯控制系统 利用8253定时器、8255等接口,设计一电路,模拟十字路口交通灯控制。要求能实现自动控制和手动应急控制。 3 设计要求 在Proteus环境下,结合课程设计题目,设计硬件原理图,搭建硬件电路 软件设计

(完整版)基于FPGA的智能交通灯的设计毕业设计

目录 摘要 ............................................................. I 1 前言 (1) 2 交通红绿灯控制电路的发展与技术现状 (2) 2.1 交通控制系统以及交通红绿灯控制电路的发展现状 (2) 2.2 智能交通红绿灯控制电路技术的现状 (3) 3 VHDL、FPGA、Quartus ii简介 (5) 3.1 VHDL简介 (5) 3.1.1 VHDL简介 (5) 3.1.2 VHDL语言的特点 (6) 3.2 FPGA简介 (8) 3.2.1 PLD器件的设计特点 (8) 3.2.2 FPGA的基本结构 (10) 3.2.3 采用FPGA设计逻辑电路的优点 (11) 3.3 Quartus II 的简介 (12) 4 具体方案论证与设计 (13) 4.1 具体方案论证 (13) 4.2系统算法设计 (15) 4.3 具体电路原理图 (16) 4.4 电路仿真图 (16) 5 实验结果 (17) 总结 (18) 参考文献 ......................................... 错误!未定义书签。附录: .. (19)

基于FPGA的十字路口交通信号灯 摘要 本文主要介绍十字路口交通灯控制器的设计。首先,介绍交通控制系统以及交通红绿灯控制电路的发展现状;然后采用硬件描述语言进行的交通灯控制器设计。重点介绍了控制系统各部分的设计,以及各个模块之间的同步处理。为了克服交通信号灯控制系统传统设计方法的弊端,更加适应城镇交通现状,利用VHDL语言、采用层次化混合输入方式,设计了具有3种信号灯和倒计时显示器的交通信号灯控制系统,在 QuartusⅡ下进行仿真,并下载到FPGA中制作成实际的硬件电路进行了模拟运行.使用该方法设计的交通灯控制系统电路简单、运行可靠、易于实现,可实现对交通信号的控制和显示功能。 关键词 FPGA;QUARTUS ii;HDPLD;十字路口交通灯控制器; Based on FPGA intersection traffic lights Abstract This paper describes the design of intersection traffic signal controller.First, the introduction of traffic control systems and traffic light control circuit of the development status; then using language designed for the traffic light controller.Focus on various parts of the control system

简易交通灯控制电路的设计课程设计

长安大学 电子技术课程设计 题目简易交通信号灯控制器 班级 姓名黄红涛指导教师温 凯歌 日期 前言 在现代城市中,人口和汽车日益增长,市区交通也日益拥挤,人们的安全问题也日益重要。因此,红绿交通信号灯成为交管部门管理交通的重要工具之一。有了交通灯之后人们的安全出行有了很大的保障。 自从交通灯诞生以来,其内部的电路控制系统就不断的被改进,设计方法也开始多种多样,从而使交通灯显得更加智能化。尤其是近几年来,随着电子与计算机技术的飞速发展,电子电路分析和设计方法有了很大的改进,电子设计自动化也已经成为现代电子系统中不可缺少的工具和手段,这些为交通灯控制电路的设计提供了一定的技术基础。 因此,在本次课题为简易交通灯的课程设计中,通过采用数字电路对交通灯控制电路的设计,提出使交通灯控制电路用数字信号自动控制十字路口两组红、黄、绿交通灯的状态转换的方法,指挥各种车辆和行人安全通行,实现十字路口交通管理的自动化。

本设计分为两个部分:第一部分是由定时器、时钟脉冲驱动和控制器组成的秒脉冲信号发生装置;第二部分是有译码器、发光二极管和数码管组成的交通信号灯以及时间显示装置。各部分采用分模块设计,正文中详细介绍了各模块的功能和原理。 为了完成本次设计,参阅了大量的资料,包括所用到的芯片的详细中英文资料。搜集和查阅资料是一个漫长但是非常重要的过程,获取各模块电路原理,然后经过讨论比较,结合课题要求,确定出一套最合适的方案。小组人员花费几天时间,通过图书馆和上网查阅资料,分别查阅到相应资料。经过商讨,结合现有资料,制定基本框架,并基本定出电路图。在MULTISIM软件里进行电路仿真,来验证电路的正确性。通过仿真来验证实验原理和电路的正确性。在整个过程中,充分发挥主观能动性,将平时所学的理论知识和实际相结合,往往理论可行的东西,实际并不一定能出现结果,这就是我们需要解决的问题,通过问老师或者查资料来分析解决问题。最后确定仿真没有错误后,汇总电路图。 本设计分为两大部分,交通信号灯以及译码显示电路(时间显示)部分由黄红涛同学和韩白雨同学负责主导设计;秒脉冲信号发生以及控制部分由任永刚同学负责,最后进过整合后得到完整系统。 由于缺少实践经验,并且知识有限,所以本次课程设计中难免存在缺点和错误,敬请老师批评指正。 黄红涛 2010年12月29日 目录 前言 (2)

基于FPGA下的交通灯控制器设计

引言 随着城乡的经济发展,车辆的数量在迅速的增加,交通阻塞的问题已经严重影响了人们的出行。 现在的社会是一个数字化程度相当高的社会,很多的系统设计师都愿意把自己的设计设计成集成电路芯片,芯片可以在实际中方便使用。随着EDA技术的发展,嵌入式通用及标准FPGA器件的呼之欲出,片上系统(SOC)已经近在咫尺。FPGA/CPLD 以其不可替代的地位及伴随而来的极具知识经济特征的IP芯片产业的崛起,正越来越受到业内人士的密切关注。FPGA就是在这样的背景下诞生的,它在数字电路中的地位也越来越高,这样迅速的发展源于它的众多特点。交通等是保障交通道路畅通和安全的重要工具,而控制器是交通灯控制的主要部分,它可以通过很多种方式来实现。在这许许多多的方法之中,使用FPGA和VHDL语言设计的交通灯控制器,比起其他的方法显得更加灵活、易于改动,并且它的设计周期性更加短。 城市中的交通事故频繁发生,威胁着人们的生命健康和工作生活,交通阻塞问题在延迟出行时间的同时,还会造成更多的空气污染和噪声污染。在这种情况下,根据每个道路的实际情况来设置交通灯,使道路更加通畅,这对构建和谐畅通的城市交通有着十分重要的意义。

第一章软件介绍 1.1 QuartusⅡ介绍 本次毕业设计是基于FPGA下的设计,FPGA是现场可编程门阵列,FPGA开发工具种类很多、智能化高、功能非常的强大。可编程QuartusⅡ是一个为逻辑器件编程提供编程环境的软件,它能够支持VHDL、Verilog HDL语言的设计。在该软件环境下,设计者可以实现程序的编写、编译、仿真、图形设计、图形的仿真等许许多多的功能。在做交通灯控制器设计时选择的编程语言是VHDL语言。 在这里简单的介绍一下QuartusⅡ的基本部分。图1-1-1是一幅启动界面的图片。在设计前需要对软件进行初步的了解,在图中已经明显的标出了每一部分的名称。 图 1-1-1 启动界面 开始设计前我们需要新建一个工程,首先要在启动界面上的菜单栏中找到File,单击它选择它下拉菜单中的“New Project Wizard”时会出现图1-1-2所显示的对话框,把项目名称按照需要填好后单击Next,便会进入图 1-1-3 显示的界面。

单片机交通灯课程设计报告(含电路图,源程序)

1.引言................................................................. 错误!未定义书签。 2.总体设计方案 (2) 2.1. 设计思路 (2) 2.1.1.设计目的 (2) 2.1.2.设计任务和内容 (3) 2.1.3.方案比较、设计与论证 (3) 2.1.4.芯片简介 (6) 2.2. 设计方框图 (12) 3.设计原理分析 (13) 3.1. 交通灯显示时序的理论分析与计算 (13) 3.2. 交通灯显示时间的理论分析与计算 (15) 3.3. 电路模块 (16) 3.3.1.LED数码管显示模块 (16) 3.3.2.LED红绿灯显示模块 (19) 3.3.3.复位电路 (22) 3.3.4.晶振电路 (23) 4.结束语 (23)

6.附录 (24) 6.1. 附录1:程序清单 (24) 6.2. 附录2:电路设计总图 (32) 6.3附录3:实物图 ....................................... 错误!未定义书签。1.总体设计方案 1.1.设计思路 1.1.1.设计目的 (1)加强对单片机和汇编语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知 识。 (2)用单片机模拟实现具体应用,使个人设计能够真正使用。(3)把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。 (4)提高利用已学知识分析和解决问题的能力。 (5)提高实践动手能力。

1.1. 2.设计任务和内容 1.1. 2.1.设计任务 单片机采用用AT89S52芯片,使用发光二极管(红,黄,绿)代表各个路口的交通灯,用8段数码管对转换时间进行倒时(东西路口15秒,南北路口25秒,黄灯时间5秒)。 1.1. 2.2.设计内容 (1)设计并绘制硬件电路图 (2)制作PCB并焊接好元器件 (3)编写程序并将调试好的程序固化到单片机中 1.1.3.方案比较、设计与论证 1.1.3.1.电源提供方案 为使模块稳定工作,须有可靠电源,采用单片机控制模块提供电源。此方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。综上所述,我们选择第二种方案。 1.1.3. 2.复位方案 复位方式有两种:按键复位与软件复位。由考虑到程序的简洁,避免冗长,本设计采用按键复位,在芯片的复位端口外接复位电路,通过按键对单片机输入一个高电平脉冲,达到复位的目的。

数电课程设计交通灯

数字电路课程设计报告书 系部名称:电子工程学院 学生姓名: 专业名称:微电子 班级: 实习时间: 题目:交通灯控制器

一实验目的 1.综合应用数字电路知识设计一个交通灯控制器。了解各种元器件的原理及其应用,锻炼自己的动手能力和实际解决问题的能力。 2.深入了解交通灯的工作原理。 二实验要求 1)在十字路口的两个方向上各设一组红黄绿灯,显示顺序为其中一个方向是绿灯,黄灯,红灯,另一方面是红灯,绿灯,黄灯。 2)设置一组数码管,以计时的方式显示允许通行或禁止通行时间,其中一个方向上绿灯亮的时间为20秒,另一个方向上绿灯亮的时间是30秒,黄灯亮的时间都是5秒。 3)当任何一个方向出现特殊情况,按下手动开关,其中一个方向常通行,倒计时停止,当特殊情况结束后,按下自动控制开关,恢复正常状态。 三使用元件 器件型号数量器件型号数量 161 2 LED 6 08 2 电阻4.7K 1 04 3 电阻150K 1 00 1 电阻100欧姆 1 48 2 电容4.7uF 1 74 1 电容103 1 555 1 数码管 2 面包板 1 斜口钳 1 四总体方案的设计 1.分析系统的逻辑功能,画出其框图 交通灯控制系统的原理框图如图所示。它主要由控制器、定时器和秒

脉冲信号发生器等部分组成。秒脉冲发生器是该系统中定时器和控制器的标准时钟信号源,控制器是系统的主要部分,由它控制定时器,数码管和二极管的工作。 2.分析系统的状态变化,列出状态转换表: (1)主干道绿灯亮,支干道红灯亮。表示主干道上的车辆允许通行, 支干道禁止通行。 (2)主干道黄灯亮,支干道红灯亮。表示主干道上未过停车线的车辆停止通行,已过停车线的车辆继续通行,支干道禁止通行。 (3)主干道红灯亮,支干道绿灯亮。表示主干道禁止通行,支干道上的车辆允许通行。 主控部分 秒脉冲发生 器 交通灯 倒计时控制部分 数码管显示 反馈 控制

通过Verilog实现交通灯设计实验报告

电子科技大学 实 验 报 告 一、实验室名称:虚拟仪器实验室 二、实验项目名称:交通灯设计实验 三、实验学时:4学时 四、实验原理

假设交通灯处于南北和东西两条大街的“十”字路口,如图1所示。用FPGA 开发板的LED 灯来模拟红、黄、绿3种颜色信号,并按一定顺序、时延来点亮LED ,如图2所示。图3给出了交通灯的状态转移图。设计使用频率为1Hz 的时钟来驱动电路(注1:仿真时采用1MHz 的时钟来驱动电路),则停留1个时钟可得到1S 的延时,类似停留3个时钟可得到3S 的延时,停留15个时钟可得到15S 的延时(注2:开发板工作时钟为50MHz )。 北 南 西东 图1. 六个彩色LED 可以表示一组交通信号灯 图2. 交通灯状态 南北 东西 红 黄 绿 红 黄 绿 S0 1 0 0 0 0 1 S1 1 0 0 0 1 0 S2 1 0 0 1 0 0 S3 0 0 1 1 0 0 S4 0 1 0 1 0 0 S5 1 0 0 1 0 0

图3. 交通灯的状态转移图 顶层模块 时钟分频模块状态机跳转模块 图4. 交通灯的原理框图 五、实验目的 本实验是有限状态机的典型综合实验,掌握如何使用状态转移图来定义Mealy状态机和Moore状态机,熟悉利用HDL代码输入方式进行电路的设计和仿真的流程,掌握Verilog语言的基本语法。并通过一个交通灯的设计掌握利用EDA软件(Xilinx ISE 13.2)进行HDL代码输入方式的电子线路设计与仿真的详细流程。。 六、实验内容 在Xilinx ISE 13.2上完成交通灯设计,输入设计文件,生成二进制码流文件下载到FPGA开发板上进行验证。 七、实验器材(设备、元器件)

交通灯课程设计报告

摘要 在今天的交通情况下,很多路口都出现拥堵和秩序混乱的情况,由此可见交通灯在生活中的重要性。我们本次课程设计的题目是交通灯控制器设计,要求设计并制作主/支交通信号灯控制器。我们小组成员通过共同交流和努力,完成了仿真图的设计、电路板的焊接、原理图的绘制。在由主干道和支干道汇成的十字路口,主、支道分别装有红、绿、黄三色信号灯,并完成数码管的置数。 通过本次课设,我们小组成员对数字电路的知识有了更深刻地了解。明白了在课设的各个阶段,我们都必须对元器件的原理非常了解。

目录 1 设计容及要求 (1) 2 方案论证 (1) 3 单元设计电路 (2) 3.1 总原理 (2) 3.2 控制电路 (3) 3.3 时钟产生电路 (3) 3.4 显示电路 (4) 3.5 器件 (5) 3.5.1可预置的十进制同步计数器74LS160 (5) 3.5.2 3 线-8 线译码器74LS138 (5) 3.5.3双时钟方式的十进制可逆计数器74LS192 (bcd,二进制) (6) 3.5.4 七段码译码器CD4511 (6) 4 组装及调试 (7) 4.1 通电前检查 (7) 4.2 通电检查 (7) 4.2.1 555电路模块的检查 (7) 4.2.2 CD4511的检查 (7) 4.2.3 74LS192的检查 (8) 4.2.4 控制电路及相关门电路的检查 (8) 4.2.5 发光二极管的检查 (9) 4.3 结果分析 (9) 5 设计总结 (10) 5.1 体会 (10) 5.2 设计电路的特点和方案的优缺点 (11) 5.3 改进方法 (11) 参考文献、附录Ⅰ、附录Ⅱ............................................................................ 错误!未定义书签。

基于FPGA的交通灯课程设计报告

总体设计要求和技术要点 1.任务及要求 (1)设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。 (2)红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号。 (3)主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。 (4)主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。 (5)在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。 (6)按《湖南涉外经济学院课程设计管理办法》要求提交课程设计报告。 工作内容及时间进度安排 第17周:周1---周2 :立题、论证方案设计 周3---周5 :程序设计与调试 第18周:周1---周3 :硬件调试与测试、撰写课程设计报告 周4---周5 :验收答辩 课程设计成果 1.与设计内容对应的软件程序 2.课程设计总结报告

摘要 本实验为自主选题设计实验,实验选择具有倒计时显示功能的红黄绿三色交通设计,实验中采用VHDL 作为设计功能描述语言,选用Altera公司的EP1K30144-PIN TQFP最为主控芯片,实验报告中简要介绍了FPGA器件,并给出了设计原理图,详细的介绍了交通灯的设计流程,实验报告中还附有实验代码实验结果照片图。 Abstract This experiment designed for independent choice experiment, experiment choice which has the function of the countdown display red yellow green traffic design, description language (VHDL as design function is applied in the experiments, the most main control chip select MAX II EPM240T100C5 Altera company, experiment report, this paper briefly introduces the MAX II device series, and gives the design diagram, detailed introduces the traffic lights of the design process, the experiment report with the code results photo graph.

交通灯控制器课程设计报告

. 中南林业科技大学 课程设计报告 设计名称:交通灯控制器 姓名: 学号: 专业班级: 院(系): 一、课程设计题目:交通灯控制器

时间:2015年6月29日至7月13日 地点: 指导老师: 二、课程设计目的 交通灯控制信号的应用非常广泛。本电路设计一个交通灯控制器,需要达到的目的如下: 一个周期64秒,平均分配,前32秒红灯亮,后32秒绿灯亮。 在红灯亮的期间的后8秒与红灯在一起的黄灯闪烁(注意:红灯同时亮)。为了显示效果明显,设计闪烁频率为1。 在绿灯亮的期间的后8秒与绿灯在一起的黄灯闪烁(注意:绿灯同时亮),为了显示效果明显,设计闪烁频率为1。 在黄灯闪烁期间,数码管同时倒计时显示,在此期间以外,数码管不亮. 三、课程设计方案 为了完成交通灯控制电路的设计,方案考虑如下: 一个脉冲信号发生器,一个二进制加法计数器,一个十进制减法计数器,红灯与绿灯以及黄灯是否亮是由二进制加法计数器的输出端状态来决定的,因此,设计一个组合逻辑电路,它的输入信号就是二进制加法计数器的输出信号,它的输出就是发光二极管的控制信号,因此,需要一个组合逻辑电路,六个发光二极管(二个红色发光二极管,二个绿色发光二极管,二个黄色发光二极管)电路,一个数码管显示电路。结构图如下:

四、课程设计原理 脉冲信号发生器由定时器555构成。 二进制加法计数器由七位二进制加法计数器4024构成。 十进制减法计数器由74LS193可逆可预置十进制计数器构成。 组合逻辑电路根据其输入输出的逻辑关系后再确定电路芯片。 驱动器选用4511。 从以上讨论可知,需要对所采用的芯片有比较详细的了解。下面对以上几种芯片的基本知识和基本特性进行介绍。 1、555定时器 555定时器是一块常用的集成电路,电路符号如左图所示,8为电源端VCC,1为公共端GND。所加电源电压围:4.5V

微机原理课程设计交通灯

一、课程设计题目 交通灯控制 二、课程设计目的 ●综合运用《微机原理与应用》课程知识,利用集成电路设计实 现一些中小规模电子电路或者完成一定功能的程序,以复习巩 固课堂所学的理论知识,提高程序设计能力及实现系统、绘制 系统电路图的能力,为实际应用奠定一定的基础。 ●掌握8255A方式0的使用与编程方法 ●PC机及配套的接口电路实验装置 ●IC芯片:8255A应用和8253 三、课程设计容 ●采用8255A设计交通灯控制的接口方案 ●采用8253设计延时电路 ●插接电路 ●编写控制程序 四、课程设计过程 1、设计原理 ●8255 8255是Intel公司生产的可编程并行I/O接口芯片,有3 个8位并行I/O口。具有3个通道3种工作方式的可编程 并行接口芯片(40引脚)。其部与引脚图如图所示:

8255有三个端口A、B、C端口,3种不同的工作方式,在其控制字的作用下使某一个端口工作于某一种工作状态下。 8253 intel8253是NMOS工艺制成的可编程计数器/定时器,其部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同,如图所示:

每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立,采用减1计数方式。控制字如图所示: 在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。在这里我们主要采用方式0:计数结

束产生中断 (由低电平变为高电平)。其波形图如图所示: a. 写CW后:OUT=0,直到计数到0 b. 写N后:下1个CLK脉冲下降沿开始计数 c. 计数过程中,可重写N,重写N后,同b. d. GATE的作用:GATE=1计数、=0暂停计数 e. 计数到0:OUT=1,直到再写CW或N 2、方案设计 考虑普通十字路口,交通灯的控制可分东西向和南北向两 组,每组可用红、黄、绿三个灯进行交通管理,所以本方 案要点是至少对六个交通灯进行控制。由于灯光控制只需 要开、关两个状态,所以可以采用开关量实施控制。开关

基于FPGA的交通灯设计说明

交通信号灯控制器

目录 第一章系统设计 1.1设计要求 (3) 1.2 方案比较 (3) 1.3方案论证 (3) 1.3.1总体思路 (4) 1.3.2设计方案 (5) 第二章单元电路设计 2.1 4位二进制计数器 (6) 2.2 两位二进制计数器 (6) 2.3定时时间到检测电路 (6) 2.4红黄绿灯输出控制电路 (6) 2.5计时器 (6) 第三章软件设计 3.1用VHDL编写程序 (6) 3.2 程序流程 (7) 3.3程序清单及仿真 (7) 第四章系统测试 (7) 第五章结论 (8) 参考文献 (9) 附录 (10)

0 引言 随着经济的飞速发展,现代化交通管理成了当今的热点问题。一个完善的交通控制功能,可使混乱的交通变得井然有序,从而保障了人们的正常外出。本系统通过设计一交通信号灯控制器,达到交通控制的目的。除实现交通灯基本的控制功能外,系统还可显示该灯本次距灯灭所剩的时间,具有更完善的控制功能,使行人提前做好起、停准备,具有更强的实用性。 第1章 系统设计 1.1设计要求 (1) 交通灯从绿变红时,有4秒黄灯亮的间隔时间。 (2) 交通灯红变绿是直接进行的,没有间隔时间。 (3) 主干道上的绿灯时间为20秒,支干道的绿灯时间为10秒。 (4) 在任意时间,显示每个状态到该状态结束所需要的时间。 1.2方案比较 要实现对交通灯的控制,有很多的方案可供选择。 方案一:由两块CMOS 集成电路完成定时和序列控制功能,三只双向晶体管完成实际的电源切换功能。电路中采用10V 负电源(可由市电电压经降压、整流、滤波、稳压而得)、CD4049集成电路、计数器CD4017等器件。其中双向晶闸管选用400V 、4A 的,二极管选用BY127型和1N4148型,稳压管选用10V 、1W 的。因直接使用市电工作,故在安装和使用时安全系数较低,且硬件电路复杂,所用器件多。 方案二:运用VHDL 语言分别控制分频和状态机两个模块, 即信号源经分频器分频后得到1Hz 脉冲,输出脉冲控制状态机中预置四个状态的循环,从而达到交通控制作用.该方案电路结构简单,使用器件少,易于安装和使用.但不宜于电路扩展,适用围小,应用不广泛. 方案三:采用VHDL 语言输入的方式实现交通信号灯控制器,并灵活运用了通用元件CBU14和CBU12作为4位二进制计数器和两位二进制计数器,简化了硬件电路,同时也给调试、维护和功能的扩展、性能的提高带来了极大的方便。 分析以上三种方案的优缺点,显然第三种方案具有更大的优越性、灵活性,所以采用第三种方案进行设计。 1.3 方案论证 1.3.1 总体思路 系统交通管理示意图如图1.3.1. 主干道 支干道 图1.3.1 路口交通管理示意图 由此可得出交通信号灯A 、B 、C 、D 的4种状态:

数电交通灯课程设计报告

电子技术课程 设计报告 二 级 学 院 机械与电子工程学院 专 业 电气工程及其自动化 年 级 2014级 学 号 14106***** 学 生 姓 名 苏 运 指 导 教 师 杨** 完 成 时 间 2015 年12 月25 日 简易交通灯的设计

简易交通灯的设计 作者:苏运 指导老师:杨** 摘要:利用数码管,74LS48译码器、74LS192计数器、ne555、与非门、或非门、触发器、蜂鸣器和小彩灯等电子元件,制作简易交通灯,实现15秒倒计时开始后,到达5秒时红灯熄灭,黄灯闪烁同时蜂鸣器响,到达0秒时切换到另外两个方向的红绿灯亮的功能。经测试,系统达到红绿灯转换和显示的基本要求,具有电路美观稳定性高的优点。 关键词:数电交通灯;交通灯;简易交通灯;计数器

目录 1 设计要求及方案选择 (1) 1.1设计要求 (1) 1.2方案选择 (1) 2 理论分析与设计 (1) 2.1脉冲发生器电路的分析及设计 (1) 2.2定时器电路的分析及设计 (2) 2.3交通灯和蜂鸣器电路的分析及设计 (3) 2.4控制器电路的分析及设计 (4) 2.5数码显示电路的分析及设计 (4) 3电路设计 (5) 3.1脉冲发生器电路的设计 (5) 3.2定时器电路的设计 (6) 3.3交通灯和蜂鸣器电路的设计 (6) 3.4控制电路的设计 (7) 3.5码显示电路的设计 (9) 3.6电源开关和指示灯电路的设计 (9) 4系统测试实验 (10) 4.1调试所用的基本仪器清单 (10) 4.2软件仿真调试 (10) 4.3实物电路板的调试 (10) 4.4时钟脉冲信号的测定 (10) 4.5调试结果 (11) 4.6测试结果分析 (11) 5 总结 (12) 附录 (13) 附录A 仿真图 (13) 附录B 原理图 (13) 附录C PCB图 (14) 附录D 实物图 (14) 附录E 脉冲信号测试图 (15) 附录F 元件清单 (15) 参考文献 (16)

电子课程设计 交通灯

模拟电子技术课程设计 学院: 电气与信息工程学院 专业班级: 学生1姓名: 学生1学号: 学生2姓名: 学生2学号: 指导教师: 完成时间: 成绩: 存在得问题1: (9) 存在得问题2: (9) 存在得问题3: (9) 五.附录 (10) 表2 元器件明细表 (10) 附图2 (12) 实物图 (13) 六.参考文献 (13)

简易交通灯控制逻辑电路设计报告 一、设计要求 (1)东西方向绿灯亮,南北方向红灯亮,时间15s。 (2)东西方向与南北方向黄灯亮,时间5s。 (3) 南北方向绿灯亮,东西方向红灯亮,时间l0s。 (4) 如果发生紧急事件,可以手动控制四个方向红灯全亮。 二、设计得作用、目得 设计一个交通灯控制器,由一条主干道(东西道)与一条支干道(南北道)汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中得车辆有时间停在禁行线外。 主、支干道均有车时,两者交替允许通行,主干道每次放行15秒,支干道每次放行10秒,还有5秒得黄灯时间作为过度,让行驶中得车辆停在禁行线以外。 通过对交通灯得设计,加深对555定时器构建电路得理解,掌握基本电路在实际生活中得应用。 三.设计得基本实现 1、系统概述 因为信号灯得工作状态循环不变,故可以才用扭环形计数器将单位时间脉冲按分配来实现,根据要求,可以采用n=6得扭环形计数器。扭环形计数器可以由3个74LS-双D触发器组成。 系统由脉冲信号发生器、定时器、控制器、信号灯显示器五大部分组成。其中脉冲信号发生器用于给各个组成部分提供脉冲信号,通过定时器向控制器发出定时信号,使相应得LED灯发光。控制器根据定时器得信号,进行状态间得转换,使显示器得显示发生相应转变。 2、单元电路得设计与分析

基于FPGA的十字路口交通灯控制器设计

石河子大学信息科学与技术学院 成绩存档 学期:2014 至2015学年第一学期 考试科目:电子EDA技术课程设计 专业:电子信息工程 班级:2012 (1)班 姓名: 学号: 任课教师:钟福如

目录 一、实验目的 (1) 二、测试方法 (1) 三、总的设计流程 (1) 四、交通灯控制器的具体设计方案 (1) 五、主要功能设计与仿真 (2) 1、时钟分频模块 (2) 2、交通灯控制模块 (3) 六、顶层文件 (8) 七、心得体会 (9) 八、参考文献 (10)

基于FPGA的十字路口交通灯控制器设计 一、实验目的: 弄懂交通灯的控制逻辑,注意是十字路口,分人行道与车道。车道分别有直行、左转、右转指示,且每个指示三种颜色:红绿黄,红绿转换时间设定2分钟,红与绿之间转换之前有30秒黄灯的闪烁;人行道有红、绿灯指示,红绿转换时间间隔2分钟,且在红绿转换之间有30秒的黄灯闪烁 二、测试方法: 输入技术脉冲信号,仿真波形的输出端的交通指示灯能按题目要求变化. 三、总的设计流程 首先根据交通灯控制器的功能要求,将功能要求转化成系统流程图,然后对系统进行模块的划分、定义各个模块的具体功能。再开始对各个模块用VHDL语言编程,并在Quartus II环境下进行编译及功能仿真。 四、交通灯控制器的具体设计方案

主干道 支 干 道 图1 十字路口交通灯控制器的平面图 实现红黄绿灯的自动指挥。通过交通灯控制器要能够使用于一条由主干道和支干道交汇处的十字路口(假设东西方向为主干道,南北方向为支干道)。且遵循“主干道优先考虑”原则,主、支干道红、绿灯亮的时间不完全一致,在正常情况下主干道允许车辆通行的时间更长。在绿灯转换为红灯的过程中有黄灯进行,使车辆有足够的时间停下来。另外由VHDL语言合理设计交通灯控制器的功能,以使绿、黄、红灯的转换有一个准确的转换顺序和时间间隔。依据设计要求,最终画出如图所示的系统框图。(图1)

数字系统课程设计-交通灯-实验报告

交通灯控制电路 摘要 在一个交通繁忙的十字路口,没有交通灯来控制来往车辆和行人的通行,假设也没有交警,那会发生什么事情呢?后果是难以想象的,可能会陷入一片混乱,甚至瘫痪。当然我们每个人都不希望这样。我们作为社会的一员,每人都有责任为它的更加先进和快捷做出力所能及的事情。我设计的这个交通控制系统可以通过交通灯控制东西方向车道和南北方向车道两条主次交叉道路上的车辆交替运行,用以减少交通事故的发生概率。并且经过这次实验使得我对电子技术课程内容的理解和掌握有了更深一层的认识,也学会使用半导体元件和集成电路,掌握电子电路的基本分析方法和设计方法,进一步提高分析解决实际问题的综合能力,也为将来的就业或继续深造做好准备。 一、任务 在城市道路上的交叉路口一般设置有交通灯,用于管理两条道路通行车辆。现有一条主干道和一条支干道的汇合点形成十字交叉口,为确保车辆安全、迅速的通行,在交叉路口的每条道上设置一组交通灯,交通灯由红、黄、绿3色组成。红灯亮表示此通道禁止车辆通过路口;黄灯亮表示此通道未过停车线的车辆禁止通行,已过停车线的车辆继续通行;绿灯亮表示该通道车辆可以通行。要求设计一交通灯控制电路以控制十字路口两组交通灯的状态转换,指挥车辆安全通行。指挥车辆安全通行。 设计要求 1、基本要求 (1)设计一个十字路口交通灯控制电路,要求主干道与支干道交替通行。 主干道通行时,主干道绿灯亮,支干道红灯亮,时间为60秒。支干道 通行时,支干道绿灯亮,主干道红灯亮,时间为30秒。 (2)每次绿灯变红灯时,要求黄灯先亮5秒钟。此时另一路口红灯也不变。 (3)黄灯亮时,要求黄灯闪烁,频率为1Hz。 2、发挥部分 要求在绿灯亮(通行时间内)和红灯亮(禁止通行时间内)均有倒计时显示。 二、设计方案选取与论证 1、所选方案的理由:本设计的交通灯控制电路是综合运用了74LS192芯片、7474芯片和NE555芯片等的集成电路。根据任务要求,用单片机或分立组件来实现是比较容易的,但是由于要求不能使用单片机设计,因此使用数字电路课程里学过的知识,运用它们来设计分析电路。即使用分立组件来实现。 2、方案的可行性、优缺点

单片机交通灯课程设计报告

单片机系统课程设计报告 专业:自动化073班 学生姓名:XXXX XXX 学号:2007023323 2007023328 指导教师:XXXX XXXX 完成日期:2010年7月7日

目录 1 设计任务和性能指标 (1) 1.1设计任务 (1) 1.2性能指标 (1) 2 设计方案 (2) 2.1任务分析 (2) 2.2方案设计 (2) 3 系统硬件设计 (3) 3.1单片机的最小系统 (3) 3.2电源电路 (4) 3.3数码管显示时间电路设计 (4) 3.4信号灯控制电路设计 (5) 4 系统软件设计 (5) 4.1主程序设计 (5) 5 调试及性能分析 (6) 5.1调试分析 (6) 5.1.1 软件调试 (6) 5.1.2 硬件调试 (6) 5.1.3 系统功能调试 (6) 6 心得体会 (6) 参考文献 (8) 附录1 系统原理图 (9) 附录2 系统仿真图 (10) 附录3 程序清单 (11)

1 设计任务和性能指标 1.1设计任务 利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯。如图上图所示。设东西向为主干道,南北为支干道。 1.2性能指标 (1)处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。 (2)干道均有车时,两者交替允许通行,主干道每次放行60秒,支干道每次放行40秒,设立60秒、40秒计时、显示电路。 南 北 东 西

单片机电子课程设计交通灯

单片机电子课程设 计交通灯 1

基于单片机交通灯控制器设计 任务要求 1)经过数字电路的设计,在面包板上模拟交通红绿灯。要求分主干道 和支干道,每条道上安装红(主:R,支:r)绿(主:G,支:g)黄(主:Y,支:y)三种颜色灯,由四种状态自动循环构成(Gr Yr Rg Ry); 2) 在交通灯处在不同的状态时,设计一计时器以倒计时方式显示计时 , 并要求不同状态历时分别为:Gr:30秒,Rg:20秒,丫r,Ry:5秒。 总体方案 秒脉冲 主控部分 倒计时 数码管 交通灯 1

三、单元电路设计 1)主控电路 在设计要求中要实现四种状态的自动转换,首先要把这四种状态以数字的形态表示出来。因2八2=4,因此能够两位二进制数表示所需状态(00— Gr, 0—Yr, 10-Rg, 1—Ry)循环状态:(00-01—10—11— 00) 数字电路课程中介绍的计数器就是经过有限几个不同状态之间的循环实现不同模值计数,由此能够尝试设计一模值为4的计数器,其输出(代表不同状态)既能够循环转换,而且能够控制其它部分电路。在课程设计中本人利用74LS74(双上升沿D触发器)设计模4计数器作为主控部分电路。根据真值表化简,然后接线,这里就不详细介绍。 2

3 12 11 J i 主控电路图如下: W LR' 可 LKRE'H 瓯 V c c P 已

4 2)秒脉冲产生电路 经过555芯片按一定的线路接上不同的电阻和电容就可产生周期不的方波脉 冲,即不同的频率脉冲。课程设计需要秒脉冲,利用的2个电容,2个电阻。 脉冲产生电路图如下: 3) 红绿灯(发光二极管)显示电路 红绿灯显示也是表示电路所处状态,其必然与主控电路的状态 --- 对应,受到 主控电路控制,即主控电路的输出(A 和B)决定了主干道和支干道的红绿灯的亮 灭情况。 如亮用1表示,灭用0表示,则有, A B 主红(R) 主黄(Y) 主绿(G) 支红(r) 支黄(y) 支绿(g) 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 1 1 1 1 1 因此,R =A, Y ~AB G=~A~B r 二?A y= AB g= A ?B

相关主题
文本预览
相关文档 最新文档