VHDLWord文档下载推荐.docx
- 文档编号:22318762
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:11
- 大小:248.28KB
VHDLWord文档下载推荐.docx
《VHDLWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《VHDLWord文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
出租车计价器的实现将大大改善人们出行时因为讨价还价而带来的烦恼,从而使人们的心情比较愉悦。
本设计是对出租车计价器的四个模块进行分析的,综述如下:
分频模块:
分频模块是其它模块的基础,输入时钟选为32Hz,分频后的时钟频率为1Hz,为后续模块提供基本时钟。
等待时间模块:
该模块针对乘客确认下车前的等待而言,比如堵车、中途下车的情况,通过1Hz脉冲计数,每一分钟计时加一,最大计时时间显示为99分钟。
路程模块:
该模块是对车辆行驶路程进行计数,以1Hz时钟为基础,检测行程脉冲,路程模块中有内部变量来判断路程,当大于3公里、20公里时,分别有相应的使能信号对此作出记录,最大路程显示为99公里。
计费模块:
该模块是基于等待时间模块和路程模块对费用进行控制的。
通过内部使能信号分别计算3公里以内、3-20公里以及20公里以后的费用。
本设计是基于VHDL进行编程,然后在QuartusⅡ进行波形仿真,实现出租车计价器的基本功能。
二总体设计
2.1设计要求
一.设计要求
选择出租车自动计价系统设计,要求:
根据广州出租车实际情况设计,即有起步价,计程价及计时价,显示总价。
二.方案设计
设计一个出租车自动计价系统,该计价器的计费系统:
行程3公里内,且等待累计时间2分钟内,起步费为10元;
3公里以外每公里1.6元计费;
等待时间累计过2分钟后,以每分钟1.6元计费。
系统可以显示出租车行驶的公里数,等待累计时间,以及总的费用。
设计的计费,计价和计时等指标如下:
(1)计费范围:
0-999.9元计价分辨率:
0.1元
(2)计程范围:
0-99公里计时分辨率:
1公里
(3)计时范围:
0-59分计时分辨率:
1分钟
2.2设计思路
输入2个时钟信号,分别模拟时间和路程。
对等待时间、路程计数,进而统计费用。
系统结构框图如下:
上图中,计数器1对分频后的1Hz脉冲计数,计数60次,计数器加1,对应等待时间,计数器2对车速脉冲计数,其上升沿到来计数加1,对应里程。
2.3设计流程
(1)分频器模块
对频率为256Hz的输入脉冲进行分频,分别得到两个16Hz和一个1Hz的频率,该模块产生的频率信号用于计费,每一个1Hz的脉冲为0.1元计费控制,16Hz信号为1.6公里的漫长计费控制,另一个16Hz信号为1.6元每分钟的等待时间计费控制。
(2)计时模块
根据提供的里程脉冲信号move,计算乘客上车后出租车所行使的里程数。
move每一个上升沿,集成模块就实现一次计数,里程数就加1,当行使里程大于3公里时,本模块的en0信号变成1;
进行行使公里计费。
(3)等待计时模块
根据分频得到的信号f_1,计算乘客的等待累计时间。
计时器的量程为59min,满量程归零。
等待时间大于2分钟时,本模块en1信号变成1,;
f_1每来一个上升沿,计量模块就实现一次计数,等待时间加1。
(4)计费模块
实现计价,计时和计程的数据计费。
实现出租车在行使和等待的过程中完成里程数计数和计时功能:
计费时钟每来一个上升沿,计量模块就实现一次计数,里程数或者等待时间久加1。
当行使里程大于3公里时,本模块的en0信号变成1,此时进行的是行使公里数大于3公里后以每公里1.6元的计费操作;
当等待时间大于2分钟是,本模块的en1信号变成1,进行的是等待时间大于2分钟后以每分钟1.6元计费的操作;
最后用cha3,cha2,cha1,cha0来组成的4位数显示总费用,最大的显示是999.元。
四总结及体会
通过为期两周的课程设计,出租车计价器系统的设计已基本完成,能按预期的效果模拟汽车启动、等待、停止、复位等功能,并显示车费数目等待时间及行驶路程。
出租车计费系统的设计中体现了VHDL覆盖面广,描述能力强,是一个多层次的硬件描述语言及CPLD器件速度快,使用方便,便于修改等特点,本设计在实用方面具有一定的价值。
在本次设计中还存在很多不足,可以改进的地方目前有以下几点:
一、该设计虽然实现了基本的计费和计程,但是很多问题并没有解决,如本设计只实了一种车速的计费。
若要实现出租车的不同档位下的计程计费,还需要进一步讨论。
二、该设计智能化水平较低,启动、等待、复位等信号需要人为输入,若在实际中出现操作偏差,会导致计费不准确。
通过此次课程设计,我们更进一步的深入了解了VHDL设计语言,并在使用过程中对它有了更深的体会。
对编程过程中可能遇到的问题有了一定的了解和解决方法,在理论学习和编程练习以及硬件测试方面都获得了较大的收获,对于今后进行程序设计有很大的帮助。
期间要感谢我的老师的悉心指导以及同学们的大力帮助。
在此次设计过程中确实遇到了很多困难,但是再大的困难只要有勇气去征服它,那就不是什么困难了。
此外,通过本次课程设计,我还有了一定的对学习上的体会,知识的真实魅力其实是在于它因为应用于实践中而产生的实际的生产价值,或者说是给人们带来的巨大的方便,因为它有用了所以我们学起来会更有动力,更能往深里去研究。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYtaxiIS--定义实体
PORT(clk_256:
INSTD_LOGIC;
--频率为256Hz的时钟
start:
--计价使能信号
waittime:
--等待信号
move:
--公里脉冲信号
cha3,cha2,cha1,cha0:
outstd_logic_vector(3downto0);
--费用数据(0-999.9元)
km1,km0:
--公里数据(0-99公里)
min1,min0:
outstd_logic_vector(3downto0));
--等待时间(0-59分)
endtaxi;
architecturebehavoftaxiis
signalf_16,f16,f_1:
std_logic;
--分频得到16HZ,16HZ,1HZ的信号
signalq_16:
integerrange0to15;
--分频器
signalq16:
signalq_1:
integerrange0to255;
signalw:
integerrange0to59;
--秒计数器
signalc3,c2,c1,c0:
std_logic_vector(3downto0);
--计费计数器
signalk1,k0:
--公里计数器
signalm1:
std_logic_vector(2downto0);
--分的十位计数器
signalm0:
--分的个位计数器
signalen1,en0,f:
--使能信号(时间计费,里程计费)
begin
fenpin:
process(clk_256,start)--分频器模块
begin
ifclk_256'
eventandclk_256='
1'
then
ifstart='
0'
then
q_16<
=0;
q16<
f_16<
='
;
f16<
f_1<
f<
else
ifq_16=15thenq_16<
--此if语句得到频率为16HZ的信号f_16
elseq_16<
=q_16+1;
endif;
ifq16=15thenq16<
--此if语句得到频率为16HZ的信号f16
elseq16<
=q16+1;
ifq_1=255thenq_1<
--此if语句得到频率为16HZ的信号f_1
elseq_1<
=q_1+1;
ifen1='
thenf<
=f_16;
--此if语句得到计费脉冲f,时间计费
elsifen0='
thenf<
=f16;
--里程计费
elsef<
endprocess;
process(f_1)--等待计时模块(时间范围:
0-59分)
begin
iff_1'
eventandf_1='
then
then
w<
en1<
en0<
m1<
="
000"
m0<
0000"
k1<
k0<
elsifwaittime='
then--等待计时模块(59分时间循环)
ifw=59thenw<
ifm0="
1001"
thenm0<
--时间59分后的9的二进制‘1001’
ifm1="
101"
thenm1<
--时间59分后的5的二进制‘101’
elsem1<
=m1+1;
elsem0<
=m0+1;
ifm1&
m0>
"
0000001"
thenen1<
--等待时间为2分钟后,时间计费信号使能
elseen1<
elsew<
=w+1;
elsifmove='
then--计程模块(时间范围:
0-99公里)
ifk0="
thenk0<
--99公里后的9的二进制‘1001’
ifk1="
thenk1<
elsek1<
=k1+1;
elsek0<
=k0+1;
ifk1&
k0>
00000010"
thenen0<
--走了3公里后,里程计费信号使能
elseen0<
--等待时间不超过2分钟,路程不超过3公里,即起步价
cha3<
=c3;
cha2<
=c2;
cha1<
=c1;
cha0<
=c0;
km1<
=k1;
km0<
=k0;
min1<
&
m1;
min0<
=m0;
process(f,start)--计费模块(0-999.9元)
thenc3<
c2<
0001"
c1<
c0<
--起步价10元(c3baiwei)
elsiff'
eventandf='
ifc0="
thenc0<
ifc1="
thenc1<
ifc2="
thenc2<
ifc3="
elsec3<
=c3+1;
elsec2<
=c2+1;
elsec1<
=c1+1;
elsec0<
=c0+1;
endbehav;
波形图所示,出租车走了5公里,等待时间6分钟,费用总计为19.6元,计算
元,所以仿真正确。
参考文献
[1]VoleiA.Pedroni,VHDL数字电路设计教程,电子工业出版社,2010
[2]蒋小燕,余伟钧,张立臣,EDA技术及VHDL
[3]鲍可进,赵念强,赵不贿等,数字逻辑电路设计,清华大学出版社,2004
[4]王道宪,贺名臣,刘伟,VHDL电路设计技术,国防工业出版社,2004
[5]黄仁欣,EDA技术实用教程,清华大学出版社,2006
[6]徐向民,数字系统设计及VHDL实践,机械工业出版社,2007
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL