• 600.00 KB
  • 2022-04-22 13:42:49 发布

基于VHDL的自动售货机设计.doc

  • 92页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'基于VHDL的自动售货机设计 燕山大学毕业设计(论文)任务书学院:信息科学与工程学院系级教学单位:光电子工程系学号学生姓名专业班级0题目题目名称基于VHDL的自动售货机设计题目性质1.理工类:工程设计(√);工程技术实验研究型();理论研究型();计算机软件型();综合型()2.文管理类();3.外语类();4.艺术类()题目类型1.毕业设计(√)2.论文()题目来源科研课题()生产实际()自选题目(√)主要内容分析自动售货机的功能,完成相关功能模块的划分,用VHDL语言对各个底层模块的功能进行描述最后生成顶层模块,最后用MAX+plusII对各个模块进行编译及波形仿真分析。基本要求1.能够独立检索相关文献并且能综合分析文献;2.查阅相关书籍和资料,学习相关设计方案并通过对自动售货机的功能分析掌握其组成原理的分析方法和设计方法。3.掌握VHDL硬件描述语言,按照设计方案完成各模块的程序设计,并进行波形仿真正确阐述仿真结果。4.独立撰写论文,能根据要求和内容编写出合格的毕业论文。参考资料1姜立东.VHDL语言程序设计及应用.北京:北京邮电大学出版社,20042李洋.现代电子设计与创新.北京:中国电力出版社,20073王金明,周顺.数字系统设计与VHDL.北京:电子工业出版社,20104(美)JamesR,ArmstrongF,GailGray.VHDLDesignRepresentationandSynthesis.北京:机械工业出版社,2003周次第1~3周第4~6周第7~10周第11~13周第14~16周应完成的内容课题选定,调研、收集资料,形成初步思路。建立系统基本结构,对整个程序流程进行规划。用VHDL语言对各个模块进行程序编写与调试工作。仿真结果归纳整理,撰写毕业设计论文初稿。完成论文,准备答辩。指导教师:职称:讲师2013年3月22日系级教学单位审批:年月日 摘要摘要随着科学技术的飞速发展和市场的不断繁荣,各种投币式自动售货及服务机具已经风靡世界发达国家。这些采用现代电子技术和机电技术的自动服务设施,给人们的日常生活带来了极大的方便。VHDL语言最初是由美国国防部开发出来用来提高设计的可靠性和缩减开发周期的一种设计语言。目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。本文介绍了VHDL的特点和应用,以自动售货机为例,详细说明了其实现过程。本文使用VHDL描述自动售货机各模块的结构、行为、功能和接口并用MAX+plusII仿真。通过定义售货过程的各个状态以及各个状态之间的转换从而实现了自动售后机的选择多个商品,投掷钱币,找零退币,显示状态,多次交易等功能。给出了各个模块的源程序以及模块之间连接图,并通过仿真验证做出必要的分析。仿真结果说明本次设计能满足自动售货机所要求的功能,从而实现了电路设计的自动化和智能化。关键词 自动售货机;VHDL;EDA;MAX+plusIII 燕山大学本科生毕业设计(论文)AbstractWiththerapiddevelopmentofscienceandtechnologyandtheincreasingflourishofthemarket,allkindsofcoin-operatedvendingandserviceequipmenthassweptthedevelopedcountriesoftheworld.Theautomaticservicewitchusemoderntechnology,electronictechnologyandelectromechanicalfacilitieshasbroughtgreatconveniencetothepeople"sdailylives.VHDLlanguageoriginallydevelopedbytheU.S.DepartmentofDefensefortheU.S.militarytoimprovedesignreliabilityandreducethedevelopmentcycleusingasmallerrangeofdesignlanguage.MostEDAtoolssupportalmostallVHDL,VHDLwhichiswidelyusedinthefurtherpromotionandlaidthefoundation.ThisarticleintroducesthecharacteristicsandapplicationofVHDL,withaexampleofdesigningvendingmachines,describesdetailedlytheimplementationprocess.ThisarticleusesVHDLlangaguedescribedthestructure,behavior,functionsandinterfacesofeachmoduleswithMAX+plusIIanditssimulation.Bydefiningtherespectivestatesoftheprocessandthetransitionsbetweenthevariousstatesinordertoachievethefunctionsofthevendingmachinethatisselectmultipleitems,throwingcoins,coinsgiveback,displaystate,multipletransactionsandothers.Providedthecodeofeachmoduleandconnectiondiagrambetweenthemodules,andmakethenecessaryanalysisbysimulationandverifing.Simulationresultsshowthatthisdesignaccordswiththerequiredfunctionsofthevedingmachines,whitchachievedautomationandintelligentaofthecircuitdesign.Keywords vendingmachine;VHDL;EDA;MAX+plusIII III 第1章绪论第1章绪论1.1课题背景自动售货机是能根据投入的钱币自动付货的机器。自动售货机是商业自动化的常用设备,它不受时间、地点的限制,能节省人力、方便交易。是一种全新的商业零售形式,又被称为24小时营业的微型超市。能分为三种:饮料自动售货机、食品自动售货机、综合自动售货机。随着科技的发展以及人民生活水平的提高,人们需求一种全新的购物方式,这种方式不受人力时间的限制可随时随地更快捷方便地购买商品,自动售货机正能满足人们的这种需求。如今,在机场、地铁、商场、公园等客流较大的场所,不难发现自动售货机的身影。顾客只要插人几元的纸币或硬币,就可以方便地买到诸如饮料、口香糖等小东西。作为一种前卫的零售方式,自动售货机受到了喜欢追逐时尚的年轻人的欢迎。自动售货机具有技术含量高、销售方式新、市场潜力大、商品货真价实等优点,决定了它广阔的发展前景。而且,它与电子购物等新型消费方式相通,能创造巨大的商机,研究自动售货机是非常有价值的。随着科技的发展和社会的进步,自动化商业机械有了越来越广泛的应用,自动售货机作为自动化商业机械的代表被广泛用于公共场所自动售货,给人们的生活带来了极大的方便。特别在发达国家,自动售货机已经十分普及,自动售货机可售出各种成型包装小商品,各种袋装,盒装,软瓶装等小商品。在我国,由于多种原因,自动售货机的市场推广缓慢,处于培育阶段,但可以预见,这种方便快捷的服务形式因其适合现代生活快节奏的需要,在不久的将来必会获得大众的喜爱。随着商品市场的不断繁荣,自动售货机和自动服务设施必将逐步得到广泛的应用。随着科技的迅猛发展,信息技术,电子技术,自动化技术及计算机技术日渐融合,成为当今社会科技领域的重要支柱技术。由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础[1]。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。5 第1章绪论1.2课题的目的与意义人类社会已进入到高度发达的信息化社会,信息社会的发展离不开电子产品的进步。现代电子产品在性能提高、复杂度增大的同时,价格却一直呈下降趋势,而且产品更新换代的步伐也越来越快,实现这种进步的主要原因就是生产制造技术和电子设计技术的发展。前者以微细加工技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数千万个晶体管;后者的核心就是EDA技术[2]。EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作:IC设计,电子电路设计以及PCB设计。没有EDA技术的支持,想要完成上述超大规模集成电路的设计制造是不可想象的,反过来,生产制造技术的不断进步又必将对EDA技术提出新的要求。自动售货机作为一种先进的消费方式,已经成为城市现代文明发达程度的重要标志,其新颖、时尚的购物方式,24小时营业的特点给人们生活带来了便利,美化了城市环境,受到消费者的欢迎。但是在我国自动售货机的普及还不及发达国家,主要原因是我国EDA技术的应用水平长期落后于发达国家。本设计要实现自动售货机的基本功能,如选择货物,投币,找零,显示,多次交易等功能。利用软件MAX+plusⅡ平台,采用VHDL硬件描述语言编程的设计方法设计系统核心电路的硬件程序,与一般的软件开发不同,VHDL编程更需要熟悉一些底层的硬件知识,特别是数字逻辑电路的设计,因此VHDL编程的方法、思路都要更多的与硬件电路联系起来[3]。完成系统各个功能模块的硬件程序设计后,在软件平台上进行编译和电路仿真。5 第1章绪论通过本课题的研究,可以掌握电子控制系统的基本原理与其实现,通过对各个模块的编程及其仿真,对MAX+plusⅡ软件的使用有所了解。每个波形模块的VHDL实现加深了硬件描述语言的学习。最终的顶层文件的调试,更是体现了综合知识的运用。本课题的研究是对本专业所学知识的较系统综合的理解与应用,是理论知识与实践结合的体现。设计综合了本专业所学几门重要专业课程的内容,包括EDA技术、数字电子技术等的学习,较为符合电气工程及其自动化专业的培养要求,有助于实践能力、创新能力、设计能力的提高。1.3自动售货机的国内外发展及现状公元1世纪,希腊人希罗制造的自动出售圣水的装置是世界上最早的自动售货机。17世纪,英国的小酒吧里设有了香烟的自动售货机。在自动售货机历史的长河中,日本开发出实用型的自动售货机,那是在进入本世纪后的事。自动售货机的真正普及是在第二次世界大战以后。50年代,“喷水型果汁自动售货机”大受欢迎,果汁被注入在纸杯里出售。后来,由于美国的饮料大公司进入日本市场,1962年,出现了以自动售货机为主体的流通领域的革命。1967年,100日元单位以下的货币全部改为硬币,从而促进了自动售货机产业的发展。1925年美国研制出售香烟的自动售货机,此后又出现了出售邮票、车票的各种现代自动售货机。在日本全国各地,共设有550万台自动售货机(据1998年的统计),销售额达6兆8969亿4887万日元,为世界第一。在售货机的显示屏幕上进行操作,输入商品号码和购买数量,并投入钱币后,商品就会从取货口出来,甚至从食品自动售货机上还能买到热呼呼的面条和米饭团。虽然日本的自动售货机总台数低于美国(据1997年的统计为689万台),但是,从人口占有数来看却是世界上最高的,美国平均35人占有一台,而日本为23人占有一台。1999年,它开始进人中国市场。如今,在机场、地铁、商场、公园等客流较大的场所,不难发现自动售货机的身影。自动售货机在中国的发展状况:1993年,日本、美国、韩国的二手自动售货机进入中国,只能识别人民币硬币。1995年,可口可乐、百事可乐开始小量布放使用硬币的自动售冷饮机。1997年,南开戈德开发出“GD人民币智能识别系统”。1998年,南开戈德自行研制成功“GD自动售货机”,成为我国第一家规模生产同时识别纸硬币自动售货机的公司。1998年,加拿大“科汇”公司在广州开始销售、摆放“Vendo”等进口机器[4]5 第1章绪论。1998年10月,南开戈德组建“天津戈德微超贸易有限公司”(现“天津戈德移动商务有限公司”前身),成为国内第一家规模经营自动售货机的单位。2000~2001年,青岛“澳柯玛”、番禺“智强”、广州“金沙”、长沙“艾博”等相继进入自动售货机行业。图1-1为市场上的自动售货机。图1-1市场上的自动售货机但三年来,被称为“永不下班的超级营业员”的自动售货机并未在中国得到普及。目前,中国的自动售货机拥有量约为2万台,相对于13亿的人口大国,这个数字微不足道。中国自动售货业的发展比较缓慢,原因是多方面的。其中,最大的障碍是中国消费者对自动售货机的可靠性、易操作性有疑虑。在前2002亚洲自动售货机展览会上,全球交易支付技术的先导者美国MEI公司全球市场副总裁魏思特说,上海是中国乃至亚洲最为发达的城市之一,自动售货业的发展潜力不可估量。专家预测,未来几年中国市场上的自动售货机将每年增加5-10万台。中国沿海比较富裕的地区,将大约有3.5亿人口经常使用自动售货机。5 第1章绪论现代自动售货机的种类、结构和功能依出售的物品而异,主要有食品、饮料、香烟、邮票、车票、日用品等自动售货机。一般的自动售货机由钱币装置、指示装置、贮藏售货装置等组成。钱币装置是售货机的核心,其主要功能是确认投入钱币的真伪,分选钱币的种类,计算金额。如果投入的金额达到购买物品的数值即发出售货信号,并找出余钱。指示装置用以指示顾客所选商品的品种。贮藏售货装置保存商品,接收出售指示信号,把顾客选择的商品送至付货口。一般售货机的钱币装置由投币口、选别装置、确认钱币真伪的检查装置、计算金额的计算装置和找钱装置组成[5]。70年代以来,出现了采用微型计算机控制的各种新型自动售货机和利用信用卡代替钱币并与计算机连接的更大规模的无人售货系统,如无人自选商场、车站的自动售票和检票系统、银行的现金自动支付机等[6]。从广义来讲投入硬币、纸币、信用卡等后便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。从供给的条件看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。自动售货机产业正在走向信息化并进一步实现合理化。例如实行联机方式,通过电话线路将自动售货机内的库存信息及时地传送各营业点的电脑中,从而确保了商品的发送、补充以及商品选定的顺利进行。并且,为防止地球暖化,自动售货机的开发致力于能源的节省,节能型清凉饮料自动售货机成为该行业的主流。在夏季电力消费高峰时,这种机型的自动售货机即使在关掉冷却器的状况下也能保持低温,与以往的自动售货机相比,它能够节约10-15%的电力。进入21世纪时,自动售货机也将进一步向节省资源和能源以及高功能化的方向发展。1.4本文的研究目标及章节安排1.4.1本文的研究目标5 第1章绪论本文研究目标是设计一种自顶向下的分层自动售货机。使用VHDL硬件描述语言编写程序代码用状态机实现功能并以MAX+plusⅡ软件做为开发环境,设计一个能实现选择商品,投币,找零,显示状态,多次交易的自动售货机。自动售货机模块的设计具有相对独立性,可以对各模块进行单独设计、修改和调试,这样减少了设计周期。最后通过模拟仿真,功能验证来达到设计要求。1.4.2本文的章节安排本篇论文一共分为四章,每章内容安排如下:第1章介绍了本文课题的研究背景,以及自动售货机的国内外发展及现状。第2章对EDA电子设计自动化技术、VHDL标准硬件描述语言及MAX+plusⅡ软件做了基本的介绍,第3章主要讲述了自动售货机系统的设计要求、系统需求分析、工作流程、状态转换及模块划分。第4章介绍了在Max+plusⅡ软件平台上进行波形模拟仿真并做出必要的功能验证与分析说明。5 第2章相关技术与设计工具第2章相关技术与设计工具2.1EDA技术介绍2.1.1EDA技术概念与应用EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。20世纪90年代,国际上电子和计算机技术较为先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用[7],已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。EDA在教学、科研、产品设计与制造等各方面都发挥着巨大的作用。在教学方面,几乎所有理工科(特别是电子信息)类的高校都开设了EDA课程。主要是让学生了解EDA的基本概念和基本原理、掌握用HDL语言编写规范、掌握逻辑综合的理论和算法、使用EDA工具进行电子电路课程的实验验证并从事简单系统的设计。一般学习电路仿真工具(如Multisim、PSPICE)和PLD开发工具(如Altera/Xilinx的器件结构及开发系统),为今后工作打下基础。科研方面主要利用电路仿真工具(Multisim或PSPICE)进行电路设计与仿真;利用虚拟仪器进行产品测试;将CPLD/FPGA器件实际应用到仪器设备中;从事PCB设计和ASIC设计等[8]。在产品设计与制造方面,包括计算机仿真19 第2章相关技术与设计工具,产品开发中的EDA工具应用、系统级模拟及测试环境的仿真,生产流水线的EDA技术应用、产品测试等各个环节。如PCB的制作、电子设备的研制与生产、电路板的焊接、ASIC的制作过程等[9]。从应用领域来看,EDA技术已经渗透到各行各业,如上文所说,包括在机械、电子、通信、航空航航天、化工、矿产、生物、医学、军事等各个领域,都有EDA应用。另外,EDA软件的功能日益强大,原来功能比较单一的软件,现在增加了很多新用途。如AutoCAD软件可用于机械及建筑设计,也扩展到建筑装璜及各类效果图、汽车和飞机的模型、电影特技等领域。2.1.2EDA技术的历史与发展趋势在电子设计自动化(英语:Electronicdesignautomation,缩写:EDA)出现之前,设计人员必须手工完成集成电路的设计、布线等工作,这是因为当时所谓集成电路的复杂程度远不及现在。工业界开始使用几何学方法来制造用于电路光绘(photoplotter)的胶带。到了1970年代中期,开发人应尝试将整个设计过程自动化,而不仅仅满足于自动完成掩膜草图。第一个电路布线、布局工具研发成功。设计自动化会议(DesignAutomationConference)在这一时期被创立,旨在促进电子设计自动化的发展。电子设计自动化发展的下一个重要阶段以卡弗尔·米德(CarverMead)和琳·康维于1980年发表的论文《超大规模集成电路系统导论》(IntroductiontoVLSISystems)为标志。这一篇具有重大意义的论文提出了通过编程语言来进行芯片设计的新思想。如果这一想法得到实现,芯片设计的复杂程度可以得到显著提升。这主要得益于用来进行集成电路逻辑仿真、功能验证的工具的性能得到相当的改善。随着计算机仿真技术的发展,设计项目可以在构建实际硬件电路之前进行仿真,芯片布线布局对人工设计的要求降低,而且软件错误率不断降低。直至今日,尽管所用的语言和工具仍然不断在发展,但是通过编程语言来设计、验证电路预期行为,利用工具软件综合得到低抽象级物理设计的这种途径,仍然是数字集成电路设计的基础。从1981年开始,电子设计自动化逐渐开始商业化。1984年的设计自动化会议(DesignAutomation19 第2章相关技术与设计工具Conference)上还举办了第一个以电子设计自动化为主题的销售展览。Gateway设计自动化在1986年推出了一种硬件描述语言Verilog[10,11],这种语言在现在是最流行的高级抽象设计语言。1987年,在美国国防部的资助下,另一种硬件描述语言VHDL被创造出来。现代的电子设计自动化设计工具可以识别、读取不同类型的硬件描述。根据这些语言规范产生的各种仿真系统迅速被推出,使得设计人员可对设计的芯片进行直接仿真。后来,技术的发展更侧重于逻辑综合。目前的数字集成电路的设计都比较模块化(参见集成电路设计、设计收敛(Designclosure)和设计流(Designflow(EDA)))。半导体器件制造工艺需要标准化的设计描述,高抽象级的描述将被编译为信息单元(cell)的形式。设计人员在进行逻辑设计时尚无需考虑信息单元的具体硬件工艺。利用特定的集成电路制造工艺来实现硬件电路,信息单元就会实施预定义的逻辑或其他电子功能。半导体硬件厂商大多会为它们制造的元件提供“元件库”,并提供相应的标准化仿真模型。相比数字的电子设计自动化工具,模拟系统的电子设计自动化工具大多并非模块化的,这是因为模拟电路的功能更加复杂,而且不同部分的相互影响较强,而且作用规律复杂,电子元件大多没有那么理想。VerilogAMS就是一种用于模拟电子设计的硬件描述语言。此文,设计人员可以使用硬件验证语言来完成项目的验证工作目前最新的发展趋势是将集描述语言、验证语言集成为一体,典型的例子有SystemVerilog。随着集成电路规模的扩大、半导体技术的发展,电子设计自动化的重要性急剧增加。这些工具的使用者包括半导体器件制造中心的硬件技术人员,他们的工作是操作半导体器件制造设备并管理整个工作车间。一些以设计为主要业务的公司,也会使用电子设计自动化软件来评估制造部门是否能够适应新的设计任务。电子设计自动化工具还被用来将设计的功能导入到类似现场可编程逻辑门阵列的半定制可编程逻辑器件,或者生产全定制的专用集成电路。从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用广泛、工具多样、软件功能强大。中国EDA市场已渐趋成熟,不过大部分设计工程师面向的是PCB制板和小型ASIC领域[12],仅有小部分(约11%)的设计人员开发复杂的片上系统器件。为了与台湾19 第2章相关技术与设计工具和美国的设计工程师形成更有力的竞争,中国的设计队伍有必要引进和学习一些最新的EDA技术。在信息通信领域,要优先发展高速宽带信息网、深亚微米集成电路、新型元器件、计算机及软件技术、第三代移动通信技术、信息管理、信息安全技术,积极开拓以数字技术、网络技术为基础的新一代信息产品,发展新兴产业,培育新的经济增长点。要大力推进制造业信息化,积极开展计算机辅助设计(CAD)、计算机辅助工程(CAE)、计算机辅助工艺(CAPP)、计算机机辅助制造(CAM)、产品数据管理(PDM)、制造资源计划(MRPII)及企业资源管理(ERP)等。有条件的企业可开展“网络制造”,便于合作设计、合作制造,参与国内和国际竞争。开展“数控化”工程和“数字化”工程。自动化仪表的技术发展趋势的测试技术、控制技术与计算机技术、通信技术进一步融合,形成测量、控制、通信与计算机(M3C)结构。在ASIC和PLD设计方面,向超高速、高密度、低功耗、低电压方面发展。外设技术与EDA工程相结合的市场前景看好,如组合超大屏幕的相关连接,多屏幕技术也有所发展。中国自1995年以来加速开发半导体产业,先后建立了几所设计中心,推动系列设计活动以应对亚太地区其它EDA市场的竞争。在EDA软件开发方面,目前主要集中在美国。但各国也正在努力开发相应的工具。日本、韩国都有ASIC设计工具,但不对外开放。中国华大集成电路设计中心,也提供IC设计软件,但性能不是很强。相信在不久的将来会有更多更好的设计工具在各地开花并结果。据最新统计显示,中国和印度正在成为电子设计自动化领域发展最快的两个市场,年夏合增长率分别达到了50%和30%。2.2VHDL语言介绍2.2.1VHDL语言概念、特点与优势VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。VHDL翻译成中文就是超高速集成电路19 第2章相关技术与设计工具硬件描述语言,主要是应用在数字电路的设计中[13]。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。与其他硬件描述语言相比,VHDL具有以下特点:功能强大、设计灵活。VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言虽不能比拟的。支持广泛、易于修改。由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。强大的系统硬件描述能力。VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。独立于器件的设计、与工艺无关。设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。很强的移植能力。VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。19 第2章相关技术与设计工具易于共享和复用。VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。与其他硬件描述语言相比,VHDL具有以下优势:(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。2.2.2VHDL语言结构在VHDL中,对某个数字系统的硬件抽象称为实体[14,15]。实体既可以单独存在,也可以作为另一个更大实体的一部分。当一个实体成为另—个实体的一部分时,我们就把这个实体称为组件描述一个实体的对外特性及其内部功能,是设计的主要任务。—个VHDL程序设计的基本结构,主要包括5个方面。实体(Entity):实体声明定义了一个设计模块的输入和输出端口,即模块对外的特性。实体声明给出了设计模块与外部的接口。结构体(Architecture):结构体描述器件的行为或结构,说明该器件的功能以及如何完成这些功能。它指定设计实体、输入和输出之间的关系,结构体一定跟在实体之后。19 第2章相关技术与设计工具配置(Configuration):配置语句描述层与层之间的连接关系以及实体与结构体之间的连接关系。程序包(Package):程序包用于存放各设计模块都能够共享的常数、数据类型和子程序等。库(Library):库是专门用于存放预先编译好的程序包的地方,对应一个文件目录,程序包的文件就放在此目录中。在VHDL语言程序中,最重要的就是实体和结构体部分。它们是一个具体设计的核心。如果说实体是系统和外部交流的桥梁,那么结构体就是处理内外交流的信号加工厂。在结构体中各种信号协调工作,最后得到所需的输出,传送到输出端口和外部进行交流。下面具体说明实体和结构体。实体:一个VHDL实体指定的实体名称,实体的端口,以及实体相关的信息。所有设计创建使用一个或多个实体。让我们来看看一个简单的实体例子:ENTITYmuxISPORT(a,b,c,d:INBIT;s0,s1:INBIT;x:OUTBIT);ENDmux;关键字“实体”是开始一个实体声明的标志,在整本文的说明中,标准封装中关键字的语言和类型全部用大写字母来显示。例如,在前面的示例中,关键字是ENTITY,IS,PORT,IN,INOUT,,等等。如果标准型是少量的。用户创建像复用一样的姓名,在上面的例子中,将以小写显示。实体的名称是多路复用,该实体有7个端口和端口条款。6个端口,一个是输入端口,另一个是输出端口。4个数据输入端口(a,b,c,d)是位宽类型。这两个多路选择输入是s0和s1,也都是位宽类型。输出端口也是位宽类型。实体描述外界的接口。它规定了一些端口,端口方向和端口的类型。比起这里显示的信息,实体可以存放更多的信息,但是这为我们提供了建立更复杂例子的基础。结构体:实体是描述接口的VHDL模型。结构体描述了实体的基本功能,并包含了模拟实体行为的陈述。结构体始终是涉及实体和描述实体的行为。计数设备的结构体更早的像这样描述:19 第2章相关技术与设计工具ARCHITECTUREdataflowOFmuxISSIGNALselect:INTEGER;BEGINselect<=0WHENs0=‘0’ANDs1=‘0’ELSE1WHENs0=‘1’ANDs1=‘0’ELSE2WHENs0=‘0’ANDs1=‘1’ELSE3;x<=aAFTER0.5NSWHENselect=0ELSEbAFTER0.5NSWHENselect=1ELSEcAFTER0.5NSWHENselect=2ELSEdAFTER0.5NS;ENDdataflow;关键字ARCHITECTURE本声明描述了一个实体的构架。该结构体的名字是数据流。该实体的构架是一种被称为多路复用的描述。实体和结构连接之间的原因是一个实体可以有多个结构体来描述实体的行为。例如,一个构造可能是一个行为描述,另一个可能是结构性的描述。在关键字ARCHITECTURE和BEGIN的文字区域是本地信号和供日后使用的组件。在这个例子中的信号选择被宣布为当地的信号。结构体的申明区域是由关键字BEGIN开始的。所有在BEGIN和ENDnetliststatement之间的申明被称为并列的申明,因为所有的申明同时执行。2.3MAX+plusⅡ软件介绍2.3.1软件概述MAX+plusⅡ(MultipleArrayandProgrammingLogicUserSystem)开发工具是美国Altera公司推出的一种EDA工具,用于开发CPLD和FPGA进行数字系统的设计。具有灵活高效,使用便捷,易学易用的特点。Altera公司在推出各种CPLD和FPGA的同时也在不断地升级相应的开发工具软件[16],已从早期的第一代MAX+plus、第二代MAX+plus发展到目前的第三代MAX+plusII和第四代Quartus。使用MAX+plusⅡ软件,设计者无需精通器件内部的复杂结构,只需熟悉所用的设计输入工具,如硬件描述语言、原理图等进行输入,MAX+plusⅡ自动将设计转换成目标文件下载到器件中去。MAX+plusⅡ是一种与结构无关的全集成化设计环境,使设计者能对Altera的各种CPLD系列方便地进行设计输入、快速处理和器件编程。MAX+plusⅡ开发系统具有强大的处理能力和高度的灵活性。19 第2章相关技术与设计工具2.3.2Max+plusⅡ开发系统的特点(1)开放的界面Max+plusⅡ支持与Cadence,Exemplarlogic,MentorGraphics,Synplicty,Viewlogic和其它公司所提供的EDA工具接口[17,18]。(2)与结构无关Max+plusⅡ系统的核心Complier支持Altera公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX7000、MAX5000和Classic可编程逻辑器件,提供了世界上唯一真正与结构无关的可编程逻辑设计环境。(3)完全集成化Max+plusⅡ的设计输入、处理与较验功能全部集成在统一的开发环境下,这样可以加快动态调试、缩短开发周期。(4)丰富的设计库Max+plusⅡ提供丰富的库单元供设计者调用,其中包括74系列的全部器件和多种特殊的逻辑功能(Macro-Function)以及新型的参数化的兆功能(Mage-Function)。(5)模块化工具设计人员可以从各种设计输入、处理和较验选项中进行选择从而使设计环境用户化。(6)硬件描述语言(HDL)Max+plusⅡ软件支持各种HDL设计输入选项,包括VHDL、VerilogHDL和Altera自己的硬件描述语言AHDL。(7)Opencore特征Max+plusⅡ软件具有开放核的特点,允许设计人员添加自己认为有价值的宏函数。2.3.3软件功能使用及设计流程软件功能简介:(1)原理图输入19 第2章相关技术与设计工具MAX+PLUSII软件具有图形输入能力,用户可以方便的使用图形编辑器输入电路图,图中的元器件可以调用元件库中元器件,除调用库中的元件以外,还可以调用该软件中的符号功能形成的功能块.(2)硬件描述语言输入MAX+PLUSII软件中有一个文本编辑器,该编辑器支持VHDL,AHDL和Verilog硬件描述语言的输入,同时还有一个语言模板使输入程序语言更加方便,该软件可以对这些程序语言进行编译并形成可以下载配置数据.(3)波形编辑器在进行逻辑电路的行为仿真时,需要在所设计电路的输入端加入一定的波形,波形编辑器可以生成和编辑仿真用的波形(*.SCF文件),使用该编辑器的工具条可以容易方便的生成波形和编辑波形。(4)管脚(底层)编辑窗口该窗口用于将已设计好逻辑电路的输入输出节点赋予实际芯片的引脚,通过鼠标的拖拉,方便的定义管脚的功能。(5)逻辑综合与适配该软件在编译过程中,通过逻辑综合(LogicSynthesizer)和适配(Fitter)模块,可以把最简单的逻辑表达式自动的吻合在合适的器件中。(6)多器件划分如果设计不能完全装入一个器件,编译器中的多器件划分模块,可自动的将一个设计分成几个部分并分别装入几个器件中,并保证器件之间的连线最少。(7)编程文件的产生编译器中的装配程序(Assembler)将编译好的程序创建一个或多个编程目标文件。(8)仿真当设计文件被编译好,并在波形编辑器中将输入波形编辑完毕后,就可以进行行为仿真了,通过仿真可以检验设计的逻辑关系是否准确。常用菜单简介:(1)MAX+PLUSⅡ菜单:MAX+plusII:19 第2章相关技术与设计工具HierarchyDisplay____________塔形显示;GraphicEditor_______________图形编辑器;SymbolEditor_______________符号编辑器;TextEditor__________________文本编辑器;WaveformEditor_____________波形编辑器;FloorplanEditor______________管脚编辑器;Compiler____________________编译器;Simulator____________________仿真器;TimingAnalyzer_______________时间分析;Programmer__________________程序下载;MessageProcessor_____________信息处理;(2)文件菜单,该文件菜单随所选功能的不同而不同。File:Project:Name________________________项目名称;SetProjecttoCurrentFile________将当前文件设置为项目;Save&Check___________________保存并检查文件;Save&Compile_________________保存并编译文件;Save&Simulator________________保存并仿真文件;Save,Compile,Simulator__________保存,编译,仿真;New__________________________新文件;Open__________________________打开文件;DeleteFile_____________________删除文件;Retrieve_______________________提取文件;Close_________________________关闭文件;Save__________________________保存文件;SaveAs________________________换名存文件;Info___________________________信息;Size____________________________图纸尺寸;19 第2章相关技术与设计工具CreateDefaultSymbol_____________创建当前模块图形符号;EditSymbol______________________编辑当前模块图形符号;CreateDefaultIncludeFile__________创建当前包括文件;Print____________________________打印;PrintSetup_______________________打印设置;(3)指定菜单Assign:Device___________________________指定器件;Pin/Location/Chip__________________管脚,放置,芯片;TimingRequirements_______________时间需要;Clique___________________________指定一个功能组;LogicOptions_____________________逻辑选择;Probe____________________________指定探头;ConnectedPins____________________连接管脚;GlobalProjectDeviceOptions________设定项目中器件的参数;GlobalProjectParameters___________设置项目参数;GlobalProjectTimingRequirements____设置时间参数;GlobalProjectLogicSynthesis________设置逻辑综合;IgnoreProjectAssignments___________忽略项目指定;ClearProjectAssignment___________清除项目指定;BackAnnotateProject_______________返回项目指定;ConvertObsoleteAssignmentFormat___转换指定格式。(4)选择菜单Options:Font_____________________________字形;TextSize_________________________文本尺寸;LineStyle________________________线型;Rubberbanding____________________橡皮筋;ShowParameters_________________显示参数;19 第2章相关技术与设计工具ShowProbe_____________________显示探头;Show/Pins/Locations/Chips_________显示管脚,位置,芯片;ShowCliques&TimingRequirements_显示功能组,时间需求;ShowLogicOptions_______________显示逻辑设置;ShowAll________________________显示全部;ShowGuidelines__________________显示向导;UserLibraries____________________用户库;ColorPalette_____________________调色板;Preferences______________________设置。该软件的菜单繁多,要想都学会有一定的难度,主要原因是资料问题。但是常用的菜单会使用还是可能的。如何获得帮助:最直接的帮助来自于Max+plusⅡ的Help菜单。若需要某个特定项目的帮助信息,可以同时按+键或者选用工具栏中的快速帮助按钮。此时,鼠标变为带问号的箭头,点击“特定的项目”就可弹出相应的帮助信息。这里的“特定项目”,可以包含某个器件的图形、文本编辑中的单词,菜单选项,甚至可以是一个弹出的窗口数字系统的设计采用自顶向下、由粗到细,逐步分解的设计方法,最顶层电路是指系统的整体要求,最下层是具体的逻辑电路的实现。自顶向下的设计方法将一个复杂的系统逐渐分解成若干功能模块,从而进行设计描述,并且应用EDA软件平台自动完成各功能模块的逻辑综合与优化,门级电路的布局,再下载到硬件中实现设计。利用MAX+plusII进行电路设计的一般流程如图2-1所示。具体设计过程如下。(1)设计输入。MAX+plusⅡ支持多种设计输入方式,如原理图输入、波形输入、文本输入和它们的混合输入。(2)设计处理。设计输入完后,用MAX+plusⅡ的编译器编译、查错、修改直到设计输入正确,同时将对输入文件进行逻辑简化、优化,最后生成一个编程文件。这是设计的核心环节。19 第2章相关技术与设计工具(3)设计检查。MAX+plusⅡ为设计者提供完善的检查方法设计仿真和定时分析。其目的是检验电路的逻辑功能是否正确,同时测试目标器件在最差情况下的时延。这一查错过程对于检验组合逻辑电路的竞争冒险和时序逻辑电路的时序、时延等至关重要。(4)器件编程。当电路设计、校验之后,MAX+plusⅡ的Programmer将编译器所生成的编译文件下载到具体的CPLD器件中,即实现目标器件的物理编程。系统产品设计修改器件编程器件测试验证编译处理设计输入设计要求图2-1设计流程图2.4本章小结本章主要对EDA电子设计自动化技术、VHDL硬件描述语言和MAX+plusⅡ软件做了简要的介绍,EDA工具的出现,给电子系统设计带来了革命性的变化;由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL;MAX+plusⅡ是一种与结构无关的全集成化设计环境,使设计者方便地进行设计输入、快速处理和器件编程。19 第3章自动售货机系统设计分析第3章自动售货机系统设计分析3.1自动售货机的设计任务与要求本文设计的自动售货机有两种商品可以出售,售价分别为2元和3元。售货机可以识别1元,5元两种货币。如果投入金额总值等于或超过售价就可以将商品放出,并具有相应的找零钱功能。(1)用户可多次选择购买的商品种类,商品种类选定后等待投币。如等待时间超时,则认为用户放弃选购,售货机自动回到等待状态,等待新的交易。若在规定时间内,再次选中商品,则再次等待。(2)每次交易完成,售货机自动回到等待状态,等待新的交易。(3)用按键模拟投入1元,5元两种货币,可连续投币,同时显示投入的金额和还应投入的金额。若某次投币后金额不足,且一定时限内不再投币,则交易失败,并退币,显示退还金额。(4)具有指示电路,分别指示购买成功、交易取消(交易失败)和找零。(5)相应显示有延时和时控功能。3.2自动售货机的设计需求分析自动售货机像磁卡电话、银行柜员机一样,成为便民配套设施。如今的自动售货机可以为顾客提供多种服务。顾客可以根据自己的需要选择商品并投入钱币,售货机接收钱币,售出商品。自动售货机是一种无人售货系统。售货时,顾客投入硬币,售货机进行接收,若是有效硬币则进行累加。售货机装有若干个含有相同价格货物的货物分配器。顾客可以通过按键选择货物,如果有被选货物,并且顾客支付的货币值不小于货物的价格,货物将被传送给顾客,同时余额返回到退币口。如果货币值小于货物价格,则等待投币,此时如果顾客取消本次活动,那么之前所投的货币将从退币口中退出,返回给顾客。3.3自动售货机的系统工作流程29 第3章自动售货机系统设计分析系统的工作流程如图3-1所示,开始时用户选择商品后进行一次或多次投币,未投币将返回开始状态,每次投币后将自动计算金额,当已投钱币大于选择商品总价时则出货找零至交易结束,否则超时后钱币不足将退币至交易结束。图3-1自动售货机工作流程图3.4自动售货机模块的化分如图3-2所示,将自动售货机总体分三个模块:总控模块,二进制译码模块和BCD码译码模块。运用VHDL语言对各个模块进行功能描述,最后将各模块端口关系进行描述整合为顶层模块。图3-2自动售货机系统模块图29 第3章自动售货机系统设计分析(1)总控模块:如图3-3所示,该模块是整个系统的最主要的中心模块,控制着整个系统的选择商品投币找零等功能。该模块大体有5个输入端口和6个输出端口。其输入端口包括clk、coin1(投入一元货币)、coin5(投入5元货币)、price2(选择2元的商品)、price3(选择3元的商品),输出端口有paid(已投入多少钱)、needed(还需要多少钱)、moneyout(找零)、success(灯亮表示交易成功)、failure(灯亮表示交易失败)、showmoneyout(灯亮表示正在找零)。该模块实现了本系统最重要的交易过程,包括选择商品、投入货币、计算货币,找零出货等。其后接二进制译码模块。图3-3总控模块图(2)二进制译码模块:如图3-4所示,该模块有一个输入端和两个输出端。输入端b是一个4位的二进制数,输出端bcd0、bcd1,是两个4位的BCD码。该模块的主要功能是实现将总控模块输出的二进制数(paid、needed、moneyout)转换成BCD码,以便输出到七段显示数码器上而显示出来。该模块的原理是将一个4位的二进制数转换成2个4位的BCD码,分别为高4位和低4位。其后接BCD译码模块。图3-4二进制译码模块图(3)BCD码译码模块:如图3-5所示,该模块有一个输入端和一个输出端。输入端d是一个4位的BCD码,输出端q是一个7位数,该模块的功能是将4位二进制码转换为7位BCD码以便能用7段显示数码管显示。29 第3章自动售货机系统设计分析图3-5BCD译码模块图3.5自动售货机各工作状态之间转换本次所设计的自动售货机共有7个状态:qa、qb、qc、qd、qe、qf、qg,他们之间转换关系为:qa为开始状态,当选择商品后即进入qb状态等待用户投币,当超时未投币时即进入qe状态,qe状态延时后返回qa状态,当有钱币投入但已投钱币不足时,即进入qc状态,若超时不投,即进入qg状态退回钱币,若投币总数大于或等于物价时,即进入qd状态出货找零,之后进入qf状态延时后返回qa状态。3.6本章小结本章主要讲述了本次设计的自动售货机系统的主要实现的功能,工作流程、工作原理、工作状态转换以及各个功能模块的划分并说明了各个模块的作用和关系。29 第4章自动售货机各功能模块的仿真分析第4章自动售货机各功能模块的仿真分析4.1总控模块的仿真分析仿真分析:如图4-1所示,顾客选择了一个2元的商品,needed变为2即所需钱币为2元,但之后并没有投入钱币paid一直为0即所投钱币为0,超时后failure端口变为高电平说明本次交易失败,之后返回初始状态。图4-1总控模块只选一次但不投币的仿真图仿真分析:如图4-2所示,顾客选择了一个2元的商品,needed变为2即所需钱币为2元,之后又选择了一个3元的商品,needed由2变为5即所需钱币为5元,但之后并没有投入钱币paid一直为0即所投钱币为0,超时后failure端口变为高电平说明本次交易失败,之后返回初始状态。29 第4章自动售货机各功能模块的仿真分析图4-2总控模块选择两次次但不投币的仿真图仿真分析:如图4-3所示,顾客先选择了一个2元商品之后选择了一个3元商品,needed为5即所需钱币为5元,然后投入一个1元钱币之后没再投币,paid端口为1,needed端口为4,即已投1元还需4元,超时后failure变为高电平说明本次交易失败,之后返回初始状态。图4-3总控模块选择商品后投入钱币不足的仿真图仿真分析:如图4-4所示,用户先选择一个2元商品再选择一个3元商品needed变为5即所需钱币为5元,之后投入5元钱币,paid变为5,needed变为0说明已支付5元还需0元,showmoneyout为低电平即无需找零,success端口变为高电平说明交易成功,没找零,之后返回初始状态。29 第4章自动售货机各功能模块的仿真分析图4-4总控模块不需找零交易成功的仿真图仿真分析:如图4-5所示,用户选择了一个2元商品之后needed端口变为2即需要投入2元钱币,然后用户连续投了两次1元钱币,paid变为2,needed变为0说明已支付2元还需0元,success变为高电平即本次交易成功之后返回初始状态。图4-5总控模块连续投币交易成功的仿真图仿真分析:如图4-6所示,用户选择了两个个2元商品之后needed先变为2在变为4即所需钱币为4元,之后用户投了5元钱币,paid变为5,needed变为0,moneyout变为1,说明已支付5元还需找回1元,success变为高电平即本次交易成功之后返回初始状态。29 第4章自动售货机各功能模块的仿真分析图4-6总控模块找零交易成功的仿真图仿真分析:如图4-7所示,用户先选择两个2元商品needed变为4即所需钱币为4元,之后投入5元钱币paid变为5,needed变为0,moneyout变为1即钱币大于商品价格找回用户1元,success变为高电平即交易成功返回初始状态,之后又选择了一个2元商品和一个3元商品needed变为5即需要5元钱币,用户投入5元钱币后success变为高电平再次交易成功之后返回初始状态。图4-7总控模块多次交易成功的仿真图4.2二进制译码模块的仿真分析仿真分析:如图4-8所示,4位的二进制数0到F经过二进制译码后变为两个4位的二进制数。0~9前4位为0000,A~F前4位为0001,比如0011变为00000011,1111变为00010101。29 第4章自动售货机各功能模块的仿真分析图4-8二进制译码模块的仿真图4.3BCD译码模块的仿真分析仿真分析:如图4-9所示,0到9各个BCD码经过BCD译码模块转化为七段led数码管显示译码,比如7E显示0,5B显示5,73显示9等。这样即可实现显示自动售货机的钱币数。图4-9BCD译码模块的仿真图4.4顶层模块的仿真分析顶层模块如图4-10所示,左边的5个端口为输入端口,连接的模块是总控模块。中间的3个输出端口连接3个LED指示灯,分别指示交易成功、交易失败、需要找零。中间的3个模块是二进制译码模块,分别将总控模块输出的paid、needed、moneyout转换成两个4位的BCD码。最右边的6个模块是BCD译码模块,输出端口连接6个LCD七段显示数码管。图4-10自动售货机顶层模块连接图29 第4章自动售货机各功能模块的仿真分析仿真分析:如图4-11所示,用户先选择一个2元商品再选择一个3元商品所需钱币变为7E5B即05元,这时用户投入5元钱币paid变为7E5B所需钱币变为7E7E即00元,已支付钱币变为05元,s变为高电平即本次交易成功,之后返回初始状态。图4-11顶层模块的仿真图4.5本章小结本章主要介绍的是自动售货机系统总控模块、二进制译码模块和BCD译码模块的软件仿真图,通过各种条件的仿真分析说明所要求功能已满足并能实现自动售货机的基本销售处理功能,表明由VHDL语言设计的自动售货机系统已基本完成。29 结论结论目前,中国的自动售货机的发展有可喜的成果,但总体上还没有形成真正的产业。系统实施内部销售行为的研究已经基本成熟,大多数研究侧重于财务结算及销售信息和统计管理实施省电模式。基于FPGA用VHDL语言描述语言来实现销售的自动售货机系统操作,并完成整个系统及其他相关功能。本文用VHDL语言设计的自动售货机能按预期的效果进行多次购买、找零出货、并且在数码管上显示出已投货币、还需金额、找零,同时有指示灯提示交易成功、交易失败、正在找零。在自动售货机系统的3个模块中,最重要的是总控模块,其它还有二进制译码模块和BCD码译码模块。各模块完成后,将它们组合成完整的自动售货机系统。在设计过程中还需改进的是在选择商品时不能按键过长,否则会认为是重复选择。本文所用的VHDL语言虽然语法规则与其他计算机高级语言如C语言在很多方面很类似,但它毕竟是硬件描述语言,其本质作用在于描述硬件,因而会受到硬件环境的限制。因此,为了达到设计的预期效果,在代码编写前,应做到对硬件电路心中有数,不能一味地追求代码的完美,而应该以实现的硬件电路的性能优劣为标准。31 参考文献参考文献[1]姜立东.VHDL语言程序设计及应用.北京:北京邮电大学出版社,2004,39~45[2]李洋.现代电子设计与创新.北京:中国电力出版社,2007,77~89[3]王金明,周顺.数字系统设计与VHDL.北京:电子工业出版社,2010,25~33[4]杨晓慧,杨永.基于FPGA的EDA/SOPC技术与VHDL.北京:国防工业出版社,2007,134~140[5]侯伯亨,刘凯,顾新.VHDL硬件描述语言与数字逻辑电路设计.第3版.西安:西安电子科技大学出版社,2009,56~60[6]孟庆海,张洲.VHDL基础及经典实例开发.西安:西安交通大学出版社,2008,236~238[7]高有堂,徐源.EDA技术与创新实践.北京:机械工业出版社,2012,56~60[8]谭会生,张昌凡.EDA技术及应用:VHDL版.第3版.西安:西安电子科技大学出版社,2011,52~63[9]谭雪.VHDL应用开发技术与工程实践.北京:人民邮电出版社,2005,168~171[10]曾素.EDA技术在数字电路中的探讨.重庆:重庆大学出版社,2004.6,242~250[11]包明.EDA技术与可编程器件的应用.北京:北京航空航天大学出版社,2007,132~143[12]徐光辉,程东旭,黄如.基于FPGA的嵌入式开发与应用.北京:电子工业出版社,2006,12~13[13]金西.VHDL与复杂数字系统设计西安:西安电子科技大学出版社,2003,56~57[14]曾繁泰,陈美金.VHDL程序设计.北京:清华大学出版社,2000,76~7981 参考文献[15](美)JamesR,ArmstrongF,GailGray.VHDLDesignRepresentationandSynthesis.北京:机械工业出版社,2003.3,10(2):78~89[16]Zwoliski,Mark.DigitalsystemdesignwithVHDL.HouseofElectronicsIndustry,2002.,32(10):65~71[17]StephenBrown,ZvonkoVranesic.FundamentalsofDigitalLogicwithVHDLDesign.北京:机械工业出版社,2002.8,13(4):24~30[18]AntonioJ,Acosta,EduardoJ,Peral´ıas,Adoracio´nRueda,Jose´L.HuertasVHDLbehaviouralmodellingofpipelineanalogtodigitalconvertersMeasurement.,2002,8(5):5~1381 致谢致谢本设计及论文是在吴老师的亲切关怀和悉心指导下完成的。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,吴老师都始终给予我细心的指导和不懈的支持。半年来,郑教授不仅在学业上给我以精心指导,同时还在思想、生活上给我以无微不至的关怀,在此谨向吴老师致以诚挚的谢意和崇高的敬意。其次感谢我的室友们,从遥远的家来到这个陌生的城市里,是你们和我共同维系着彼此之间兄弟般的感情,维系着寝室那份家的融洽。四年了,仿佛就在昨天。四年里,我们没有红过脸,没有吵过嘴,没有发生上大学前所担心的任何不开心的事情。只是今后大家就难得再聚在一起了吧,没关系,各奔前程,大家珍重,我们在一起的日子,我会记一辈子的。最后感谢燕山大学光电子工程系的老师们,没有你们的教导就没有我现在的知识,感谢论文的审批工作者,鞭策着我们完成论文的质量。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!81 附录1附录1燕山大学本科毕业设计(论文)开题报告课题名称:基于VHDL的自动售货机设计课题性质:工程设计课题来源:导师提供学院(系):专业:学号:学生姓名:指导教师:完成日期:2013年03月28日81 附录1一、综述本课题国内外研究动态,说明选题的依据和意义自动售货机是一部能借由钞票智能测检机等工具与顾客交易的机器,能够帮助顾客购买商品。目前,我国在研制自动售货机等方面有可喜的成果,但总的来说还没有形成真正的产业。在自动售货机相关的所有研究领域中,全球对其关键技术的研究主要集中在系统内部销售动作实现方式的研究、资金结算及销售信息统计管理的实现方式研究、功耗节省模式的研究。根据相关文献资料,系统内部销售动作实现方式的研究已基本成熟,研究最多的主要集中在资金结算及销售信息统计管理的实现方式和功耗节省模式上。在FPGA基础上,采用VHDL描述语言实现自动售货机系统的销售动作,并完成整个系统的其他相关功能。自动售货机的机体内部结构已经相当完善,影响其普及的关键因素:在现有的各种通信网路平台上如何呢让自动售货机形成一种销售连锁网,为其提供更方便的营销方式和管理机制,能最大限度地降低生产、运营成本。目前,无论是基于因特网还是基于移动通信网或其他网络平台,其运作的机制都不太成熟,不过这并不影响自动售货机的发展潜力。因此,自动售货机未来的发展趋势是将其纳入到一个更广阔、更便利的移动商务网络平台。在自动售货机相关的所有研究领域中,全球对其关键技术的研究主要集中在以下3个方面:1.系统内部销售动作实现方式的研究;2.资金结算及销售信息统计管理的实现方式研究;3.功耗节省模式的研究。根据相关文献资料,系统内部销售动作实现方式的研究已基本成熟,研究最多的主要集中在资金结算及销售信息统计管理的实现方式和功耗节省模式上。自动售货机内部控制中心的实现方式虽然有些差异,但对功能的要求基本一致。在FPGA或ASIC等基础上,采用VHDL描述语言实现自动售货机系统的销售动作,并完成整个系统的其他相关功能,其设计思想为:用有限状态机进行系统状态描述,自动售货机通电复位时,自动进入系统初始状态,随外界(消费者)输入信号的触发转换到不同状态。在不同状态下,自动售货机对外界的反应是不同的,可以进入接受信号(投币)状态,也可以进入销售状态,或者是找零状态。81 附录1资金结算及销售信息管理阶段属于顾客在自动售货机上消费后,自动售货机根据厂商或客户的需要执行工作,包括产品销售数量的统计,消费资金的管理与统计等。如果能够很好的实现资金结销售信息统计管理,不但会很好地降低系统成本,而且能够使企业及时和准确地掌握相关的市场需求信息和产品销售状况。资金结算及销售信息统计主要通过各种信息传输方式把需要的数据从自动售货机传输到远程的结算终端,在终端完成各种统计管理工作。信息传输方式主要是指已经存在的各种通信网,如国内主要通过因特网或GSM/GPRS等。具体的信息传输的方式可分为基于有线通信和无线通信实现方式。关于自动售货机的开发所注重的节能问题。日本自动售货机消耗了大量的能量,其总和等于2个核反应堆输出的能量;通过预测每天罐装饮料平均能耗数,使每天的电力只用来维持当天将被销耗的罐装饮料处于合适的低温度状态,采用模糊逻辑和多重回归模式修正先前预测值,以提高一天预测的准确性;利用这种方法做了模拟仿真,使用于维持温度的能量可以节省十分之一,这种类型的自动售货机能预测每天的销售量,只冷却每天销售的一定数量的罐装饮料,剩下其他的产品保持与周围环境一样的温度,不冷却的产品将不会被立即销售,这样一部分能量将被节省下来。自动售货机作为自动化商业机械的代表被广泛应用于公共场所,它是我国生产技术机械化、智能化和自动化的体现。从供给的条件看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,可以很好地解决人工费用上升的问题等各项优点。自动售货机的诞生完善了市政的建设,符合现代化建设的需要,提高了经济活动效率,节约劳动力,把有限的人力物力集中到其他资源上。相信随着社会的发展,人们对于生活高效性的重实也会逐渐提高,自动售货机也会受到更多人的关注和喜爱。社会将会更加需要能够合理利用能源的工业产品,因此自动售货机的发展也会向着这个方向发展,节能、环保型的自动售货机将是未来社会所需要的主流产品。因此,开发出高性价比的自动售货机,保持与国外同类产品在性价比同步的同时,打破国外技术垄断和封锁,对发展我国电子业有非常重大的意义,具有广泛的应用前景,加紧对这类产品的研制显得非常紧迫。81 附录1随着电子技术的发展,数字系统的设计正朝高速度、大容量、小体积的方向发展,传统的自底而上的设计方法已难以适应形势。EDA(ElectronicDesignAutomation)技术的应运而生,使传统的电子系统设计发生了根本的变革。EDA技术就是依赖功能强大的计算机,在EDA软件平台上,对以硬件描述语言VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage)为系统逻辑描述手段自顶而下地逐层完成相应的描述、综合、优化、仿真与验证,直至生成器件。VHDL语言是目前应用于数字系统仿真最为实用的语言之一。VHDL语言最早由美国国防部提出。用VHDL语言进行数字逻辑电路和数字系统的设计,是电子电路设计方法上的一次革命性变革。与传统设计方法相比,VHDL描述电路行为的算法有很多优点:(1)设计层次较高、用于较复杂的计算时,能尽早发现存在的问题,缩短设计周期。(2)独立实现,修改方便,系统硬件描述能力强。(3)可读性好,有利于交流,适合于文档保存。(4)VHDL语言标准、规范、移植性强。(5)VHDL类型众多而且支持用户自定义类型,支持自顶而下的设计方法和多种电路的设计。二、研究的基本内容,拟解决的主要问题研究的基本内容是:分析自动售货机的功能,完成相关功能模块的划分,本系统使用VHDL语言编写,用状态基来实现各功能,使用MAXPLUSⅡ进行仿真,模拟各模块的功能实现,分别对各个模块进行仿真,分析仿真结果,认真撰写毕业设计论文。主要解决的问题是:(1)能实现一次进行中能选择多个商品进行购买而不需要在购买多个商品时都重新购买。(2)能在数码管上显示出已投钱币、还需金额、找零钱币,同时能用指示灯提示交易成功、交易失败、正在找零3个状态。81 附录1(3)每次交易完成,售货机自动回到等待状态,等待新的交易。(4)根据相关功能将模块划分为总控模块、二进制译码模块和BCD译码模块。(5)开始时用户选择商品后进行一次或多次投币,未投币将返回开始状态,每次投币后将自动计算金额,当已投钱币大于选择商品总价时则出货找零至交易结束,否则超时后钱币不足将退币至交易结束。三、研究步骤、方法及措施1、选定题目,进行相关资料的查阅,形成初步思路;2、学习、掌握VHDL硬件描述语言;3、熟练运用MAX+plusⅡ软件设计基本电路;4、分别运用VHDL语言完成底层模块的设计和以原理图的方法完成顶层模块的设计;5、分别对各个模块进行仿真分析与测试;6、学习学校论文撰写规定,提交毕设论文撰写提纲,根据整个设计过程完成毕业论文的初稿。四、研究工作进度1-3周课题选定,调研、收集资料,形成初步思路;4-6周建立系统基本结构,对整个程序流程进行规划。7-10周用VHDL语言对各个模块进行程序编写与调试工作。11-13周仿真结果归纳整理,撰写毕业设计论文初稿。14-16周对论文进行修正,完成验收、答辩。五、主要参考文献1姜立东.VHDL语言程序设计及应用.北京:北京邮电大学出版社,20042李洋.现代电子设计与创新.北京:中国电力出版社,20073王金明,周顺.数字系统设计与VHDL.北京:电子工业出版社,20104(美)JamesR,ArmstrongF,GailGray.VHDLDesignRepresentationandSynthesis.北京:机械工业出版社,2003.381 附录2附录2燕山大学本科毕业设计(论文)文献综述课题名称:基于VHDL的自动售货机设计学院(系):专业:学号:学生姓名:指导教师:完成日期:2013年03月28日81 附录2一、课题国内外现状最早的自动售货机是出生于20世纪60年代的欧美,当时在美国的地铁系统中,人们可以用1美分在自动售货机上买到一块口香糖,这就是最早的自动售货机;然而作为一种全新的零售方式,在20世纪80年代后才逐渐散布世界各地,落脚点多为发达国家,现在已经进入65个国家和地区。1992年,其初入中国市场,因为象征现代文明、高科技等,一出现就是光芒四射的明星,但由于各种原因,初入期一直没能找到合适的生存空间,行业市场也就无法真正形成规模。近年其在一线等城市发展势头增大,繁华的街道、校园、酒店等场所随处可见其身影。目前,国外自动售卖机产品类型五花八门,但综合起来有以下几个特点:1、产品消费频率高,如饮料、零食类,摆放位置多为人流集中地区,如街边、小区、旅游景点、商场、购物中心、酒吧、宾馆、机场、图书馆等;2、总体消费频率不高,但在特定场所满足特定需求;3、消费频率低但产品价值高,兼具销售和品牌传播的作用。当前全世界至少有1800万台自动售货机处于运营中,包括自动售货机制造与运营在内的整个行业销售额超过2500亿美元,自动售货机已成为零售业态增长最快的行业之一。据统计,在世界上最大的自动售货市场——日本,目前已有560万台自动售货机,其出售商品多达6000余种,年营业额达到7兆1122亿日元。每年,仅饮料的销售额就有1593亿元人民币。按人口计算,每23人就拥有1台自动售货机,平均每人消费达56000日元。可口可乐公司在日本08年时就已经拥有100多万台自动售货机,其销量占到总销量的70%。根据05年前数据统计,美国有近700万台自动售货机,平均每40人就拥有一台,其零售营业额高达293亿美元,而欧洲平均每60人一台,日销售额达到50到100美元不等。从上述数字中我们可以看出,自动售货机在国外市场已然呈现出成熟的零售业态。81 附录2自动售货机初入中国市场没多久之后,中国专业委员曾对中国内地市场作出了预测:启动期至少应布机10万台,年销售总值在10亿元人民币,到发展期至少应布机50万台,年销售总值应达到100亿元人民币,而到成熟期将达到300万台,年销售总值达到600亿元。据08年底的统计,发达地区高消费场所有近20万台的自动售卖机,广州市区有1500台,天津一台自动售卖机每天平均销售额为200元人民币,08年销售额为73000元。今年我国应有300万台的市场容量,年销售额350亿元左右。从表述看,自动售货机在我国已经逐步走向成熟期,但深入观察,我们看到一个问题:专家曾预计成熟期的自动售货机在国内市场可达300万台,销售可达600亿元,而今天我国已有300万台的市场容量,但其销售额却只有预期的一半,这是为何?我们真的走向成熟的市场了吗?消费者真的都接受了它吗?在我国自动售卖系统并不发达,目前主要还是以销售水、饮料、零食为主,且多数摆放在小区物业、商场、机场等有人照看的场所。二、研究主要成果目前,中国的自动售货机的发展有可喜的成果,但总体上还没有形成真正的产业。在自动售货机在所有相关的研究领域,其主要的全球技术研究主要集中在内部销售行为的实施研究,资金结算和销售管理信息统计系统实施研究,以及省电模式的研究。根据文献资料,系统实施内部销售行为的研究已经基本成熟,大多数研究侧重于财务结算及销售信息和统计管理实施省电模式。基于FPGA用VHDL语言描述语言来实现销售的自动售货机系统操作,并完成整个系统及其他相关功能。身体内部结构的自动售货机已大大改善,影响其普及的关键因素:它允许形成一个自动售货机出售的连锁经营网络,为客户提供更加便捷的营销和管理机制能在现有的各种通信网络平台上最大限度地降低生产和经营成本。目前,无论是基于移动通信网络或Internet或其他网络平台,其运作机制还不是很成熟,但是这并不影响自动售货机的发展潜力。因此,未来的发展趋势的自动售货机将被纳入一个更广泛,更便捷的移动电子商务网络平台。社会将会更合理地利用能源需求能工业产品,因此自动售货机的发展会朝着这个方向发展,节能,环境友好型的自动售货机将是未来主流社会的需要。因此,符合成本效益的自动贩卖机的发展保持了与同类产品的成本在国外同时同步,打破国外的技术封锁对中国电子产业的发展具有非常重要的意义,广泛的应用与加快产品开发非常迫切。三、发展趋势81 附录2从广义来讲投入硬币、纸币、信用卡等后便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。从供给的条件看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。伴随收入水平的提高,人们追求灵活、方便、快捷以及自助式服务是自动售货机得以如此迅猛发展的主要原因。在发达国家自动售货机已经成为零售业一个不可分割的部分,特别是对青年一代,这种伴随其成长的前卫零售方式更可谓是一种新的消费时尚。自动售货机这一在国外城市司空见惯的大众消费方式和载体,几年前进入中国市场后不仅没有得到预期的市场效应和消费者的广泛认同,而且因为部分设备毁损严重,造成投资方不小的经济损失。然而这一切并没有冷却投资方的热情。自动售货机市场不仅没有被看淡,反而将迎来更多强有力的竞争者。随着信息技术的发展和经济水平的提高,人们在消费观念、消费方式方面的转变以及对生活品质的追求也日新月异。而按照国际零售业的普遍观点,当人均GDP水平超过4000美元,即意味着市场已经进入自动售卖机快速发展的阶段。在中国国内,随着自助服务行业的发展和日趋成熟,城市文明指数的不断上升,自动售货机、手机加油站、灌装饮料售货机、牛奶售货机、口香糖售货机等自助产品将以直线上升的趋势在广大市民身边出现,并且慢慢的得到普及。相信,在不久的明天,像自动售货机、手机加油站、牛奶售货机、手机付费售货机除了在一线大城市普及外,诸多的二线、三线城市也会受到广大售货机运营商们的关注。81 附录2目前,我国许多大中城市已经成为自动售货机的新兴市场,未来潜力及发展方向必将日益为有关厂商关注。前些年引入这一业态尽管没有取得预期的成效,但对于市场的培育却起着相当重要的作用。目前无论从人们的观念以及接受度,还是市场积累的经验看,都应该是进入中国自动售卖机行业的最佳时机。为此,全新的自动售卖机运营和服务模式已经来临。通过打造智能自动售卖平台,传统的自动售货机现在可以支持多种交易支付模式,如现金、银行卡、储值卡、代金卡等,并能实现较大金额的支付和交易结算,从而使消费过程更加安全和便利。由于自动售货机在我国尚无大批量生产使用的经验,所以使用美国自动售货机零售业营业额占居民收入的比例来测算自动售货机在我国市场的市场容量。1994年全美自动售货机零售业的营业额为292.8亿美元。1994年全美国居民总收入为5.51万亿美元。由此得出,自动售货机零售业营业额占居民总收入的0.53%。由此推算,至2010年,我国约有300万台的市场容量。近两年,仅发达地区高消费场所就有近20万台的市场。现代都市生活的节奏日趋加快,追求方便、快捷的服务成为人们的一种时尚,以麦当劳、肯德基为代表的的西式快餐在我国的迅速发展就是很好的例子。随着对外开放的不断扩大,传统的零售业发展成百货商店、连锁超市、电视直销、厂家直销等多种方式并存的局面,极大地方便了人们的生活。作为发达国家发育成熟并被广泛采用的通过自动售货机销售食品、饮料和香烟等小商品的零售业,必将以其方便、新颖的特点在中国得到迅速发展。现在,自动售货机产业正在走向信息化并进一步实现合理化。例如实行联机方式,通过电话线路将自动售货机内的库存信息及时地传送各营业点的电脑中,从而确保了商品的发送、补充以及商品选定的顺利进行。并且,为防止地球暖化,自动售货机的开发致力于能源的节省,节能型清凉饮料自动售货机成为该行业的主流。四、主要参考文献[1]姜立东.VHDL语言程序设计及应用.北京:北京邮电大学出版社,2004,39~45[2]李洋.现代电子设计与创新.北京:中国电力出版社,2007,77~89[3]王金明,周顺.数字系统设计与VHDL.北京:电子工业出版社,2010,25~33[4]杨晓慧,杨永.基于FPGA的EDA/SOPC技术与VHDL.北京:国防工业出版社,2007,134~140[5]侯伯亨,刘凯,顾新.VHDL硬件描述语言与数字逻辑电路设计.第3版.西安:西安电子科技大学出版社,2009,56~6081 附录2[6]孟庆海,张洲.VHDL基础及经典实例开发.西安:西安交通大学出版社,2008,236~238[7]高有堂,徐源.EDA技术与创新实践.北京:机械工业出版社,2012,56~60[8]谭会生,张昌凡.EDA技术及应用:VHDL版.第3版.西安:西安电子科技大学出版社,2011,52~63[9]谭雪.VHDL应用开发技术与工程实践.北京:人民邮电出版社,2005,168~171[10]曾素.EDA技术在数字电路中的探讨.重庆:重庆大学出版社,2004.6,242~250[11]包明.EDA技术与可编程器件的应用.北京:北京航空航天大学出版社,2007,132~143[12]徐光辉,程东旭,黄如.基于FPGA的嵌入式开发与应用.北京:电子工业出版社,2006,12~13[13]金西.VHDL与复杂数字系统设计西安:西安电子科技大学出版社,2003,56~57[14]曾繁泰,陈美金.VHDL程序设计.北京:清华大学出版社,2000,76~79[15](美)JamesR,ArmstrongF,GailGray.VHDLDesignRepresentationandSynthesis.北京:机械工业出版社,2003.3,10(2):78~89[16]Zwoliski,Mark.DigitalsystemdesignwithVHDL.HouseofElectronicsIndustry,2002.,32(10):65~71[17]StephenBrown,ZvonkoVranesic.FundamentalsofDigitalLogicwithVHDLDesign.北京:机械工业出版社,2002.8,13(4):24~30[18]AntonioJ,Acosta,EduardoJ,Peral´ıas,Adoracio´nRueda,Jose´L.HuertasVHDLbehaviouralmodellingofpipelineanalogtodigitalconvertersMeasurement.,2002,8(5):5~1381 附录3附录3燕山大学本科毕业设计(论文)中期报告课题名称:基于VHDL的自动售货机设计学院(系):专业:学号:学生姓名:指导教师:完成日期:年月日81 附录3一、任务书中本阶段工作目标与任务要求第1~4周:课题选定,调研、收集资料,形成初步思路。第5~8周:建立系统基本结构,对整个程序流程进行规划。第9~10周:用VHDL语言对各个模块进行程序编写与调试工作。二、目前已完成任务情况开学后的四周内,我搜集了一些关于“基于VHDL的自动售货机设计”课题的资料,阅读了一些相关的书籍,从这些资料书籍中对国内外自动售货机的研究现状有了一定了解,并且对自动售货机的系统组成进行了仔细研究和分析,形成设计的基本思路和框架。从第五周起,我利用三周的时间开始学习VHDL语言和Max+plusⅡ软件的知识,然后对自动售货机系统进行模块化分,用VHDL语言对各个模块进行编程。从第九周开始到现在,我主要运用Max+plusⅡ软件进行程序的文本输入,然后通过编译对程序进行修整,编译通过之后就对各个模块的功能进行了波形仿真与分析,使各个模块程序都实现了设定的功能。三、存在的问题和拟解决方法(一)存在的问题通过以上几周的学习研究及实验,我在设计过程中发现了还有个问题需要解决,就是顶层模块仿真总是出错。具体问题应该出在元件例化上面,因为顶层模块包含3个二进制译码模块和6个BCD译码模块,所以对重复模块的元件例化和端口指定上面语法存在问题。(二)拟解决方法为了解决该个问题,我想再根据所参考的文献资料对VHDL语言进行更加深入细致的研究,学习更多实例程序,发现有相似情况的VHDL程序进行参考对比并学习相关语法,并和同学老师讨论该问题,从而找到问题原因并所在解决困难。81 附录4附录4外文翻译英文原文:TransientandPermanentFaultInjectioninVHDLDescriptionofDigitalCircuitsParagK.LalaAbstractTheabilitytoevaluatethetestabilityofdigitalcircuitsbeforetheyareactuallyimplementediscriticalfordesigninghighlyreliablesystems.Thisfeatureenablesdesignerstoverifythefaultdetectioncapabilityofonlineaswellasofflinetestabledigitalcircuitsforbothpermanentandtransientfaults,duringthedesignstageofthecircuits.ThispaperpresentsatechniquefortransientandpermanentfaultinjectionattheVHDLleveldescriptionofbothcombinationalandsequentialdigitalcircuits.AccesstoallVHDLblocksasystemisstraightforwardusingaspeciallydesignedsinglefaultinjectionblock.Thiscapabilityofinsertingtransientandpermanentfaultsshouldhelpinevaluatingthetestabilityofadigitalsystembeforeitisactuallyimplemented.Keywords On-LineFaultDetection;VHDL;TransientFaults;FaultInjection;LFSR1.IntroductionModerndigitalsystemsaretypicallyspecifiedinahighlevellanguagesuchasVHDL.Theactualimplementationofthesystemisthenperformedusingthisspecification.Severalimportantcriteriaofasystemtobedesignede.g.testability,powerconsumption,needtobeevaluated.Thecapabilitytoascertainthe81 附录4testabilityofasystemattheVHDLlevelbeforeitisimplemented,allowsdesignmodificationstoachievethedesiredgoal.AfaultinjectionsystemprovidesthecapabilityofintroducingafaultatanydesiredlocationintotheVHDLmodelofacircuit[1].TheinjectiontechniqueallowsfaultstobeinjectedatvaryinglevelsofVHDLhierarchyandhencehelpinevaluatingtheperformanceofatestablesystem.Ingeneral,faultsaregroupedintotwocategories:permanentandtemporary.PermanentfaultsthatexistinlogiccircuitsarenormallyidentifiedduringofflinetestingbythemanufacturerofICs,temporaryfaultsontheotherhandareofmajorconcernafteranICchipisusedinaparticularapplication.Temporaryfaultscanbeoneoftwotypes:intermittentandtransient[2].SomeworkhasbeenreportedonthedevelopmentofVHDLmodelforintermittentfaults[3,4],howevernotmuchhasbeenreportedontransient(soft)faultinjectioninVHDL-basedcircuitdescriptions[5,6].TheabilitytosimulatetheoccurrenceofatransientfaultintheVHDLdescriptionofacircuitisextremelyimportantifthecircuithasbuilt-inon-linefaultdetectioncapability.Inadditiontheabilitytoinsertpermanentfaultsonsinglebitsoradatawordmustalsobetakenintoconsideration.Thesefeaturesenabletheperformanceofacircuitorasystemunderfaultyconditionstobeeffectivelyevaluatedbeforeitisimplemented.Faultinjectioniscrucialinanonlinetestablesystem.Itenablesadesignertotestwhetherthefunctionalcircuitandthecheckerwithinthesystemareoperatingasspecified.Faultsinanonlinetestablesystemareassumedtobemainlysinglebitfaultswhereasinglebitisflippedfromalogic1toa0orvice-versa.Theycanbebothtransientandpermanentinnature.For(offline)testablesystemsfaultinjectionhelpsinevaluatingthetestabilityoftheentiresystembeforethesystemisactuallyimplemented.AnyinternalsignalcanbeaccessedattheVHDLlevelforthepurposesofinjectingfaults,thusensuringgreatercontrollabilityandobservabilityofthesystem.ThefaultinjectionsystemproposedinthispaperwillbecontainedwithintheinstructionVHDLofasystem.Thismaintainsthesystemasplatform81 附录4independent,abletosimulateonanyVHDLsimulationsoftwarewithoutextensiveknowledgeofsimulationVHDL,whichisaverytediousapproach.Delongetal.proposedatechniquetoaccomplishthesamegoal[7],offeringadifferentapproachtofaultinjection[8].OtherapproachessuchastheoneofferedbyParrottaetal.ortheoneofferedbyVargasetal.involveinjectiontechniquesthatmustbeusedwithinsimulationVHDL[9].Otherpapersapproachedfaultinjectiondifferentlybyusingmethodologiesbasedonscanpaths[10],usingoutsidelogicsourcestoinjectfaultsintoVHDLdescriptions[11],orbymodifyingexistingcircuitarchitecture[12-14].IncorporatinganinjectiontechniqueinaVHDLdescriptioninsteadofthesimulationcodeismoreeasilyhandledandisport-ablebetweendesignpackages.ArealisticfaultinjectionsystemmusthavethecapabilitytoaccessmostsignalswithinaVHDLdescriptionincludingtheinputsandoutputsofthedescription;thisiscrucialforbothon-andoff-linetesting.Theorganizationofthepaperisfollows.Section2discussesthegeneralconceptoftheproposedfaultinjectionsystem,andhoweachoftheconstituentblocksofthesystemisimplementedinVHDLcode.Section3illustratestheapplicationofthefaultinjectionsystemusingseveralexamples.Section4showshowpermanentandtransientfaultsareinjectedintoasystemspecifiedinVHDLlanguage.Section5istheconclusion.2.FaultInjectioninVHDLDescriptionAuser-friendlyfaultinjectionsystemmustevolvefromabasicsetofspecifications.Itmustallowdesignerstheabilitytoverifyanonlinetestablesystem,andthereforesupportinjectionoftransientfaults.Furthermore,itneedstohavethecapabilitytoobservehowacircuitbehavesinthepresenceofafaultinanofflinetestingenvironment.Thetransientfaultinjectionfeatureproposedinthispaperdoesnotjustrandomlyinsertfaultsonitsownintothesystem.Itallowspredeterminationofarateatwhichfaultsareinsertedintoadatawordordatabit;asfarastheauthors81 附录4areawareofthisfeatureisnotavailableinanysystemstudiedtodate.Duringtransientfaultinjection,randombitsinadatawordareselectedbythesys-temfaultinsertion.Thisisakeycomponentofthepro-posedinjectionsystemthatenablesthedesignertosimulatefaultsatmorerealisticintervalsonvaryingbitsinadatawordwithouthavingtomodifytheVHDLdescriptioneverytimeafaultisinsertedinthesystem.Ifthereisasingleinputbitorasignalthatisdirectedtothesystem,atransientfaultwillalwaysoccuronthatbitattheintervalchosenbytheuser.Thisallowstheusertofocussolelyonasinglebitwhentransientfaultinsertionisdesired.Ifalargerdatawordissenttotheinjectionsystem,itwillchooseonwhichbitthefaultbeinjected.Thisisespeciallyusefulinonandofflinetestingbyfocusinginonaspecificbitorinsertingfaultsrandomlyacrossadataword.TheproposedfaultinjectionsystemiscomprisedoffiveblockswiththreelevelsofhierarchyasshowninFigure1.Toinvokethesystemonecomponentinstantiationblockisnecessaryforeachdatawordwherefaultsaretobeinserted.2.1.LFSRBlocksAmajorfeatureofthefaultinjectionsystemistheabilitytoinsertfaultsatdesiredintervals.Toaccomplishthistasktheinjectionsystemusespseudo-randomsequences.Pseudo-randomsequencesofmaximallengtharegeneratedusingLFSR’s.Thetwo16-bitLFSR’sruninparallelconstantlygeneratingpseudo-randomsequences.Basedonthepercentageoftimethatischosentoinsertafault,acertainnumberofbitsinthetwoLFSR’sarecomparedbythefaultinjectionlogicblock.Ifthatnumberofbitsmatches,thenafaultisinsertedintothesystem.ThedataflowthroughthesystemthataccomplishesthisisshowninFigure2Figure3presentsresultedfromaprogramthatwaswrittentosimulatetwo16-bitLFSR’srunninginparallelandcertainnumbersofbitsbeingmatched.A4-bitcontrolcode(Ctrl)whichisprocessedbytheControlLogicblockdetermines81 附录4howmanybitsneedtobematchedinthetwoLFSR’stocontrolthepercentageatwhichfaultsareinjected.TheinitialseedtoeachoftheLFSR’smustbedifferentinordertoproducetwodifferentpseudo-randombinarysequences.Figure1.Blockdiagramoffaultinjectionsystem.Certaineasytousecontrolsettingsareemployedinordertoinsertastuck-at-0orstuck-at-1faultatalocationselectedbytheuser.BitscanbetargetedeasilywithpermanentinjectionbymeansoftheStuckAtBitandStuckAtValueintheinjectionblock.StuckatBitisthelocationofthepermanentfaultandStuckAtValueFigure2.Basicflowchartofdatathroughsystemduringtransientfaultinjection.81 附录4Figure3.Percentageontheleftisthepercentoftimeafaultisinsertedinthesystem.isthelogicvalueofthestuck-atfault.TheflowfordatathatwillhavepermanentinjectionofafaultisshowninFigure4.TheeasiestwaytoaccomplishcontrolofthesystemiswithasimplegenericportmapinVHDLthatisusedforthefaultinjectionlogicblockinthesystem.Acontrolcodethatis4bitswideisusedinthehighestlevelblock,thecontrollogicmodule,inordertolettheusertochangetheratesoffaultinjection.Figure4.Dataflowforpermanentfaultinjection81 附录42.2.FaultInjectionLogicBlockandOne-HotEncodedShiftRegisterTheFaultInjectionLogicblockistheheartoftheinjectionsystemthatbearstheworkofincorporatingdatafromthetwoLFSR’sandalsotheOne-HotEncodedshiftregister.Theblockmonitorsthecontrolinputstothecircuittoevaluatewhetheritneedstoperformtransientorpermanentfaultinjectioninthedatathatissenttoit.Thecontrolcodewhichinitializespermanentfaultinjectionis“1111”.If“1111”issenttotheinjectionsystem,thefaultinjectionlogicinsertsastuck-atfaultatthelocationthatisspecifiedbytheuser(StuckAtBit)tothevalue(StuckAtValue)thatisspecifiedbytheuser.Otherwise,injectionisdeterminedtobeofthetransientnature.Itmustbemadeclearthatthesystemoperatesdifferentlywhenthis“1111”ispassedtoitintheformofacontrolcode.ThatcodeistheonlyonethatusesStuckAtBitandStuckAtValue.Othercontrolcodesarefortransientinjectionandrangefrom“0001”→50%injectionto“1110”→<0.01%injection.Acontrolcodeof“0000”is0%faultinjectionwhileacontrolcodeof“1111”is100%faultinjection.Thecontrolcodeisusedtocontrolthepointintimeatwhichthefaultisinjected.Byincrementingthiscontrolcodeby“1”foreachcode,faultinjectionisdroppedby1/2fromthepreviousrate.Inordertodeterminethebitonwhichafaultwillbeinsertedduringtransientfaultinjection,aone-hoten-codedshiftregisterisused.Everyclockcycle,alogic“1”isshiftedthroughadatawordthatisthelengthofthedatawordsenttotheinjectionsystem.Thepurposeofthe“1”istodetermineonwhichbitthefaultwillbeinjected.2.3.ComponentInstantiationInFigure5DataLengthisthelengthoftheprimaryinputorinternalsignalonwhichafaultwillbeinjected.Itisjustapositiveintegerthatisneededinorderforthefaultinjectionsystemtooperate,andshouldbethesameasthenumberofbitsthatarecontainedinasignalorprimaryinputthatisbeingfedtothesystem81 附录4Figure5.GenericfaultinjectionsysteminstantiationinVHDL.forfaultinjection.Forexample,forasinglebitthatissenttothesystemforinjection,DataLengthis1.Fora4-bitwidewordwherebyfaultswillbeinserted,DataLengthis4.DataInisthesignalorprimaryinputfromtheVHDLblockthatiscallingthisinstantiationforwhichafaultwillbeinserted.DataOutcorrespondstotheoutputoftheblockthatmaycontainafault.3.FaultInjectionSysteminPracticeTheapplicationoftheproposedfaultinjectionsystemisillustratedthroughseveralexamples.TheVHDLcodingandcompilationinthefollowingexamplesutilizedtheXilinxFoundation5.1.03i,andthesimulationwasperformedinModelSimXEII5.6a.InordertowriteVHDLintheintheXilinxFoundation,aspecificFPGAhadtobechosen;theFPGAXC2V500-4FG456Cwasselectedforthispurpose.3.1.TransientFaultInjectioninOnlineTestableSystemsToillustratetheuseoffaultinjectioninanon-linetestablecircuit,thefaultinjectionblockmustbeinsertedintoaVHDLblockthatismeanttobeself-checking.Aself-checkingcircuitcandeterminewhetherafaulthas81 附录4propagatedtoanoutputdatawordornot.Thus,acodingsystemmustbeemployedtoaccomplishtheself-checkingaspectofthecircuitandacheckerthatacceptscodeddata.Forthisexample,a2-out-of-4codeisusedforthemethodofdataencoding.Inotherwords,forevery4-bitwordofdatathatisgoingthroughthesystem,2bitsineachwordare1sandtheothertwoare0s.ThefaultinjectionblockisplacedasshowninFigure6.Subsequently,dataisfedfromthefaultinjectionblocktothe2-out-of-4codecheckerwhichisshowninFigure7.WhenZ1Z2=01or10,thecircuitundertestisfault-free,whereasZ1Z2=00or11indicatesthepresenceofafault.The2-out-of-4CodeGeneratorcircuitisassumedtohave3inputs(I1,I2,I3)anda2-out-of-4codeastheoutput(O1,O2,O3,O4).Thesumofproductsnotationfortheexamplecircuitis:O1=å(0,3,5,6)O2=å(1,3,4,6)O3=å(2,4,5,7)O4=å(0,1,2,7)Figure6.PlacementoffaultinjectionblockinVHDLcode.TheVHDLcodeforthecircuitisshownbelow:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;librarywork;usework.lfsr_pkg.all;entitytest1is81 附录4Port(DataOut:outstd_logic_vector(3downto0);clk,reset,load,faultenable:instd_logic;ctrl:instd_logic_vector(3downto0);CircuitIn:outstd_logic_vector(2downto0);match:outstd_logic;fault:outstd_logic;Z1,Z2:outstd_logic);endtest1;architectureBehavioraloftest1issignali:std_logic_vector(2downto0);signalDataIn:std_logic_vector(3downto0);signalsubdata:std_logic_vector(3downto0);begin--TheLFSRservesthefunctionoffeedinginputstothe--circuitsoitwillnothavetobedonemanuallyinthe--simulatorLFSR1:LFSR_GENERICgenericmap(Width=>3)portmap(clock=>clk,reset=>reset,load=>load,seed=>“101”,parallelout=>i);CircuitIn<=i;--DataIn(3)=O1,DataIn(2)=O2,DataIn(1)=O3,DataIn(0)=O4DataIn(3)<=(NOTi(0)AND(i(1)XNORi(2)))OR(i(0)AND(i(1)XORi(2)));DataIn(2)<=i(0)XORi(2);DataIn(1)<=(NOTi(2)AND(i(0)XORi(1)))OR(i(0)ANDi(2));81 附录4DataIn(0)<=(NOTi(0)ANDNOTi(1))OR(i(1)AND(i(0)XNORi(2)));--Faultinsertionblockinstantiationinserter:faultblockgenericmap(DataLength=>4,StuckAtBit=>0)--ThevalueforStuckAtBitdoesnotmatterinthiscase--becauseatransientfaultisgoingtobeinjected,thus--lettingtheinjectionsystemhandlewhenandwherethe--faultoccurs--The4indicatesthelengthofthedatawordforwhicha--faultshallbeinjectedportmap(DataIn=>DataIn,DataOut=>subdata,StuckAtValue=>‘0’,--StuckAtValuedoesnotmatterinthiscasebecause--onceagain,thesystemintransientinjectionishan-dling--thelocationandwhatthefaultwillbectrl=>ctrl,--Setctrlanywherebetween“0001”and“1110”for--transientfaultinjection--Ifctrlisusedasaninputtothecircuit,itcanbechanged--duringoperationoritcanbesetmanuallywithinthe--injectionblock(ctrl=>“0001”)clk=>clk,reset=>reset,load=>load,enable=>faultenable);DataOut<=subdata;--2outof4checkerZ1<=(subdata(0)ORsubdata(1))AND(subdata(2)ORsubdata(3));81 附录4Z2<=(subdata(0)ANDsubdata(1))OR(subdata(2)ANDsubdata(3));endBehavioral;3.2.PermanentFaultInjectioninanOff-LineTestingEnvironmentTofurtherillustratethefunctionalityofthesystem,anexampleshowingpermanentinjectionofasinglestuck-atfaultisprovided.Thetestpatterngeneratorinthiscaseisa3-bitLFSR.Thecontrolcodeissetat1111.Figure7showsthesimulationresultsintheabsenceofafault.TheexpectedoutputscanbeobservedontheDatoutline.Figure7.Examplecircuitforofflinetestingwithoutfaultinjection.4.TransientandPermanentFaultInjectioninaSequentialCircuitThefaultinsertiontechniqueproposedinconsideredcombinationallogiccircuitsonlyWithpredominatelybehavioraldesignapproachescurrentlybeingusedinsystemdesignespeciallyindescribingcomplexstatemachines,itisnotpossibletopredictthestructureofthecircuitgeneratedbythesynthesistool.Sinceinmostcasesonlythebehavioraldescriptionofasequentialcircuitisavailable,theabilitytoinjectfaultsintheVHDLdescriptionofthesequentialcircuitisimperativeinordertohavethecapabilitytoassessthecontrollabilityandobservabilityoftheeventualcircuitresultingfromtheVHDLdescription.ThefaultinjectionblockisnotmeanttobeabletoinjectfaultsoneverysignalwithinaVHDLdescription,buttoreachasmanylow-levelVHDLblockscontainingprimaryinputsandoutputs,internalsignalsthereinaspossible.Forsequentialcircuits,thestatesmustbesetoutsideaprocessstatementinorderfortheinjectionsystemtooperate.Theprocessstatementmayhowevercontainasignalrepresentingthestateofthemachine.ThesignalthatidentifiesthenewstateofthemachineisusedintheDataInassignmentintheinjectionblock.The81 附录4newstateofthemachineisonDataOut.Thenewstatemayormaynotcontainaninjectedfault.5.ConclusionAfaultinjectiontechniquethatenablesdesignerstheaccesstoaVHDLpackagetoinsertafaultonanysignalwithintheblockofaVHDLcode,hasbeenpresented.Itallowstheinjectionoftransientfaultsrandomlyacrossadataword,andallowstheinsertionofapermanentfaultatanychosenpointinadataword.Anumberofexamplesareprovidedtoillustratetheuseoftheproposedfaultinjectionsysteminon-andoff-linetestingenvironmentsforbothcombinationalandsequentialcircuits.Amajoradvantageoftheproposedapproachisthatthefaultinsertionprocessissignificantlysimplerthanothercurrentlyavailableapproaches.Sincethefaultinsertionblockisincludedinapackage,muchlikealibraryinotherformsofprogramming,onlyasimplecallatthebeginningoftheVHDLdescriptionandacomponentinstantiationisneededtoactivatetheinsertionmechanism.6.AcknowledgementsThisworkwassupportedinpartbytheNationalScienceFoundation,USAunderGrant0925080.REFERENCES[1]A.BensoandP.Prinetto,“FaultInjectionTechniquesandToolsforEmbeddedSystemsReliabilityEvaluation,”KluwerAcademicPublishers, Holland,2003.[2]P.K.Lala,“Self-CheckingandFaultTolerantDigitalDesign,”MorganKaufmannPublishers,Waltham,2001.[3]J.Gracia,L.Saiz,J.C.Baraza,D.GilandP.Gil,“AnalysisoftheInfluenceofIntermittentFaultsinaMi-crocontroller,”11thIEEEInternationalWorkshoponDe-signandDiagnosticsofElectronicCircuitsandSystems,Bratislava,16-18April2008,pp.80-85.81 附录4[4]L.J.Saiz,J.Gracia,J.C.Baraza,D.GilandP.J.Gil,“ApplyingFaultInjectiontoStudytheEffectsofInter-mittentFaults,”7thEuropeanDependableComputingConference,Kaunas,7-9May2008,pp.67-69.[5]S.R.SewardandP.K.Lala,“FaultInjectionforVerify-ingTestabilityattheVHDLLevel,”ProceedingsofIn-ternationalTestConference,Baltimore,30September-2October,2003,pp.131-137.[6]W.Sheng,L.XiaoandZ.Mao,“AnAutomatedFaultInjectionTechniqueBasedonVHDLSyntaxAnalysisandStratifiedSampling,”4thIEEEInternationalSympo-siumonElectronicDesign,TestandApplications(Delta),HongKong,23-25January2008,pp.587-591.[7]T.A.Delong,B.W.JohnsonandJ.A.ProfetaIII,“AFaultInjectionTechniqueforVHDLBehavioral-LevelModels,”IEEEDesign&TestofComputers,Vol.13,No.4,1996,pp.24-33.doi:10.1109/54.544533[8]B.Parrotta,M.Rebaudengo,M.S.ReordaandM.Violante,“NewTechniquesforAcceleratingFaultInjec-tioninVHDLDescriptions,”Proceedingsof6thIEEEOnlineTestingWorkshop,PalmadeMallorca,3-5July2000,pp.61-66.doi:10.1109/OLT.2000.856613[9]F.Vargas,A,AmoryandR.Velazco,“EstimatingCircuitFault-TolerancebyMeansofTransient-FaultInjectioninVHDL,”Proceedingsof6thIEEEOnlineTestingWork-shop,PalmadeMallorca,3-5July2000,pp.67-72.doi:10.1109/OLT.2000.856614[10]N.Z.Basturkmen,S.M.ReddyandI.Pomeranz,“ALowPowerPseudo-RandomBISTTechnique,”ProceedingsofIEEEInternationalConferenceonComputerDesign:VLSIinComputersandProcessors,Freiberg,16-18Sep-tember2002,pp.468-473.[11]A.ManzoneandD.DeCostantini,“FaultTolerantInser-tionandVerification:ACaseStudy,”ProceedingsofIEEEMemoryTechnologyDesignandTestingWorkshop,IsleofBendor,10-12July2002,pp.44-48.[12]R.J.HayneandB.W.Johnson,“BehavioralFaultModelinginaVHDLSynthesisEnvironment,”Proceed-ingsofVLSITestSymposium,DanaPoint,81 附录425-29April1999,pp.333-340.[13]D.G.MavisandP.H.Eaton,“SEUandSETMitigationTechniquesforFPGACircuitandConfigurationBitStorageDesign,”ProceedingsofMilitaryandAerospaceApplicationsofProgrammableDevicesandTechnologiesConfenerce,Laurel,10-12September2000,pp.1-15.[14]P.Civera,L.Macchiarulo,M.Rebaudengo,M.S.ReordaandA.Violante,“ExploitingFPGAforAcceleratingFaultInjectionExperiments,”ProceedingsofIEEEOnlineTestingWorkshop,Taormina,9-11July2001,pp.9-13.doi:10.1109/OLT.2001.937810中文翻译:VHDL描述数字电路中的瞬时和永久性错误注入摘要在数字电路被应用之前评价它们的易测性对于设计高稳定性系统是非常关键的。这种特性使得设计者能够在电路设计阶段验证联机和断线数字电路的瞬时和永久性错误的检测能力。这篇文章论述了组合和连续数字电路的VHDL级别描述中的瞬时和永久性错误注入的一门技术。所有VHDL语言使用一个特别设计的单错误注入模块组成一个系统是直截了当的。注入瞬时和永久性错误的能力有益于在数字系统被实际应用之前评估它的易测性。关键词 在线错误检测;VHDL;瞬时错误;错误注入;LFSR第一章简介现代数字系统通常用一种高级语言详细说明,比如VHDL语言。这种系统的实际执行后来都表现为使用这个规范。需要设计的系统中的几个重要条件比如易测性和能量消耗需要评估。确定在正式实施之前的VHDL级的系统的易测性的能力允许设计修改来获得期望的目标。一个错误注入系统提供了使错误在电路VHDL模型中的任何环境里发生的可能性[1]。这种注入技术允许在VHDL等级系统中的可变等级里如入错误,从此能帮助分析一个易测系统的性能表现。81 附录4通常来说,错误分为两类:永久的和临时的。存在在逻辑电路中的永久性错误通常是在集成电路厂商的离线测试中验证的,另一方面临时性错误主要是在电路芯片在实际应用中使用后确定的。临时性错误可以是间歇的和瞬时的两种类型之一。在VHDL模型的发展中一些工作已经因为间歇性错误被报告,但是在VHDL电路描述中瞬时性错误注入被报告的并不是很多[2]。如果电路中内置错误检测能力在VHDL描述电路中模仿瞬时性错误发生的能力是极其重要的。另外在单一位或数据字中插入永久性错误的能力也应该被考虑进去。这些特性使得一个电路的执行或者系统在错误条件下于真正实施之前会被有效的评估。错误注入在一个在线可实验的系统中是重要的。它使得设计者可以检测功能性电路和系统是不是按规定运行。一个在线可测验系统中的错误主要是被假定为逻辑1到0或相反的一个单个位错误。事实上他们可以是既是瞬时的又是永久的[3,4]。对于(离线)可测验系统中错误注入帮助了在系统实际被应用之前评估整个系统的意测性。为了注入错误在VHDL级中任何内部信号可以被存取[5,6],这保证了系统更高的可控制性和可观测性。这篇文章中所提议的错误注入系统将会包含在VHDL系统教学中。这维持了系统的平台独立性,可以在任何VHDL仿真软件中仿真,不需要其他非常冗余的VHDL仿真语言方法。德隆等人提议了一个完成统一目标的技术,提供了不同的错误注入路径。其他路径例如帕罗塔等人提供的一个和哇嘎斯等人提供的一个包含必须使用在VHDL仿真中的注入技术[7]。其他文章使用不同基于扫描路径的方法来接近错误注入[8],使用外部逻辑源来注入VHDL描述错误,或修改现有的电路结构[9]。在VHDL描述中结合注入技术比仿真代码更容易处理而且在设计包之间有更好的可移植性[10]。一个现实的故障注入系统必须有能力访问大多数VHDL描述的信号,包括输入和输出的描述和在线离线检测[11],这一点是至关重要的。这篇文章下面的结构为:第二章讨论提到的故障注入系统的一般概念,以及系统的各组成模块在VHDL代码中是如何实现的。第三章通过使用几个例子来说明错误注入系统的应用[12-14]。第四章显示了VHDL语言中指定的瞬时性和永久性错误是如何注入系统的。第五章则是结论。81 附录4第二章VHDL描述中的错误描述一个用户友好的故障注入系统必须从一套基本的规范演变。它必须允许设计者有能力验证一个在线可检测系统,并且支持瞬时故障注入。此外,它需要有能力在离线测试环境中故障存在条件下观察电路的行为。本文提出的瞬态故障注入功能不只是随机插入自身的故障到系统中。它允许预先确定被插入到一个数据字或位的错误率;正如作者直到研究日期能意识到这个功能在任何系统中都是不可行的。在瞬态故障注入中,系统错误注入选择的随机位和数据字。这是提及到的注入系统的一个关键元件,它使设计者能在更现实的变化位和数据字间隔上仿真故障,而不是在系统中每次注入错误时都修改VHDL描述代码。如果有一个指向系统的单一位或者信号,在用户选择的区间一个短暂故障总是发生在该位上。当需要插入瞬态故障时这允许用户只集中在一个单一位上。如果一个较大的数据字发送到注入系统,它会选择对位故障注入。通过聚焦在一个特定的位或一个数据字随机地插入故障这对于在线离线检测非常有用。提到的故障注入系统是由如图1所示的五个三层级块组成的。调用系统的一个元件实例块是对于错误要注入的每个数据字是必要的。第二章第1节线性反馈移位寄存器(LFSR)块故障注入系统的一个主要特征是能够在需要的区间插入故障。为了完成这个任务,注入系统使用伪随机序列。伪随机序列的最大长度使用LFSR生成的。两个16位线性反馈移位寄存器的并行运行不断产生伪随机序列。基于插入故障选择的时间百分比,故障注入逻辑模块比较了两个线性反馈移位寄存器的一定数目位。如果比特数匹配,则故障被插入到系统中。通过系统完成的数据流如图2所示。图3给出了用来仿真两个16位线性反馈移位寄存器的在平行和一定数量匹配的数据位上运行的程序的结果。被控制逻辑模块处理的一个4位控制代码(Ctrl)决定了需要多少位在这两个LFSR错误被注入中匹配来控制百分比。每个线性反馈移位寄存器的初始种子必须是不同的,以便产生两个不同的伪随机二进制序列。81 附录4用户使用了某些易于使用的控制设置来在选择的0位或者1位上插入错误。通过在注入模块中固定位或固定值,位可以在永久性注入中很容易的当做目标。固定位是永久性错误的位置,固定值是固定错误的逻辑值。图4显示了一个错误的永久性注入的数据流。在VHDL中系统错误注入逻辑块使用的完成系统控制的最简单的方法是用一个简单的通用端口映射。一个4位宽的控制码块使用在最高层块中,即控制逻辑快,为了让用户更改故障注入率。图1故障注入系统框图图2瞬态故障注入系统的基本数据流程图81 附录4图3左边的百分比是一个错误注入到系统的时间百分比图4永久性错误注入的数据流第二章第2节错误注入模块和独热码移位寄存器81 附录4错误注入模块是注入系统的核心,它承受了两个线性反馈移位寄存器和独热码以为寄存器的数据合并工作。输入电路的监视控制块来评估是否需要在发送给它的数据上进行暂时或永久的故障注入。初始化永久性故障注入的控制代码为“1111”。如果“1111”被发送到的注入系统,故障注入逻辑插入一个用户指定位置(StuckAtBit)到用户指定的值(StuckAtValue)。否则,注入将被确定为瞬时自然性。必须明确当“1111”以控制代码的形式传递给它时的系统运行不同性。该代码是使用固定位和固定值的唯一一个。其他控制代码是瞬态注入并且范围是从“0001”→50%到“1110”→<0.01%注入。控制码“0000”为0%故障注入,而控制码“1111”是100%的故障注入。该控制码被用于控制该错误注入的时间点。通过使这个控制代码每个码增1,错误注入速率从先前的下降了一半。为了确定一个瞬态错误注入过程中将被插入的位,一独热编码的移位寄存器被使用。每一个时钟周期中,逻辑“1”通过代表发送到注入系统中的数据字的长度的数据字移位。“1”的目的是确定被注入错误的位。第二章第3节元件实例图5中的数据长度是注入错误的初始输入或内部信号。它仅仅是一个为了使错误注入系统运行需要的一个正整数,而且应该是相同的数目的比特中所包含的馈送到系统故障注入的一个信号或初始输入。例如,对于一个单一的位被发送到注射用的系统中,数据长度为1。对于一个4-bit的字宽,故障将被插入的数据长度是4。数据输入信号或最初投入的VHDL块调用这个实例的故障将被插入。数据输出对应于块的输出可能包含一个错误。图5VHDL通用注入系统实例第三章实践中的错误注入系统81 附录4提及到的错误注入系统的应用通过几个例子来阐明。下面例子中的VHDL编码和编译使用了XilinxFoundation5.1.03i软件,并且是在ModelSimXEII5.6a软件中仿真的。为了在XilinxFoundation中编写代码,需要选择一个特殊的FPGA;为这个目的FPGAXC2V500-4FG456C被选定。第三章第1节在线可测试系统的瞬时错误注入为了说明在线可测试电路的错误注入的作用,错误注入模块必须插入到VHDL块中意味着要自我检查。一个自检电路可以判断是否有错误传播到一个输出数据字或不。因此,必须采用一个编码系统来完成电路方面的自检和编码方面的检测。在这个例子中,数据编码方法使用了一个4取2代码。换句话说,对于通过系统中的每个4位数据字,每个字中的2位都是1秒其他两个都是0秒。图6中显示了错误注入模块。数据从错误注入块中被送入图7所示的4取2代码检查器中。当Z1Z2=01或10,被测电路是无故障的,当Z1Z2=00或11表示出现错误。4取2代码产生电路假定有3个输入(I1,I2,I3)和一个2取4代码输出为(O1,O2,O3,O4)。例子电路产生符号的总和为:O1=å(0,3,5,6)O2=å(1,3,4,6)O3=å(2,4,5,7)O4=å(0,1,2,7)图6VHDL代码中错误注入模块的放置电路的VHDL代码如下所示:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;81 附录4useIEEE.STD_LOGIC_UNSIGNED.ALL;librarywork;usework.lfsr_pkg.all;entitytest1isPort(DataOut:outstd_logic_vector(3downto0);clk,reset,load,faultenable:instd_logic;ctrl:instd_logic_vector(3downto0);CircuitIn:outstd_logic_vector(2downto0);match:outstd_logic;fault:outstd_logic;Z1,Z2:outstd_logic);endtest1;architectureBehavioraloftest1issignali:std_logic_vector(2downto0);signalDataIn:std_logic_vector(3downto0);signalsubdata:std_logic_vector(3downto0);begin--TheLFSRservesthefunctionoffeedinginputstothe--circuitsoitwillnothavetobedonemanuallyinthe--simulatorLFSR1:LFSR_GENERICgenericmap(Width=>3)portmap(clock=>clk,reset=>reset,load=>load,seed=>“101”,parallelout=>i);CircuitIn<=i;--DataIn(3)=O1,DataIn(2)=O2,DataIn(1)=O3,DataIn(0)=O481 附录4DataIn(3)<=(NOTi(0)AND(i(1)XNORi(2)))OR(i(0)AND(i(1)XORi(2)));DataIn(2)<=i(0)XORi(2);DataIn(1)<=(NOTi(2)AND(i(0)XORi(1)))OR(i(0)ANDi(2));DataIn(0)<=(NOTi(0)ANDNOTi(1))OR(i(1)AND(i(0)XNORi(2)));--Faultinsertionblockinstantiationinserter:faultblockgenericmap(DataLength=>4,StuckAtBit=>0)--ThevalueforStuckAtBitdoesnotmatterinthiscase--becauseatransientfaultisgoingtobeinjected,thus--lettingtheinjectionsystemhandlewhenandwherethe--faultoccurs--The4indicatesthelengthofthedatawordforwhicha--faultshallbeinjectedportmap(DataIn=>DataIn,DataOut=>subdata,StuckAtValue=>‘0’,--StuckAtValuedoesnotmatterinthiscasebecause--onceagain,thesystemintransientinjectionishan-dling--thelocationandwhatthefaultwillbectrl=>ctrl,--Setctrlanywherebetween“0001”and“1110”for--transientfaultinjection--Ifctrlisusedasaninputtothecircuit,itcanbechanged--duringoperationoritcanbesetmanuallywithinthe--injectionblock(ctrl=>“0001”)clk=>clk,reset=>reset,load=>load,81 附录4enable=>faultenable);DataOut<=subdata;--2outof4checkerZ1<=(subdata(0)ORsubdata(1))AND(subdata(2)ORsubdata(3));Z2<=(subdata(0)ANDsubdata(1))OR(subdata(2)ANDsubdata(3));endBehavioral;第三章第2节离线测试环境中的永久性错误注入为了进一步说明该系统的功能,提供了一个显示单一固定错误的永久性注入的例子。在这种情况下的测试图形发生器是一个3位的线性反馈移位寄存器,将控制代码设置为1111。图7显示了在没有出现故障的情况下的仿真结果。预期输出可以在Datout引脚观察。图7无错误注入离线测试电路实例第四章时序电路中的瞬态和永久性错误注入提出了考虑的组合逻辑电路的故障插入技术仅根据行为为主的设计方法,在系统设计中,尤其是在描述复杂的状态机当前正在使用的,它是不可能预测结构的电路所产生的合成工具。由于在大多数情况下,只有一个时序电路的行为描述是可用的,注入VHDL语言描述的时序电路中的故障的能力是必要的,以便有能力评估的最终电路的VHDL产生的控制性和可观测说明。故障注入块并不意味着可以注入故障内的VHDL语言描述的每一个信号,但要达到尽可能多的低级别的VHDL块包含主输入和输出,尤其是内部信号。81 附录4对于时序电路,这个状态必须在进程语句外以便注入系统运行。然而,进程语句可能包含一个表示机器状态的信号。用于识别机器状态的信号在注入模块中分配的数据输入中被使用。机器新状态可能会包含或不包含一个注入的错误。第五章结论故障注入技术使得设计时有能力在VHDL包中插入VHDL代码块内任何错误信号,已经提出。它允许在数据字上随机注入瞬时错误,并允许在任何选择的数据字的点上插入永久性错误。一些例子来说明提出的在组合和时序电路的在线离线测试环境中的错误注入系统的作用。故障插入过程中所提出的方法的一大优点是明显比其他现有的方法简单。由于故障注入块包含一个包,在其他编程形式中非常像一个库,在VHDL描述的开始只有一个简单的的调用和一个需要激活插入机制的元件实例。第六章致谢这项工作一部分是由0925080批准下的美国国家科学基金会支持的。81 附录5附录5自动售货机各功能模块的VHDL源程序主控模块的完整程序如下:Libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityshouhuojioriginalisport(clk:instd_logic;coin1:instd_logic;coin5:instd_logic;price2:instd_logic;price3:instd_logic;paid:outstd_logic_vector(3downto0);needed:outstd_logic_vector(3downto0);success:outstd_logic;failure:outstd_logic;showmoneyout:outstd_logic;moneyout:outstd_logic_vector(3downto0));endshouhuojioriginal;architecturebehavofshouhuojioriginalistypestate_typeis(qa,qb,qe,qc,qg,qd,qf);signalcurrent_state:state_type:=qa;signalq:integerrange0to100;beginprocess(clk)81 附录5variablepaidtemp:std_logic_vector(3downto0);variableneededtemp:std_logic_vector(3downto0);variablebackmoney:std_logic_vector(3downto0);variablepricetemp:std_logic_vector(3downto0);beginifclk"eventandclk="1"thencasecurrent_stateiswhenqa=>paidtemp:="0000";neededtemp:="0000";backmoney:="0000";pricetemp:="0000";q<=0;showmoneyout<="0";moneyout<="0000";paid<="0000";needed<="0000";failure<="0";success<="0";ifprice2="1"orprice3="1"thencurrent_state<=qb;ifprice2="1"thenpricetemp:=pricetemp+2;neededtemp:=pricetemp;Elsepricetemp:=pricetemp+3;neededtemp:=pricetemp;endif;endif;paid<=paidtemp;needed<=neededtemp;whenqb=>ifcoin1="1"orcoin5="1"thenifcoin1="1"thenpaidtemp:=paidtemp+1;elsepaidtemp:=paidtemp+5;81 附录5endif;ifpaidtemp>=pricetempthenbackmoney:=paidtemp-pricetemp;neededtemp:="0000";current_state<=qd;elseneededtemp:=pricetemp-paidtemp;backmoney:="0000";current_state<=qc;q<=0;endif;paid<=paidtemp;needed<=neededtemp;endif;ifq<8thenq<=q+1;ifprice2="1"orprice3="1"thenq<=0;ifprice2="1"thenpricetemp:=pricetemp+2;neededtemp:=neededtemp+2;elsepricetemp:=pricetemp+3;neededtemp:=neededtemp+3;endif;paid<=paidtemp;needed<=neededtemp;endif;elsecurrent_state<=qe;q<=0;endif;whenqe=>failure<="1";ifq<4thenq<=q+1;elsecurrent_state<=qa;q<=0;81 附录5endif;whenqc=>ifcoin1="1"orcoin5="1"thenifcoin1="1"thenpaidtemp:=paidtemp+1;elsepaidtemp:=paidtemp+5;endif;ifpaidtemp>=pricetempthenneededtemp:="0000";backmoney:=paidtemp-pricetemp;current_state<=qd;elseneededtemp:=pricetemp-paidtemp;backmoney:="0000";current_state<=qc;endif;paid<=paidtemp;needed<=neededtemp;endif;ifcoin1/="1"andcoin5/="1"thenifq<10thenq<=q+1;elsecurrent_state<=qg;endif;elseq<=0;endif;whenqg=>failure<="1";showmoneyout<="1";moneyout<=paidtemp;current_state<=qf;q<=0;81 附录5whenqd=>success<="1";ifbackmoney>"0000"thenshowmoneyout<="1";moneyout<=backmoney;endif;current_state<=qf;q<=0;whenqf=>ifq<4thenq<=q+1;elsecurrent_state<=qa;q<=0;endif;endcase;endif;endprocess;endbehav;二进制译码模块的完整程序如下:Libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycode1isport(b:instd_logic_vector(3downto0);bcd0:outstd_logic_vector(3downto0);bcd1:outstd_logic_vector(3downto0));endcode1;architectureoneofcode1isbegin81 附录5process(b)begincasebiswhen"0000"=>bcd0<="0000";bcd1<="0000";when"0001"=>bcd0<="0001";bcd1<="0000";when"0010"=>bcd0<="0010";bcd1<="0000";when"0011"=>bcd0<="0011";bcd1<="0000";when"0100"=>bcd0<="0100";bcd1<="0000";when"0101"=>bcd0<="0101";bcd1<="0000";when"0110"=>bcd0<="0110";bcd1<="0000";when"0111"=>bcd0<="0111";bcd1<="0000";when"1000"=>bcd0<="1000";bcd1<="0000";when"1001"=>bcd0<="1001";bcd1<="0000";when"1010"=>bcd0<="0000";bcd1<="0001";when"1011"=>bcd0<="0001";bcd1<="0001";when"1100"=>bcd0<="0010";bcd1<="0001";when"1101"=>bcd0<="0011";bcd1<="0001";when"1110"=>bcd0<="0100";bcd1<="0001";when"1111"=>bcd0<="0101";bcd1<="0001";whenothers=>null;endcase;endprocess;endone;BCD码译码模块的完整程序如下:libraryieee;81 附录5useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycode2isport(d:instd_logic_vector(3downto0);q:outstd_logic_vector(6downto0));endcode2;architectureoneofcode2isbeginprocess(d)begincasediswhen"0000"=>q<="1111110";when"0001"=>q<="0110000";when"0010"=>q<="1101101";when"0011"=>q<="1111001";when"0100"=>q<="0110011";when"0101"=>q<="1011011";when"0110"=>q<="1011111";when"0111"=>q<="1110000";when"1000"=>q<="1111111";when"1001"=>q<="1110011";whenothers=>q<="0000000";endcase;endprocess;endone;81 附录5顶层文件的完整程序如下:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitytopisPort(clk1:instd_logic;C1,C5,P2,P3:instd_logic;paid_lcd0,paid_lcd1,needed_lcd0,needed_lcd1,Mout_lcd0,Mout_lcd1:outstd_logic_vector(6downto0);s,f,showout:outstd_logic);endtop;architectureoneoftopiscomponentshouhuojioriginalport(clk:instd_logic;coin1:instd_logic;coin5:instd_logic;price2:instd_logic;price3:instd_logic;paid:outstd_logic_vector(3downto0);needed:outstd_logic_vector(3downto0);success:outstd_logic;failure:outstd_logic;81 附录5showmoneyout:outstd_logic;moneyout:outstd_logic_vector(3downto0));endcomponent;componentcode1port(b:instd_logic_vector(3downto0);bcd0:outstd_logic_vector(3downto0);bcd1:outstd_logic_vector(3downto0));endcomponent;componentcode2port(d:instd_logic_vector(3downto0);q:outstd_logic_vector(6downto0));endcomponent;signalp,n,mo:std_logic_vector(3downto0);signals1,s2,s3,s4,s5,s6:std_logic_vector(3downto0);beginu0:shouhuojioriginalportmap(clk=>clk1,coin1=>C1,coin5=>C5,price2=>P2,price3=>P3,success=>s,failure=>f,showmoneyout=>showout,paid=>p,needed=>n,moneyout=>mo);u1:code1portmap(b=>p,bcd0=>s1,bcd1=>s2);81 附录5u2:code1portmap(b=>n,bcd0=>s3,bcd1=>s4);u3:code1portmap(b=>mo,bcd0=>s5,bcd1=>s6);u4:code2portmap(d=>s1,q=>paid_lcd0);u5:code2portmap(d=>s2,q=>paid_lcd1);u6:code2portmap(d=>s3,q=>needed_lcd0);u7:code2portmap(d=>s4,q=>needed_lcd1);u8:code2portmap(d=>s5,q=>Mout_lcd0);u9:code2portmap(d=>s6,q=>Mout_lcd1);endone;81 燕山大学毕业设计(论文)评审意见表指导教师评语:态度(□认真、□较好、□一般、□较差);工作(□积极主动、□较主动、□不主动);设计工作量(□大、□较大、□一般、□较少);设计难度(□大、□较大、□一般、□较小);创新意识(□强、□较强、□一般);专业基础理论(□扎实、□较扎实、□一般、□较差)。论文质量(□很高、□较高、□一般、□较差)(□出色的、□较好的、□基本上、□未能)完成毕业设计(论文)任务书所确定的任务。(□同意、□不同意)参加答辩。成绩:指导教师签字:年月日评阅人评语:该生(□基本上、□一般地、□较好地、□很好地)完成了任务书所规定地研究(设计)任务,翻译资料、综述资料质量(□较好、□一般、□较差),论文撰写质量(□较好、□一般、□较差),设计(论文)的难度和工作量(□较大、□一般、□较小),(□同意、□不同意)该同学参加毕业论文答辩。成绩:评阅人签字:年月日 燕山大学毕业设计(论文)答辩委员会评语表答辩委员会评语:该同学在毕业设计中,(□出色的、□较好的、□基本上)完成了设计任务。设计方案(□合理、□较合理、□基本合理、□错误较多);创新性(□很好、□较好、□一般、□较差);完成质量(□很好、□较好、□一般、□较差);论文撰写(□规范、□较为规范、□一般、□较差);答辩过程中(□正确、□较为正确、□基本正确、□未能正确)地回答老师提出的问题。综上所述,该生(□具有扎实的基础理论知识和正确运用知识解决问题的能力□具有较好的基础理论知识和正确运用知识解决问题的能力□基本掌握了本专业的基础理论知识并能运用所学知识解决问题□在基础理论知识和正确运用专业知识解决问题方面基本上达到了本科生的毕业要求□未能掌握本专业的基础理论知识、不具备运用所学知识解决问题的能力)。答辩委员会一致同意该同学毕业设计成绩为(□优秀、□良好、□中等、□及格、□不及格)。总成绩:答辩委员会主席签字:年月日'