数电课程设计带左转功能的红绿灯控制系统_第1页
数电课程设计带左转功能的红绿灯控制系统_第2页
数电课程设计带左转功能的红绿灯控制系统_第3页
数电课程设计带左转功能的红绿灯控制系统_第4页
数电课程设计带左转功能的红绿灯控制系统_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、数电课程设计 带左转功能的红绿灯控制系统 姓名: 学号:同组实验者:孙 实验指导老师: 一设计任务与要求:设计一个带左转功能的红绿灯控制电路。 (1)设东、西方向为主路、南、北方向为辅路;(2)当东、西方向绿灯亮时(表示允许东西方向车辆直行或左拐能过十字路口),南、北方向亮红灯;反之,当南、北方向绿灯时,东、西方向应亮红灯;(3)在信号灯交替亮灭之前,应有黄灯信号作为缓冲提示(4)绿灯红灯黄灯及左拐信号灯各有一定的作用维持时间,东西方向红灯维持时间65秒,南北方向维持55秒,并且利用数码管倒计时显示。二系统整体设计1.系统设计分析将交通道路抽象模型如下:交通灯的显示有很多方式,如十字路口、丁字

2、路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,车子如果只要东西和南北方向通行就很简单,但本实验要求车辆要带左转功能,则较为复杂要完成本实验,首先必须了解交通路灯的亮灭规律。本实验需要用到实验箱上交通灯模块中的发光二极管,即红、黄、绿各三个。依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。其交通灯的亮灭规律为:初始态是两个路口的红灯全亮,之后东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,通过黄灯提示要进行左拐动作,左拐时间设定由数码管显示。当东西路口红灯来临,同样要由黄灯进行缓冲提示,之后东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,重复上述过程。

3、为简易表示起见,本设计抽象模型如上,东西为a方向,南北为b方向。由题可知,a方向和b方向的交通灯应有四种状态,分别表示可信号灯的亮灭情况,状态转换图如下:图中中1表示灯亮,0 表示灯灭,a方向和b方向的红、黄、绿和左拐灯分别用r1、y1、g1、l1和r2、y2、g2、l2来表示。这样,就每个方向的等就按要求的顺序依次点亮了,并且我们就可以由状态设置变量来分别为每个信号进行有效控制。2.系统设计思路 因为每个方向相对的信号灯状态及倒计时的现实完全一致,根据设计要求和系统所具有的功能,红绿灯控制系统设计框图如下: 首先要通过以使能信号选通a方向或b方向,并且有时钟控制信号来触发控制电路。通过读取状

4、态变量的状态来点亮对应信号灯,并且通过扫描显示电路来控制数码管的显示及倒计时。应注意两个方向各种灯亮的时间应该能够非常方便地进行设置和修改,此外假设a方向是主干道,车流量大,因此a方向通行的时间应比b方向长一些,并且每个方向红灯亮的时间应该与另一方向绿、黄、左拐、黄灯亮的时间相等。三单元模块设计:1.硬件电路实现 根据交通灯系统的控制要求,该电路包含了一个cpld芯片,两个led数码显示器,二十个分别表示各个方向的红黄绿灯,以及相应的限流电路。实验板仿真芯片用altera flex6000系列的epf10k10lc84型可编程逻辑芯片。按照如下的管脚定义,分配好管脚,编译成可下载的文件,下载到

5、实验板上。经验证,符合要求。实验板的引脚定义:变量i/o引脚eninputpin_28clkinputpin_14lampa0outputpin_170lampa1outputpin_131lampa2outputpin_108lampa3outputpin_73lampb0outputpin_50lampb1outputpin_11lampb2outputpin_228lampb3outputpin_193acount0outputpin_198acount1outputpin_197acount2outputpin_196acount3outputpin_195acount4outputp

6、in_188acount5outputpin_187acount6outputpin_186acount7outputpin_185comoutputpin_132主控程序如下:module traffic(clk,en,lampa,lampb,acount,bcount);output7:0 acount,bcount;output3:0 lampa,lampb;input clk,en;reg7:0 numa,numb;reg tempa,tempb;reg2:0 counta,countb;reg7:0 ared,ayellow,agreen,aleft,bred,byellow,bgr

7、een,bleft;reg3:0 lampa,lampb;always (en)if(!en)begin ared <=8'd55; ayellow <=8'd5;agreen <=8'd40; aleft <=8'd15; bred <=8'd65; byellow <=8'd5; bleft <=8'd15; bgreen <=8'd30; endassign acount=numa;assign bcount=numb;always (posedge clk)beginif(e

8、n)beginif(!tempa)begintempa<=1;case(counta) 0: begin numa<=agreen; lampa<=2; counta<=1; end1: begin numa<=ayellow; lampa<=4; counta<=2; end2: begin numa<=aleft; lampa<=1; counta<=3; end3: begin numa<=ayellow; lampa<=4; counta<=4; end4: begin numa<=ared; lamp

9、a<=8; counta<=0; enddefault: lampa<=8;endcaseendelse begin /倒计时if(numa>1)if(numa3:0=0) beginnuma3:0<=4'b1001;numa7:4<=numa7:4-1;endelse numa3:0<=numa3:0-1;if (numa=2) tempa<=0;endendelse beginlampa<=4'b1000;counta<=0; tempa<=0;endendalways (posedge clk) begin

10、if (en)beginif(!tempb)begintempb<=1;case (countb) 0: begin numb<=bred; lampb<=8; countb<=1; end1: begin numb<=bgreen; lampb<=2; countb<=2; end2: begin numb<=byellow; lampb<=4; countb<=3; end3: begin numb<=bleft; lampb<=1; countb<=4; end4: begin numb<=byellow

11、; lampb<=4; countb<=0; enddefault: lampb<=8;endcaseendelsebegin /倒计时if(numb>1)if(!numb3:0) beginnumb3:0<=9;numb7:4<=numb7:4-1;endelse numb3:0<=numb3:0-1;if(numb=2) tempb<=0;endendelse beginlampb<=4'b1000;tempb<=0; countb<=0;endendendmodule。3 对象控制模块: 根据交通灯系统的要实现的功

12、能,考虑用两个并行的always模块来控制a和b两个方向的四盏灯,这两个always 模块用一个时钟信号已进行同步。如对a方向的程序控制模块描述如下:always(posedge clk)/该always模块控制a方向的4种灯beginif(en)beginif(!tempa)begintempa<= 1;4循环控制切换模块: 每个always模块控制1个方向的4种灯按如下顺序点亮,并往复循环:绿灯黄灯左拐灯黄灯红灯。程序描述如下:case(counta) 0:begin numa<=agreen;lampa<=2;counta<=1;end1:begin numa&l

13、t;=ayellow;lampa<=4;counta<=2;end2:begin numa<=alert;lampa<=1;counta<=3;end3:begin numa<=ayellow;lampa<=4;counta<=4;end4:begin numa<=ared;lampa<=8;counta<=0;enddefault:lampa<= 8;endcase5时间显示控制模块: 每盏灯亮的时间采用一个减法计数器进行计数,该计数器采用同步预置法设计,这样只需改变预置数据,就可以改变计数器的模,因此每个方向只需要1个

14、计数器进行计时即可。为便于显示灯亮的时间,计数器的输出均采用bcd码,显示由4个数码管来完成,a方向和b方向各用两个数码管。可用如下程序描述: else begin/倒计时 if(numa>1) if(numa3:0=0)begin numa-3:0<=4'b1001; numa7:4<=numa7:4-1; end else numa3:0<=numa3:0-1; if(numa=2) tempa<=0; end6.信号的有效维持时间模块设定a方向红、绿、黄、左拐灯亮的时间分别为65秒、40秒、5秒和15秒,b方向红、绿、黄、左拐灯亮的时间分别为:55秒

15、、30秒、5秒和15秒。假如要改变这些时间只须改变计数器的预置数即可。程序描述如下:begin/设置各种灯的计数器的预置数ared<=8'b01010101;/65sayellow <=8'b00000101;/5sagreen <=8'b01000000; /40saleft <=8'b00010101; /15sbred <=8'b01100101; /55sbyellow <=8'b00000101; /5sbleft <=8'b00010101; /15sbgreen <=8'

16、;b00110000; /30send四eda系统原理仿真设计1、仿真环境eda软件quartus ii 9.1软件环境下。2、eda设计仿真(1)rtl门级模块实现:(2)程序综合成功:(3)生成网表文件:(4)仿真波形:(5)电路输入输出实例化模块3.输出验证仿真:由状态转换表可知,对a方向通道,当在当前时刻定义变量lamp=1000时,红灯会被点亮,此时在波形中对其输入控制如下:经仿真验证,在当前时刻,显示a方向上红灯的数码管会输出时间显示。而有题目要求,当a方向亮红灯时,b方向会按绿灯黄灯左拐黄灯顺序依次点亮,且显示时间如下图示,可知满足要求。4.对仿真结果的分析: (1)、在波形仿真

17、中,由于分频模块的数目太大,且电路的时间延时,未能去抖,在时间显示模块会遇到某个计数值不太准确,但其前后值都准确。(2)当a或b方向当红灯亮时,在另一方向会各信号灯循环点亮,这是在波形仿真中具体什么灯点亮以及显示时间不能直观的表现出来。五、设计心得与总结经过几周的努力,带左转功能的红绿灯控制系统终于有了较满意的结果。从最初的选题到确定思路,从模型抽象到实例设计,从源代码的编写到仿真分析,我们参阅了数本教材,查阅了很多网上资料,也请教了指导老师与学长,在此对他们表示深深的感谢。书到用时方恨少。在这个过程中,我们真切的感受到自己的知识的缺乏,甚者学过的东西我们都不能融会贯通,灵活运用。悔不当初!但

18、一路走下来,虽然艰辛,却收获颇丰。我们不仅回顾了数电模电知识,更深层次的运用了quarts仿真工具,也锻炼了自己的抽象理解,建造模型模,动手实践的能力。在这个过程中,我也深刻体会到团队合作的重要性,一个人的力量总是有限的,但通过互帮互助,我们会将自己的作用最大化。由于自己的能力实在有限,有做的不完善的地方希望老师理解,指教,谢谢!六、参考文献:数字电子技术基础 阎石 主编 高等教育出版社模拟电子技术基础 童诗白 华成英主编 高等教育出版社verilog数字设计与综合 夏宇文 主编 科学出版社可编程逻辑器件开发软件 郑亚民 董晓丹 国防工业出版社附件:1.程序变量说明clk: 为同步时钟;en:

19、 使能信号,为 1 的话,则控制器开始工作;lampa: 控制 a 方向四盏灯的亮灭;其中,lampa0lampa3,分别控制a 方向的左拐灯、绿灯、黄灯和红灯;lampb: 控制 b 方向四盏灯的亮灭;其中,lampb0 lampb3,分别控制b 方向的左拐灯、绿灯、黄灯和红灯;acount: 用于 a 方向灯的时间显示,8 位,可驱动两个数码管;bcount: 用于 b 方向灯的时间显示,8 位,可驱动两个数码管2.led 数码管显示扫描模块module led(clk , segout , bitout , d1 , d2 , d3 , d4);input clk ; input 6 :

20、 0 d1 , d2 , d3 , d4 ; output 3 : 0 segout ; output 6 : 0 bitout ; reg 3 : 0 segout ;reg 6 : 0 bitout ;reg 14 : 0 count_for_clk ; always (posedge clk) begin count_for_clk <= count_for_clk + 14'd1 ; endalways (posedge clk) begincase( count_for_clk14 : 13 ) 2'b00 :begin segout <= 4'b

21、0001; bitout <= d1; end 2'b01 :begin segout <= 4'b0010; bitout <= d2; end 2'b10 :begin segout <= 4'b0100; bitout <= d3; end 2'b11 :begin segout <= 4'b1000; bitout <= d4; end endcaseendendmodule3.cpld硬件调试数码管输出模块module control(en, clk, lampa, lampb, acount,

22、 bcount,segout,bitout);input en , bcount , acount ; input clk; output2 :0 lampa , lampb ; output3 :0 segout ; output6 :0 bitout ; reg 2 : 0 lampa ,lampb ;reg 31: 0 clk_for_1hz ; reg clk_1hz ; reg 6 : 0 moutg , mouts , noutg , nouts ;reg 7 : 0 numm , numn ;reg tempm = 0 , tempn = 0 ;reg 1 : 0 countm

23、= 2'b00 , countn = 2'b00 ; reg 7 : 0 mred , mgreen , myellow, nred, ngreen, nyellow; task shown;input3:0 in;output6:0 out;begin case(in) 0 : out = 7'b0000001 ; 1 : out = 7'b1001111 ;2 : out = 7'b0010010 ;3 : out = 7'b0000110 ;4 : out = 7'b1001100 ;5 : out = 7'b0100100

24、 ; 6 : out = 7'b0100000 ;7 : out = 7'b0001111 ;8 : out = 7'b0000000 ;9 : out = 7'b0000100 ; default : out <= 7'bzzzzzzz ; endcaseendendtask always (numm or numn) begin shown(numm3:0,moutg); shown(numm7:4,mouts); shown(numn3:0,noutg); shown(numn7:4,nouts); endalways (posedge cl

25、k) begin if (clk_for_1hz = 32'd25_000_000) begin clk_for_1hz = 32'd0 ; clk_1hz = clk_1hz ; end else clk_for_1hz = clk_for_1hz + 1 ; endalways (posedge clk_1hz) begin if(!en) begin if(!tempm) begin tempm <= 1; if(countn = 2'b00 && countm = 2'b00) begin if(bcount = 0) mgreen

26、 <= 8'b0101_0000 ; else mgreen <= 8'b0011_0000 ; if(acount = 0) mred <= 8'b0011_0000 ; else mred <= 8'b0010_0000 ; myellow<= 8'b0000_0101 ; end case(countm) 2'b00: begin numm <= mgreen; lampa <= 3'b101; countm <= 2'b01; end 2'b01: begin num

27、m <= myellow; lampa <= 3'b110;countm <= 2'b10; end 2'b10: begin numm <= mred; lampa <= 3'b011; countm <= 2'b00; enddefault: begin numm <= mgreen; lampa <= 3'b101; countm <= 2'b01; end endcase end else begin / tempm = 1 if(numm > 1) if(numm3:0=0) begin numm3:0<=4'b1001; numm7:4 <= numm7:4-4'd1; end else numm3:0 <= numm3:0-4'd1; if(numm = 2) tempm<=0; endend else begin lampa <= 3'b100; countm <= 0; tempm <= 0; endend always (posedge clk_1hz) beg

温馨提示

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

评论

0/150

提交评论