基于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等等。基于vhdl自动售货机的设计与实现
相关推荐
高速集成电路硬件描述语言。 覆盖面广,描述能力强,是一个多层次的硬件描述语言。 在 VHDL 语言中,设计的原始描述可以非常简练,经过层层加强后,最终可成为直接付诸生产的电路或版图参数描述。 具有良好的可读性,即容易被计算机接受,也容易被读者理解。 使用期长,不会因工艺变化而使描述过时。 因为 VHDL 的硬件描述与工艺无关,当工艺改变时,只需修改相应程序中的属性参数即可。
文)绪论部分字数不多于全部论文字数的 1/4。 论文主体 论文主体是论文的主要部分,要求结构合理,层次清楚,重点突出,文字简练、通顺。 论文主体的内容要求参照《大学本科生毕业设计(论文)的规定》第五章。 论文主体各章后应有一节“本章小结”。 结论 结论作为单独一章排列,但不加章号。 结论是对整个论文主要成果的归纳,要突出设计(论文)的创新点,以简练的文字对论文的主要工作进行评价,一般为 400~
d_data_1 = read_data_1, Read_data_2 = read_data_2, Sign_extend = Sign_extend, Function_opcode = Instruction( 5 DOWNTO 0 ), ALUOp = ALUop, ALUSrc = ALUSrc, Zero = Zero, ALU_Result = ALU_Result,
的设计输入、处理和校验功能全部集成在统一的开发环境下,这样可以加快动态调试进程。 它提供丰富的库单元供设计者使用,包括 74系列的全部器件、多种特殊的逻辑宏功能( macrofunction)和参数化功能模块( LPM: Library of Parameterized Modules),但更为重要的是 Max Plus II 还提供了原理图输入多层次设计功能,使得用户能设计更大规模的电路系统
MOV 22H,00H。 一小时时间到 ○ 2 74LS161 构成二十四进制计数器 : 二十四进制计数器,也是用两个 74LS161 集成块来实现的,方法与二十四进制计数器大同小异,但其要求个位是十进制,状态变化在 0000~ 1001 间循环,十位是二进制,状态变化在 0000~ 0010 间循环,显示为 0~23 时。 原理:由分计数器送来的进位脉冲送入时个位计数器
两条横线的长度与版芯尺寸相同,线粗 )。 页眉 、 页脚 边距分别为 和。 页码。 页码 用小五号字,居中标于页面底部。 摘要、目录等文前部分的页码用罗马数字单独编排,正文以后的页码用阿拉伯数字编排。 摘要 中文摘要一般为 300字左右,外文摘要应与中文摘要内容相同,在语法、用词和书写上应正确无误,摘要页勿需写出论文题目。 中、外文摘要应各占一页,编排装订时放置正文前,并且中文在前,外文在后。