计算机组成原理课程设计报告-基于vhdl的模拟地铁售票控制系统设计与实现内容摘要:

end if。 if((account_temp=39。 039。 )and(type_temp=39。 139。 )) then 表示已选择出站口但尚未选择购票张数 case ticket_account is when 11= 选择 3张票 temp_account:=00100。 表示 3 张票 number:=11。 购票张数为 3 total_price:=price+price+price。 计算总票价 account_temp:=39。 139。 记录已选择购票张数 when 10= 选择 2张票 袁俊 基于 VHDL的模拟地铁售票控制系统设计与 实现 第 8页 共 23 页 temp_account:=00010。 number:=10。 total_price:=price+price。 account_temp:=39。 139。 when 01= 选择 1 张票 temp_account:=00001。 number:=01。 total_price:=price。 account_temp:=39。 139。 when others= null。 end case。 end if。 程序调试 ( 1) 建立好工作库目录,以便设计工程项目的存储,打开 MAX +plusⅡ 软件,其初始界面如图 所示 : 图 MAX +plusⅡ 软件初始界面 袁俊 基于 VHDL的模拟地铁售票控制系统设计与 实现 第 9页 共 23 页 ( 2) 在工具栏中选择 “新建 ”按钮。 在选择输入路径时,选择 “Text Editor File”以进行文本输入,如图 所 示 : 图 输入路径选择为文本输入 ( 3) 在文本输入界面内进行程序输入,如图 所示 : 图 程序输入界面 ( 4) 输入完毕后,需要对程序进行保存。 文件名和实体定义的符号必须保持一致,即文件名为 flift。 因为是使用 VHDL 语言,所以文件后缀名须改成 vhd,详见图 所示 : 袁俊 基于 VHDL 的模拟地铁售票控制系统设计与 实现 第 10 页 共 23 页 图 文本输入保存界面 ( 5) 保存以后,对程序进行编译。 在编译前,需要把文件设置为顶层文件,或称工程文件 Project。 选择菜单 “File”→“Project”→“Set Project to Curre nt File”,当前的文件即被指定。 详见图 所示 : 图 设置顶层文件 ( 6) 在 “MAX +plusⅡ ”下拉按钮里选择 “Compiler”,对程序进行编译,此时, MAX +plusⅡ 软件会对程序进行纠错等处理。 当程序被确认无误以后会出现如下界面,如图 所示。 第一次编译时由于实体名和保存时的名字不相符,所以出现了一个错误,改正后无误。 袁俊 基于 VHDL 的模拟地铁售票控制系统设计与 实现 第 11 页 共 23 页 图 编译完成图 袁俊 基于 VHDL 的模拟地铁售票控制系统设计与 实现 第 12 页 共 23 页 4 程序仿真 波形输入建立 在创建的波形仿真文件中,添加所有输入输出端口,并添加 程序中涉及的重要变量进行仿真。 End Time设定为 ,时钟周期设定为 100ns,模拟完成乘客 5次购票的过程,以期测试系统的所有功能是否正常。 全部的仿真波形截图如下: 袁俊 基于 VHDL 的模拟地铁售票控制系统设计与 实现 第 13 页 共 23 页 波形仿真结果分析 1. ( 1)乘客按下“开始选择”按钮( select_start=39。 139。 ),钱币“暂存杆”进入等待状态( money_gate=01),系统进入选择状态( state=select_state)。 ( 2)乘客选择出站口为第 6 站,系统得出单张票价 price 为 20( 2元);选择购买数量为 2 张,系统得出票数 number 为 2。 进而得出总票价 total_price 为 40( 4元)。 ( 3)乘客按下“取消”按钮( cancel=39。 139。 ),系统回到初始状态( state= initialize_state),钱币“暂存杆”推出(此刻无暂存钱币,仅表示初始化过程中的一个动作),然后再归为等待状态;其余变量全部清零。 此段仿真主要验证了在选择状态时“取消”按钮的功能正常。 系统全部恢复初始状态的时间在 左右(如图) 图 选择状态时“取消” 袁俊 基于 VHDL 的模拟地铁售票控制系统设计与 实现 第 14 页 共 23 页 2 .( 1)乘客在约 时按下“开始选择”按钮,系统进入选择状态。 ( 2)乘客选择出站口为第 11站,系统得出票价为 4元;选择购买 3 张,系统得出票数为 3 张。 进而得出总票价为 12元。 ( 3)乘客按下“开始投币”按钮( insert_start=39。 139。 ),系统进入投币状态( state=insert_state)。 ( 4)乘客投入 5 元纸币( note=0100),系统得出投入的总金额为 5元( total_insert为 50);投入 1元硬币( coin=10),系统得出投入的总金额为 6元( total_insert为 60)。 ( 5)乘客按下“取消”按钮,系统回到初始状态,钱币“暂存杆”推出,退出乘客投入的钱币,然后再归为等待状态;其余变量全部清零。 此段仿真主要验证了在投币状态时“取消”按钮的功能正常。 系统全部恢复初始状态的时间在 左右(如图)。 图 投币状态时“取消” 袁俊 基于 VHDL 的模拟地铁售票控制系统设计与 实现 第 15 页 共 23 页 3.( 1)乘客在约 时按下“开始选择”按钮,系统进入选择状态。 ( 2)乘客选择出站口为第 9 站,系统得出票价为 4 元;选择购买 3 张,系统得出票数为 3 张。 进而得出总票价为 12元。 ( 3)乘客按下“开始投币”按钮,系统进入投 币状态。 ( 4)乘客投入 10 元纸币,系统得出投入的总金额为 10 元,再投入 5 元纸币,系统得出投入的总金额为 15元。 ( 5)系统判断投入的总金额已经达到票价总额( total_insert=total_price)。 ( 6)系统进入出票状态 (ticket_state):系统准备好 4元的票 3张 (10100),出票口打开 (ticket_gate=39。 139。 )出票。 ( 7)系统进入找零状态 (change_state):找零口打开 (change_gate=39。 139。 )找零,每个时钟上升沿时出一个 5角硬币,变量 change实时显示剩余应找零金额。 ( 8)找零完毕,找零口关闭;出票口关闭。 系统回到初始状态。 此段仿真主要验证了连续投入单种介质钱币购票且找零的功能正常。 系统全部恢复初始状态的时间在 左右(如图)。 图 连续投入单种介质钱币购票且找零 袁俊 基于 VHDL 的模拟地铁售票控制系统设计与 实现 第 16 页 共 23 页 4.( 1)乘客在约 时按下“开始选择”按钮,系统进入选择状态。 ( 2)乘客选择出站口为第 12站,系统得出票价为 4元;选择购买 2 张,系统得出票数为 2 张。 进而得出总票价为 8元。 ( 3)乘客按下“开始投币”按钮,系统进入投币状态。 ( 4)乘客依次 投入 5 角硬币、 5角硬币、 5元纸币、 5 角硬币、 1元硬币、 2元纸币,系统实时计算投入的总金额。 ( 5)系统判断投入的总金额已经达到票价总额。 ( 6)系统进入出票状态:系统准备好 4 元的票 2 张,出票口打开出票。 ( 7)系统进入找零状态:找零口打开找零,每个时钟上升沿时出一个 5 角硬币,变量 change 实时显示剩余应找零金额。 ( 8)找零完毕,找零口关闭;出票口关闭。 系统回到初始状态。 此段。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。