基于VHDL的出租车计价器的研究设计Word格式文档下载.docx
- 文档编号:14298489
- 上传时间:2022-10-21
- 格式:DOCX
- 页数:15
- 大小:149.01KB
基于VHDL的出租车计价器的研究设计Word格式文档下载.docx
《基于VHDL的出租车计价器的研究设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于VHDL的出租车计价器的研究设计Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
本设计是基于VHDL进行编程,然后在QuartusⅡ进行波形仿真,实现出租车计价器的基本功能。
二总体设计
2.1设计要求
(1)起步价为8.00元,起步公里为3公里;
(2)超过3公里,每公里按1元收费;
(3)单程行驶里程超过20公里,每公里租价加收50%。
(4)等候时间超过1分钟,每分钟按这公里的租价计算。
要求显示里程、计费及等候时间。
乘客上车后,按下启动键开始计费。
若非往返,按下单程键,计费显示三位整数、一位小数。
2.2设计思路
输入2个时钟信号,分别模拟时间和路程。
对等待时间、路程计数,进而统计费用。
系统结构框图如下:
上图中,计数器1对分频后的1Hz脉冲计数,计数60次,计数器加1,对应等待时间,计数器2对车速脉冲计数,其上升沿到来计数加1,对应里程。
2.3设计流程图
乘客上车后,按下启动按钮,计价器开始工作,首先进入初始化状态,即计程从0开始,计费从8开始。
再根据单程信号判断是否为单程,进而确定计费方式。
单程:
里程计数器开始计数,当路程超过3公里时,计费开始累加,按1元每公里计算,路程超过20公里时每公里1.5元。
当路程超过3公里有等待时,按下等待信号,每等待1分钟费用与当前计费方式相同。
往返:
每公里1元,等待计费为每分钟1元。
乘客下车后,按下复位键,则所有计数器进入初始状态。
三系统仿真结果及分析
仿真波形图分析
总体设计封装图如下:
各信号说明:
输入信号:
clk:
系统时钟信号,频率32Hz;
mile:
车速时钟,频率8Hz。
start:
:
启动信号,当start=1时,出租车启动,计数器开始计数;
否则计数器停止计数;
rst:
复位信号,当rst=1时,各计数器清0;
当rst=0时,计数器可以开始计数,start=1表示计数开始;
one_way:
单程信号,单程时由司机输入;
wait_siignal:
等待信号,处于等待状态时由司机输入;
输出信号:
km0,km1:
里程,单位为公里;
min0,min1:
等待时间,单位为分钟;
cost0,cost1,cost2,cost3:
费用,单位为元,其中cost0表示小数位。
以下是系统在几种不同情况下仿真的波形:
启动键、单程键有效,由图4可知,3公里之内计费显示为8元;
3-20公里之间每公里1元累计;
超过20公里每公里1.5元累计。
启动键、单程键有效,行驶一段时间等待信号有效,等待后继续行驶。
由图5可知,3公里之内计费显示8元,3-20公里之间每公里1元累加,中间等待信号有效,每等待一分钟按此时每公里的费用计算,里程计数器停止计数,等待时间到,里程计数器继续计数。
启动键、单程键有效,中途等待4分钟,乘客下车时显示费用25元,复位信号有效,计数器清零,当启动信号有效时重新计数。
四总结及体会
通过为期两周的课程设计,出租车计价器系统的设计已基本完成,能按预期的效果模拟汽车启动、等待、停止、复位等功能,并显示车费数目等待时间及行驶路程。
出租车计费系统的设计中体现了VHDL覆盖面广,描述能力强,是一个多层次的硬件描述语言及CPLD器件速度快,使用方便,便于修改等特点,本设计在实用方面具有一定的价值。
在本次设计中还存在很多不足,可以改进的地方目前有以下几点:
一、该设计虽然实现了基本的计费和计程,但是很多问题并没有解决,如本设计只实了一种车速的计费。
若要实现出租车的不同档位下的计程计费,还需要进一步讨论。
二、该设计智能化水平较低,启动、等待、复位等信号需要人为输入,若在实际中出现操作偏差,会导致计费不准确。
通过此次课程设计,我们更进一步的深入了解了VHDL设计语言,并在使用过程中对它有了更深的体会。
对编程过程中可能遇到的问题有了一定的了解和解决方法,在理论学习和编程练习以及硬件测试方面都获得了较大的收获,对于今后进行程序设计有很大的帮助。
期间要感谢我的老师的悉心指导以及同学们的大力帮助。
在此次设计过程中确实遇到了很多困难,但是再大的困难只要有勇气去征服它,那就不是什么困难了。
此外,通过本次课程设计,我还有了一定的对学习上的体会,知识的真实魅力其实是在于它因为应用于实践中而产生的实际的生产价值,或者说是给人们带来的巨大的方便,因为它有用了所以我们学起来会更有动力,更能往深里去研究。
参考文献
[1]VoleiA.Pedroni,VHDL数字电路设计教程,电子工业出版社,2010
[2]蒋小燕,余伟钧,张立臣,EDA技术及VHDL
[3]鲍可进,赵念强,赵不贿等,数字逻辑电路设计,清华大学出版社,2004
[4]王道宪,贺名臣,刘伟,VHDL电路设计技术,国防工业出版社,2004
[5]黄仁欣,EDA技术实用教程,清华大学出版社,2006
[6]徐向民,数字系统设计及VHDL实践,机械工业出版社,2007
附录(程序源代码)
--taxi.vhd
--
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
useieee.std_logic_arith.all。
entitytaxiis
port(
--输入时钟
clk:
instd_logic。
--计价器启动
--等待信号
wait_signal:
--公里脉冲信号
--单程键
--复位键
rst:
--计费输出
cost0,cost1,cost2,cost3:
outstd_logic_vector(3downto0)。
--等待时间输出
min0,min1:
--行驶公里输出
km0,km1:
outstd_logic_vector(3downto0))。
end。
architecturebhvoftaxiis
--延迟信号
signalmile_r1,mile_r2,mile_clk,start_r,clk1hz:
std_logic。
--分频器
signalcount:
integerrange0to29。
signalsec:
integerrange0to59。
--计费寄存器
signalc0,c1,c2,c3:
std_logic_vector(3downto0)。
--公里/等待时间寄存器
signalk0,k1,m0,m1:
--路程大于3公里,使能有效
signalen0:
std_logic。
--单程且大于20公里,使能有效
signalen1:
--等待时间,1脉冲/分钟
signalwait_clk:
--计费时钟
signalcost_clk:
begin
--输出显示
min0<
=m0。
min1<
=m1。
km0<
=k0。
km1<
=k1。
cost0<
=c0。
cost1<
=c1。
cost2<
=c2。
cost3<
=c3。
----------------------------------------------------------------
--分频进程
U1:
process(rst,clk)
begin
ifrst='
0'
then
ifclk'
eventandclk='
1'
ifcount=5then
count<
=0。
clk1hz<
='
。
else
=count+1。
endif。
endprocess。
--等待计时进程
U2:
process(rst,clk1hz,start,wait_signal)
m0<
="
0000"
m1<
elsifstart='
then
wait_clk<
elsifclk1hz'
eventandclk1hz='
ifwait_signal='
ifsec=5then
sec<
ifm0="
1001"
ifm1="
0101"
=m1+'
else
=m0+'
=sec+1。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 出租车 计价器 研究 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)