EDA自动售货机带3秒复位_第1页
EDA自动售货机带3秒复位_第2页
EDA自动售货机带3秒复位_第3页
EDA自动售货机带3秒复位_第4页
EDA自动售货机带3秒复位_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录1 引言.12 VHDL 介绍.22.1 硬件描述语言 VHDL .22.2 VHDL 语言的特点 .33 QuartusII 软件简介.43.1 软件介绍 .43.2 界面介绍 .43.2.1 代码输入界面.43.2.2 功能仿真界面.53.2.3 波形仿真界面.64 自动售货机控制器设计与仿真.74.1 硬件电路设计 .74.2 状态转换图 .74.3 时序仿真结果 .105 引脚锁定及下载.125.1 引脚锁定 .125.2 下载 .125.3 结果分析 .126 设计总结.14参考文献.15附录.161 引言VHDL 的英文全名是 VHSIC(Very High Speed In

2、tegrated Circuit)Hardware Descriptiong Language,诞生于 1982 年。1987 年底,VHDL 被美国国防部确认为标准硬件描述语言 。自 IEEE 公布了 VHDL 的标准版本,IEEE-1076 之后,各 EDA公司相继推出了自己的 VHDL 设计环境,或宣布自己的设计工具可以和 VHDL 接口。1993 年,IEEE 对 VHDL 进行了修订,从更高的抽象层次和系统描述能力上扩展 VHDL 的内容,公布了新版本的 VHDL,即 IEEE 标准的 1076-1993 版本。现在,VHDL 和 Verilog 作为 IEEE 的工业标准硬件描述语

3、言,又得到众多 EDA 公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL 于 Verilog 语言将承担起大部分的数字系统设计任务。 VHDL 的英文全写(Very-High-Speed Integrated Circuit HardwareDescription Language)翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在 FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计 ASIC。随着 EDA 技术的高速发展,电子系统的设计技术和工具发生了

4、深刻的变化,大规模可编程逻辑器件 CPLDFPGA 的出现,给设计人员带来了诸多方便。利用它进行产品开发,不仅成本低、周期短、可靠性高,而且具有完全的知识产权。利用 VHDL 语言设计自动售货机,使其实现自动售货,找零钱等功能,突出了其作为硬件描述语言的良好的可读性、可移植性和易读性等优点。此程序通过下载到特定芯片后,可应用于实际的自动售货机系统中。本文基于 FPGA 开发系统,在 QuartusII 7.2 软件平台上,完成了自动售货机控制器的设计和与仿真,并下载到试验箱进行硬件实现。首先,本文介绍了QuartusII 7.2 软件的基本使用方法和 VHDL 硬件描述语言的特点,采用 VHD

5、L 硬件描述语言描述自动售货机控制器,完成对电路的功能仿真。在设计过程中,重点探讨了自动售货机控制器的设计思路和功能模块划分。然后,初步探讨了电路逻辑综合的原理,该软件对自动售货机控制器电路进行了逻辑综合。最后,使用EDA 实验开发系统进行电路的下载和验证。验证结果表明设计的自动售货机控制器完成了预期的功能。2 VHDL 介绍2.1 硬件描述语言 VHDL硬件描述语言(HDL)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。例如一个 32 位的加法器,利用图形输入软件需要输人 500 至

6、 1000 个门,而利用 VHDL 语言只需要书写一行“A=B+C” 即可。而且 VHDL 语言可读性强,易于修改和发现错误。早期的硬件描述语言,如ABEL、HDL、AHDL,由不同的 EDA 厂商开发,互不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。为了克服以上不足,1985 年美国国防部正式推出了高速集成电路硬件描述语言 VHDL,1987 年 IEEE 采纳 VHDL 为硬件描述语言标准(IEEE-STD-1076)。VHDL 是一种全方位的硬件描述语言,包括系统行为级。寄存器传输级和逻辑门多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此VHDL 几乎覆盖了以

7、往各种硬件俄语言的功能,整个自顶向下或由下向上的电路设计过程都可以用 VHDL 来完成。VHDL 还具有以下优点:(1)VHDL 的宽范围描述能力使它成为高层进设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现。(2)VHDL 可以用简洁明确的代码描述来进行复杂控制逻辑设计,灵活且方便,而且也便于设计结果的交流、保存和重用。(3)VHDL 的设计不依赖于特定的器件,方便了工艺的转换。(4)VHDL 是一个标准语言,为众多的 EDA 厂商支持,因此移植性好。6传统的硬件电路设计方法是采用自下而上的设计方法,即根据系统对硬件的要求,详细编制技术规格书,并画出系统

8、控制流图;然后根据技术规格书和系统控制流图,对系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图;接着就进行各功能模块的细化和电路设计;各功能模块电路设计、调试完成后,将各功能模块的硬件电路连接起来再进行系统的调试,最后完成整个系统的硬件设计。采用传统方法设计数字系统,特别是当电路系统非常庞大时,设计者必须具备较好的设计经验,而且繁杂多样的原理图的阅读和修改也给设计者带来诸多的不便。为了提高开发的效率,增加已有开发成果的可继承性以及缩短开发周期,各 ASIC 研制和生产厂家相继开发了具有自己特色的电路硬件描述语言(Hardware Description Language,简称 HD

9、L)。但这些硬件描述语言差异很大,各自只能在自己的特定设计环境中使用,这给设计者之间的相互交流带来了极大的困难。因此,开发一种强大的、标准化的硬件描述语言作为可相互交流的设计环境已势在必行。于是,美国于 1981 年提出了一种新的、标准化的 HDL,称之为VHSIC(Very High Speed Integrated Circuit) Hardware Description Language,简称VHDL。这是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。设计者可以利用这种语言来描述自己的设计思想,然后利用电子设计自动化工具进行仿真,再自动综合到门电路,最后用 PLD 实现其功能

10、。2.2 VHDL 语言的特点具有良好的可读性,即容易被计算机接受,也容易被读者理解。使用期长,不会因工艺变化而使描述过时。因为 VHDL 的硬件描述与工艺无关,当工艺改变时,只需修改相应程序中的属性参数即可。当电路系统采用 VHDL 语言设计其硬件时,与传统的电路设计方法相比较,具有如下的特点:第一层次是行为描述。所谓行为描述,实质上就是对整个系统的数学模型的描述。一般来说,对系统进行行为描述的目的是试图在系统设计的初始阶段,通过对系统行为描述的仿真来发现设计中存在的问题。在行为描述阶段,并不真正考虑其实际的操作和算法用何种方法来实现,而是考虑系统的结构及其工作的过程是否能到达系统设计的要求

11、。第二层次是 RTL 方式描述。这一层次称为寄存器传输描述(又称数据流描述)。如前所述,用行为方式描述的系统结构的程序,其抽象程度高,是很难直接映射到具体逻辑元件结构的。要想得到硬件的具体实现,必须将行为方式描述的VHDL 语言程序改写为 RTL 方式描述的 VHDL 语言程序。也就是说,系统采用RTL 方式描述,才能导出系统的逻辑表达式,才能进行逻辑综合。第三层次是逻辑综合。即利用逻辑综合工具,将 RTL 方式描述的程序转换成用基本逻辑元件表示的文件(门级网络表)。此时,如果需要,可将逻辑综合的结果以逻辑原理图的方式输出。此后可对综合的结果在门电路级上进行仿真,并检查其时序关系。由自上而下的

12、设计过程可知,从总体行为设计开始到最终的逻辑综合,每一步都要进行仿真检查,这样有利于尽早发现设计中存在的问题,从而可以大大缩短系统的设计周期。由于目前众多制造 PLD 芯片的厂家,其工具软件均支持 VHDL 语言的编程。所以利用 VHDL 语言设计数字系统时,可以根据硬件电路的设计需要,自行利用PLD 设计自用的 ASIC 芯片,而无须受通用元器件的限制。3 QuartusII 软件简介3.1 软件介绍Quartus II 是 Altera 公司的综合性 PLD 开发软件,支持原理图、VHDL、VerilogHDL 以及 AHDL(Altera Hardware Description Lan

13、guage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整 PLD 设计流程。 Quartus II 可以在 XP、Linux 以及 Unix 上使用,除了可以使用 Tcl 脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。 Quartus II 支持 Altera 的 IP 核,包含了 LPM/MegaFunction 宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方 EDA 工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA 工具。 此外,Q

14、uartus II 通过和 DSP Builder 工具与 Matlab/Simulink 相结合,可以方便地实现各种 DSP 应用系统;支持 Altera 的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。 Maxplus II 作为 Altera 的上一代 PLD 设计软件,由于其出色的易用性而得到了广泛的应用。目前 Altera 已经停止了对 Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera 在 Quartus II 中包含了许多诸如 SignalTap I

15、I、Chip Editor 和 RTL Viewer 的设计辅助工具,集成了SOPC 和 HardCopy 设计流程,并且继承了 Maxplus II 友好的图形界面及简便的使用方法。 Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。3.2 界面介绍3.2.1 代码输入界面代码输入界面如图 3.1 所示:图 3.1 代码输入界面3.2.2 功能仿真界面功能仿真界面如图 3.2 所示:图 3.2 功能仿真界面3.2.3 波形仿真界面波形仿真界面如图 3.3 所示:图 3.3 波形仿真界面4 自动售货机控制器

16、设计与仿真4.1 硬件电路设计根据要求:自动售货机能出售 1 元、5 元、10 元三种商品。出售哪种商品可由顾客按动相应的一个按键即可,并同时用数码管显示出此商品的价格;顾客投入硬(纸)币的钱数也是有 1 元、5 元、10 元三种,但每次只能投入其中的一种币,此操作通过按动相应的一个按键来模拟,并同时用数码管将投币额显示出来;顾客投币后,按一次确认键,如果投币额不足时则报警,报警时间 3 秒。如果投币额足够时自动送出货物(送出的货物用相应不同的指示灯显示来模拟),同时多余的钱应找回,找回的钱数用数码管显示出来;顾客一旦按动确认键 3 秒后,自动售货机即可自动恢复到初始状态,此时才允许顾客进行下

17、一次购货操作;此售货机要设有一个由商家控制的整体复位控制;所以系统顶层框图设计如下图 4.1所示: 其中,sel1、sel5、sel10 分别控制选择 1 元、5 元、10 元三种商品,put1、put5、put10 分别是顾客投入硬(纸)币的钱数 1 元、5 元、10 元,sure 是确认输入,rst 是由商家控制的整体复位控制输入;jing 是警告输出,out1、out,out10 分别是 1 元、5 元、10 元三种商品输出指示,digit 用于显示顾客投币钱数和找零钱数。4.2 状态转换图状态转换图如图 4.2 所示:图 4.1 系统顶层框图S0S1S2S3S4S5S6S7S8S9S1

18、0S11S12S13S14S15S16S17S18S19S20S21S0共分为 21 个状态,S0 为初始状态,当顾客选择 1 元、5 元或 10 元三种商品时分别跳转至 S1、S2、S3 状态,否则停留在 S0 状态,选择货物的钱数在数码管上显示出来,程序代码如下所示:when s0=jing=0;out1=0;out5=0;out10=0;digit=0; if sel1=1 and sel5=0 and sel10=0 then ns=s1; elsif sel1=0 and sel5=1 and sel10=0 then ns=s2; elsif sel1=0 and sel5=0 a

19、nd sel10=1 then ns=s3; else nsdigit=1; if put1=1 and put5=0 and put10=0 then ns=s4; elsif put1=0 and put5=1 and put10=0 then ns=s5; elsif put1=0 and put5=0 and put10=1 then ns=s6; else nsdigit=5; if put1=1 and put5=0 and put10=0 then ns=s7; elsif put1=0 and put5=1 and put10=0 then ns=s8; elsif put1=

20、0 and put5=0 and put10=1 then ns=s9; else nsdigit=10; if put1=1 and put5=0 and put10=0 then ns=s10; elsif put1=0 and put5=1 and put10=0 then ns=s11; elsif put1=0 and put5=0 and put10=1 then ns=s12; else ns=s3; end if;当按下确认键时,则按状态转移图跳到相应的下一个状态,否则停留在当前状态,执行售货、找钱、警告、3 秒后复位等功能。4.3 时序仿真结果当所选货物钱数与投币钱数相等时波

21、形仿真结果图如图 4.3 所示:图 4.3 投币正好波形仿真图由波形仿真结果可以看到:当按下选择 5 元货物时,digit 输出为 5,当投币为5 元时,digit 输出为 5,当按下确认后 digit 输出为 0,并且显示 5 元商品输出,三个上升沿即 3 秒后复位,所有输出为 0;当所选货物钱数比投币钱数多时波形仿真结果图如图 4.4 所示:图 4.4 投币不足波形仿真图由波形仿真结果可以看到:当按下选择 5 元货物时,digit 输出为 5,当投币为1 元时,digit 输出为 1,当按下确认后 digit 输出为 1,即找回 1 元并且无商品输出,警告经过 3 个上升沿即 3 秒后复位

22、,所有输出为 0。当所选货物钱数比投币钱数少时波形仿真结果图如图 4.5 所示:图 4.5 投币富余波形仿真图由波形仿真结果可以看到:当按下选择 5 元货物时,digit 输出为 5,当投币为10 元时,digit 输出为 10,当按下确认后 digit 输出为 5,即找回 5 元并且商品输出,经过 3 个上升沿即 3 秒后复位,所有输出为 0。5 引脚锁定及下载5.1 引脚锁定选择 Assignments 菜单下的 Pins 命令,引脚锁定图如图 5.1 所示:图 5.1 引脚锁定图如果是下载到实验箱上则需连续按“模式选择”按钮选择模式 5,再按“系统复位”按钮。进行引脚锁定,查阅附表,分别

23、点“location”选择引脚号。引脚锁定后再编译。如同此前进行过的。编译成功后点确定。5.2 下载选择 Tools 菜单下的 Programmer 命令,然后在 Program/Configure 下打上钩选中,点“start”按钮开始下载, “Progress”进度条显示下载进度。下载完后就可以在实验箱上查看并验证结果。5.3 结果分析通过上面的步骤将程序代码下载到实验箱的 FPGA 芯片中,并验证了在仿真中的结果的正确性。自动售货机能出售 1 元、5 元、10 元三种商品。出售哪种商品可由顾客按动相应的一个按键即可,并同时用数码管显示出此商品的价格;顾客投入硬(纸)币的钱数也是有 1 元

24、、5 元、10 元三种,但每次只能投入其中的一种币,此操作通过按动相应的一个按键来模拟,并同时用数码管将投币额显示出来;顾客投币后,按一次确认键,如果投币额不足时则报警,报警时间 3 秒。如果投币额足够时自动送出货物(送出的货物用相应不同的指示灯显示来模拟) ,同时多余的钱应找回,找回的钱数用数码管显示出来;顾客一旦按动确认键 3 秒后,自动售货机即可自动恢复到初始状态,此时才允许顾客进行下一次购货操作;此售货机设有一个由商家控制的整体复位控制,当整体复位信号有效时,所有输出均为零。6 设计总结一周的课设过去的太快了,自动售货机控制器的设计已按计划如期全部完成,能按预期的效果进行自动售货,找零

25、,复位,警告等功能,并设计数码管显示所选商品价格、投币数目和应当找回顾客的钱数。课设时先按要求画出状态转换图,然后再根据状态转换图及要求逐一设计。最后再将它们组合成完整的自动售货机控制器。课设过程中遇到一个主要问题是,延时三秒如何实现。这个问题让我两天晚上没有睡好,经自己的多次分析和程序调试,最后在和同学在骑车的路上的讨论中共同解决了这个问题,并得出结论:即便是百分之九十九的正确性都是不正确的,必须确保百分之百的正确率,还有一个人的力量往往是不如人多智慧多!在这次课设中使我更加熟悉了对这门课程的了解并且加深了同学间合作的默契,总之,这次课程设计很愉快!最后,非常感谢郭老师和戴老师对我们认真细心

26、的教导和耐心的指导,谢谢老师们的关心。 参考文献1.Voknei A.Pedroni.VHDL 数字电路设计教程.电子工业出版社,2008.52.潘松,黄继业.EDA 技术实用教程(第二版).科学出版社,2005.23.焦素敏.EDA 应用技术.清华大学出版社,2002.44.张昌凡等.可编程逻辑器件及 VHDL 设计技术M.广州:华南理工大学出版社,20015.曾繁泰,陈美金.VHDL 程序设计M.北京:清华大学出版社,2001附录library ieee;-库声明use ieee.std_logic_1164.all;entity guo is port(sel1,sel5,sel10,p

27、ut1,put5,put10,sure,clk,rst:in std_logic; jing,out1,out5,out10:out std_logic; digit:out integer range 0 to 15);end guo;-实体architecture bhv of guo istype state is(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21);-结构体,定义 21 个状态signal ps,ns:state;signal a,b:std_logic;-声明 a

28、,b 两个信号,用于延时beginprocess(clk,rst)variable temp:integer range 0 to 3;begin if rst=1then ps=s0;-当复位信号有效时,s0 赋给现态 elsif clkevent and clk=1 then ps=ns;-当上升沿到来时,次态赋值给现态 if(a=1)then temp:=temp+1; if(temp=3)then b=1; else b=0; end if; else temp:=0; end if; end if;-延时程序end process;process(sel1,sel5,sel10,pu

29、t1,put5,put10,sure,b,ps)beginif(ps=s0)or(ps=s1)or(ps=s2)or(ps=s3)or(ps=s4)or(ps=s5)or(ps=s6)or(ps=s7)or(ps=s8)or(ps=s9)or(ps=s10)or(ps=s11)or(ps=s12)then a=0; else ajing=0;out1=0;out5=0;out10=0;digit=0;-状态及状态转换情况 if sel1=1 and sel5=0 and sel10=0 then ns=s1; elsif sel1=0 and sel5=1 and sel10=0 then n

30、s=s2; elsif sel1=0 and sel5=0 and sel10=1 then ns=s3; else nsdigit=1; if put1=1 and put5=0 and put10=0 then ns=s4; elsif put1=0 and put5=1 and put10=0 then ns=s5; elsif put1=0 and put5=0 and put10=1 then ns=s6; else nsdigit=1; if sure=1 then ns=s13; else nsdigit=5; if sure=1 then ns=s14; else nsdigit=10; if sure=1 then ns=s15; else nsdigit=5; if put1=1 and put5=0 and put10=0 then ns=s7; elsif put1=0 and put5=1 and put10=0 then ns=s8; elsif put1=0 and put5=0 and put10=1 then ns=s9; else ns

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论