




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要本文主要介绍了利用VHDL设计语言和ALTERA公司的MAXPLUSII软件开发平台,来设计实现地铁自动售票系统的核心控制部分的功能站点选择,票数选择,投币处理,余额计算,自动出票等功能。在本设计中采用了有限状态机的设计方法,将整个售票系统的控制部分化分为五个状态选站状态,选票状态,投币状态,出票状态和余额找零状态。最后通过对程序的调试以及相应部分功能的仿真,验证了整个系统的原理和本设计方案的正确性。由于采用了有限状态机的设计方法,使得本系统运行可靠性高,非法状态易控制。关键词FPGA,CPLD,VHDL语言,MAXPLUSII软件,有限状态机,地铁自动售票系统目录第一章绪论111电子器件的发展和现状112设计方法的发展113层次化的设计与VHDL的应用114本课题的提出与意义115本课题研究内容1第二章VHDL语言介绍121什么是VHDL122VHDL语言的特点123VHDL的设计流程124VHDL程序的基本结构1第三章MAXPLUSII软件介绍131MAXPLUSII简介132MAXPLUS开发系统的特点133MAXPLUS功能简介134MAXPLUS设计过程1第四章地铁售票系统的设计与实现141课题要求142设计分析143状态机设计1第五章结束语1附录1参考文献1致谢1第一章绪论11电子器件的发展和现状电子技术的发展总是同电子器件的发展密切相关的,由于电子器件的不断更新换代,电子技术得到了飞速发展,当今信息技术被广泛应用在国民经济的方方面面。多媒体技术的普及、高速宽带网络的建设、数字电视的出现以及与我们日常生活息息相关的各种家用电器,都离不开微处理器、存储器和一些采用行业标准的专用芯片。这些电子器件的发展经历了从电子管、晶体管、小规模集成电路、中规模集成电路到大规模集成电路和超大规模集成电路几个阶段,其发展趋势是体积越来越小,集成度越来越高。随着半导体技术的迅速发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担,系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好在自己的实验室里就能设计并制造出适用的ASIC芯片,并且能够得到实际的应用。使用ASIC完成电子系统的设计,其优点是集成度高、保密性强、可大幅度地减少印刷电路板的面积和接插件、电路性能好并能降低装配和调试费用、更适合较大规模批量生产、降低生产成本。例如,现在微机中使用的显卡、网卡、数字电视等都是专用的ASIC芯片。采用ASIC设计的不足之处是一次性的投资大,设计周期一般比较长,不便于以后修改设计,因而近几年在ASIC领域出现了一种半定制电路,即现场可编程逻辑器件FPLD。目前使用较多的可编程逻辑器是现场可编程门阵列FPGA(FIELDPROGRAMMABLEGATEARRAY)和复杂可编程逻辑器件CPLD(COMPLEXPROGRAMMABLEGATEARRAY)。早期使用的可编程器件有PROM、EPROM、E2PROM、PAL、GAL等,这些芯片的容量一般比较小,只能完成简单的数字逻辑功能,这些器件基本上是使用专用的编程器进行装载。CPLD和FPGA的芯片是在早期使用的PAL和GAL基础上发展起来的,相比早期的可编程器件,现场可编程逻辑器件FPLD的容量大,器件的容量远远大于PAL和GAL,更适合做时序和组合逻辑电路的设计,不但集成度高,而且逐渐向低功耗发展,芯片的使用电压有5V、33V和25V几种,有的芯片外部是5V而内部的工作电压则是33V或25V。现在市场上FPLD的品种很多,使用较多的是ALTERA、XILINX和LATTICE这3个公司的产品,各公司都有不同型号的CPLD和FPGA产品,例如,XILINX的XC系列;ALTERA的EPLD系列、FPGA系列;LATTICE的ISPLSI、ISPGAL等。由于各个公司的FPLD结构不同,使用的装载电缆线是不一样的,设计软件也不同,但共同的特点是现场可编程逻辑器件FPLD都可以在系统进行编程加载程序,不需要使用专用的编程器,它们都是直接将实验系统和计算机的并行口连接,通过运行软件对芯片进行装载,在实验室中就可将大量的数字电路设计集成到一个大芯片中,实现系统的微型化和可靠性。目前工程设计人员通常都采用这种方法进行电路设计。1CPLD或EPLD芯片这类器件的使用特点是芯片一经上电加载即已完成编程,不必在每次上电时重新进行加载,也就是当程序烧入芯片后,只有下一次需要再修改程序时才需要对芯片重新进行加载,否则将不会改变先前所烧入的代码,类似于大的GAL芯片。例如,LATTICE的ISPGAL芯片可以在系统进行编程加载程序,也可以与该公司的ISPLSI芯片在同一个电路中加载程序。CPLD在结构上主要由可编程逻辑宏单元LMC(LOGICMACROCELL)围绕中心的可编程互连矩阵单元组成,其中LMC的逻辑结构比较复杂,并具有复杂的I/O单元互连结构,可以由用户根据设计的需要生成特定的电路结构,完成一定的功能。2FPGA芯片这类器件不像CPLD或EPLD,每次上电使用时不管是否改变程序都要对芯片进行加载。现在FPGA芯片的容量一般比CPLD或EPLD的容量要大得多,更适合于做较大系统的复杂设计。FPGA芯片通常包含3类可编程资源可编程的逻辑功能块、可编程I/O块和可编程的内部互连。可编程的逻辑功能块是实现用户功能的基本单元,它们通常排成一个阵列,遍布于整个芯片中;可编程I/O块完成芯片上的逻辑与外部封装管脚的接口,常围绕着阵列排列于芯片四周;可编程的内部互连包括各种长度的连接线段和一些可编程连接开关,它们将各个可编程逻辑块或I/O块连接起来,构成特定功能的电路。XILINX的XC系列器件采用的是现场可编程门阵列FPGA,现场可编程门阵列是一种类似门阵列的结构,它的基本单元以阵列的形式排列在芯片上,但它不像门阵列那样由连线掩膜确定其最终的逻辑功能,而是将规则的连线阵列也已做好,其逻辑功能由各连线节点的控制开关的通断来确定。这些节点的控制开关的值有各种不同的控制方法,如静态随机存储器控制(SRAM)、反熔丝(ANTIFUSEBASED)控制以及由快闪烁存储器(FLASH)控制等几大类。SRAM控制的FPGA器件是用静态随机存储器中存储的数值来控制芯片中可编程节点的通断,以实现芯片的设计功能。这种FPGA在使用时,需要在系统加电时首先进行功能初始化,将存储器的内容加载到芯片的控制器中。反熔丝控制的FPGA器件是用反熔丝单元来控制可编程器件内的可编程节点的通断,使芯片中每一部分具有应有的逻辑功能,以实现器件的设计功能。反熔丝单元是一个被动的两端器件,通常情况下处于开路状态,在施加充足的电压后,能够永久地导通。用于现场可编程器件的反熔丝其占用芯片面积非常小,速度也很高,这方面的性能几乎可以与门阵列相比。但这种FPGA在编程时需要专用的编程设备,而且芯片功能一经编程确定后,不能再修改,反熔丝控制的FPGA器件价格最低。FLASH控制的FPGA器件是用快闪烁存储器的数值来控制FPGA节点的通断,实现现场可编程目的。这种FPGA的工作特性与SRAMFPGA相似,但与SRAMFPGA相比,它的单元面积小。由于FLASH具有不挥发性,使用时不必在每次上电时都重新进行功能加载,所以使用是很方便的。12设计方法的发展传统的手工设计方法一般是根据系统的要求,首先画出系统的硬件流程图,再根据功能划分成不同的模块,设计过程一般从底层开始,先要选择具体的元器件,用所选择的元器件进行各功能模块的逻辑电路设计,手工画出一张张的电路原理图,根据原理图制作印刷电路板,每个功能模块都调试通过后,再把各个模块连接起来进行系统的调试。对整个系统的仿真、调试只能在完成硬件设计以后才能进行,系统设计中的问题在调试的后期才能发现,如果出现设计中没有考虑到的问题,就要再从底层重新设计,这样的设计周期一般较长。设计结果是若干张的电路原理图和信号的连接表,如果是一个大的系统,将是一大摞图纸,以后系统出现问题,查找修改起来都不直观。上述过程是从底层开始,并在已有的功能模块的基础上来搭建高层次的模块直至整个系统。因此这种电子系统的传统的设计方法称为是自底至上(BOTTOMUP)的设计。这里的底指的是设计树的末枝,设计过程必须从存在的基本单元模块出发,基本单元模块必须是已经设计成熟的单元,也可采用其他项目已开发好的标准单元。由于电子器件的更新换代,在现代数字系统设计中,现场可编程器件FPGA和CPLD的使用越来越广泛,与此同时基于大规模可编程逻辑器件的EDA(ELECTRONICDESIGNAUTOMATION)硬件解决方案(EDASOLUTION)也被广泛采用。这使得电子电路的设计方法也发生了根本性的变化,出现了电子电路设计自动化。计算机应用的普及,自然产生了计算机辅助设计(CAD)。最早的电子CAD软件仅仅是一些绘图软件,包括绘制电路原理图、绘制印刷电路板图、绘制集成电路芯片板图以及一些简单的数值计算等。当出现了自动设计、验证和自动布局布线工具后,这类软件称之为第一代的EDA软件。后来又出现了第二代的EDA软件,它包括逻辑综合、仿真以及“自顶向下”的设计等。近年来又出现了第三代的EDA软件,称为电子系统设计自动化ESDA,可以通过概念输入(框图、公式等)自动生成各种设计结果,包括ASIC芯片设计结果、电路原理图、PCB板图以及软件等,并且可以进行机电一体化设计。与传统的设计方法不同,现代电子工程师们设计系统的过程是首先描述系统,然后用EDA工具在计算机上进行系统级仿真,设计适合自己用的ASIC芯片,用通用和专用芯片构成系统,进行功能模拟和带时延的仿真,布PCB板,对PCB板进行仿真,最终生产调试成功。EDA,即电子设计自动化。所谓自动化是指利用计算机完成电子系统设计,现在已经逐渐成为电子系统的主要设计手段,尤其是采用可编程器件和软件仿真模拟方法的使用,给传统的电路设计方法带来了重大的变革,它使得设计工程师们从繁杂而零乱的工作中解放出来,而把着眼点放在电路的设计上,是一种节省时间而又高效率的现代设计理念。EDA技术以计算机为工具,设计者只需要完成对系统功能的描述,就可以由计算机软件进行处理,代替人来完成数字系统的逻辑综合、仿真模拟和布局布线等工作。其中模拟硬件电路在实际工作时的时序关系是相当重要的,因为系统设计上的错误通过仿真模拟波形时就可以发现,而不是等到线路板调试时才发现错误,即使是在线路板调试时又发现错误,在外部连接线已经固定的情况下,只要对内部的软件设计进行改进,就可达到修改设计方案的目的,这种方法比起传统的电路设计方法进步多了,修改设计如同修改软件一样方便。当今的硬件设计方法有几大优点一是设计方法由手工设计变为自动设计,可以大大提高设计效率和设计质量,缩短设计周期;二是在系统设计和各个过程中可分别进行仿真,保证了设计的正确性,使得设计能够一次成功;三是能够根据实际需要来自行设计ASIC芯片。可编程逻辑器件和EDA技术给硬件系统设计者提供了强有力的工具。如今,只要拥有一台计算机、一套相应的EDA软件和空白的可编程器件芯片,在实验室就可以完成数字系统的设计与生产。可以说,当今的数字系统设计离不开可编程器件和EDA设计工具。13层次化的设计与VHDL的应用1自顶向下(TOPDOWN)的设计方式一般来说,EDA解决方案是一种采用计算机自顶向下(TOPDOWN)的设计方式。这里的顶指的是设计树的树根,按照数字系统的功能描述,把系统划分为若干个功能模块,然后再把每个模块划分为不同的层次,由高层次到低层次逐步细化。这样的设计过程称之为自顶向下的设计方式。在底层设计时对逻辑进行必要的描述,并依赖特定的软件执行逻辑优化(LOGICOPTIMIZATION)与器件映射(DEVICEMAPPING),自顶向下设计的特点是每一层次划分时都要对某些目标进行优化,这些目标包括工作速度、芯片面积和芯片成本等。最后再使用由各芯片生产厂商提供的编译器执行布线(ROUTE)和网单优化(NETLISTOPTIMIZATION)。而直接采用原始逻辑图或布尔方程输入进行电路设计虽然对于简单的逻辑可以获得非常有效的结果。但是对于复杂的系统设计,应用它们就很容易产生错误,而必须依靠一种高层的逻辑输入方式,这样就产生了硬件描述语言HDL(HARDWAREDESCRIPTIONLANGUAGE)。所谓硬件描述语言,就是对实际的硬件设计用语言的方式来描述,能够把复杂的电路设计用形象化的语言方式表示出来,可以描述硬件电路的功能,信号连接关系以及定时关系的语言,它能比电路原理图更能有效地表示电路的特征。利用硬件描述语言编程来表示逻辑器件及系统硬件的功能和行为,是该设计方法的一个重要特征。硬件描述语言有HDL、AHDL、VERILOGHDL和VHDL等。VHDL语言的全称是“超高速集成电路硬件描述语言”(VERYHIGHSPEEDINTEGRATEDCIRCUITHARDWAREDESCRIPTIONLANGUAGE)属于硬件描述语言中的一种,对系统硬件的描述功能很强而语法规范又比较简单。其中符合IEEE1076标准的VHDL的应用成为EDA解决方案中的首选。VHDL这种行为描述性语言将被广泛应用到新一代EDA硬件设计方案中,因此对VHDL的应用成为EDA解决方案的核心,更是整个电子逻辑系统设计的核心。2VHDL语言的应用VHDL语言源于美国政府于1980年开始启动的超高速集成电路(VERYHIGHSPEEDINTEGRATEDCIRCUITS,VHSIC)计划。在这一计划的执行过程中,专家们认识到需要有一种标准的语言来描述集成电路的结构和功能。这样,VHSIC的硬件描述语言(VHSICHARDWAREDESCRIPTIONLANGUAGE),即VHDL诞生了。很快,这一标准被美国电气和电子工程师协会(IEEE)所承认。VHDL语言作为高级硬件行为描述型语言,如今已经广泛被应用到FPGA/CPLD和ASIC中的设计。严格地讲,VHDL是一种用来描述数字逻辑系统的“编程语言”。它通过对硬件行为的直接描述来实现对硬件的物理实现,代表了当今硬件设计的发展方向。VHDL是为了满足逻辑设计过程中的各种需求而设计的。第一,它是可以用来描述逻辑设计的结构,比如逻辑设计中有多少个子逻辑,而这些子逻辑又是如何连接的。除此之外,VHDL并不十分关心一个具体逻辑依靠何种方式实现,而是把开发者的精力集中到逻辑所实现的功能上。第二,VHDL采用类似高级语言的语句格式完成对硬件行为的描述,具备更强的模块化能力,并拥有良好的可读性以及程序的移植性。另外,VHDL淡化状态机,与或表达式等早一代硬件描述语言中的元素,用更类似于高级语言的表达式取代。这些也是为什么把VHDL称为“编程语言”的原因。第三,VHDL给出逻辑的模拟与调试为设计工作提供了最大的空间。VHDL调试的过程是相当灵活的一方面可以使用传统的调试方法,比如适用传统的波形激励或编写测试向量;另一方面,可以使用一些VHDL原码调试器,这类调试器可以大大加快VHDL程序调试的速度,因为它可以像调试软件一样单步跟踪调试每一条语句,并且可以设置断点,观察内部变量等。这些功能是传统的调试仿真方法所不具备的。这种调试器比较著名的有ALDEC的ACTIVEHDL。拥有高效率的生成代码,能够节省大量的资源。甚至不必编写任何测试向量便可以进行源代码级的调试。而且,设计者可以非常方便地比较各种方案之间的可行性及其优劣而不需做任何实际的电路实验。鉴于VHDL具有以上诸多优点,只要开发者具备一定的高级语言程序设计基础,拥有PASCAL、C等计算机高级语言的基础,同时又了解一些基本数字电路的设计方法,在此基础上来学习VHDL程序设计应该是比较容易的,可以轻松地掌握VHDL使硬件工作软件化。现代电子系统设计人员应该把VHDL语言作为一种基础知识来学习,并要求能够熟练地使用EDA的设计工具。在EDA解决方案中应用VHDL有助于缩短数字系统的开发周期。但还应该注意,除了靠编写VHDL程序简化逻辑之外,还需要选择合理的HDLSYNTHESIS。不同公司的HDLSYNTHESIS所支持的语法并不相同,而且生成的代码效率也不同。经实验对比,相同的程序经过不同的编译器编译,芯片资源的消耗相差高达10。另外,由于知识产权和专利保护问题,目前国际上尚无统一的集成化开发工具可以完成从逻辑输入到下载所需的全部工作,这也给VHDL在EDA解决方案中的广泛应用带来了一定的困难。但是总的来讲,广大厂商均遵循VHDL87这一通用标准并互相提供良好的软件接口,在某种程度上可以缓解该矛盾。随着VHDL93标准的广泛应用以及第二代可编程逻辑器件的推出,VHDL必将在未来的EDA解决方案中发挥不可替代的作用。14本课题的提出与意义就目前而言,实现地铁自动售票系统的控制方法很多,可以用可编程序控制器PLC、单片机等方案来实现。但是这些控制方法的功能修改及调试都需要硬件电路的支持,在一定程度上增加了功能修改及系统调试的困难。而FPGA(FIELDPROGRAMMABLEGATEARRAY)是专用集成电路(ASIC)中集成度最高的一种,用户可对FPGA内部的逻辑模块和I/O模块重新配置,以实现用户的逻辑。同时,与之相配套的VHDL(VERYHIGHSPEEDINTEGRATEDCIRCUITHARDWAREDESCRIPTIONLANGUAGE)语言,是一种用来描述数字逻辑系统的编程语言,采用类似高级语言的语句格式完成对硬件行为的描述。VHDL的优越性,成为现在硬件设计师的首选语言。此外,兼容VHDL语言的软件也越来越多,也越来越实用。MAXPLUSII正是其中的佼佼者。MAXPLUSII(MULTIPLEARRAYMATRIXANDPROGRAMMABLELOGICUSERSYSTEM)是美国ALTERA公司自行设计的一种软件工具,它具有原理图输入和文本输入(采用硬件描述语言)两种输入手段,利用该工具所配备的编辑、编译、仿真、综合、芯片编程等功能,将设计电路图或电路描述程序变成基本的逻辑单元写入到可编程的芯片中(如FPGA芯片),即可做成ASIC芯片。本课题正是基于以上现状提出的,有着重要的意义。15本课题研究内容本课题的主要研究目标是针对于地铁自动售票系统的核心控制部分进行研究和设计,主要内容包括1首先对于目前比较流行的电路设计的VHDL语言进行了相关介绍主要介绍了VHDL的起源,VHDL语言的特点,VHDL的设计流程,以及VHDL程序的基本结构2其次介绍了不ALTERA公司推出的第三代PLD开发系统MAXPLUSII主要包括MAXPLUSII开发系统的特点,MAXPLUSII开发系统的功能以及MAXPLUSII的设计过程3最后对于地铁自动售票系统的核心控制部分的功能进行分析,采用状态机的设计方法,运用VHDL语言编程并进行了相关波形仿真,通过仿真验证了地铁售票系统的控制部分功能的正确性在上述工作中,对地铁售票系统核心控制部分的设计以及运用VHDL语言编程所进行的逻辑设计和仿真是本论文的主要工作。第二章VHDL语言介绍21什么是VHDLVHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为ANSI/IEEE的标准(IEEESTD10761987)。1993年更进一步修订,变得更加完备,成为ANSI/IEEE的ANSI/IEEESTD10761993标准。现在,VHDL和VERILOG作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言在新的世纪中,VHDL和VERILOG语言将承担起大部分的数字系统设计任务VHDL的英文全写是VHSIC(VERYHIGHSPEEDINTEGRATEDCIRCUIT)HARDWAREDESCRIPTIONGLANGUAGE翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。22VHDL语言的特点VHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计,支持结构、数据流、行为三种描述形式的混合描述,覆盖面广,抽象能力强,因此在实际应用中越来越广泛。VHDL的主要特点有作为硬件描述语言的第一个国际标准,VHDL具有很强的可移植性。具有丰富的模拟仿真语句和库函数,随时可对设计进行仿真模拟,因而能将设计中逻辑上的错误消灭在组装之前,在大系统的设计早期就能查验设计系统功能的可行性。设计层次较高,用于较复杂的计算时,能尽早发现存在的问题,从而缩短设计周期。VHDL的设计不依赖于特定的器件,方便了工艺的转换。支持大规模设计的分解和已有设计的再利用。对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动地把VHDL描述设计转变成门级网表。VHDL用源代码描述来进行复杂控制逻辑的设计,灵活又方便,同时也便于设计结果的交流、保存和重用。23VHDL的设计流程应用VHDL语言进行电子设计,首先要了解基本的设计流程。在EDA解决方案中采用VHDL要经过的流程如图21所示。从图21可以看出,在分析系统指标后,就进入了设计阶段,首先是设计输入,可以采用的输入方式有VHDL语言、VHDL语言与逻辑图混合输入或采用逻辑图输入,这一步通常都使用芯片生产商提供的开发工具,有关这方面的内容将在后面介绍。接下来是对所输入的源文件进行编译,即HDLSYNTHESIS。通常称为合成或逻辑合成,这一步通常由三个过程组成,分别是HDL语言合成(LANGUAGESYNTHESIS或HDLCOMPILATION)、逻辑优化(OPTIMIZATION)、目标映射(TECHNOLOGYMAPPING)。前两个过程很好理解,最后一步是为了适应不同公司的编译器而生成EDIF(ELECTRONICDESIGNINTERCHANGEFORMAT)的中间文件,也有的生成AHDL、DSL、QDIF、XNF等内部网单描述文件。有些公司的软件自带编译器,而也有些公司的软件不带编译器,这时需要使用第三方软件,比较著名的有EXEMPLAR公司的LEONARDOSPECTRUM和SYNPLICITY公司的SYNPLIFY等。一般这类工具都采用BEHAVIOREXTRACTINGSYNTHESISTECHNOLOGY(BEST)和SYNTHESISCONSTRAINTSOPTIMIZATIONENVIRONMENT(SCOPE),这两种技术可以提高VHDL逻辑合成的效率和可靠性。另外,这类工具在生成EDIF文件的同时还生成VHDL格式的网单,可以用于对逻辑功能调试(FUNCTIONALSIMULATOR)。这里的逻辑功能调试也就是图中的功能仿真,这是在芯片装载程序前的功能仿真模拟,它仅仅验证逻辑的正确性。在一般的EDA解决方案中,这一步一般采用编写测试向量或加激励波形的方法,只能对逻辑的输出信号进行模拟,而对于一些重要的内部信号则无能为力了。在采用VHDL后可以借助HDLSYNTHESIS生成的VHDL格式的内部网单使用一些特殊的调试器对VHDL源程序进行类似于高级语言调试的单步跟踪调试。这样不仅可以观察重要的内部信号,而且可以清楚地看到程序执行的流程。一般还要经过时序模拟(TIMINGSIMULATIOR)也就是图21中的时序分析,在这里可以对电路的工作频率、工作延时做定性的模拟,虽然这也还会跟实际情况有一定的差距,但还是建议开发者要进行这一步模拟。图21VHDL的设计流程对于这些步骤,一般均可借助由芯片生产商提供的开发软件完成。因此一定要在这里将各项功能都调试正确,接下来就是对芯片进行装载程序,在这里要用各个芯片厂商提供的编译器来生成可用于装载(DOWNLOAD)的文件进行装载。例如,ALTERA公司的软件生成的装载文件是POF,用软件菜单中的PROGRAM命令装载芯片;LATTICE公司的软件生成的装载文件是JED,用软件菜单中的FITTER命令装载芯片。每个公司的开发工具都具备这些功能。最后是对装载的芯片进行系统调试以验证设计的正确性。如果其中哪一步出现错误,都要重复前面的步骤,直到最终产品调试通过。24VHDL程序的基本结构一个VHDL程序由5个部分组成,包括实体(ENTITY)、结构体(ARCHITECTURE)、配置(COXNFIGURATION)、包(PACKAGE)和库(LIBRARY)。实体和结构体两大部分组成程序设计的最基本单元。图22表示的是一个VHDL程序的基本组成。配置是用来从库中选择所需要的单元来组成该系统设计的不同规格的不同版本,VHDL和VERILOGHDL已成为IEEE的标准语言,使用IEEE提供的版本。包是存放每个设计模块都能共享的设计类型、常数和子程序的集合体。库是用来存放已编译的实体、结构体、包和配置。在设计中可以使用ASIC芯片制造商提供的库,也可以使用由用户生成的IP库。图22VHDL程序的基本组成第三章MAXPLUSII软件介绍31MAXPLUSII简介MAXPLUSII或写成MAXPLUS2,或MP2是ALTERA公司推出的的第三代PLD开发系统ALTERA第四代PLD开发系统被称为QUARTUSII,主要用于设计新器件和大规模CPLD/FPGA,ALTERA是世界上最大可编程逻辑器件的供应商之一。使用MAXPLUSII的设计者不需精通器件内部的复杂结构。设计者可以用自己熟悉的设计工具(如原理图输入或硬件描述语言)建立设计,MAXPLUSII把这些设计转自动换成最终所需的格式。其设计速度非常快。对于一般几千门的电路设计,使用MAXPLUSII,从设计输入到器件编程完毕,用户拿到设计好的逻辑电路,大约只需几小时。设计处理一般在数分钟内内完成。特别是在原理图输入等方面,MAXPLUS2被公认为是最易使用,人机界面最友善的PLD开发软件,特别适合初学者使用,其软件操作界面如图31所示。图31MAXPLUSII软件操作界面32MAXPLUS开发系统的特点1开放的界面MAXPLUS支持与CADENCE,EXEMPLARLOGIC,MENTORGRAPHICS,SYNPLICTY,VIEWLOGIC和其它公司所提供的EDA工具接口。2与结构无关MAXPLUS系统的核心COMPLIER支持ALTERA公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX7000、MAX5000和CLASSIC可编程逻辑器件,提供了世界上唯一真正与结构无关的可编程逻辑设计环境。3完全集成化MAXPLUS的设计输入、处理与较验功能全部集成在统一的开发环境下,这样可以加快动态调试、缩短开发周期。4丰富的设计库MAXPLUS提供丰富的库单元供设计者调用,其中包括74系列的全部器件和多种特殊的逻辑功能(MACROFUNCTION)以及新型的参数化的兆功能(MAGEFUNCTION)。5模块化工具设计人员可以从各种设计输入、处理和较验选项中进行选择从而使设计环境用户化。6硬件描述语言(HDL)MAXPLUS软件支持各种HDL设计输入选项,包括VHDL、VERILOGHDL和ALTERA自己的硬件描述语言AHDL。7OPENCORE特征MAXPLUS软件具有开放核的特点,允许设计人员添加自己认为有价值的宏函数。33MAXPLUS功能简介1原理图输入(GRAPHICEDITOR)MAXPLUSII软件具有图形输入能力,用户可以方便的使用图形编辑器输入电路图,图中的元器件可以调用元件库中元器件,除调用库中的元件以外,还可以调用该软件中的符号功能形成的功能块图形编辑器窗口见图32。图32图形编辑器窗口2硬件描述语言输入(TEXTEDITOR)MAXPLUSII软件中有一个集成的文本编辑器,该编辑器支持VHDL,AHDL和VERILOG硬件描述语言的输入,同时还有一个语言模板使输入程序语言更加方便,该软件可以对这些程序语言进行编译并形成可以下载配置数据,文本编辑器窗口见图33。3波形编辑器WAVEFORMEDITOR在进行逻辑电路的行为仿真时,需要在所设计电路的输入端加入一定的波形,波形编辑器可以生成和编辑仿真用的波形(SCF文件),使用该编辑器的工具条可以容易方便的生成波形和编辑波形。波形编辑器窗口如图34所示。使用时只要将欲输入波形的时间段用鼠标涂黑,然后选择工具条中的按钮,例如,如果要某一时间段为高电平,只需选择按钮”1”。还可以使用输入的波形WDF文件经过编译生成逻辑功能块,相当于已知一个芯片的输入输出波形,但不知是何种芯片,使用该软件功能可以解决这个问题,设计出一个输入和输出波形相同CPLD电路。图33文本编辑器窗口4管脚(底层)编辑窗口FLOORPLANEDITOR该窗口用于将已设计好逻辑电路的输入输出节点赋予实际芯片的引脚,通过鼠标的拖拉,方便的定义管脚的功能。管脚(底层)编辑窗口见图35。5自动错误定位在编译源文件的过程中,若源文件有错误,MAXPLUS2软件可以自动指出错误类型和错误所在的位置。6逻辑综合与适配该软件在编译过程中,通过逻辑综合LOGICSYNTHESIZER和适配FITTER模块,可以把最简单的逻辑表达式自动的吻合在合适的器件中。7设计规则检查图34波形编辑器窗口图35管脚(底层)编辑窗口选取COMPILEPROCESSINGDESIGNDOCTOR菜单,将调出规则检查医生,该医生可以按照三种规则中的一个规则检查各个设计文件,以保证设计的可靠性。一旦选择该菜单,在编译窗口将显示出医生,用鼠标点击医生,该医生可以告诉你程序文件的健康情况。见图36。8多器件划分PARTITIONER如果设计不能完全装入一个器件,编译器中的多器件划分模块,可自动的将一个设计分成几个部分并分别装入几个器件中,并保证器件之间的连线最少。9编程文件的产生编译器中的装配程序ASSEMBLER将编译好的程序创建一个或多个编程目标文件EPROM配置文件(POF)例如,MAX7000系列SRAM文件(SCF)例如,FLEX8000系列的配置芯片EPROMJEDEC文件JED十六进制文件HEX文本文件TTF串行BIT流文件SBF10仿真当设计文件被编译好,并在波形编辑器中将输入波形编辑完毕后,就可以进行行为仿真了,通过仿真可以检验设计的逻辑关系是否准确图36规则检测医生11分析时间ANALYZETIMING该功能可以分析各个信号到输出端的时间延迟,可以给出延迟矩阵和最高工作频率见图37和图38。12器件编程当设计全部完成后,就可以将形成的目标文件下载到芯片中,实际验证设计的准确性34MAXPLUS设计过程1设计流程使用MAXPLUS软件设计流程由以下几部分组成。如图39所示。1设计输入可以采用原理图输入、HDL语言描述、EDIF网表输入及波形输入等几种方式。2编译先根据设计要求设定编译参数和编译策略,如器件的选择、逻辑综合方式的选择等。然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合和器件适配,并产生报告文件、延时信息文件及编程文件,供分析仿真和图37延迟矩阵图38最高工作频率编程使用。3仿真仿真包括功能仿真、时序仿真和定时分析,可以利用软件的仿真功能来验证设计项目的逻辑功能是否正确。4编程与验证用经过仿真确认后的编程文件通过编程器(PROGRAMMER)将设计下载到实际芯片中,最后测试芯片在系统中的实际运行性能。在设计过程中,如果出现错误,则需重新回到设计输入阶段,改正错误或调整电路后重复上述过程。图310是MAXPLUS编译设计主控界面,它显示了MAXPLUS自动设计的各主要处理环节和设计流程,包括设计输入编辑、编译网表提取、数据库建立、逻辑综合、逻辑分割、适配、延时网表提取、编程文件汇编(装配)以及编程下载9个步骤。设计输入编译在系统测试编程修改设计仿真与定时分析图39开发流程图2设计步骤1)输入项目文件名FILE/PROJECT/NAME2)输入源文件图形、VHDL、AHDL、VERLOG和波形输入方式MAXPLUS/GRAPHICEDITOR;MAXPLUS/TEXTEDITOR;MAXPLUS/WAVEFORMEDITOR3)指定CPLD型号ASSIGN/DEVICE4)设置管脚、下载方式和逻辑综合的方式ASSIGN/GLOBALPROJECTDEVICEOPTION,ASSIGN/GLOBALLOGICSYNTHESIS5)保存并检查源文件FILE/PROJECT/SAVESIGNALPRESENT_STATE,NEXT_STATESTATES主控时序逻辑部分任务是负责状态机运转和在外部时钟驱动下实现内部状态转换的进程。时序进程的实质是一组触发器,因此,该进程中往往也包括一些清零或置位的输入控制信号,如RESET信号。主控组合逻辑部分任务是根据状态机外部输入的状态控制信号(包括来自外部的和状态机内部的非进程的信号)和当前的状态值CURRENT_STATE来确定下一状态NEXT_STATE的取值内容,以及对外部或对内部其他进程输出控制信号的内容。辅助逻辑部分辅助逻辑部分主要是用于配合状态机的主控组合逻辑和主控时序逻辑进行工作,以完善和提高系统的性能。无论与基于VHDL的其它设计方案相比,还是与可完成相似功能的CPU相比,状态机都有其难以逾越的优越性,它主要表现在以下几方面由于状态机的结构模式相对简单,设计方案相对固定,特别是可以定义符号化枚举类型的状态,这一切都为VHDL综合器尽可能发挥其强大的优化功能提供了有利条件。而且,性能良好的综合器都具备许多可控或不可控的专门用于优化状态机的功能。状态机容易构成性能良好的同步时序逻辑模块,这对于对付大规模逻辑电路设计中令人深感棘手的竞争冒险现象无疑是一个上佳的选择,加之综合器对状态机的特有的优化功能,使的状态机解决方案的优越性更为突出。状态机的VHDL设计程序层次分明,结构清晰,易读易懂,易排错和修改。在高速运算和控制方面,状态机更有其巨大的优势。由于在VHDL中,一个状态机可以由多个进程构成,一个结构体中可以包含多个状态机,而一个单独的状态机(或多个并行运行的状态机)以顺序方式的所能完成的运算和控制方面的工作与一个CPU类似。就运行速度而言,状态机状态变换周期只有一个时钟周期,而且,由于在每一状态中,状态机可以完成许多并行的运算和控制操作,所以,一个完整的控制程序,即使由多个并行的状态机构成,其状态数也是十分有限的。因此有理由认为,由状态机构成的硬件系统比CPU所能完成同样功能的软件系统的工作速度要高出两个数量级。就可靠性而言,状态机的优势也是十分明显的。首先是由于状态机的设计中能使用各种无懈可击的容错技术;其次是当状态机进入非法状态并从中跳出所耗的时间十分短暂,通常只有2个时钟周期,约数十个NS,尚不足以对系统的运行构成损害应用VHDL设计状态机的具体步骤如下(1)根据系统要求确定状态数量、状态转移的条件和各状态输出信号的赋值,并画出状态转移图;(2)按照状态转移图编写状态机的VHDL设计程序;(3)利用EDA工具对状态机的功能进行仿真验证。经过综合比较,决定采用状态机来实现本系统的设计,这样不仅思路很清楚而且可读性也非常强利用状态机实现售票功能,仅需要一个模块,避免了考虑各模块相连时的控制问题因此需要首先把整个系统的所有状态都给罗列出来,然后实现每个状态的内容,最后再利用一些变量将各个状态连接起来,实现整个系统的基本功能43状态机设计根据以上的分析,地铁售票系统可以分为以下五个状态(1)SELSTATION选站状态(2)SELTICKET选票状态(3)INPUTCOIN投币状态(4)TICKETOUT出票状态(5)GIVECHANGE找零状态而且系统每个状态完成以下功能等待,选站状态在该状态用户完成选站功能,选站完成后,TP不为零,自动进入选票状态。当无人使用时,系统也停留在该状态,等待下一个用户使用。选票状态在该状态用户完成选票功能,选票完成后,TMONEY不为零,自动进入投币状态。按CANCELKEY键可取消操作,系统回到等待、选站状态。投币状态在该状态用户可投币,可多次投钱,可同时投硬币和纸币,但不可同时投一个以上硬币或一张以上纸币。用户投币后,在该状态系统内部完成计算投币总额的功能,并将计算结果跟所需钱数比较,若钱不够,回到投币状态,也可按CANCELKEY键将钱退出;若钱正好投够,进入出票状态出票结束后,若钱有多余,则自动进入找钱状态。出票状态在该状态完成出票功能,票每周期出一张,直到出够为止。票全部出完以后,自动进入出钱状态。找零状态在该状态完成出币功能,若余额不为零,继续在此状态出币,若余额已为零,系统回到等待、选站状态。以上所有功能按时钟周期进行选择票数投币选择站名称余额找零出票TMONEY0TP0CANCELKEY1EN1CANCELKEY1NUM0PMONEYTMONEY000001010100给出TP,TMONEY,PMONEY,NUM,EN几个变量,控制状态间的转移。根据TP判断是否完成选站,根据TMONEY判断是否完成选票,根据PMONEY判断投币是否足够,根据NUM判断出票是否足够,根据EN判断找钱是否结束设计中输入有CLK,RESET,STATION,TN,LETTUCE,COIN,CANCELKEY其中CLK是时钟周期信号,RESET为系统复位信号,STATION是乘客所选的出站号,程序中一共设置了16个站,对应的票价为2元和4元0代表本站,110站票价为2元,1115站票价为4元而TN表示乘客所选的票数,为方便设计,乘客一次购车票数限制在3张以内LETTUCE表示乘客投入的纸币,COIN表示乘客投的硬币,CANCELKEY是乘客在选票和投币期间用来取消操作的设计中输出有TOUT,MOUT,MONEYINPUTALARM,STATE其中TOUT表示出票,周期数即是出票数,MOUT表示找出的零钱,若所投钱币总额恰好为车票总额,则MOUT一直为0,MONEYINPUTALARM表示所投金额不足时发出的警报,当继续投币至足额时MONEYINPUTALARM会自动恢复为0,交易正常进行STATE是用来标号各个状态的加这个输出主要是考虑到调试程序时能更方便地观察到状态之间的转换,更容易发现问题,调试程序44系统设计流程图经过分析,整个系统的流程图设计如图42所示图41状态转移图图42系统流程图系统上电后首先对于整个系统进行进行复位,处于等待乘客选站状态当乘客选择了出站名之后,系统内部设定相应的票价2元和4元然后系统进入选择购买票数同时计算出票价总额选票完成后系统转到投币状态,系统对于乘客所投入的硬币5角和1元和纸币1元,2元,5元,10元进行识别,在每次投币结束后累加投币总额,然后判断所投钱币是否足够,如果不足继续停留在投币状态如果投币足够,系统进入到出票状态,每个周期出一张票,出票结束后进行余额找零余额找零按照从大到小10元,5元,2元,1元,5角的原则逐额进行退钱,找零结束系统返回到初始等待选站状态购票过程中,在选择了站点以后,乘客可以按下取消键CANCELKEY1,系统返回等待选站状态,可以进行重新选站或结束本次操作在投币过程中,如果所投钱币未达到票价总额,乘客按下取消键后CANCELKEY1,系统转到余额找零状态逐额找零,找零结束后,重新回到等待选站状态43程序仿真波形程序编制完成后,对于系统的各项功能分别进行以下调试及仿真1图43显示系统处于等待选站状态的波形系统开机上电后首先进行复位RESET1,所有输出均为零,系统处于等待选站状态STATE000图43等待选站状态的波形(2)图44显示选站未选票的波形选择出站8STATION8,票价为2元TP2,系统进入选票状态STATE001所有输出仍为零图44选站未选票的波形图45显示选站和选票都完成的波形选择出站8STATION8和2张票TN2后,车票总额为4元TMONEY4,系统进入投币状态STATE010,同时MONEYINPUTALARM1,提醒进行投币图45选站和选票都完成的波形通过以上各波形的仿真结果,可以看出本系统的设计基本实现了课题所要求的各项功能售票系统上电后首先进行复位RESET1,然后等待乘客选择站点STATION015,票价为2元和4元和票数TN03。在选站和选票完成后,系统输出报警信号MONEYINPUTALARM1,提醒乘客进行投币。之后系统对于乘客投入的硬币和纸币进行识别,硬币的识别范围是5角和1元的硬币COIN1,2,纸币的识别范围是1元、2元,5元,10元LETTUCE1,2,5,10,乘客可以连续多次投入钱币,系统自动进行累加。当投入的钱币未达到所需金额时,报警信号仍然继续维持MONEYINPUTALARM1,提醒钱不够,需要继续投入钱币。当投入的钱币达到所需金额时,报警信号取消MONEYINPUTALARM0,售票机自动出票TOUT的周期数为出票数。如果投入的钱币有余,系统将按照从大到小的原则依此找出余额MOUT。本次交易结束,系统自动进入选站状态等待下一次的交易。在投币期间,如果乘客按取消键CANCELKEY1取消本次操作,钱币自动退出。同时在选票期间,乘客可以按取消键CANCELKEY1重新选站或终止操作。第五章结束语对于本论文基本实现了课题所要求的地铁售票机的各种功能,包括纸币和硬币两个进币口,可识别的纸币和硬币的范围,连续投币问题,出票和找零钱,还有投币期间取消键的功能。除此之外,本模拟售票系统还有其它的一些优越性。第一,在设计时还考虑到了选站的问题。即把站台分为了16个不同的站点,选择不同的站对应的票价也可能不一样。这样就更贴近现实生活中的地铁售票系统。第二,在投入投币孔中的金额未达到票价总额时,系统将会报警,即提醒乘客钱未投够。乘客可以选择继续投币,若足额系统的报警将会消失,照常出票找零或选择按下取消键取消操作,则所投入的金额会全部退出,此次操作取消,系统自动回到选站状态。第三,本程序采用状态机的原理进行编程,可读性很强。本课题只是给出了波形仿真结果,但是在EDA设计的过程中,这仅仅只是理论方面的有关研究,随之还有将理论研究的结果运用于实际,即将程序下载到FPGA中,在实际的电路中进行测定,看它是否实现了所要求的逻辑。这也是EDA设计的必须步骤。由此可见,本课题的研究是不完整的。此外还有其他的一些不足,如代码结构有些不合理,扩展性不强,等等。附录程序源代码及解释LIBRARYIEEEUSEIEEESTD_LOGIC_1164ALLUSEIEEESTD_LOGIC_UNSIGNEDALLENTITYAUTOTICKETSELLISPORTRESETINSTD_LOGIC系统复位信号CLKINSTD_LOGIC系统时钟CANCELKEYINSTD_LOGIC取消操作键STATIONINSTD_LOGIC_VECTOR3DOWNTO0出站名TNINSTD_LOGIC_VECTOR1DOWNTO0所购票数COININSTD_LOGIC_VECTOR1DOWN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学生活动课件
- 2025关于外籍员工合同范本
- 电机电器复习试题附答案
- 特殊教育专业团队人员服务与合作及学校实务讨论
- 2025至2030中国婴儿爽身粉行业市场发展现状及前景趋势与投资风险报告
- 如家酒店管理问题分析
- 子洲天然气综合利用存储调峰液化项目工艺管道安装施工技术方案
- 奇妙的节奏说课课件
- 质量资料管理培训会
- 咸宁2025年湖北嘉鱼县事业单位招聘180人笔试历年参考题库附带答案详解
- 2024-2020年上海高考英语作文试题汇编 (解读及范文)
- 边坡复绿施工方案
- 消防安全例会制度与流程
- 2024年春季学期建筑构造#期末综合试卷-国开(XJ)-参考资料
- 吊车起重吊装专项施工方案
- 定制家具工装合同模板
- 气压传动课件 项目七任务二 H400型加工中心气动换刀系统
- 云南省普通高中学生综合素质评价方案
- 数学家华罗庚课件
- 西藏事业单位统一招聘考试真题
- 合同合伙人协议书范本电子版
评论
0/150
提交评论