《基于FPGA设计——交通灯(完整资料).doc》由会员分享,可在线阅读,更多相关《基于FPGA设计——交通灯(完整资料).doc(81页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于FPGA设计交通灯(完整资料)(可以直接使用,可编辑 优秀版资料,欢迎下载)FPGA课程设计交通灯控制器通信工程学院电科01班罗超(1)第一部分 技术规范1。1功能描述:实现一个由一条主干道和一条支干道的汇合点形成的十字路口的交通灯控制器,具体功能:(1) 主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。(2) 主干道处于长允许通行状态,而支干道有车来时才允许通行。当主干道允许通行亮绿灯时,支干道亮红灯.而支干道允许通行亮绿灯时,主干道亮红灯。(3) 当主干道、支干道均有车时,两者交替允许通行,主干道每次通行 秒,支干道每次通行25 秒,在每次由绿灯向红灯转换的过程中,要亮 秒的黄灯
2、作为过渡,并进行减计时显示。每个周期结束时都要进行支干道是否有车的检测,若有车则进行下一个周期,若没有,则主干道亮绿灯,支干道亮红灯,直到检测到支干道有车。1。2系统总体框图:根据设计要求和系统所具有的功能,并参考相关的文献资料,经行方案设计,可以画出如下图所示的交通信号灯控制器的系统框图。时钟分频模块交通灯控制模块 扫描显示译码模块clkrstcarsignal计时模块数码管段码sel数码管位码segLED灯I/O管脚的描述名称方向电平位宽功能clnut。31系统时钟信号(1KHZ)carsignalnpt3。3V1检测支路是否有车rstIut3V1复位信号leutput3。LED灯slOt
3、put3。3V数码管段码sOutput。3V4数码管位码 表一:系统总体/O管脚的描述注:其中系统时钟的频率选为10KHZ,复位采取同步复位方式,且低有效.支干道检测到有车时,arial=1;否则,cariga=0。方案核心:在交通灯控制器的设计中,交通灯控制及计时模块是本设计的关键模块。第二部分总体设计方案交通灯2.系统详细框图:在系统总体框图的基础上进一步详细设计,得到如下系统详细框图.rstLED灯carsignalclk显示控制单元定时模块显示单元交通灯控制模块时钟分频模块译码单元数码管显示 图三:系统详细框图注:系统总体O管脚描述请查看技术规范。2具体模块设计时钟分频模块系统的动态扫
4、描需要0HZ的脉冲,而系统时钟计时模块需要HZ的脉冲.分频模块主要为系统提供所需的时钟计时脉冲。该模块将10KH的脉冲信号进行分频,产生的方波(占空比为50%),作为系统时钟计时信号。clk时钟分频模块rstclk_out 图四:时钟分频模块框图/O管脚描述如下:名称方向电平位宽功能clkiput3V1系统时钟(10KH)rtnput3V复位信号cl_ooutut3。31分频后时钟信号(1Z) 表二:时钟分频模块I/O端口描述注:系统时钟的频率为10KHZ,分频后的时钟信号为1H(占空比为0%).复位信号为同步复位,且低有效.2。交通灯控制及计时模块控制模块JTH:根据主干道、支干道输入信号以
5、及时钟信号CLK,发出主、支干道指示灯的控制信号,同时向各个定时单元、显示控制单元发出使能控制信号产生系统的状态机,控制其他部分协调工作。计时模块分别实现45s,25s,5的定时,根据主、支干道输入信号和时钟信号以及交通灯控制器发出的使能信号按要求进行定时用来设定主干道和支干道计时器的初值,并为扫描显示译码模块提供倒计时时间.控制模块采用状态机进行设计,可以定义出种状态,分别为S0:主干道绿灯,支干道红灯且没有车辆行驶;S1:主干道绿灯,支干道红灯且支干道有车辆驶入;S:主干道黄灯,支干道红灯;S:主干道红灯,支干道绿灯;S4:主干道红灯,支干道黄灯。利用AE语句定义状态的转换方式及时间的变换
6、方式,达到主干道绿灯亮5秒,支干道绿灯亮25秒,黄灯亮5秒的设计要求.clk_outcarsignalrstled交通灯控制模块count_H_1count_L_1count_H_2count_H_2图五:交通灯控制及计数模块I/O管脚描述如下:名称方向电平位宽功能l_outInut3。3V分频后时钟信号(1HZ)stnp3.3V1复位信号(同步复位)arsigalIpt33V1检测信号(低有效)conH_1utpu.3V4主干道时间高位译码counLOtut3.V4主干道时间低位译码out_H_2utpt3。3V支干道时间高位译码coun_uut3.3支干道时间低位译码ledOpu3。3V6
7、LD灯 表三:交通灯控制模块I/O端口描述系统的状态图如下所示carsignal =0 S0 S3carsignal =1 S1 S2S0:主干道绿灯,支干道红灯S:主干道黄灯,支干道红灯2:主干道红灯,支干道绿灯S3:主干道红灯,支干道黄灯3。扫描显示译码模块扫描显示译码模块可以根据控制信号,驱动交通信号灯以及倒计时数码管的显示,其中数码管的显示采用动态扫描显示。rstclksegsel扫描显示译码模块count_H_1count_L_1count_H_2count_H_2图六:扫描显示译码模块框图该模块的O管脚描述如下:名称方向电平位宽功能lkInpt。3V系统时钟信号(KHZ)rsnu3
8、3V1复位信号(低有效)count1It3。34主干道时间高位译码t_1nt33V4主干道时间低位译码cunt_H_2Input3.V4支干道时间高位译码co_LInput3.3V4支干道时间低位译码selOutpu3V7数码管段码egOuput3.3V3数码管位码表四:扫描显示译码模块I/O端口描述第三部分仿真结果 Mdsm 前仿真uaru2后仿真第四部分 源代码分频模块:moulefenpiqi(clk,rst,cl_od);nput cl,rst;otpuclkodd;reg clk_odd;rg13:0cnt;paramer N 10;lys (oegeclk)if(! t)bginc
9、ount = 1b;kod = 1b0;endelse i ( count N/2-1)bgn on = coun 1b1; endelsebegin cut= 1b0;ckodd = ck_dd; enendmoule控制及计时模块:odulecontrl(led,cr,rs,clk,coun_H_1,ont_L_1,ounH_2,cnt_L_2);outut3:countH_1,count_L_1,oun_H_2,count_L_2;outpu 5:0ed;inpu clk,s,car;r 5: led;reg3:0cont_H_,countL_,cunt_2,on_L2;re 1:0te
10、;aamerS0=2b0, S=01, 2=2b10, 3=b1; alway(posedgclkor egdge t)i(!rs)bgined6b010100;ste=0;cou_H_1=b0;cout_L_1=4b000; count_H_24b000;count_=000; end else bginca(sta)S0:einBegif(!car)begin led=6b01000; /ont_H_1=4b00;cunt_L14b0101;/??? ount_1=4b011;cunt_=4b; end else gi if(ontH_1 = 4b011) bn oun_4b1;count
11、_L140101; cont_4101;unt_L_24b000; end ee f(count_L_=0) i(cot_H_1=0) ein =6b00100; co_H_=b00;count_L_1=010; state=S1; i(cotL_2=0) gin outH_2=cnt_211; count_=4b1001; end elseg countL_=count_L_2b1;d end els egi co_H_1=countH_1-1b; cont_L_=4b1001; f(ct_L2=0) en coun_H_2=ct_H_1b1; countL2=4b1001; en lseb
12、ein countL2countL_21b1; end end elebin oun_L=countL_-; if(count_L_2=) begin count_H2=cuntH21b; count_L2=4b1001; end elsbegi counL_2=count_2-1; end end endend / begin (!a)bgincoutH_2b0101;count_L_=4b000; end elif(cun_L_2=) begin cu_H_=count_H_21b; cnt_L_24b100;end esebgin coun_L=count_L-1b; e end /d
13、/*f(cunt_L_1=0) bi f(coun10) gi ed=6b10; count_H_1=b0000;cout_1=4b0100; state=S1; endls begincot_H_1ont_H_11b1;count_L_=101; ndnd elsebein cont_1=count_11b1;endif(!car)bein count_2010;cont_=4b0000; endele if(ou_2=0)bgincunt_H2cn_H2-1b;count_L_2=b00;ed ese bein cout_L_2=cunL_1b; en 1: bginf(cunt_L_1=
14、0)bgin if(cunt_=0) bein led=b0010; con_1=b010;cont_L1=01; ount_2=40010;cunt_L_2=4b010; stat=S2; endleben count_H_1=con_1b; cnt_H2coun_H21b1; endendelegi cnt_L_1=count-11; countL_=count_L_2-1b;enden S2:bein if(cu_L2=0)eini(outH_=) begn led=6b1001; count_H2=40000;ount_=4b010; state=; elsebegin out_H_2
15、=cont_2-11; countL_2=4b01; end nd ls bgicont_L2=count_L21b;endif(cunt_L_1=0) begin bei untH1cunt_H_1-1b1; co_L=4b1001; end endelse begin cunt_L_1=ont_L_-1b1; end end S3:ben if(ouL_2=) bgin if(coun_=) bgin led6b0000; cut_H_=0100;ount_L1=4b101; cont_H_2=4000;countL2=4b1; statS0; e ebin cout_1cun_H_11;
16、 out_H_=unt_2-1b; ed en ese bi coun_L_1=cun_11b1; coun_L_ot_21b1; ed endcaseen enmoule扫描译码显示模块:odulsaomiao(rst,lk,ountH_,count_L_1,coutH_2,con_L_2,se,g);inputst,clk;p3:0cunt_1,count_1,unt_H,cunt_L_2;otut 6:sel;otput 3:0g;reg 6:0sel;rg :0sg;reg 5:0 ount;eg 1:0 nt; reg 3:0daa; re clodd;lwa(psedgclkrne
17、gdgerst) begn i(!rst)egicount=0;clk_d=0;d els f(t=6d2) begin cl_odd=clk_odd; count=0; ed lse ountcot+11;end lway(negde rstor posedg clk_d)/?msi (!rst)begncnt=2b0;nese cn=cnb1;alway(nege r or posedg clk) f(!rs) egin/ sel = 7b000000 ;eg =4b111 ;dele eginse (t)2b00: egieg =4b11 ;ata=count_H_1;nd 20:beg
18、iseg= 4b110 ;/ ???dat=cunL_1; endb10:ein /??= 4b111 ;data=cou_H_; end b1:begin/ ???? seg= b011;data=cut_L_2;end dfaul : bein / s = 8b00000 ;sg = 000;endecasenalay (ataor e)gincase(dat)4b000:el=7b111;4b00:sl=7b110000;4b0010:s=7b10110;b0011:sl=b111001;40100:e=7010011;b0101:e7b1011011;4b00:e=7b10111;40
19、11:sl=7b11000;4b100:sl711111;b001:e7b1111011;alt:s111110; endcend endmodul顶层模块:mdue iaotongdeng(cl,rst,car,led,el,seg,count_H1,coun_L_,ounH_2,cunt_2,cl_odd);inpclk,st,cr;ott 3:0 seg;outpu 6:0 sel;output 5:0le;ouput :0count_H1,count_L_1,ount_,oun_L_2;tpu clk_odd;we :0count_H_1,coutL_1,outH2,ou_L2;wr
20、lk_d;omiao ee(st,clk_od,cun_H_,ount_1,cu_H_2,conL_2,se,seg);cto rr(led,ar,r,ck_dd,count_H_1,cun_L1,out_H_2,cout_L_);fenqi (,rt,clk_odd);ndmod激励模块:defiTRE 1define FALSE 1ol stimuls;wre 3:0 SEG;wir 6:0EL;wie 5:0L;wire3:ount_H_1,cunt_L_,cout_H2,countL_2;wire lk_od;reg CRON_CR_R;g COCK,RST;jiogdeng iaot
21、ongdeng(CLOCK, RST,AR_ONTRY_RD,LE, SEL, SEG, cout_H1,cun_1,cutH_2,contL_2,k_);initial $monir($ime, ”led =%b, sel b,se =%b, LED,SEL,SEG); intial bgin CLOCK =FALSE; foeve 5CLCK =CLOCK; end iita bein R =FALS; repeat (2) (ngdgeLOCK); R = TRUE; end initl gin AR_CNTRY_RD 1b0; epeat(2)(ndg CLOCK);CAR_ON_CN
22、RY_R =b1; repet(00)(negedeCLOCK);_N_CNRYRD = 1b0; eat(5)(negege CLOCK);AR_NCNTRY_R 1b1; epeat(2400)(needgeCLO);sop; e endmdule引 言随着城乡的经济发展,车辆的数量在迅速的增加,交通阻塞的问题已经严重影响了人们的出行.现在的社会是一个数字化程度相当高的社会,很多的系统设计师都愿意把自己的设计设计成集成电路芯片,芯片可以在实际中方便使用。随着EDA技术的发展,嵌入式通用及标准PGA器件的呼之欲出,片上系统(SOC)已经近在咫尺。FPGA/CP以其不可替代的地位及伴随而来的极
23、具知识经济特征的I芯片产业的崛起,正越来越受到业内人士的密切关注。PA就是在这样的背景下诞生的,它在数字电路中的地位也越来越高,这样迅速的发展源于它的众多特点.交通等是保障交通道路畅通和安全的重要工具,而控制器是交通灯控制的主要部分,它可以通过很多种方式来实现.在这许许多多的方法之中,使用FPGA和HL语言设计的交通灯控制器,比起其他的方法显得更加灵活、易于改动,并且它的设计周期性更加短。城市中的交通事故频繁发生,威胁着人们的生命健康和工作生活,交通阻塞问题在延迟出行时间的同时,还会造成更多的空气污染和噪声污染.在这种情况下,根据每个道路的实际情况来设置交通灯,使道路更加通畅,这对构建和谐畅通
24、的城市交通有着十分重要的意义.第一章 软件介绍1.1uartus介绍本次毕业设计是基于P下的设计,FPA是现场可编程门阵列,FGA开发工具种类很多、智能化高、功能非常的强大。可编程rtus是一个为逻辑器件编程提供编程环境的软件,它能够支持VHDL、Verlo HL语言的设计。在该软件环境下,设计者可以实现程序的编写、编译、仿真、图形设计、图形的仿真等许许多多的功能。在做交通灯控制器设计时选择的编程语言是VHL语言。在这里简单的介绍一下Quatu的基本部分.图1-1-1是一幅启动界面的图片.在设计前需要对软件进行初步的了解,在图中已经明显的标出了每一部分的名称。图 -11 启动界面开始设计前我们
25、需要新建一个工程,首先要在启动界面上的菜单栏中找到Fi,单击它选择它下拉菜单中的“N Project Wiar”时会出现图112所显示的对话框,把项目名称按照需要填好后单击Next,便会进入图 1-3 显示的界面。图1-2 创建工程框图1芯片选择框根据自己选择的实验设备选择好相应的芯片型号点击Next,进入下一个步骤当出现图1-1-5时,点击“Fnish后这个工程就建立好了。图 1-1-4仿真器选择框图-15 对话框 建好工程后开始进行设计,首先在图-16中单击le后选择nw,接着会出现图1-17,在交通灯控制器的设计中我们选择的是VHDLFile,当出现图1-8时就可以把编辑的程序敲入编辑器
26、中.图-1-6 工程建好后的界面图1-7新建文件类型选择框图1-1-8 程序编辑框在第一章中对Quaus软件的使用做一个简单介绍,设计中的编译和仿真步骤在后面的几章中会做出介绍。第二章交通灯控制器设计的概述21 控制器设计描述21 设计任务要求设计交通灯控制器,分别在四个方向都安装红、黄、绿三种颜色的交通指示灯,红灯表示停止,绿灯表示通行,黄灯表示左转和直行将要禁止通行,四个方向分别还安装有倒计时的计时器。22设计要求东西方向和南北方向各有组指示灯,红灯亮的时间为2S,黄灯亮的时间为S,绿灯亮的时间为25S。三种灯亮灭的顺序为红灯、绿灯、黄灯。第三章 交通灯控制器的设计过程3。1 设计方案本设
27、计课题用FPA来实现智能交通灯的设计,本设计现要研究的问题主要有:智能交通灯的设计方案;各功能模块的设计与实现;如何用VHDL编写源程序以及进行系统仿真。31。1框图设计交通灯控制器设计的框图中包括控制器、分频器、显示器、指示灯、译码器、位选器。当倒计时为零时,控制器改变交通灯的颜色,同时倒计时开始进入下一个倒计时。当有紧急情况出现的时候,四面的交通灯都会变为红灯,紧急情况的处理在设计中是依靠HOLD键来实现的.图311-是交通灯设计的设计框图特殊情况计 时 器位选器显示器(东、西、南、北)译码器控制器指示灯图 -1-11 交通灯设计的设计框图系统的红、黄、绿灯显示的总时间为50s,具体的亮灯时间和亮灯顺序看表 31-1-2表3-11-2 交通灯亮灯顺序与亮灯时间安排东西方向(A灯)A绿灯亮(20)A黄灯亮(215)A红灯亮(650s)南北方向(B灯)B红灯亮(-2) B绿灯亮(5s)B黄灯亮(46-50s)3。12 工程流程图创建一个新的工程创建VHDL语言文件保存输入的程序将程序输入文件中对程序进行编译,有错误的要进行修改、再编译,直至没有错对程序进行波形的仿真进行图形电路设计、保存、编译、波形仿真、管脚锁定进行硬件仿真图31- 工程流程图1。 时序图的假象
限制150内