交通灯控制器设计专业:计算机应用技术班级:计应2班学号:147030201姓名:蔡利军I基于FPGA的交通灯控制器设计摘要超高速硬件描述语言VHDL,是对数字系统进行抽象的行为与功能描述到具体的内部线路结构描述,利用EDA工具可以在电子设计的各个阶段、各个层系进行计算机模拟验证,保证设计过程的正确性,可大大降低设计成本,缩短设计周期。本文介绍的数字秒表设计,利用基于VHDL的EDA设计工具,采用大规模可编程逻辑器件FPGA,通过设计芯片来实现系统功能。交通灯控制系统可以实现路口红绿灯的自动控制。基于FPGA设计的交通灯控制系统具有电路简单、可靠性强、实时快速擦写、运算速度高、故障率低、可靠性高,而且体积小的特点。本设计采用Altera公司Cyclone系列的EPlC3T1444C8芯片,在QuartusII软件平台上使用VHDL语言,采用自顶向下的设计方法对系统进行了模块化设计和综合,并进行了仿真。该系统可实现十字路口红绿灯及左转弯控制和倒计时显示,仿真结果结果表明系统能够自动控制交通灯转变。关键词:VHDL,交通灯,EDAII目录前言.....................................................1第1章FPGA概述...........................................21.1FPGA的简介.........................................21.2FPGA的应用.........................................2第2章VHDL硬件描述语言...................................32.1VHDL程序基本结构...................................32.1.1实体..........................................42.1.2结构体........................................42.1.3库............................................52.2VHDL语言...........................................52.2.1VHDL文字规则.................................52.2.2VHDL数据对象.................................52.2.3VHDL数据类型.................................62.2.4VHDL顺序语句.................................62.2.5VHDL并行语句.................................6第3章系统设计与仿真......................................73.1系统介绍...........................................73.1.1设计任务......................................73.1.2设计要求......................................73.2系统设计仿真.......................................83.2.1顶层框图的设计................................83.2.2时序状态图的设计..............................93.2.3工程设计流程框图:...........................103.2.4芯片的选择...................................103.2.5各个模块的设计与仿真.........................11结论.....................................................27附录......................................错误!未定义书签。1前言当今社会是数字化的社会,是数字集成电路广泛应用的社会。数字集成电路本身在不断进行更新换代,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。系统设计师更愿意自己设计专业集成电路(ASIC)芯片,而且希望设计周期尽可能短,最好在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程器件(FPLD)。现场可编程门阵列(FPGA)即属其中应用最广泛的一种。随着电子技术的发展,特别是大规模集成电路和计算机技术的研制和发展,让电子产品设计有了更好的应用市场,实现方法也有了更多的选择,而电子电路的设计却变得越来越复杂,使用“语言”进行电子设计已成为一种趋势。现代电子系统设计方法是设计师自己设计芯片来实现电子系统的功能,将传统的固件选用及电路板设计工作放在芯片设计中进行。在这些专业化软件中,EDA(ElectronicDesignAutomation)具有一定的代表性,EDA技术是一种基于芯片的现代电子系统设计方法。基于EDA技术的现场可编程门阵列(FPGA)电(ASIC),在数字系统设计和控制电路中越来越受到重视。VHDL语言是电子设计的主流硬件描述语言,它更适合进行行为描述,这种方式使得设计者专注于电路功能的设计,而不必过多地考虑具体的硬件结构。基于EDA技术的现场可编程门阵列(FPGA)电路,提出现场可编程门阵列(FPGA)是近年来迅速发展的大规模可编程专用集成电路(ASIC),在数字系统设计和控制电路中越来越受到重视。VHDL语言是电子设计的主流硬件描述语言,它更适合进行行为描述,这种方式使得设计者专注于电路功能的设计,而不必过多地考虑具体的硬件结构。2第1章FPGA概述1.1FPGA的简介FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。目前以硬件描述语言所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。1.2FPGA的应用FPGA的应用可分为三个层面:电路设计,产品设计,系统设计。1.电路设计连接逻辑,控制逻辑是FPGA早期发挥作用比较大的领域也是FPGA应用的基石。事实上在电路设计中应用FPGA要求开发者要具备相应的硬件知识(电路知识)和软件应用能力(开发工具)。2.产品设计把相对成熟的技术应用到某些特定领域开发出满足行业需要并能被行业客户接受的产品。这方面主要是FPGA技术和专业技术的结合问题,重点在性能,FPGA技术在这个领域是一个实现手段,FPGA因为具备接口,控制,功能IP,内嵌CPU等特点有条件实现一个构造简单,固化程度高,功能全面的系统产品设计。3.系统级应用系统级的应用是FPGA与传统的计算机技术结合,实现一种FPGA版的计算机系统如用XilinxV-4,V-5系列的FPGA,实现内嵌POWERPCCPU,然后再配合各种外围功能,这个平台上跑LINIX等系统这个系统也就支持各种标准外设和功能接口了,这对于快速构成FPGA大型系统来讲是很有帮助的。3第2章VHDL硬件描述语言2.1VHDL程序基本结构一个相对完整的VHDL程序通常包含实体、结构体、配置、程序包和库5个部分。程序模板如下:LIBRARYlibraryname;USElibraryname.packagename.all;ENTITYentitynameISGENERIC(parametername:string:=defaultvalue;parametername:integer:=defaultvalue);PORT(inputname,inputname:INSTD-LOGIC;Inputvectorname:INSTD_LOGIC_VECTOR(highDOWNTOlow);outputname,outputname:OUTSTD_LOGIC);ENDentityname;ARCHITECTUREaOFentitynameISSIGNALsignalname:STD_LOGIC;BEGIN--processstatement(optional):--generatestatement(optional)ENDa;42.1.1实体实体一般用来描述所设计的系统的外部接口信号,是可视部分;其中最重要的部分是端口说明。端口说明语句是对于一个设计实体界面的说明。端口名是赋予每个系统引脚的名称。一个实体通常有一个或多个端口,端口类似于原理图部件符合上的管脚。实体与外界交流的信息必须通过端口通道流入或流出。IEEE1064标准包中定义了四种端口模式,其功能及符号分别是IN、OUT、INOUT、BUFFER、LINKAGE。2.1.2结构体结构体用于描述系统内部的结构和行为,建立输入输出之间的关系。在一个实体中,可以含有一个或一个以上的结构体,而在每一个结构体中又可以含有一个或多个进程以及其他的语句。其中,实体名必须是被设计的实体的名字。结构体中的说明语句是对结构体的功能描述语句中将要用到的信号、数据类型、常数、元件、函数和过程等加以说明的语句。结构体包含两类语句:并行语句和顺序语句。在PROCESS中的语句是顺序执行的,当PROCESS所带的敏感信号发生变化时,PROCESS中的语句就会执行一遍。52.1.3库库使用说明用于打开(调用)本设计实体将要用到的库,库是专门存放预编译程序包的地方。IEEE库:在IEEE库中有一个STD_LOGIC的包,它是IEEE正式认可的包。STD库:STD库是VHDL的标准库,在库中有名为STANDARD的包。在使用库之前,一定要进行库说明,库的说明总是放在设计单元的前面。2.2VHDL语言2.2.1VHDL文字规则VHDL文字主要包括数值和标识符。数值型文字主要有数字型、字符串型和位串型。数字型文字有:整数文字(十进制数)、实数文字(十进制数,必须带有小数点)、以数字基数表示的文字。字符串型文字有:文字字符串、数位字符串、标识符。2.2.2VHDL数据对象在VHDL中,数据对象类似于一种容器,接受不同数据类型的赋值。数据对象有3种:即常量、信号、变量。常量是固定值,不能在程序中被改变。变量时一个局部量,是一个临时数据,没有物理意义。它只能在Process和Function中定义,必须在进程和子程序的说明性区域说明,并只在其内部有效。信号是描述硬件系统的基本数据对象,代表连接线,Port也是一种信号。62.2.3VHDL数据类型VHDL是一种强类型语言,要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类型,并且只有相同的数据类型的量才能互相传递和作用。VHDL的基本类型有:bit(位)、bit-Vector(位矢量)、Boolean、time、character、string、integer、real。2.2.4VHDL顺序语句VHDL有如下六类基本顺序语句:赋值语句、流程控制语句、等待语句、子程序调用语句、返回语句、空操作语句。赋值语句有信号赋值语句和变量赋值语句两种。流程控制语句共有五种:IF语句、CASE语句、LOOP语句、NEXT语句、EXIT语句。IF语句根据条件句产生的判断结果:TRUE或FALSE,有条件地选择执行其后的顺序语句。CASE语句根据满足的条件直接选择多项顺序语句中的一项执行。空操作语句不完成任何操作,它常用于CASE语句中,利用它来表示所余的不用条件下的操作行为——满足所有可能的条件。2.2.5VHDL并行语句结构体