您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 基于FPGA的交通灯设计(课程设计)
FPGA综合设计实验报告题目基于FPGA的交通灯控制器的设计作者专业日期2013年3月29日基于FPGA的交通灯控制器的设计21.设计任务:基于FPGA的交通灯控制器的设计2.设计要求:(1)十字路口由一条东西方向的主干道和一条南北方向的支干道构成,主干道和支干道均有红、黄、绿3种信号灯;(2)保持主、支干道红、绿交替变换;(3)绿灯转红灯过程中,先由绿灯转为黄灯,5秒后再由黄灯转为红灯;同时对方由红灯转为绿灯;(4)系统需具有复位及特殊情况紧急处理功能。(5)了解交通灯控制器的工作原理,完成控制器的硬件电路设计及软件设计。3.总体设计方案:从题目中计数值与交通灯的亮灭的关系如图(1)所示。当主干道绿灯55秒和5秒黄灯过渡时,支干道必须禁止通行,即支干道红灯亮55+5=60秒;当支干道由红灯转为绿灯时,支干道亮55秒绿灯和5秒黄灯过渡,此时主干道红灯应亮55+5=60秒。东西南北时间/s绿灯亮红灯亮55黄灯亮红灯亮5红灯亮绿灯亮55红灯亮黄灯亮5图1交通灯控制要求4.硬件电路基本原理分析:动态LED显示的设计方法是将不同LED模块的所有的LED的驱动端一对一地连接到一起,而将其公共极(阴极或阳极)分别由不同的IO口来驱动(主要针对7段码和LED点阵模块)。动态显示方式主要是出于简化电路和产品成本考虑在大多数场合都可以达到用户要求。动态显示虽然占用的CPU时间多,但使用的硬件少,能节省线路板空间。另外,本设计显示需要使用的是4个七段显示数码管。在计时结果显示电路中,七段数码管显示部分是一个不容忽视的环节,如若处理不得当,可能引起系统功率过大,产生散基于FPGA的交通灯控制器的设计3热问题,严重时甚至会导致系统的烧毁。为了解决好以上问题,下面就对七段数码管显示电路做简要的分析和介绍。通常点亮一个LED所需的电流是5~50mA,通电的电流愈大,LED的亮度愈高,相对的也会使其寿命缩短。一般以10mA的导通电流来估算它所必须串联的阻值,其计算方式参考如图1所示。图1单个LED的串接电阻计算方式七段显示器可分为共阳极、共阴极型两种,它们都可以等效成8个LED的连接电路,其中如图2就是共阴极型七段显示器的等效电路和每节LED的定义位置图。因此,若要点亮七段显示器以实现一个3的数字符号并不点亮P点LED,则输入七段显示码是“10110000”(低电平点亮),而且这个码字的每个位所对应位置和如图2相同,顺序是“pgfedcba”。依此类推可得到0~9的显示码。图2共阴极型七段显示器的LED位置定义和等效电路由于本设计的目标是设计倒计时显示系统,要求显示4个0~9的数字,依照图1的计算方式,同时点亮-个七段显示器的8节LED,结果将需电流为10mA×8=80mA。若再进-步同时点亮4个七段显示器,这时所需电流为80mA×4=320mA。这对于一般的电子电路来说,是一个不小的电流,不但CPLD&FPGA无法负荷这样的电流驱动,而且这个功率也太大,散热也是问题,电路容易被烧毁。因此显示电路部分不能直接实现各个计时结果同时显示,只能另外通过一个扫描电路对计时输出进行逐个扫描,使七段数码管以两个为一个组,逐个进行显示。只要每个扫描频率超过人的眼睛视觉暂留频率24Hz,就可以基于FPGA的交通灯控制器的设计4达到点亮两个七段数码管,却能享有所有七段数码管同时显示的视觉效果,而且显示也不致闪烁抖动,从而间接实现计时结果同时显示。故输入除了四个十进制数外,还需要1KHZ的时钟信号进行扫描显示。对于输出,则需要设置一个片选信号(高电平选中),如下图所示要点亮4个数码显示灯则需要4位的片选信号,即如右图所示的ledout[3…0],在1KHZ的时钟频率扫描下即可显示出主干道和支干道的倒计时数。5.原理图:北西东图2交通灯实物模仿图图3系统模块图6.软件设计原理分析,流程图:本实验仿真应用的是QUARTUSⅡ软件的内部仿真程序,按照QuartusII的仿真流程进行仿真。对于系统的分频模块、显示模块、控制模块等进行模拟仿真,验证程序的正确性。然基于FPGA的交通灯控制器的设计5后对交通灯的程序进行系统仿真,找出其中的问题,进行修改,重新调试,直至成功为止。图4程序流程图7.仿真波形及结果分析:1.分频器的仿真:由于分频器将50MHZ的时钟信号分频为1HZ的时钟信号仿真时耗时大,故仿真时采用100ns时钟并进行分频,Endtime设为100ms,耗时5min左右。仿真结果如下:基于FPGA的交通灯控制器的设计6仿真波形1仿真波形2仿真波形32.结果仿真:主干道显示45秒支干道显示40秒时,主干道显示44秒支干道显示39秒时,基于FPGA的交通灯控制器的设计7主干道显示43秒支干道显示38秒时,主干道显示42秒支干道显示37秒时,8.下载调试结果分析:对设计的硬件电路进行管脚分配,按照分配的管脚进行连线,然后经功能仿真测试,最终符合预期结果,程序设计正确。9.总结:通过这次实验,我对FPGA这学科有了更刻的认识,以前学的知识只是一点皮毛,只有真正的实践才能学到更深刻的东西。对于我们微电学子学这一专业,FPGA的学习对我们十分重要。Quartusii软件的应用在这次的实验中起着很重要的作用,以前没有接触到这一软件,对其很陌生,这次的实验让我真正了解到这一软件的功能的强大。这次试验使我学会了QuartusII的使用流程,对于其中的很多东西颇有兴趣,以后会更加努力学习之一软件。在我们三人一组的共同努力下,为其三周的时间,基于FPGA的交通灯设计圆满完成。这体现了团队合作的重要作用。其中的酸甜苦辣别有一番滋味,但最终还是苦尽甘来,我基于FPGA的交通灯控制器的设计8觉得很有成就感。11.附件:程序代码:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALLentityjiaotongdengisport(clk1:instd_logic;rst:instd_logic;hold1:instd_logic;segout2:outstd_logic_vector(7downto0);led_sel1:outstd_logic_vector(3downto0);reda1,yellowa1,greena1:outstd_logic;redb1,yellowb1,greenb1:outstd_logic);endjiaotongdeng;architectureBehavioralofjiaotongdengiscomponentFreDeciderPORT(clk:INStd_Logic;rst:INSTD_LOGIC;clkout:OUTStd_Logic);ENDcomponent;componentcountrollerPORT(Clock:INSTD_LOGIC;Hold:instd_logic;CountNum:inINTEGERRANGE0TO119;NumA,NumB:outINTEGERRANGE0TO60;RedA,GreenA,YellowA:outstd_logic;基于FPGA的交通灯控制器的设计9RedB,GreenB,YellowB:outstd_logic);ENDcomponent;componentcounterPORT(clock:INSTD_LOGIC;Hold:instd_logic;countNum:BuFFeRINTEGERRANGE0TO120);ENDcomponent;componentFenweiPORT(NuminA,NuminB:INintegerRANGE0TO120;NumA,NumB,NumC,NumD:OUTIntegerRANGE0to9);ENDcomponent;componentdtsmPORT(clk:inSTD_LOGIC;NumA,NumB,NumC,NumD:inIntegerRANGE0to9;segout1:outSTD_LOGIC_VECTOR(7downto0);led_sel:outSTD_LOGIC_VECTOR(3downto0));ENDcomponent;signalb,rst1:std_logic;signalc:INTEGERRANGE0TO119;signald,n:INTEGERRANGE0TO120;signale,f,g,h:IntegerRANGE0to9;beginu1:FreDeciderportmap(clk=clk1,rst=rst,clkout=b);u2:counterportmap(clock=b,hold=hold1,countnum=c);u3:countrollerportmap(clock=b,hold=hold1,countnum=c,numa=d,numb=n,reda=reda1,greena=greena1,yellowa=yellowa1,redb=redb1,greenb=greenb1,yellowb=yellowb1);u4:fenweiportmap(numina=d,numinb=n,numa=e,numb=f,numc=g,numd=h);基于FPGA的交通灯控制器的设计10u5:dtsmportmap(clk=clk1,numa=e,numb=f,numc=g,numd=h,segout1=segout2,led_sel=led_sel1);endBehavioral;
本文标题:基于FPGA的交通灯设计(课程设计)
链接地址:https://www.777doc.com/doc-5824475 .html