计费器共有8个数码管,带一个使能端,高电平有效。
afgedchbh g f e d c b a8 7 6 5 4 3 2 1
图5 七段数码管与向量元素对应
表1 七段数码管段位码
十进制数字 0 1 2 3 4 5 6 7 8 9 灭 段位码 00111111 00000110 01011011 01100111 01100110 01101101 01111101 00100111 01111111 01101111 00000000 描述显示模块的VHDL程序见附录。
4 出租车计费器系统仿真及分析
4.1 顶层实体的仿真波形
图6 系统顶层实体仿真波形图之一
图7 系统顶层实体仿真波形图之二
由图7可知001(表示c1)对应11101111(表示9.),100(表示k0)对应01100110(表示4),其余均对应00111111(表示0),即显示为行驶4公里,费用为9.0元。
4.2 计费模块的仿真波形
图8(a)
图8(b)
图8(c)
图8均为计费模块的仿真波形图,由图8(a)可看出汽车是单程行驶,图8(b)可看出汽车在中途暂停了一段时间,在图8(c)中可直观地看出汽车行驶了75公里,等候时间为4分钟,应付的费用为113.5元。
4.3 显示模块的仿真波形
图9 显示模块仿真波形图
将计费模块输出译码,然后轮流扫描数码管,显示各个数据,等候时间4分钟,里程75公里,计费113.5元。
4.4 管脚锁定
在验证出租车计费器系统的功能之前,需要清楚实验箱与各个信号之间的对应关系,参照资料得出本设计中各引脚的对应情况如下:
图10 管脚锁定
管脚锁定后将顶层文件下载到EDA实验箱芯片中,验证计费器的功能。
4.5 显示结果的几种情况
图11 验证结果1
图11表示汽车行驶21公里,应付费26.5元,符合设计要求。
图12 验证结果2
图12表示汽车行驶25公里,在行驶20公里之后的一段时间内停留4分钟,应付费38.5元,符合设计要求。
5 总结
本设计采用VHDL硬件描述语言,通过QuartusⅡ开发平台设计了出租车计费器系统,经过编译仿真基本无误,在此次设计中我主要做了以下工作:
1.对所选题目进行仔细的审阅,理顺思路,了解熟悉设计的基本思路,掌握整个设计工作的框架;
2.学习设计所需要用到的QuartusⅡ软件,做到熟练掌握软件的各种仿真功能;
3.学习VHDL硬件描述语言,做到能读懂VHDL程序,并能够编写本设计所需要的程序;
4.用软件对程序进行编译和仿真,观察波形,符合设计的要求后,准备硬件下载工作;
5.在实验室把程序下载到实验板上,经过数码管显示结果符合设计要求,完成整个设计工作部分的实验环节。
出租车计费器系统的设计已经全部完成,能够按照预期的效果显示等候时间、里程和车费数目。车行驶或暂停按其各自的计费规则进行计费,车费总数为两项之和,若停止则车费清零,等待下一次计费的开始[9]。在出租车计费器系统的两个模块——计费模块、显示模块中,计费模块是实现系统功能的核心,里面又分为分频、计时、公里计数、计费等部分;显示模块将显示等候时间,里程和费用。各模块成功编译运行后,再将它们组合到一起,完成完整的出租车系统的设计[10]。
通过这次的论文设计,我对VHDL编程语言有了更深层次的了解,对QuartusⅡ软件的应用更加的熟练,加强了我的动手能力,使我在理论学习和编程练习方面都有了较大的收获。