用VHDL语言实现的交通灯精品版.docx
《用VHDL语言实现的交通灯精品版.docx》由会员分享,可在线阅读,更多相关《用VHDL语言实现的交通灯精品版.docx(19页珍藏版)》请在冰豆网上搜索。
用VHDL语言实现的交通灯精品版
序言………………………………………………………………………………………3
第1章任务和要求………………………………………………………………4
1.1设计任务……………………………………………………………………………4
1.2设计要求………………………………………………………………………………4
第2章功能分析……………………………………………………………………6
2.1交通灯控制系统总体框架图…………………………………………………………6
2.2模块功能分析.………………………………………………………………………6
第3章设计过程……………………………………………………………………7
3.1分频模块的设计及仿真图…………………………………………………………7
3.2显示模块的设计及仿真图…………………………………………………………7
3.3数码管显示模块设计及仿真图………………………………………………………8
3.4译码驱动模块的设计及仿真图………………………………………………………8
3.5顶层文件设计及仿真图………………………………………………………………9
3.6交通灯顶层原理图……………………………………………………………………9
第4章外部电路结构图及引脚分配…………………………………………11
4.1电路主要结构……………………………………………………………………11
4.2下载引脚分配……………………………………………………………………12
第五章分析与小结
5.1测试及结果分析…………………………………………………………………13
5.2实验小结…………………………………………………………………………13
参考文献…………………………………………………………………………………14
附录………………………………………………………………………………………15
具有五种信号灯和倒计时显示的交通灯控制器
序言
随着社会经济的发展,城市交通问题越来越引起人们的关注。
人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。
城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。
、上海、南京等出现了交通超负荷运行的情况,因此,自80年代后期,这些城市纷纷修建城市高速道路,在高速道路建设完成的初期,它们也曾有效地改善了交通状况。
然而,随着交通量的快速增长和缺乏对高速道路的系统研究和控制,高速道路没有充分发挥出预期的作用。
而城市高速道路在构造上的特点,也决定了城市高速道路的交通状况必然受高速道路与普通道路耦合处交通状况的制约。
所以,如何采用合适的控制方法,最大限度利用好耗费巨资修建的城市高速道路,缓解主干道与匝道、城区同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的主要问题。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
随着中国加入WTO,我们不但要在经济、文化、科技等各方面与国际接轨,在交通控制方面也应与国际接轨。
俗话说“要想富,先修路”,但路修好了如果在交通控制方面做不好道路还是无法保障畅通安全。
作为交通控制的重要组成部份的交通信号灯也应适合社会实际情况。
因此,本人选择制作十字路口交通灯。
运用VHDL语言编写一个交通灯控制器模块,该模块由四部分组成,分别是分频模块clk_10,灯模块js,数码显示模块sm和译码驱动模块dec47。
交通灯控制器用于自动控制十字路口交通灯和计时器,指挥各种车辆和行人安全通行。
摘要:
本设计中选用目前应用较广泛的VHDL硬件电路描述语言,实现对路口交通灯系统的控制器的硬件电路描述,在Altera公司的EDA软件平台MAX+PLUSⅡ环境下通过了编译、仿真,并下载到CPLD器件上进行编程制作,实现了交通灯系统的控制过程。
关键词:
EDA;VHDL;控制器;CPLD
Abstract:
AndselectanduseDescriptionLanguageapplyingbroaderVHDLhardwarecircuitatpresentincapitalbeingdesigned,thehardwarecircuitcomingtruetosystematiccontrollerofcrossingtrafficlightdescribesthat,havepassedcompiling,havesimulatedunderEDAofAlteracompanysoftwareplatformMAX+PLUSIIenvironment,downloadthecontrolprocedurehavingmade,realizingtrafficlightsystematicallytotheprogrammingbeinginprogressonCPLDcomponent.
Keywords:
EDA;VHDL;Controller;CPLD
第1章任务和要求
1.1设计任务
设计一个十字路口交通控制器,方向和方向分别设置左拐(L),绿(G),黄(Y),和红(R),人行道(p)五盏灯,以及倒计时显示器,用以指挥车辆和行人有序的通行。
左拐灯(L)亮表示左转车辆可以通行;绿灯(G)亮表示直行车辆可以通行;黄灯(Y)亮表示左转或直行车辆即将禁行;红(R)灯亮表示左转和直行车辆禁行,人行道的绿灯亮表示人可以通行,红灯表示人行道不可以通行;倒计时显示器用来显示允许通行或禁止通行的时间。
1.2设计要求
1.在十字路口A和B两个方向各设一组左拐,绿灯,黄灯,红灯,人行道红绿灯。
显示顺序:
绿灯——黄灯——红灯(左拐灯以及人行道绿灯)。
2.在A和B两个方向各设一组倒计时显示器。
A、B方向绿灯,黄灯,红灯和左拐灯显示时间分别是39s,6s,45s,和15s。
3.
交通灯的显示状况:
39s6s左拐15s人绿30s
A绿灯黄灯红灯
45s
左拐15s人绿30s39s6s
B红灯绿灯黄灯
45s
除人行道绿灯亮之外,人行道红灯亮。
4.设有一个特殊情况按钮con,当为高电平的时候可以让人行道的交通灯的红灯都亮,为低电平的时候可以恢复正常。
5.设有停止按钮rst,当为高电平的时候可以让所有的灯以及数码管都停止,当为低电平的时候恢复正常。
第2章功能分析
2.1控制系统总体框架图
conA、B道灯输出(12个灯)
clk数码管
Rst
图2—1交通灯控制系统总体框架图
2.2各模块功能分析
根据设计要求和系统所具有的功能,交通灯控制分为四个部分:
分频电路:
用555电路也可以产生1HZ的脉冲,但是由于频率太低不稳定,所有用555产生10HZ的脉冲,而我们需要的是1HZ的脉冲,所有我们在软件内部加了一个10分频的电路。
灯显示电路:
按照交通灯的亮灯时间和亮灯顺序,在进行计数的同时控制灯的亮和灭。
数码显示电路:
这是数码管显示控制电路,利用计数控制数码管的显示,数码管是以BCD的来显示的,而且显示是以减计数的形式来显示的。
译码显示电路:
这是个译码电路,与外部的数码管相连接。
第3章设计过程
3.1分频模块clk_10的设计
控制模块的输入是由555产生的10HZ脉冲,输出是经过分频之后的1HZ脉冲,分频模块的仿真如下:
图3-1交通灯分频模块波形仿真图
3.2灯显示模块js的设计
控制12个灯的亮和灭。
灯显示模块的仿真如下:
图3-2交通灯计时模块波形仿真图
3.3数码显示模块sm的设计
控制数码管的显示。
该模块的仿真如下:
图3-3交通灯译码驱动模块波形仿真图
3.4译码驱动模块dec47的设计
显示模块用来显示倒计时时间和系统的工作状态。
其输出用来驱动六位数码管,其中四位用于显示倒计时时间,两位显示工作状态,采用动态扫描显示。
该模块的仿真如下:
图3-4交通灯显示模块波形仿真图
3.5顶层文件设计
由分频模块clk_10,灯显示模块js,数码显示模块sm和译码驱动模块dec47四部分组成,其仿真如下:
图3-6交通灯顶层文件波形仿真图
3.6交通灯顶原理图
图3-7交通灯顶层原理图
第4章电路结构图及引脚分配
4.1电路主要结构
VCC
12个灯
图4-1交通灯控制器外部电路主要结构
说明:
电路中的电阻都为1K,555的外部电路有两个电阻,分别是75K和33K,电容是1uF和10nF。
灯和数码管都用底座插,开关也用底座,开关至1为闭合(接地),开关至0为打开(接高电平)。
三五产生一个10KHz的脉冲信号。
4.2下载引脚分配
表4-2下载引脚分配
第五章分析与小结
5.1测试及结果分析
1.灯显示测试
当电路连接完毕后,将写好的测试程序下载到芯片内,连接好各灯通电检测。
检测各个工作方式下的灯亮情况。
2.数码管的测试
将串口的和电路板上的接口连接,将写好的测试程下载到芯片内,用万用表监测下,再测试。
3.整体电路测试
系统上电,下载好程序即可开始测试,观测一个周期灯的显示状态是否正常,同时观察倒计的计数是否正常。
5.2实验小结
首先感谢宋伟老师和翟丽芳老师为期两个星期对我们的辅导、帮助与支持。
本次课程设计软件都是我们自己编的,经过这个过程之后我觉得我学了不少的东西,硬件易出问题,尤其是开关的连接。
连线复杂,问题难以检查。
软件应根据具体硬件设计,如数码管动态扫描电路:
共阴极和共阳极其程序有所区别。
此外,设计和调试的过程中,也发现了一些问题,譬如灯和数码管不同步,还有就是没有做过市场调查,设置不是很合理,下次做的时候应先做市场调查。
这需要在实践中进一步完善。
分频程序在实际应用时也须根据具体情况设计。
参考文献
[1]邹彦,庄严,邹宁,王宇鸿.EDA技术与数字系统设计[M].北京:
电子工业出版社,2007.
[2]谭会生.VHdl硬件描述语言与数字逻辑电路设计[M].长沙:
湖南大学出版社,2004.
[3]雷伏生.电路设计.北京:
清华大学出版社[M],2006.
[4]杨晓慧.EDA技术与数字电路设计.北京:
国防工业出版社[M],2004.
[5]许丽娅.VHDL语言设计.泉州:
北京理工大学出版社[M].2005.
附录
源程序清单
1.分频模块源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityclk_10is
port(clk:
instd_logic;
rst:
instd_logic;
clk_div10:
outstd_logic);
endclk_10;
architectureoneofclk_10is
signalclk_temp:
std_logic;
begin
process(clk,rst)
variablecounter:
std_logic_vector(2downto0);
constantmd:
std_logic_vector(2downto0):
="101";
begin
if(rst='0')then
if(clk'eventandclk='1')then
if(counter=md)then
counter:
=(others=>'0');
clk_temp<=notclk_temp;
endif;
counter:
=counter+1;
endif;
elseclk_temp<='0';
endif;
endprocess;
clk_div10<=clk_temp;
endone;
2.灯显示模块源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityjsis
port(clk:
instd_logic;
con:
instd_logic;
al,ag,ay,ar,ap:
outstd_logic;
bl,bg,by,br,bp:
outstd_logic;
apr,bpr:
outstd_logic);
endentityjs;
architectureoneofjsis
signalb:
std_logic_vector(6downto0);
signalapg,bpg:
std_logic;
begin
process(clk,con)
variableco,bo:
std_logic:
='0';
begin
if(con='0')then
if(clk'eventandclk='1')thenb<=b+1;
if(b<=14)thenal<='0';ag<='1';ay<='0';ar<='0';apg<='0';bl<='1';bg<='0';by<='0';br<='1';bpg<='0';
elsif(b<=38andb>14)thenal<='0';ag<='1';ay<='0';ar<='0';apg<='0';bl<='0';bg<='0';by<='0';br<='1';bpg<='1';
elsif(b<=44andb>38)thenco:
=notco;al<='0';ag<='0';ay<=co;ar<='0';apg<='0';bl<='0';bg<='0';by<='0';br<='1';bpg<='1';
elsif(b<=59andb>44)thenal<='1';ag<='0';ay<='0';ar<='1';apg<='0';bl<='0';bg<='1';by<='0';br<='0';bpg<='0';
elsif(b<=83andb>59)thenal<='0';ag<='0';ay<='0';ar<='1';apg<='1';bl<='0';bg<='1';by<='0';br<='0';bpg<='0';
elsif(b<=89andb>83)thenbo:
=notbo;al<='0';ag<='0';ay<='0';ar<='1';apg<='1';bl<='0';bg<='0';by<=bo;br<='0';bpg<='0';
elsif(b>88)thenb<="0000001";al<='0';ag<='1';ay<='0';ar<='0';apg<='0';bl<='1';bg<='0';by<='0';br<='1';bpg<='0';
endif;
endif;
elseal<='0';ag<='0';ay<='0';ar<='1';apg<='0';bl<='0';bg<='0';by<='0';br<='1';bpg<='0';
endif;
apr<=notapg;bpr<=notbpg;
endprocess;
ap<=apg;bp<=bpg;
endarchitecture;
3、数码显示模块源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitysmis
port(clk:
instd_logic;
a1:
outstd_logic_vector(3downto0);
a2:
outstd_logic_vector(3downto0);
b1:
outstd_logic_vector(3downto0);
b2:
outstd_logic_vector(3downto0));
endentitysm;
architectureoneofsmis
signalt1,t2,p1,p2:
std_logic_vector(3downto0);
signalj:
std_logic_vector(6downto0):
="0000000";
begin
process(clk)
begin
if(clk'eventandclk='1')then
if(j=0)thent1<="0011";t2<="1000";p1<="0100";p2<="0100";
endif;
if(j>0andj<39)then
if(t2>"0000")thent1<=t1;t2<=t2-1;
elsif(t2="0000")thent1<=t1-1;t2<="1001";
endif;
endif;
if(j>0andj<45)then
if(p2>"0000")thenp1<=p1;p2<=p2-1;
elsif(p2="0000")thenp1<=p1-1;p2<="1001";
endif;
endif;
if(j=39)thent1<="1011";t2<="1011";
endif;
if(j=45)thent1<="0100";t2<="0100";p1<="0011";p2<="1000";
endif;
if(j>45andj<85)then
if(p2>"0000")thenp1<=p1;p2<=p2-1;
elsif(p2="0000")thenp1<=p1-1;p2<="1001";
endif;
endif;
if(j>45andj<91)then
if(t2>"0000")thent1<=t1;t2<=t2-1;
elsif(t2="0000")thent1<=t1-1;t2<="1001";
endif;
endif;
if(j=84)thenp1<="1011";p2<="1011";
endif;
j<=j+1;
if(j=89)thenj<="0000000";
endif;
endif;
endprocess;
a1<=t1;a2<=t2;b1<=p1;b2<=p2;
endarchitecture;
4.译码驱动模块源程序
libraryieee;
useieee.std_logic_1164.all;
摆渡自己的阅读及答案entitydec47is
时间像小马车教学反思port(a:
instd_logic_vector(3downto0);
y1,y2,y3,y4,y5,y6,y7:
outstd_logic);
enddec47;
architectureoneofdec47is
begin
process(a)
昙花教学实录begin
梦想的力量教学反思caseais
when"0000"=>y1<='0';y2<='0';y3<='0';y4<='0';y5<='0';y6<='0';y7<='1';
when"0001"=>y1<='1';y2<='1';y3<='1';y4<='1';y5<='0';y6<='0';y7<='1';
概率论期末试卷及答案when"0010"=>y1<='0';y2<='0';y3<='1';y4<='0';y5<='0';y6<='1';y7<='0';
when"0011"=>y1<='0';y2<='0';y3<='0';y4<='0';y5<='1';y6<='1';y7<='0';
when"0100"=>y1<='1';y2<='0';y3<='0';y4<='1';y5<='1';y6<='0';y7<='0';
时间像小马车教学反思when"0101"=>y1<='0';y2<='1';y3<='0';y4<='0';y5<='1';y6<='0';y7<='0';
when"0110"=>y1<='0';y2<='1';y3<='0';y4<='0';y5<='0';y6<='0';y7<='0';
拾贝壳阅读答案when"0111"=>y1<='0';y2<='0';y3<='0';y4<='1';y5<='1';y6<='1';y7<='1';
when"1000"=>y1<='0';y2<='0';y3<='0';y4<='0';y5<='0';y6<='0';y7<='0';
数学专业论文选题when"1001"=>y1<='0';y2<='0';y3<='0';y4<='1';y5<='1';y6<='0';y7<='0';
数学题目大全带答案when"1011"=>y1<='1';y2<='1';y3<='1';y4<='1';y5<='1';y6<='1';y7<='1';
whenothers=>y1<='Z';y2<='Z';y3<='Z';y4<='Z';y5<='Z';y6<='Z';y7<='Z';
endcase;
新叶阅读答案endprocess;
endone;