PLD交通灯控制器设计报告_第1页
PLD交通灯控制器设计报告_第2页
PLD交通灯控制器设计报告_第3页
PLD交通灯控制器设计报告_第4页
PLD交通灯控制器设计报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、数字系统设计报告交通灯控制器一 实验目的1.基本掌握自顶向下的模块化的电子系统设计方法;2.学会使用pld和硬件描述语言设计数字电路,掌握 quartus ii开发工具的使用方法;3.培养学生自主学习、正确分析和解决问题的能力 。二 设计要求我在本课程中所选择的课题是用verilog hdl实现交通灯控制器。该课题的具体内容及要求如下:主干道与乡村公路十字交叉路口在现代化的农村星罗棋布,为确保车辆安全、迅速地通过,在交叉路口的每个入口处设置了红、绿、黄三色信号灯。红灯禁止通行;绿灯允许通行;黄灯亮则给行驶中的车辆有时间行驶到禁行线之外。主干道和乡村公路都安装了传感器,检测车辆通行情况,用于主干

2、道的优先权控制。 (1)当乡村公路无车时,始终保持乡村公路红灯亮,主干道绿灯亮。(2)当乡村公路有车时,而主干道通车时间已经超过它的最短通车时间时,禁止主干道通行,让乡村公路通行。主干道最短通车时间为25s 。(3)当乡村公路和主干道都有车时,按主干道通车25s,乡村公路通车16s交替进行。(4)不论主干道情况如何,乡村公路通车最长时间为16s。(5)在每次由绿灯亮变成红灯亮的转换过程中间,要亮5s时间的黄灯作为过渡。(6)用开关代替传感器作为检测车辆是否到来的信号。用红、绿、黄三种颜色的发光二极管作交通灯。要求显示时间,倒计时。 交通灯控制器框图如下:(c表示乡村道路是否有车到来,1表示有,

3、0表示无;set用来控制系统的开始及停止;rst是复位信号,高电平有效,当rst=1时,恢复到初始设置;clk是外加时钟信号;mr、my、mg分别表示主干道的红灯、黄灯和绿灯;cr、cy、cg分别表示乡村道路的红灯、黄灯和绿灯,1表示亮,0表示灭)系统流程图如下:(mgcr:主干道绿灯,乡村道路红灯;mycr:主干道黄灯,乡村道路红灯;mrcg:主干道红灯,乡村道路绿灯;mrcy:主干道红灯,乡村道路黄灯;t0=1表示主干道最短通车时间到,t1=1表示5秒黄灯时间到,t2=1表示乡村道路最长通车时间到。) 本交通灯控制系统设计利用verilog hdl语言进行设计编程,利用cyclone ep

4、1c6q240c8芯片和一些外围器件组成硬件电路,利用quartus ii软件将编写好的程序进行编译、仿真,并将调试完成的程序下载到cyclone ep1c6q240c8芯片上,观测电路板上的红绿信号灯以及数码管显示,看是否按设计要求正常工作。三、设计流程分频模块本系统采用自顶向下的设计,设计一个顶层文件和三个底层文件。各模块关系如下:系统工作模块交通灯控制器八段译码模块设计文件如下:1. 底层模块(1)分频模块: 该模块的功能是将实验箱提供的2mhz的时钟信号,经过分频得到1hz的时钟信号作为系统工作模块的时钟。其中set信号控制系统的暂停和开始。源程序如下:module clk_div(c

5、lk,set,out);input clk,set; output out;reg out;reg23:0 count; /进行计数parameter n=2000000;always (posedge clk)/clk=2mhzbeginif(!set)begincount = 0;out = 0;endelsebeginif(count n/2-1)begincount = count + 1;endelsebeginout = out;/得到1hz的方波count = 0;endendendendmodule为方便仿真把n的值改为2,仿真波形如下图:(2)系统工作模块:该模块中ret信号

6、 为复位信号(ret=1时进行复位),c表示有无车辆(c=1表示乡村公路上有车辆),lampa控制主干道信号灯的亮灭,lampb控制乡村公路信号灯的亮灭,acounth输出主干道信号倒计时的十位数,acountl输出主干道信号倒计时的个位数,bcounth输出乡村公路信号倒计时的十位数,bcountl输出主干道信号倒计时的个位数。当乡村道路上有车时信号灯有四个状态进行循环,图下表所示;主干道乡村公路信号状态信号时间lampa值信号状态信号时间lampb值绿25s1红30s4黄5s2红4红21s4绿16s1红4黄5s2当乡村道路上无车时,如果当前主干道状态为绿灯,倒计时结束之后显示器显示“”,表

7、示畅行无阻(若当前状态为“”,则乡道上出现车时,主干道黄灯5秒开始倒计时);若当前主干道状态为上表中第三个状态就直接跳转到第四个状态,具体代码如下:module traffic(clk,rst,c,lampa,lampb,acounth,acountl,bcounth,bcountl);output3:0acounth,acountl,bcounth,bcountl;output2:0lampa,lampb;input clk,rst,c;reg2:0lampa,lampb;reg7:0numa,numb;reg3:0acounth,acountl,bcounth,bcountl;always

8、(posedge clk or posedge rst)beginif(rst) /进行复位beginlampa=1; /主干道始为绿灯lampb=4; /乡村道路为红灯numa=8b00100101; /主干道计时25秒numb=8b00110000; /乡村道路计时为30秒endelsebegin/主干道始为绿灯 乡村道路为红灯if(lampa=1&lampb=4) begin/乡道无车,主干道绿灯计时结束或正处于畅行无阻状态 if(numa=1&c=0)|(&numa)=1&c=0) beginnuma=8b11111111; /显示” 主干道处于畅行无阻状态numb=8b1111111

9、1; lampa=1;lampb=4; end else begin/乡道有车,主干道绿灯计时结束或正处于畅行无阻状态if(numa=1&c=1)|(&numa)=1&c=1) /begin numa=8b00000101;/黄灯设置为5秒 numb=8b00000101; lampa=2; lampb=4;end/其他情况倒计时else begin if(numa3:0=0&numa7:4) beginnuma3:0=4b1001;numa7:4=numa7:4-1; end else begin numa3:0=numa3:0-1; end if(numb3:0=0&numb7:4) be

10、ginnumb3:0=4b1001;numb7:4=numb7:4-1; end else begin numb3:0=numb3:0-1; end end end end /主干道黄灯,乡村道路红灯if(lampa=2&lampb=4) begin if(numa=1) beginnuma=8b00100001;/设置主干道红灯21秒numb=8b00010110; /设置乡道绿灯16秒lampa=4;lampb=1; end elsebeginnuma3:0=numa3:0-1;numb3:0=numb3:0-1;endend/主干道红灯,乡村道路绿灯 if(lampa=4&lampb=1

11、) beginif(c=0) /跳过乡道绿灯时间beginnuma=8b00000101;numb=8b00000101;lampa=4;lampb=2;endelsebeginif(numb=1&c=1) begin待添加的隐藏文字内容1numa=8b00000101;numb=8b00000101;lampa=4;lampb=2;endelse beginif(numa3:0=0&numa7:4)beginnuma3:0=4b1001;numa7:4=numa7:4-1;endelsebegin numa3:0=numa3:0-1;end if(numb3:0=0&numb7:4)begi

12、nnumb3:0=4b1001;numb7:4=numb7:4-1;endelsebeginnumb3:0=numb3:0-1;endendendend/主干道红灯,乡村道路黄灯if(lampa=4&lampb=2) beginif(numa=1)beginnuma=8b00100101;/numb=8b00110000;lampa=1;lampb=4;endelsebeginnuma3:0=numa3:0-1;numb3:0=numb3:0-1;endendendacounth=numa7:4;acountl=numa3:0;bcounth=numb7:4;bcountl=numb3:0;e

13、nd endmodule仿真波形:乡道一直有车时:乡道无车时:(3)八段译码模块:该模块的功能是将输入的四位信号进行译码,输出到八段共阳极数码管显示出来,用于显示倒计时module decode4_7(decodeout,indec);output7:0 decodeout; input3:0 indec; reg7:0 decodeout;always (indec)begin case(indec) /进行译码 4d0:decodeout=8b00000011; 4d1:decodeout=8b10011111;4d2:decodeout=8b00100101;4d3:decodeout=

14、8b00001101;4d4:decodeout=8b10011001;4d5:decodeout=8b01001001;4d6:decodeout=8b01000001;4d7:decodeout=8b00011111;4d8:decodeout=8b00000001;4d9:decodeout=8b00001001;4d15:decodeout=8b11111101;/显示“”default: decodeout=8bx; endcaseendendmodule仿真波形:2. 顶层文件仿真图形:分析亮灯情况及倒计时情况,与设计要求相符合,仿真结果正确。四、管脚绑定clk绑定到晶振时钟信号,

15、设定管脚号为28;c,rst,set分别绑定到三个乒乓开关,这里设定管脚号分别为137,138,139;lampa2 ,lampa1 ,lampa0分别绑定到红灯,黄灯,绿灯上,这里设定管脚号分别为233,204,221;lampb2 ,lampb1 ,lampb0分别绑定到另一组红灯,黄灯,绿灯上,这里设定管脚号分别为228,202,220;acounth,acountl,bcounth,bcountl分别绑定到四个数码管上。五、编译下载把程序下载到芯片中测试实际结果是否正确。实验结果:1.ret复位之后主干道为绿灯(25),乡村道路为红灯(30)。2.主干道为绿灯,乡村道路为红灯:若此时乡

16、村道路无车,主干道绿灯计时结束之后,倒计时显示“”一直持续到乡道上有车为止才变为主干道为黄灯,乡村道路为红灯;若乡道有车主干道绿灯计时结束之后为主干道为黄灯(5),乡村道路为红灯(5)。3. 主干道为黄灯,乡村道路为红灯:计时结束后主干道为红灯(21),乡道为绿灯(16)。4. 主干道为红灯,乡村道路为绿灯:若此时乡道上有车,乡村道路计时结束后主干道为红灯(5),乡道为黄灯(5);若此时乡道上无车,不等计时结束状态转为主干道为红灯(5),乡村道路为黄灯(5)。5. 主干道为红灯,乡村道路为黄灯:计时结束后主干道为绿灯(25),乡村道路为红灯(30)。分析实验结果可以看到该系统实现了所有设计要求,运行结果正确。六、实验总结该设计用了3个底层模块和一个顶层文件,总体思路比较清晰,实现了交通灯控制器的各种功能及主干道和乡村道路的倒计时显示。在编写程序的过程中,我强烈的意识到模块化设计该编程带来很大的便利。首先你得理清思路,要是下哪些功能,把他们分模块实现,作为底层,最后再把这些底

温馨提示

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

评论

0/150

提交评论