基于VHDL语言的出租车计价器的设计_精品文档Word格式文档下载.doc

上传人:b****2 文档编号:13620374 上传时间:2022-10-12 格式:DOC 页数:18 大小:238.50KB
下载 相关 举报
基于VHDL语言的出租车计价器的设计_精品文档Word格式文档下载.doc_第1页
第1页 / 共18页
基于VHDL语言的出租车计价器的设计_精品文档Word格式文档下载.doc_第2页
第2页 / 共18页
基于VHDL语言的出租车计价器的设计_精品文档Word格式文档下载.doc_第3页
第3页 / 共18页
基于VHDL语言的出租车计价器的设计_精品文档Word格式文档下载.doc_第4页
第4页 / 共18页
基于VHDL语言的出租车计价器的设计_精品文档Word格式文档下载.doc_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于VHDL语言的出租车计价器的设计_精品文档Word格式文档下载.doc

《基于VHDL语言的出租车计价器的设计_精品文档Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《基于VHDL语言的出租车计价器的设计_精品文档Word格式文档下载.doc(18页珍藏版)》请在冰豆网上搜索。

基于VHDL语言的出租车计价器的设计_精品文档Word格式文档下载.doc

设计一种出租车计价器,计费标准如下:

(1)起步价8.00元,起步公里为3公里;

(2)超过三公里,每公里按1.00元收费;

(3)单程行驶里程超过20公里。

每公里租价加收50%;

(4)等候时间累积一分钟,每分钟1.00元;

要求显示里程、计费及等候时间。

乘客上车后,按下启动键,开始计费,除非同一个乘客往返用哪个车,否则按下单程键,这样行驶里程超过20公里时,每公里加收50%,即每公里租费1.5元;

计费显示为3位整数,一位小数。

2.2设计模块

2.2.1总体设计

本出租车计价器的设计共分4个模块:

判断模块、时间模块、里程模块、计费模块。

总的设计图如图1所示:

单双程控制

判断模块

里程模块

计费模块

时间输出

计费输出

里程输出

秒脉冲输入

里程脉冲输入

计价开始控制

图1.总体设计图

时间模块

2.2.2判断模块

判断模块主要通过对秒脉冲和里程脉冲进行计数,判断出租车是否停下,然后输出片选信号,选择时间计费还是里程计费。

判断模块的模块图如图2所示:

判断

模块

sta

sclk

lclk

dge

图2.判断模块

2.2.3时间模块

时间模块是当出租车停下时,对秒脉冲进行计数,从而计算出出租车停下的累积时间,并输出累积时间和计费脉冲。

时间模块的模块图如图3所示:

时间

t_count

图3.时间模块

2.2.4里程模块

里程模块是当出租车行驶的时候,对里程脉冲进行计数,从而算出出租车所行驶的里程,通过对单双程的控制进行不同的计费标准,最后输出行驶里程和计费脉冲。

里程模块的模块图如图4所示:

里程

d_count

图4.里程模块

doub

2.2.5计费模块

计费

图5.计费模块

计费模块通过对里程计费脉冲和时间计费脉冲分别进行计数,将其换算成价钱并对进行价钱输出。

计费模块的模块图如图5所示:

3.仿真结果分析

3.1判断模块的仿真

判断模块的仿真结果如图6所示:

图6判断模块的仿真结果

3.2时间模块的仿真

时间模块的仿真结果如图7所示:

图7时间模块的仿真结果

3.3里程模块的仿真

里程模块的仿真结果如图8所示:

图8里程模块的仿真结果

3.4计费模块的仿真

计费模块的仿真结果如图9所示:

图9计费模块的仿真结果

3.5元件例化后的仿真

元件例化后的仿真结果如图10所示:

图10元件例化后的仿真结果

6.模块的引脚锁定

图11模块的引脚锁定

引脚锁定图如图11所示:

4.设计总结

在这次对出租车计价器的课程设计实习中,我们充分的应用了所学的知识,通过去图书馆查阅相关资料和上网搜索相关知识,我们颇有收获。

由于这次设计比往常设计要复杂,如果将所有功能设计到一个模块中,对于设计和编程都有不小的困难,所以最后我们采用模块化设计,将某些功能设计成一个模块,最后用元件例化将各个模块连接起来,形成一个完整的系统,这种设计方法不仅降低了编程难度,而且使我们的设计更有条理。

通过这次设计,我们对模块化设计有了更深的了解。

在这次设计中,我们也遇到了许多困难。

有些设计虽然在逻辑上成立,但FPGA的硬件结构不能实现这种设计,比如多值驱动问题,上升下降沿问题,像我在设计计费模块的时候,预想的是时间计费脉冲和里程计费脉冲共同来驱动计费计数器,实现计费功能,这种设计很简单,但这种设计会报错。

最后只能时间、里程分别计费,然后将费用分别相加,这种设计虽然有点复杂,但并没有报错,而且仿真结果正确。

通过这次设计我们更加了解了FPGA的硬件结构,以后设计的时候要注意使用能实现的设计方式。

这次设计让我们更加了解了EDA的设计方法,熟悉了模块化的设计思路,对于以后的设计很有帮助。

总之,这次设计很有意义。

参考文献

[1]潘松,黄继业.《EDA技术使用教程》.科学出版社,2010.6

[2]刘江海.《EDA技术课程设计》.华中科技大学出版社,2009.5

附录

参考程序:

1.判断模块

libraryieee;

useieee.std_logic_1164.all;

--

entityjudgeis

port(sclk,sta,lclk:

instd_logic;

dge:

outstd_logic);

end;

architecturebehofjudgeis

begin

process(sta,lclk,sclk)

variablea:

integerrange0to64;

ifsta='

1'

then

iflclk'

eventandlclk='

a:

=a+1;

endif;

ifsclk'

eventandsclk='

ifa=0then

dge<

='

0'

;

--shijianprocess

else

--lichengprocess

endif;

ifsclk='

a:

=0;

else

dge<

Z'

endif;

endprocess;

2.时间模块

entitytime_countis

port(sta,sclk,dge:

t_count:

outstd_logic;

minge:

outintegerrange0to10;

minshi:

outintegerrange0to10);

architecturebehoftime_countis

process(sta,sclk,dge)

variablecount:

integerrange0to60;

variablege:

integerrange0to10;

variableshi:

variablet_c:

std_logic;

ifdge='

count:

=count+1;

ifcount=1then

t_c:

ifcount=60then

count:

ge:

=ge+1;

ifge=10then

ge:

shi:

=shi+1;

ifshi=10then

shi:

endif;

endif;

ge:

shi:

t_c:

minge<

=ge;

minshi<

=shi;

t_count<

=t_c;

3.里程模块

--1500round/km

--1.00yuan/km->

per150->

+1

--1.50yuan/km->

per100->

entitydistance_countis

port(sta,lclk,doub,dge:

kmfen,kmge,kmshi:

d_count:

architecturebehofdistance_countis

process(sta,lclk,doub,dge)

variablefen,ge,shi:

integerrange0to150;

variablect:

variabled_c:

ct:

=ct+1;

ifdoub='

andshi>

=2then--singleandlicheng>

=20km

ifct=1then

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1