基于vhdl自动售货机的设计与实现内容摘要:

式的选择等。 然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合和器件适配,并产生报告文件、延时信息文件及编程文件,供分析仿真和编程使用。 (3)、仿真:仿真包括功能仿真、时序仿真和定时分析,可以利用软件的仿真功能来验证设计项目的逻辑功能是否正确。 (4)、编程与验证:用经过仿真确认后的 编程文件通过编程器( Programmer)将设计下载到实际芯片中,最后测试芯片在系统中的实际运行性能。 在设计过程中,如果出现错误,则需重新回到设计输入阶段,改正错误或调整电路后重复上述过程。 设计步骤 : (1)输入项目文件名 (File/Project/Name) (2)输入源文件 (图形、 VHDL、 AHDL、 Verlog 和波形输入方式 ) (Max+plusⅡ/graphic Editor ; Max+plusⅡ/Text Editor ; Max+plusⅡ/Waveform Editor) (3)指定 CPLD 型号 (Assign/Device) (4)设置管脚、下载方式和逻辑综合的方式 自动售货机的设计与实现 10 (Assign/Global Project Device Option,Assign/Global Logic Synthesis) (5)保存并检查源文件 (File/project/Save amp。 Check) (6)指定管脚 (Max+plusⅡ/Floorplan Editor) (7)保存和编译源文件 (File/project/Save amp。 Compile) (8)生成波形文件 (Max+plusⅡ/Waveform Editor ) (9)仿真 (Max+plusⅡ/Simulator) (10)下载配置 (Max+plusⅡ/Programmer) 常用菜单简介 : 该软件的菜单主要有: MAX+PLUSⅡ 菜单 ( MAX+PLUSⅡ )、 文件菜单 ( File), 该文件菜单随所选功能的不同而不同 、 模板菜单 ( Templates), 该模板使编写 VHDL 和 AHDL 设计文件更容易和方便 、 指定菜单 ( Assign)、 选择菜单 ( Option)。 该软件的菜单繁多,要想都学会有一定的难度,主要原因是资料问题。 但是常用的菜单会使用还是可能的。 如何获得帮助 : 最直接 的帮助来自于 Max+plusⅡ的 Help 菜单。 若需要某个特定项目的帮助信息,可以同时按 Shift+F1键或者选用工具栏中的快速帮助按钮“ ”。 此时,鼠标变为带问号的箭头,点击“特定的项目”就可弹出相应的帮助信息。 这里的“特定项目”,可以包含某个器件的图形、文本编辑中的单词,菜单选项 ,甚至可以是一个弹出的窗口。 2 自动售货机的设计 设计说明 本文设计的自动售货机 [4]可销售牛奶 (2元 )、果汁 (3元 )两种商品;售货机可识别 1元和5元两种货币 ,在一次购买过程中,可购买一个或多个商品,系统会自动计算所需钱数和找零钱数并自动找零。 另外有 3个发光二极管、 6个 LCD 数码管。 3个发光二极管分别用来显示交易成功、交易失败、正在找零。 6个 LCD 数码管: 2个用来显示所需金额, 2个用来显示已付金额, 2个用来显示找零数。 流程说明 本文设计的自动售货机当通电时,表示一次投币销售过 程的开始。 顾客选择一种商品或多种则进入投币状态。 若不投币,则自动返回初始状态。 投币后,系统自动计算所投钱数。 若投币够,则出货找零。 若投币不够,等待 10秒后,顾客没有继续投币,则退币并回自动售货机的设计与实现 11 到初始状态。 本系统的投币销售流程图如图 2所示: 图 2 流程图 各模块说明 本文设计的自动售货机总体分三个模块 [5]:总控模块、二进制译码模块、 BCD 码译码模块。 其它功能本文不予讨论。 总控模块:总控模块是本系统最重要的模块,该模块大体 有 5个输入端口和 6个输出端口。 其输入端口包括 clk、 coin1(投入一元货币 )、 coin5(投入 5元货币 )、 price2(选择 2元的商品 )、 price3(选择 3元的商品 ),输出端口有 paid(已投入多少钱 )、 needed(还需要多少钱 )、 moneyout(找零 )、 success(灯亮表示交易成功 )、 failure(灯亮表示交易失败 )、自动售货机的设计与实现 12 showmoneyout(灯亮表示正在找零 )。 该模块实现了本系统最重要的交易过程,包括选择商品、投入货币、计算货币,找零出货等。 二进制译码模块:该模块有一个输入端和两个输出 端。 输入端 b 是一个 4位的二进制数,输出端 bcd0、 bcd1,是两个 4位的 BCD 码。 该模块的主要功能是实现将主控模块输出的二进制数 (paid、 needed、 moneyout)转换成 BCD 码,以便输出到七段显示数码器上而显示出来。 该模块的原理是将一个 4位的二进制数转换成 2个 4位的 BCD 码,分别为高 4位和低 4位。 BCD 码译码模块:该模块有一个输入端和一个输出端。 输入端 d 是一个 4位的 BCD码,输出端 q是一个 7位数,输出连接到一个 LCD 数码管以显示出来。 各模块的连接 各模块的连接如图 3所示: 图 3 硬件模块连接图 如图 3所示,左边的 5个端口为输入端口,连接的模块是主控模块。 中间的 3个输出端口连接 3个 LED 指示灯,分别指示交易成功、交易失败、需要找零。 中间的 3个模块是二进制译码模块,分别将主控模块输出的 paid、 needed、 moneyout 转换成两个 4位的 BCD 码。 最右边的 6个模块是 BCD 译码模块,输出端口连接 6个 LCD 七段显示数码管。 状态之间的转换 本文所设计的自动售货机进程可分为 7个状态 [6]: a,b,c,d,e,f,g。 a 为开始状态,当有键按下时即进入 b状态(投币状态)。 当等待十秒还没投币时即进入 e状态, e状态返回自动售货机的设计与实现 13 a状态。 当有货币投入,但投币不够时,即进入 c 状态(继续投币),若等待十秒不投,即进入 g 状态(退钱),若投币但还不够,则继续投币。 当投币够了,即进入 d 状态(出货找零)。 之后进入 f状态(延时)后返回 a状态。 3 仿真时序图 主控模块的仿真 图 4 主控模块只选一次但不投币的仿真 如图 4所示:选择 3元商品,不再投币,所需货币显示 3元, 10 秒后, failure 为高电平,表示交易失败,延时显示后 ,回到初始状态。 源程序见附录的主控模块。 图 5 主控模块多次选择但不投币的仿真 如图 5所示:选择 3元商品后,在 10秒内,再次选择 2元商品;此后,不再投币,所需货币先为 3元,后为 5元, 10秒后, failure 出现高电平,表示交易失败,延时显示后,回自动售货机的设计与实现 14 到初始状态。 源程序见附录的主控模块。 图 6 主控模块交易成功但不找零的仿真 如图 6所示:选择 3元商品后,在 10秒内,再次选择 2元商品;所需货币先是 3元,后为5元,此后,在一定时限内投入 5元钱,所需货币为 0元, success 为高电平,表示交易成功,不找零,延时 显示后,回到初始状态。 源程序见附录的主控模块。 图 7 主控模块交易成功且找零的仿真 如图 7所示:选择 3元商品后,在 10秒内,再次选择 2元商品;所需货币先为 3元,后为5元,此后,在一定时限内先后投入 1元和 5元,所需货币分别变为 4元, 0元, success 为高电平,表示交易成功。 showmoneyout 为高电平,表示要找零, moneyout 显示为 1元,表示找零 1元。 延时显示,其后回到初始状态。 源程序见附录的主控模块。 自动售货机的设计与实现 15 图 8 主控模块连续交易成功的仿真 如图 8所示:先分别选择 3 元和 2元的商品,所需货币先后显 示 3元和 5 元,再投入1元和 5 元,所需货币显示分别为 4 元, 0元。 success 为高电平,表示一次交易成功,同时 showmoneyout 也为高电平,表示需要找零, moneyout 显示为 1元,再选择 3元的商品,投入 5元,所需货币先后为 3元和 0 元。 success 为高电平,表示第二次交易成功,showmoneyout 为高电平,表示要找零, moneyout 显示为 2 元。 图 8 显示连续交易。 源程序见附录的主控模块。 图 9 主控模块钱不够但不再投币的仿真 如图 9所示:选择 3元商品后,在 10秒内,再次选择 2元商品;所需货币先 后显示 3元和5元。 此后,在一定时限内投入 1元,所需货币显示 4元,其后,等待再次投币,若超过一定时限( 10秒)不再投币,认为放弃, failure 为高电平,表示交易失败。 showmoneyout为高电平,表示要退币, moneyout 显示 1元,即退币 1元;延时显示后,回到初始状态。 源程序见附录的主控模块。 自动售货机的设计与实现 16 二进制译码的仿真 图 10 二进制译码的仿真 如图 10所示:分别将从 0到 F 各位二进制数转换为两位的 BCD 码数。 如图所示,将一个 4位的二进制数转化为两个 4位的 BCD 码数的功能得到实现。 源程序见附录的 二进制译码模块。 BCD 码译码的仿真 图 11 BCD码译码的仿真 如图 11所示:将从 0到 7各位 BCD 码转化为七段译码显示出来,其中 7E 在七段数码管上显示 0,30显示 1,6D 显示 2等等。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。