基于PFGA的交通灯设计Word文档下载推荐.docx
《基于PFGA的交通灯设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于PFGA的交通灯设计Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
Verilog交通灯EDA
Abstract
Trafficlightsforcommonfacilitiesindailylife,usuallyreferstobyred,yellow,andgreenthreecolorsoflightstodirectingtrafficlights.Whenthegreenlight,toallowvehicles,whentheyellowlights,havevehiclescrossthestoplinecancontinue;
Abanonvehicletrafficwhentheredlightison.Indicatorforthisdesignisaccordingtothetrafficlightsinthisstudy,sothisstudycannotonlyexercisetheirpracticaloperationability,andabilitytosolvepracticalproblems,anddeepentheirunderstandingoftheverilogdesignprocess,butalsohasastrongpracticalsignificance.
Digitalsignaltrafficlighttrafficlightscanachieveautomaticcontrolofthecrossroads.ThedesignofFPGA-basedtrafficlightsystemhasalotoffeatures,suchashighreliability,real-timequickerase,high-speedoperation,lowerrateoffault,simplecircuitandsmallvolume.Duringthisgraduationproject,ItaketheAlteraCorporationCycloneIIseriesEP2C5T144chipastheminimumsystemcore,itcanbeeasilyembeddedintheactualapplicationofthetrafficlightsystem,itcandosimplelogiccontrol,dataacquisition,signalprocessing,mathematicalcalculationsandotherfunctions;
usingQuartusIIasdevelopmentplatform;
usingtop-downdesignideastosystemmodulardesignandsynthesis,andthroughwaveformsimulationandhardwareimplementationtwowaystocompleteandverifythefunctionofdigitalsignaltrafficlights.
KeyWords:
Verilog;
Trafficlight;
EDA
第一章绪论
1.1课程设计要求
设计一个交通控制器,用LED显示灯表示交通状态,并以7段数码显示器显示当前状态剩余秒数主干道绿灯亮时,支干道红灯亮;
反之亦然,二者交替允许通行,主干道每次放行35s,支干道每次放行25s。
每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为5s。
能进行特殊状态显示,特殊状态时东西、南北路口均显示红灯状态。
用LED灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。
能实现特殊状态的功能显示。
1.2课程设计思路和原理
本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。
设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35s后,主干道和支干道上的黄灯都亮启,持续5s后,主干道上红灯亮启,支干道上绿灯亮启持续25s,之后主干道和支干道上的黄灯都亮启5s,一个循环完成。
循环往复的直行这个过程。
其过程如下图所示:
1.3实现方法
本次采用文本编辑法,即利用Verilog语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。
设计中用两组红黄绿LED模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间。
1.4Verilog语言简介
Verilog是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。
被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。
数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。
Verilog语言具有下述描述能力:
设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。
所有这些都使用同一种建模语言。
此外,Verilog语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。
Verilog语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。
因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。
语言从C编程语言中继承了多种操作符和结构。
Verilog提供了扩展的建模能力,其中许多扩展最初很难理解。
但是,Verilog语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。
当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。
Verilog就是在用途最广泛的C语言的基础上发展起来的一种硬件描述语言,它是由GDA(GatewayDesignAutomation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。
1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得Verilog迅速得到推广应用。
1989年CADENCE公司收购了GDA公司,使得Verilog成为了该公司的独家专利。
1990年CADENCE公司公开发表了Verilog。
Verilog的最大特点就是易学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握,因而可以把Verilog内容安排在与ASIC设计等相关课程内部进行讲授,由于语言本身是专门面向硬件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。
与之相比,Verilog的学习要困难一些。
但Verilog较自由的语法,也容易造成初学者犯一些错误,这一点要注意。
第二章FPGA概述
2.1FPGA的简介
现场可编程门阵列即FPGA(FieldProgrammableGateArray)它由若干独立的可编程逻辑模块组成具体包括输入输出模块IOB、可编程逻辑模块CLB、互连资源IR和一个用于存放编程数据的静态存储器。
它是在可编程器件的基础上进一步发展的产物用户可以通过编程将这些模块连接成所需要的数字系统。
因为这些模块的排列形式和门阵列GA中单元的排列形式相似所以沿用了门阵列这个名称。
FPGA属于高密度PLD其集成度可达百万门/片以上。
FPGA中除了个别的几个引脚外大部分引脚都与可编程的IOB相连均可根据需要设置成输入端或输出端。
每个CLB中都包含组合逻辑电路和存储电路即触发器两部分可以设置成规模不大的组合逻辑电路或时序逻辑电路。
为了能将这些CLB灵活的连接成各种应用电路在CLB指尖的布线区内配置了丰富的连线资源。
FPGA作为专用集成电路领域中的一种半定制电路不仅克服了原有可编程器件门电路数有限的缺点而且解决了定制电路的不足问题。
生产FPGA的公司有XILINX、TI、ALTERA等。
2.2FPGA设计交通灯的意义
FPGA是一个功能强大的可编程逻辑芯片采用FPGA设计ASIC电路用户不需要投片生产就能得到所需的芯片。
FPGA内部有丰富的触发器和I/O引脚。
FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
FPGA采用高速CHMOS工艺功耗低可以与CMOS、TTL电平兼容。
所以用FPGA完成交通灯的设计合理可行。
第三章设计方案
3.1系统框图的设计
图3.1系统框图
系统框图由6部分组成,包括:
分频、控制、倒计时、红绿灯显示、译码、译码显示等模块。
3.2工程设计流程框图
图3.2工程设计流程框图
3.3芯片的选择
本设计采用的是Altera公司CycloneII系列的EP2C5T144芯片作为核心最小系统,它可以方便嵌入到实际的交通灯应用系统中,可以完成简单的逻辑控制、数据采集、信号处理、数学计算等功能。
3.4各个模块的设计与仿真
3.4.1分频器模块设计(FPQ)
由于采用的FPGA芯片的时钟频率是50MHz,需要将其分频为1Hz。
该模块即是实现50M的分频,将频率变为1Hz的脉冲波,从而得到周期为1s的脉冲波。
其电路图如图3.3所示:
图3.3分频器电路图
如果要真正的实现分频50M,在仿真结果图中是很难观察的,甚至是没有办法验证的,故在仿真过程中,将分频的倍数变小,变为20分频,这样从图中可容易的得到并验证对时钟输入信号的20分频,如图3.4所示,Reset是复位信号,CLK_50MHz是输入时钟频率,CLK_1Hz是输出时钟频率,从图中可以看出,输出频率CLK_1Hz确实是输入时钟频率CLK_50MHz的20分频。
图3.4分频器仿真图
3.4.2状态控制模块设计(CONTROL_STATUS)
CONTROL_STATUS模块根据输入CLK_1Hz的脉冲信号输出不同的STATUS值,下游的模块依据STATUS的值来确定红绿灯的状态;
于此同时对倒计时信号赋初值。
其电路如图3.5所示:
图3.5状态控制模块电路图
在CONTROL_STATUS模块仿真图中,输入信号CLK是一个频率为1Hz的时钟脉冲信号,RESET是复位信号;
输出信号STATUS是状态转换信号,控制着下游交通信号灯显示模块的显示情况;
LOAD_EW、LOAD_SN是东西、南北方向倒计时开始控制信号,DJS_EW、DJS_SN是东西、南北方向倒计时间信号。
其仿真结果图如图3.6所示,由图可得,STATUS共有000(S1)、001(S2)、010(S3)、011(S4)、100(S5)、101(S6)共6个状态,80s为红灯和左转灯的倒计时间,45s为绿灯的倒计时间,5s是黄灯的倒计时间,和状态转换表的状态一致。
图3.6状态控制模块仿真图
3.4.3交通信号灯显示模块设计(DISPLAY_LIGHT)
交通信号灯显示模块根据输入的STATUS信号,输出对应的红绿黄灯信号,并直接驱动交通信号灯的亮灭。
其电路图如图3.7所示:
图3.7信号灯显示
在DISPLAY_LIGHT模块程序仿真结果图中,STATUS为输入信号,而它依赖于CONTROL_STATUS模块产生的信号STATUS信号,一种六种状态,依次为000(S1)、001(S2)、010(S3)、011(S4)、100(S5)、101(S6);
EW_LRGY(8位)是东西方向上交通信号灯的状态,SN_LRGY(8位)是南北方向上交通信号灯的状态,依次为左转、红、绿、黄,对应着EW_LRGY、SN_LRGY的前四位,‘1’表示点亮,‘0’表示熄灭,后四位均为0,表示四个灯的阴极接负极。
例如,在STATUS为001时,对应的是东西方向红灯亮,南北方向绿灯亮,仿真结果符合预期,完全正确。
图3.8信号灯显示仿真图
3.4.4东西方向倒计时模块设计(EW_DJS)
EW_DJS模块用来接收CONTROL_STATUS模块的输出并作为初值,每检测到一个CLK脉冲信号,就进行减一动作,最后把减一结果输出。
其电路图如图5.10所示:
图3.9东西方向倒计时电路图
在该模块仿真图中,CLK为1Hz的输入信号,LOAD_EW为计数器的装载信号,当其为高电平时,将输入信号DJS_EW_IN的值装载到计数器中,并开始进行减一操作,每遇一个CLK脉冲,进行一次减一操作,并将结果输出,由于输入的时钟频率是1Hz,所以显示的时间间隔是1s,与现实生活中的时间保持一致。
其仿真结果如图3.10所示,由图可得,该模块首先将80秒的倒计时信号装载进去,并进行减一操作。
图3.10东西方向倒计时仿真图
3.4.5南北方向倒计时模块设计(SN_DJS)
SN_DJS模块用来接收CONTROL_STATUS模块的输出并作为初值,每检测到一个CLK脉冲信号,就进行减一动作,最后把减一结果输出。
其电路图如图3.11所示:
图3.11南北方向倒计时电路图
在该模块仿真图中,CLK为1Hz的输入信号,LOAD_SN为计数器的装载信号,当其为高电平时,将输入信号DJS_SN_IN的值装载到计数器中,并开始进行减一操作,每遇一个CLK脉冲,进行一次减一操作,并将结果输出,由于输入的时钟频率是1Hz,所以显示的时间间隔是1s,与现实生活中的时间保持一致。
其仿真结果如图3.12所示,由图可得,该模块将45秒的倒计时信号装载进去,并进行减一操作。
图3.12东西方向倒计时仿真图
3.4.6译码模块设计(TO_8421_BCD)
TO_8421_BCD模块程序用来将输入的两位倒计时数值,分解成两个整形数值,以此供后面的译码显示模块DISPLAY_SMG译码显示。
其电路如图3.13所示:
图3.13译码模块电路图
在译码程序TO_8421_BCD模块仿真图中,DJS_EW_OUT,DJS_SN_OUT为上一倒计时模块的输出信号,其范围在0~80,所有倒计时的范围都包含其内;
DJS_EW_OUT_SW,DJS_EW_OUT_GW,DJS_SN_OUT_SW,DJS_SN_OUT_GW为输出信号,其范围为0~9,代表了各个方向的倒计时的十位和个位,且数码管所有显示数字的范围均在其内。
例如图中DJS_EW_OUT的值不断变化,相应的依次将其分解为十位(DJS_EW_OUT_SW)和个位(DJS_EW_OUT_GW),并依次递减,仿真结果符合预期,完全正确。
仿真结果如图3.14所示:
图3.14译码仿真结果图
3.4.7译码显示模块设计(DISPLAY_SMG)
译码显示模块DISPLAY_SMG将上一模块TO_8421_BCD输出的四个一位数译码成相对应的七位数码管段码,完成倒计时的译码和显示。
其电路如图3.15所示:
图3.15译码显示电路图
在如图3.17所示DISPLAY_SMG译码显示模块的仿真图中,其中可以看到DJS_EW_OUT_SW,DJS_EW_OUT_GW,DJS_SN_OUT_SW,DJS_SN_OUT_GW是四位的输入信号,也是上一模块TO_8421_BCD的输出信号,它们的范围为数字0~9,DJS_EW_OUT_SW1,DJS_EW_OUT_GW1,DJS_SN_OUT_SW1,DJS_SN_OUT_GW1对应的是相应的七位数码管显示段码的值。
图中输出信号的值随着输入信号的变化而相应的变化,例如DJS_EW_OUT_SW为7,DJS_EW_OUT_GW为5时,DJS_EW_OUT_SW1为00000111(a、b、c、d、e、f、g依次对应着1110000,最高位的0表示是数码管的类型是共阴的),表示数码管显示7,DJS_EW_OUT_GW1为01101101,表示数码管显示5。
仿真完全正确,符合预期。
其仿真结果如图3.17所示:
图3.17译码显示仿真图
3.4.8顶层文件设计模块(DCSJ)
顶层设计采用Verilog语言描述方式实现,并在工程文件仿真过后通过工具菜单自动生成原理图文件,从而是设计原理更加清晰明朗。
在顶层设计Verilog描述中,共包含7个元件,分别是:
1、分频器模块(FPQ),2、状态控制模块(CONTROL_STATUS),3、交通信号灯显示模块(DISPLAY_LIGHT),4、东西方向倒计时模块设计(EW_DJS),5、南北方向倒计时模块设计(SN_DJS),6、译码模块设计(TO_8421_BCD),7、译码显示模块设计(DISPLAY_SMG)。
这7个模块经过程序设计、编译仿真,结果均能够达到设计要求。
最后在顶层设计中,通过元件例化语句将这7个模块连接起来,通过RTL电路观察器生成顶层设计原理图如3.18图所示:
图3.18顶层设计原理图
在顶层设计中,RESET是复位信号,输入的时钟频率CLK是50MHz,经过分频50M的分频器(FPQ)后,变为频率为1Hz的时钟信号,周期为1s,用此时钟信号来控制整个系统的步调,与现实生活中交通灯的步调保持一致。
EW_LRGY、SN_LRGY分别为东西和南北方向上交通信号灯的状态,EW_DJS_DISPLAY、SN_DJS_DISPLAY为东西和南北方向红绿灯倒计时间。
另外,所有的数码管和二极管均为共阴极显示。
例如,在EW_LRGY为01000000(即东西方向红灯亮)、SN_LRGY为10000000(即南北方向左转灯亮)时,EW_DJS_DISPLAY的前八位表示倒计时的十位,后八位表示倒计时的个位;
图中EW_DJS_DISPLAY的前八位都是00000111表示7,后八位01111101表示6,后八位01101101表示5,后八位01100110表示4;
SN_DJS_DISPLAY的前八位是01001111表示3,后八位01011011表示2,后八位00000110表示1,后八位00111111表示0,以上表明红绿灯和倒计时时间显示符合预期,完全正确。
仿真结果如图3.19所示:
图3.19顶层文件波形仿真结果图
第四章软件仿真过程
4.1Quartus
软件概述
4.1.1QuartusII软件简介
QuartusII软件是Altera公司最新版本的EDA开发软件,支持APEX系列、Cyclone系列、Stratix系列和Excalibur系列等新型系列器件的开发。
含有工作组计算、集成逻辑分析仪、EDA工具集成、多过程支持、增强重编译和IP集成等特性。
支持百万门级的设计,支持高速I/O设计,具有更强的设计能力和更快的编译速度。
QuartusII开发软件为可编程片上系统(SOPC)设计提供了一个完整的设计环境。
无论是使用个人电脑、NUIX或Linux工作站,QuartusII都提供了方便设计、快速编译处理以及编程功能。
QuartusII输入的设计过程可分为创建工程、输入文件、项目编译、项目校验和编程下载等几个步骤。
AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
当前官方提供下载的最新版本是v12.1。
AlteraQuartusII(3.0和更高版本)设计软件是业界唯一提供FPGA和固定功能HardCopy器件统一设计流程的设计工具。
工程师使用同样的低价位工具对StratixFPGA进行功能验证和原型设计,又可以设计HardCopyStratix器件用于批量成品。
系统设计者现在能够用QuartusII软件评估HardCopyStratix器件的性能和功耗,相应地进行最大吞吐量设计。
Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
4.1.2性能特点
1)支持MAX7000/MAX3000等乘积项器件
9.0版QuartusII设计软件现在除了支持Altera的APEX20KE,APEX20KC,APEXII,ARM的Excalibur嵌入处理器方案,Mercury,FLEX10KE和ACEX1K之外,还支持MAX3000A,MAX7000系列乘积项器件。
MAX3000A和MAX7000设计者现在可以使用QuartusII设计软件中才有的所有强大的功能。
2)软件体积缩小,运行速度加快
QuartusII9.0安装软件为290M,完全安装为700M,如果定制安装,不选择Excalibur嵌入处理器,则安装所需空间为460M,比QuartusII1.1版本减少一半以上的空间要求,却能支持ALTERA全部芯片的开发。
同时软件的装载,编译,仿真速度比1.1版本大大加快。
3)LogicLock设计流程把性能提升15%
QuartusII9.0设计软件通过增强层次LogicLock模块级设计方式,将性能平均改善15%。
LogicLock设计流程把整个模块的放置交由设计者控制,如果必要的话,可以采用辅助平面布置。
LogicLock设计流程运行设计者单独地优化和锁定每个模块的性能,在大型SOPC设计的构建过程中也保持整个系统的性能。
2.0版QuartusII设计软件把新的LogicLock设计流程算法集成到未来的Altera器件中,该算法充分利用了模块级设计的优势。
4)采用快速适配选项缩短编译时间
QuartusII9.0增加了一个新的快速适配编译选项,选择中这个选项,将会比缺省设置要缩短50%的编译时间。
快速适配功能保留了最佳性能的设置,加快了编译过程。
这样布局适配算法反复的次数更少,编译速度更快,对设计性能的影响最小。
5)新的功能减小了系统级验证
9.0版