基于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)设置管脚、下载方式和逻辑综合的方式 自动售货机的设计与实现 11 (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秒后,顾客没有继续投币,则退币并回自动售货机的设计与实现 12 到初始状态。 本系统的投币销售流程图如图 2所示: 图 2 流程图 各模块说明 本文设计的自动售货机总体分三个模块 [5]:总控模块、二进制译码模块、 BCD 码译码模块。 其它功能本文不予讨论。 总控模块:总控模块是本系统最重要的模块,该模块大体有 5个输入端口和 6个输出端口。 其输入端口包括 clk、 coin1(投入一元货币 )、 coin5(投入 5元货币 )、 price2(选择 2元的商品 )、 price3(选择 3元的商品 ),输出端口有 paid(已投入多少钱 )、 needed(还需要多少钱 )、 moneyout(找零 )、 success(灯亮表示交易成功 )、 failure(灯亮表示交易失败 )、自动售货机的设计与实现 13 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状态返回自动售货机的设计与实现 14 a状态。 当有货币投入,但投币不够时,即进入 c 状态(继续投币),若等待十秒不投,即进入 g 状态(退钱),若投币但还不够,则继续投币。 当投币够了,即进入 d 状态(出货找零)。 之后进入 f状态(延时)后返回 a状态。 3 仿真时序图 主控模块的仿真 图 4 主控模块只选一次但不投币的仿真 如图 4所示:选择 3元商品,不再投币,所需货币显示 3元, 10 秒后, failure 为高电平,表示交易失败,延时显示后,回到初始状态。 源程序见附录的主控模块。 图 5 主控模块多次选择但不投币的仿真 如图 5所示:选择 3元商品后,在 10秒内,再次选择 2元商品;此后,不再投币,所需货币先为 3元,后为 5元, 10秒后, failure 出现高电平,表示交易失败,延时显示后,回自动售货机的设计与实现 15 到初始状态。 源程序见附录的主控模块。 图 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元。 延时显示,其后回到初始状态。 源程序见附录的主控模块。 自动售货机的设计与实现 16 图 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元;延时显示后,回到初始状态。 源程序见附录的主控模块。 自动售货机的设计与实现 17 二进制译码的仿真 图 10 二进制译码的仿真 如图 10所示:分别将从 0到 F 各位二进制数转换为两位的 BCD 码数。 如图所示,将一个 4位的二进制数转化为两个 4位的 BCD 码数的功能得到实现。 源程序见附录的二进制译码模块。 BCD 码译码的仿真 图 11 BCD码译码的仿真 如图 11所示:将从 0到 7各位 BCD 码转化为七段译码显示出来,其中 7E 在七段数码管上显示 0,30显示。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。