基于FPGA设计——交通灯_第1页
基于FPGA设计——交通灯_第2页
基于FPGA设计——交通灯_第3页
基于FPGA设计——交通灯_第4页
基于FPGA设计——交通灯_第5页
免费预览已结束,剩余16页可下载查看

下载本文档

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

文档简介

1、FPGAM程设计 交通灯控制器通信工程学院电科 0701 班罗超(17)第一部分技术规范功能描述 :实现一个由一条主干道和一条支干道的汇合点形成的十字路口的交通灯控制器,具体功能:(1) 主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。(2) 主干道处于长允许通行状态,而支干道有车来时才允许通行。当主干道允许通行亮绿灯时,支干道亮红灯。而支干道允许通行亮绿灯时,主干道亮红灯。(3) 当主干道、支干道均有车时,两者交替允许通行,主干道每次通行 45 秒, 支干道每次通行25 秒, 在每次由绿灯向红灯转换的过程中,要亮 5 秒的黄灯作为过渡,并进行减计时显示。每个周期结束时都要进行支干道是否

2、有车的检测,若有车则进行下一个周期,若没有,则主干道亮绿灯,支干道亮红灯,直到检测到支干道有车。系统总体框图:根据设计要求和系统所具有的功能,并参考相关的文献资料,经行方案设计,可以画出如下图所示的交通信号灯控制器的系统框图。clkseg数码管位码数码管段码selI/O管脚的描述名称方向电平位宽功能clkInput1系统时钟信号(10KHzcarsignalInput1检测支路是否有车rstInput1复位信号ledOutput6LED丁selOutput7数码管段码segOutput4数码管位码表一:系统总体I/O管脚的描述注:其中系统时钟的频率选为10KHz复位采取同步复位方式,且低有效。

3、支干道检测到有车时,carsignal=1 ; 否则, carsignal=0 。方案核心 : 在交通灯控制器的设计中,交通灯控制及计时模块是本设计的关键模块。第二部分总体设计方案交通灯系统详细框图:在系统总体框图的基础上进一步详细设计,得到如下系统详细框图。1.时钟分频模块译码单元数码管显示系统的动态扫描需要10KHz的脉冲,而系统时钟计时模块需要1HZ的脉冲。分频模块主要为系统提供所需的时钟计时脉冲。该模块将10KHz勺脉冲信号进彳f分频,产生1S的方波(占空比为50%,作 为系统时钟计时信号。clkrst时钟分频模块clkout图四:时钟分频模块框图I/O管脚描述如下:名称方向电平位宽功

4、能clkinput1系统时钟(10KHZrstinput1复位信号clk_outoutput1分频后时钟估号(1HZI表二:时钟分频模块I/O端口描述注:系统时钟的频率为10KHz分频后的日t钟信号为1HZ (占空比为 50%。复位信号为同步复位,且低有效。2 .交通灯控制及计时模块控制模块JTDKZH根据主干道、支干道输入信号以及时钟信号CLK发出主、支干道指示灯的控制信号,同时向各个定时单元、显示控制 单元发出使能控制信号产生系统的状态机,控制其他部分协调工作。计时模块分别实现45s,25s,5s的定时,根据主、支干道输入信号和 时钟信号以及交通灯控制器发出的使能信号按要求进行定时用来设

5、定主干道和支干道计时器的初值,并为扫描显示译码模块提供倒计时 时间。控制模块采用状态机进行设计,可以定义出 5种状态,分别为 S0:主干道绿灯,支干道红灯且没有车辆行驶;S1:主干道绿灯,支干 道红灯且支干道有车辆驶入;S2:主干道黄灯,支干道红灯;S3:主干 道红灯,支干道绿灯;S4:主干道红灯,支干道黄灯。利用 CASES句 定义状态的转换方式及时间的变换方式,达到主干道绿灯亮 45秒,支干道绿灯亮25秒,黄灯亮5秒的设计要求。clkoutcarsignalrstcountHI交通灯控制模块countLIledcountH2 countH2图五:交通灯控制及计数模块I/O管脚描述如下:名称

6、方向电平位宽功能clk_outInput1分频后时钟估号(1HZIrstInput1复位信号(同步复位)carsignalInput1检测信号(低有效)count_H_1Output4主干道时间高位译码count_L_1Output4主干道时间低位译码count_H_2Output4支干道时间高位译码count_L_2Output4支干道时间低位译码ledOutput6LED丁表三:交通灯控制模块I/O端口描述系统的状态图如下所示carsignalS2:主干道红灯,支干道绿灯S3:主干道红灯,支干道黄灯3 .扫描显示译码模块扫描显示译码模块可以根据控制信号,驱动交通信号灯以及倒计时数 码管的显

7、示,其中数码管的显示采用动态扫描显示。图六:扫描显示译码模块框图该模块的I/O管脚描述如下:名称方向电平位宽功能clkInput1系统时钟信号(10KHzrstInput1复位信号(低有效)count_H_1Input4主干道时间高位译码count_L_1Input4主干道时间低位译码count_H_2Input4支干道时间高位译码count_L_2Input4支干道时间低位译码selOutput7数码管段码segOutput3数码管位码表四:扫描显示译码模块I/O端口描述仿真结果Modelsim 前仿真Quartus2后仿真源代码第四部分分频模块:module fenpinqi(clk,rs

8、t,clk_odd);input clk,rst;output clk_odd;reg clk_odd;reg13:0 count;parameter N = 10;always (posedge clk)if(! rst)begincount <= 1'b0;clk_odd <= 1'b0;endelseif ( count < N/2-1)begincount <= count + 1'b1;endelsebegincount <= 1'b0;clk_odd <= clk_odd;endendmodule控制及计时模块:m

9、odulecontrol(led,car,rst,clk,count_H_1,count_L_1,count_H_2,count_L_2);output3:0count_H_1,count_L_1,count_H_2,count_L_2;output 5:0led;input clk,rst,car;reg 5:0 led;reg3:0count_H_1,count_L_1,count_H_2,count_L_2;reg 1:0state;parameter S0=2'b00,S1=2'b01,S2=2'b10,S3=2'b11;always(posedge c

10、lk or negedge rst)if(!rst)beginled=6'b010100;state=S0;count_H_1=4'b0000;count_L_1=4'b0000;count_H_2=4'b0000;count_L_2=4'b0000;endelsebegincase(state)50:beginBeginif(!car)beginled=6'b010100;/count_H_1=4'b0100;count_L_1=4'b0101;/count_H_1=4'b0111;count_L_1=4'b01

11、11;beginif(count_H_1 = 4'b0111)begincount_H_1=4'b0100;count_L_1=4'b0101;count_H_2=4'b0101;count_L_2=4'b0000;endelseif(count_L_1=0)if(count_H_1=0)beginled=6'b001100;count_H_1=4'b0000;count_L_1=4'b0100;state<=S1;if(count_L_2=0)begincount_H_2<=count_H_2-1'b1;co

12、unt_L_2<=4'b1001;endelsebegincount_L_2<=count_L_2-1'b1;endendelsebegincount_H_1<=count_H_1-1'b1;count_L_1<=4'b1001;if(count_L_2=0)begincount_H_2<=count_H_2-1'b1;count_L_2<=4'b1001;endelsebegincount_L_2<=count_L_2-1'b1;endendelsebegincount_L_1<=coun

13、t_L_1-1'b1;if(count_L_2=0)begincount_H_2<=count_H_2-1'b1;count_L_2<=4'b1001;endelsebegincount_L_2<=count_L_2-1'b1;endendendend/* beginif(!car)begincount_H_2=4'b0101;count_L_2=4'b0000; endelseif(count_L_2=0)begincount_H_2<=count_H_2-1'b1;count_L_2<=4'b10

14、01;count_L_2<=count_L_2-1'b1;endend */end/* if(count_L_1=0)beginif(count_H_1=0)beginled=6'b001100;count_H_1=4'b0000;count_L_1=4'b0100;state<=S1;endelsebegincount_H_1<=count_H_1-1'b1;count_L_1<=4'b1001;endendelsebegincount_L_1<=count_L_1-1'b1;endif(!car)begi

15、n count_H_2=4'b0101;count_L_2=4'b0000;endelse if(count_L_2=0)begincount_H_2<=count_H_2-1'b1;count_L_2<=4'b1001;endelsebegincount_L_2<=count_L_2-1'b1;end51:beginif(count_L_1=0)beginif(count_H_1=0)beginled=6'b100010;count_H_1=4'b0010;count_L_1=4'b1001;count_H_2

16、=4'b0010;count_L_2=4'b0100;state<=S2;endelsebegincount_H_1<=count_H_1-1'b1;count_H_2<=count_H_2-1'b1;endendelsebegincount_L_1<=count_L_1-1'b1;count_L_2<=count_L_2-1'b1;endend52:beginif(count_L_2=0)beginif(count_H_2=0)beginled=6'b100001;count_H_2=4'b0000

17、;count_L_2=4'b0100;state<=S3;elsebegincount_H_2<=count_H_2-1'b1;count_L_2=4'b1001;endendelse begincount_L_2<=count_L_2-1'b1;endif(count_L_1=0)beginbegincount_H_1<=count_H_1-1'b1;count_L_1=4'b1001;endendelsebegincount_L_1<=count_L_1-1'b1;endend53:beginif(cou

18、nt_L_2=0)beginif(count_H_2=0)beginled=6'b010100;count_H_1=4'b0100;count_L_1=4'b1001;count_H_2=4'b0100;count_L_2=4'b0100;state<=S0;endelsebegincount_H_1<=count_H_1-1'b1;count_H_2<=count_H_2-1'b1;endendelsebegincount_L_1<=count_L_1-1'b1;count_L_2<=count_L

19、_2-1'b1;endendcaseendendmodule扫描译码显示模块:modulesaomiao(rst,clk,count_H_1,count_L_1,count_H_2,count_L_2,sel,seg);input rst,clk;input3:0count_H_1,count_L_1,count_H_2,count_L_2;output 6:0sel;output 3:0seg;reg 6:0sel;reg 3:0seg;reg 15:0 count;reg 1:0 cnt;reg 3:0 data;reg clk_odd;always(posedge clk or

20、negedge rst)beginif(!rst)begincount<=0;clk_odd<=0;endelse if(count=16'd2)beginclk_odd<=clk_odd;count<=0;endelsecount<=count+1'b1;endalways (negedge rst or posedge clk_odd)/1msif (!rst)begincnt<=2'b00;endelse cnt<=cnt+1'b1;always(negedge rst or posedge clk)if(!rst

21、) begin/ sel = 7'b0000000 ;seg = 4'b1111 ;endelse begincase (cnt)2'b00: beginseg =4'b1110 ;data=count_H_1;end2'b01: begiseg = 4'b1101 ;/data =count_L_1;end2'b10:begin /seg= 4'b1011 ;data=count_H_2;end2'b11: begin/seg= 4'b0111 ;data=count_L_2;enddefault :begin/

22、 sel = 8'b0000000 ;seg = 4'b0000 ;endendcaseendalways (data or seg)begincase(data)4'b0000:sel=7'b1111110;4'b0001:sel=7'b0110000;4'b0010:sel=7'b1101101;4'b0011:sel=7'b1111001;4'b0100:sel=7'b0110011;4'b0101:sel=7'b1011011;4'b0110:sel=7'b1

23、011111;4'b0111:sel=7'b1110000;4'b1000:sel=7'b1111111;4'b1001:sel=7'b1111011;default:sel=7'b1111110;endcaseendendmodule顶层模块:modulejiaotongdeng(clk,rst,car,led,sel,seg,count_H_1,count_L_1,count_H_2,count_L_2,cl k_odd);input clk,rst,car;output 3:0 seg;output 6:0 sel;output 5:0 led;output 3:0count_H_1,count_L_1,count_H_2,count_L_2;output clk_odd;wire 3:0count_H_1,count_L_1,count_H_2,count_L_2;wire clk_odd;saomiao ee(rst,clk_odd,count_H_1,count_L_1,count_H_2,count_L_2,sel,seg);control rr(led,car,rst,clk_odd,count_H_1,count_L_1,count_H_2,count_L_2);fenpinqi tt(clk,rst,cl

温馨提示

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

评论

0/150

提交评论