中国石油大学华东交通灯控制电路_第1页
中国石油大学华东交通灯控制电路_第2页
中国石油大学华东交通灯控制电路_第3页
中国石油大学华东交通灯控制电路_第4页
中国石油大学华东交通灯控制电路_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、20132014学年第三学期数字电子技术课程设计任务书(适用专业:电气12级、自动化12级、勘查(卓越)12级) 专业班级 姓 名 学 号 开课系室 设计日期 数字电子技术课程设计题目:交通灯控制电路设计一、设计任务及要求1、设计任务及原理:交通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,车辆如果只要东西和南北方向通行就很简单,而如果车子可以左右转弯的通行就比较复杂。要完成本实验,首先必须了解交通路灯的燃灭规律。本实验需要用到实验箱上交通灯模块中的发光二极管,即红、黄、绿各四个。依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。其交通灯的燃灭

2、规律为:东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯闪烁,红灯亮(表示左转弯),再延时一段时间后,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯闪烁,红灯亮(表示左转弯),再延时一段时间后,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。在实验中使用4个七段码管中的任意两个数码管显示时间。东西路和南北路的通车时间均设定为20s(其中,绿灯亮时间为10s,绿灯闪烁时间为5s,黄灯闪烁时间为5s)。数码管的时间总是显示为20、19、18、172、1、0、20、19、18。在显示时

3、间小于等于5秒的时候,通车方向的黄灯闪烁。在东西向绿灯期间,点阵显示自己的姓名;在南北向绿灯期间,点阵显示自己的学号后3位。2、扩展要求:a.利用一个开关将0-20s扩展为0-30s(30-10s之间绿灯亮,其他与基本要求相同);b.增加交警控制模块:用一个开关切换自动模式(上述情况属于自动模式)和人工模式(交警控制模式):用4个开关分别实现东西向通行(东西向绿灯亮,南北向红灯亮,没有时间限制),实现南北向通行(南北向绿灯亮,东西向红灯亮,没有时间限制),实现东西向左转弯(东西向绿灯闪烁,东西向红灯亮,南北向红灯亮,没有时间限制),实现南北向通行(南北向绿灯闪烁,南北向红灯亮,东西向红灯亮,没

4、有时间限制)。3、具体要求:本实验要完成任务就是设计一个简单的交通灯控制器,交通灯显示用实验箱的交通灯模块和七段码管中的任意两个来显示。系统时钟选择时钟模块的50MHz时钟,黄灯和绿灯闪烁时钟要求为2Hz,七段码管的时间显示为1Hz脉冲,即每1s中递减一次。在东西向绿灯期间,点阵显示自己的姓名;在南北向绿灯期间,点阵显示自己的学号后3位。显示方式:1秒显示一个汉字或者一个数字(汉字和数字均静止不动,即不循环),然后全暗1秒,然后再显示一个汉字或者一个数字,以此类推。二、输入输出资源说明:1、外部输入脉冲信号时钟源CP(50MHz),经适当分频后供计数器使用。2、输出2组显示译码信号(每组7个输

5、出端),分别接到外部的两个七段数码管M1、M2上,M1和M2分别显示倒计时的十位和个位。3、输出6个高低电平信号,分别接到外部的6个指示纵向、横向的LED灯。(输出高电平时,对应的LED灯亮)其具体框图如下:1Hz纵向指示灯LED1控制器计数器(倒计时;通车时间倒计时)七段LED数码管显示(2个)50MHz纵向指示灯LED3横停指示灯LED6纵向指示灯LED2横向指示灯LED5横向指示灯LED4CLK显示姓名或者学号图1 交通灯控制电路结构框图根据如上说明,本设计的主要任务和设计要求是:1、按照现代数字系统的Top-Down模块化设计方法,提出交通灯控制电路设计系统的整体设计方案,并进行正确的

6、功能划分,分别提出并实现控制器、计数器、输出译码、点阵显示等模块化子系统的设计方案。2、在Quartus的EDA设计环境中,完成系统的顶层设计、各子系统的模块化设计。分别完成各个基于Verilog语言实现的子模块(包括控制器电路、计数器电路、输出译码电路、点阵显示电路)的逻辑功能仿真。最后对顶层设计进行功能仿真。 3、在2步的基础上,用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。观察实验结果是否与自己的编程思想一致。三、电路子模块的设计与仿真 根据设计要求及原理,我所设计的交通灯控制电路主要包含四个子模块,分别是:分频器、倒计时计数器、点阵显示器、控制器。1、分频器1)Veril

7、og 源文件module fenpinqi(clk,clk1,clk2,clk1000);input clk;output clk1,clk2,clk1000;reg 31:0cnt1,cnt2,cnt3;reg clk1,clk2,clk1000;initialbegin clk1=0; clk2=0; clk1000=0; cnt1=0; cnt2=0; cnt3=0;endalways(posedge clk) begin if(cnt1=24999999)beginclk1<=clk1;cnt1<=0;endelse begin cnt1<=cnt1+1; endif

8、(cnt2=12499999)beginclk2<=clk2;cnt2<=0;endelse begin cnt2<=cnt2+1; endif(cnt3=24999)beginclk1000<=clk1000;cnt3<=0;endelse begin cnt3<=cnt3+1; endendendmodule2)仿真文件3)功能仿真波形1hz和2hz的频率过低,无法仿真。2、倒计时计数器1)Verilog 源文件module daojishi(clk1,k,seq1,seq2,ji,out);/ji记录循环次数,out输出二进制秒数input clk1,

9、k;output6:0 seq1,seq2;output ji;output4:0out;reg6:0 seq1,seq2;reg ji;reg4:0out;parameter Num1=20;parameter Num2=30;integer cnt;initial cnt=0;integer cnt1;initial cnt1=0;always(posedge clk1)begin if(k=0) begin if(cnt=0) begin cnt<=20; cnt1=cnt1+1; end else begin cnt=cnt-1; end end else if(cnt=0) b

10、egin cnt<=30; cnt1=cnt1+1; end else begincnt=cnt-1; endendalways(cnt)begincase(cnt%10)0:seq1=7'b0000001;1:seq1=7'b1001111;2:seq1=7'b0010010;3:seq1=7'b0000110;4:seq1=7'b1001100;5:seq1=7'b0100100;6:seq1=7'b0100000;7:seq1=7'b0001111;8:seq1=7'b0000000;9:seq1=7'

11、b0000100;endcaseendalways(cnt)begincase(cnt-(cnt%10)/10)0:seq2=7'b0000001;1:seq2=7'b1001111;2:seq2=7'b0010010;3:seq2=7'b0000110;4:seq2=7'b1001100;5:seq2=7'b0100100;6:seq2=7'b0100000;7:seq2=7'b0001111;8:seq2=7'b0000000;9:seq2=7'b0000100;endcaseendalways(cnt)beg

12、inout=cnt;/shuendalways(cnt1)begincase(cnt1%2)0:ji=0;/oushu1:ji=1;/jishuendcaseendendmodule2)仿真文件3)功能仿真波形3、点阵显示器1)Verilog源文件input clk1000,we,ns,k;input4:0shu;output 15:0 r,c;reg15:0 r,c;integer cnt1;initial cnt1=0;always(posedge clk1000)begincnt1=cnt1+1;if(k=0)beginif(we=0)beginif(shu=20|shu=14)/史be

13、ginif (cnt1%16=0)beginc=16'b0000000100000000; r=16'b0111111111111111;end else if(cnt1%16=1) beginc=16'b0000000100000000;r=16'b1011111111111111; endelse if(cnt1%16=2) beginc=16'b0011111111111000;r=16'b1101111111111111;endelse if(cnt1%16=3)beginc=16'b0010000100001000;r=16&#

14、39;b1110111111111111;endelse if(cnt1%16=4)beginc=16'b0010000100001000;r=16'b1111011111111111;endelse if(cnt1%16=5)beginc=16'b0010000100001000;r=16'b1111101111111111;end else if(cnt1%16=6)beginc=16'b0010000100001000;r=16'b1111110111111111;end else if(cnt1%16=7)beginc=16'b0

15、011111111111000;r=16'b1111111011111111;endelse if(cnt1%16=8)beginc=16'b0000000100000000;r=16'b1111111101111111;endelse if(cnt1%16=9)beginc=16'b0001000100000000;r=16'b1111111110111111;end else if(cnt1%16=10)beginc=16'b0000101000000000;r=16'b1111111111011111;end else if(cnt

16、1%16=11)beginc=16'b0000011000000000;r=16'b1111111111101111;end else if(cnt1%16=12)beginc=16'b0000100110000000;r=16'b1111111111110111;endelse if(cnt1%16=13)beginc=16'b0001000001100000;r=16'b1111111111111011;endelse if(cnt1%16=14)beginc=16'b0010000000011000;r=16'b111111

17、1111111101;endelsebeginc=16'b1100000000000111;r=16'b1111111111111110; end endelse if(shu=18|shu=12)/育beginif (cnt1%16=0) beginc=16'b0000000100000000;r=16'b011111111111111111; endelse if(cnt1%16=1)beginc=16'b0000000010000000;r=16'b1011111111111111;endelse if(cnt1%16=2)beginc=1

18、6'b0111111111111111;r=16'b1101111111111111;endelse if(cnt1%16=3)begin module xianshi(shu,clk1000,we,ns,k,r,c);c=16'b0000010000000000;r=16'b1110111111111111;endelse if(cnt1%16=4)beginc=16'b0000100000001000;r=16'b1111011111111111;endelse if(cnt1%16=5)beginc=16'b000111111111

19、1100;r=16'b1111101111111111;endelse if(cnt1%16=6)beginc=16'b0000000000000100;r=16'b1111110111111111;endelse if(cnt1%16=7)beginc=16'b0000111111111000;r=16'b1111111011111111;endelse if(cnt1%16=8)beginc=16'b0000100000001000;r=16'b1111111101111111;endelse if(cnt1%16=9)beginc=

20、16'b0000111111111000;r=16'b1111111110111111;endelse if(cnt1%16=10)beginc=16'b0000100000001000;r=16'b1111111111011111;endelse if(cnt1%16=11)beginc=16'b0000111111111000;r=16'b1111111111101111;endelse if(cnt1%16=12)beginc=16'b0000100000001000;r=16'b1111111111110111;endel

21、se if(cnt1%16=13)beginc=16'b0000100000001000;r=16'b1111111111111011;endelse if(cnt1%16=14)beginc=16'b0000100000101000;r=16'b1111111111111101;endelse beginc=16'b0000100000010000;r=16'b1111111111111110;endendelse if(shu=16)/铭beginif (cnt1%16=0)beginc=16'b0000100000100000;r=

22、16'b0111111111111111; endelse if(cnt1%16=1)beginc=16'b0000100000100000;r=16'b1011111111111111;endelse if(cnt1%16=2)beginc=16'b0001111001111110;r=16'b1101111111111111;endelse if(cnt1%16=3)beginc=16'b0001000010000010;r=16'b1110111111111111;endelse if(cnt1%16=4)beginc=16'

23、;b0010000101000100;r=16'b1111011111111111;endelse if(cnt1%16=5)beginc=16'b0101111000101000;r=16'b1111101111111111;endelse if(cnt1%16=6)beginc=16'b0000100000010000;r=16'b1111110111111111;endelse if(cnt1%16=7)beginc=16'b0000100000100000;r=16'b1111111011111111;endelse if(cnt

24、1%16=8)beginc=16'b0111111001000000;r=16'b1111111101111111;endelse if(cnt1%16=9)beginc=16'b0000100011111110;r=16'b1111111110111111;endelse if(cnt1%16=10)beginc=16'b0000100101000010;r=16'b1111111111011111;endelse if(cnt1%16=11)beginc=16'b0000100001000010;r=16'b111111111

25、1101111;endelse if(cnt1%16=12)beginc=16'b0000101001000010;r=16'b1111111111110111;endelse if(cnt1%16=13)beginc=16'b0000110001000010;r=16'b1111111111111011;endelse if(cnt1%16=14)beginc=16'b0000100001111110;r=16'b1111111111111101;endelsebeginc=16'b0000000001000010;r=16'b

26、1111111111111110;end end else/暗 beginc=16'b0000000000000000;r=16'b1111111111111111;endendendif(ns=1)beginif(shu=20|shu=14)/4beginif (cnt1%16=0)beginc=16'b0000000001100000;r=16'b0111111111111111;endelseif(cnt1%16=1)beginc=16'b0000000011100000;r=16'b1011111111111111;endelse if(

27、cnt1%16=2)beginc=16'b0000000110110000;r=16'b1101111111111111;endelse if(cnt1%16=3)beginc=16'b0000001100110000;r=16'b1110111111111111;endelse if(cnt1%16=4)beginc=16'b0000011000110000;r=16'b1111011111111111;endelse if(cnt1%16=5)beginc=16'b0000011000110000;r=16'b11111011

28、11111111;endelse if(cnt1%16=6)beginc=16'b0000110000110000;r=16'b1111110111111111;endelse if(cnt1%16=7)beginc=16'b0001100000110000;r=16'b1111111011111111;endelse if(cnt1%16=8)beginc=16'b0011100000110000;r=16'b1111111101111111;endelse if(cnt1%16=9)beginc=16'b001100000011000

29、0;r=16'b1111111110111111;endelse if(cnt1%16=10)beginc=16'b0110000000110000;r=16'b1111111111011111;endelse if(cnt1%16=11)beginc=16'b0111111111111110;r=16'b1111111111101111;endelse if(cnt1%16=12)beginc=16'b0111111111111110;r=16'b1111111111110111;endelseif(cnt1%16=13)beginc=

30、16'b0000000000110000;r=16'b1111111111111011;endelse if(cnt1%16=14)beginc=16'b0000000000110000;r=16'b1111111111111101;endelsebeginc=16'b0000000011111000;r=16'b1111111111111110;endendelse if(shu=18|shu=12)/'0beginif (cnt1%16=0)beginc=16'b0000001111100000;r=16'b01111

31、11111111111;endelse if(cnt1%16=1)beginc=16'b0000011111110000;r=16'b1011111111111111;endelse if(cnt1%16=2)beginc=16'b0000110000011000;r=16'b1101111111111111;endelse if(cnt1%16=3)beginc=16'b0001100000001100;r=16'b1110111111111111;endelse if(cnt1%16=4)beginc=16'b000110000000

32、1100;r=16'b1111011111111111;endelse if(cnt1%16=5)beginc=16'b0001100000001100;r=16'b1111101111111111;endelse if(cnt1%16=6)beginc=16'b0001100000001100;r=16'b1111110111111111;endelse if(cnt1%16=7)beginc=16'b0001100000001100;r=16'b1111111011111111;endelse if(cnt1%16=8)beginc=

33、16'b0001100000001100;r=16'b1111111101111111;endelse if(cnt1%16=9)beginc=16'b0001100000001100;r=16'b1111111110111111;endelse if(cnt1%16=10)beginc=16'b0001100000001100;r=16'b1111111111011111;endelse if(cnt1%16=11)beginc=16'b0001100000001100;r=16'b1111111111101111;endels

34、e if(cnt1%16=12)beginc=16'b0001100000001100;r=16'b1111111111110111;endelse if(cnt1%16=13)beginc=16'b0000110000011000;r=16'b1111111111111011;endelse if(cnt1%16=14)beginc=16'b0000011111110000;r=16'b1111111111111101;endelsebeginc=16'b0000001111100000;r=16'b11111111111111

35、10;endendelse if(shu=16)/4beginif (cnt1%16=0)beginc=16'b0000000001100000;r=16'b0111111111111111;endelseif(cnt1%16=1)beginc=16'b0000000011100000;r=16'b1011111111111111;endelse if(cnt1%16=2)beginc=16'b0000000110110000;r=16'b1101111111111111;endelse if(cnt1%16=3)beginc=16'b0

36、000001100110000;r=16'b1110111111111111;endelse if(cnt1%16=4)beginc=16'b0000011000110000;r=16'b1111011111111111;endelse if(cnt1%16=5)beginc=16'b0000011000110000;r=16'b1111101111111111;endelse if(cnt1%16=6)beginc=16'b0000110000110000;r=16'b1111110111111111;endelse if(cnt1%1

37、6=7)beginc=16'b0001100000110000;r=16'b1111111011111111;endelse if(cnt1%16=8)beginc=16'b0011100000110000;r=16'b1111111101111111;endelse if(cnt1%16=9)beginc=16'b0011000000110000;r=16'b1111111110111111;endelse if(cnt1%16=10)beginc=16'b0110000000110000;r=16'b1111111111011

38、111;endelse if(cnt1%16=11)beginc=16'b0111111111111110;r=16'b1111111111101111;endelse if(cnt1%16=12)beginc=16'b0111111111111110;r=16'b1111111111110111;endelseif(cnt1%16=13)beginc=16'b0000000000110000;r=16'b1111111111111011;endelse if(cnt1%16=14)beginc=16'b0000000000110000;

39、r=16'b1111111111111101;endelsebeginc=16'b0000000011111000;r=16'b1111111111111110;endendelse/暗beginc=16'b000000000000000;r=16'b1111111111111111;endendendendmodule2)仿真文件3)功能仿真波形由于仿真波形较长,只截取了其中一部分,可以看出这部分显示的是我的学号404中的44、控制器1)Verilog源文件module kongzhiqi(clk,k,k1,k2,k3,k4,k5,shu,y1,y2,

40、r1,r2,g1,g2,gs1,gs2);input clk,k,k1,k2,k3,k4,k5;input4:0shu;output y1,y2,r1,r2,g1,g2,gs1,gs2;reg y1,y2,r1,r2,g1,g2,gs1,gs2;nitial beginr1<=1;r2<=1;y1<=0;y2<=0;g1<=0;g2<=0;gs1<=0;gs2<=0;endalways(posedge clk)beginif(k1=0)/k1=0是自动控制模式beginif(k=0)/东西向begin if(shu>10)/东西方向通车beging1<=1;g2<=0;r1<=0;r2<=1;y1<=0;y2<=0;gs1<=0;gs2<=0;endelse if(shu<=10

温馨提示

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

评论

0/150

提交评论