2出租车计费系统的设计.docx

上传人:b****5 文档编号:3988616 上传时间:2022-11-26 格式:DOCX 页数:19 大小:209.69KB
下载 相关 举报
2出租车计费系统的设计.docx_第1页
第1页 / 共19页
2出租车计费系统的设计.docx_第2页
第2页 / 共19页
2出租车计费系统的设计.docx_第3页
第3页 / 共19页
2出租车计费系统的设计.docx_第4页
第4页 / 共19页
2出租车计费系统的设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

2出租车计费系统的设计.docx

《2出租车计费系统的设计.docx》由会员分享,可在线阅读,更多相关《2出租车计费系统的设计.docx(19页珍藏版)》请在冰豆网上搜索。

2出租车计费系统的设计.docx

2出租车计费系统的设计

基于VHDL出租车计费器系统设计

学院:

电气与信息工程学院

年级:

2008级

专业:

应用电子技术

姓名:

范强

学号:

13

班级:

电子0822

指导老师:

周维龙

时间:

2010年12月20日~2010年12月31日

摘要

该系统利用VHDL语言、PLD设计出租车计费系统,以QuartusII软件作为开发平

台,设计了出租车计费器系统程序并进行了程序仿真。

使其实现计费以及预置和模拟汽车

启动、停止、暂停等功能,并动态扫描显示车费数目。

以AltiumDesigner09软件作为绘制

电路图平台。

关键词:

出租车计费器;计数器;译码器;VHDL语言;QuartusII;AltiumDesigner09;

 

目录

摘要I

1引言1

2QuartusII基本使用方法1

2.1软件简介1

2.2QuartusII的设计流程1

3出租车计费器设计内容1

3.1设计内容1

3.1.1出租车计费设计1

3.1.2基本设计思想1

3.1.3系统设计顶层图1

3.2计费器的设计1

3.2.1模块jifei的实现1

3.2.2模块X的实现1

3.2.3模块display的实现1

3.2.4模块SE的实现1

3.2.5模块show的实现1

3.2.6硬件设计图1

4系统设计仿真1

4.1模块jifei的仿真1

4.2模块X的仿真1

4.3模块display的仿真1

4.4模块SE的仿真1

4.5模块show的仿真1

5结论1

致谢1

参考文献i

 

1引言

随着出租车行业的发展,对出租车计费器的要求也越来越高。

二十世纪后半期,随着集成电路和计算机技术的飞速发展,数字系统也得到了飞速发展,其实现方法经历了由分立元件、SSI、MSI到LSI,VLSI以及UVLSI的过程。

同时为了提高系统的可靠性与通用性,微处理器和专业集成电路(ASIC)逐渐取代了通用全硬件LSI电路,而ASIC以其体积小、重量轻、功耗低、速度快、成本低、保密性好而脱颖而出。

目前,业界大量可编程逻辑器件(PLD),尤其是现场可编程逻辑器件(FPLD)被大量地应用在ASIC的制作当中。

在可编程集成电路的开发过程中,以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术最新成果的电子设计自动化(EDA)技术主要能辅助进行三方面的设计工作:

IC设计,电子电路设计以及PCB设计.

理想的可编程逻辑开发系统能符合大量的设计要求:

它能够支持不同结构的器件,在多种平台运行,提供易于使用的界面,并且有广泛的特征。

此外,一个设计系统应该能给设计师提供充分自由的设计输入方法和设计工具选择Altera公司开发的QuartusII开发系统能充分满足可编程逻辑设计所有要求。

QuartusII设计环境所提供的灵活性和高效性是无可比拟的。

其丰富的图形界面,辅之以完整的、可及时访问的在线文档,使设计人员能够轻松、愉快地掌握和使用QuartusII软件。

编程器是一种专门用于对可编程器(如EPROM,EEPRON,GAL,CPLD,PAL等)进行编程的专业设备

PLD器件的逻辑功能描述一般分为原理图描述和硬件描述语言描述,原理图描述是一种直观简便的方法,它可以将现有的小规模集成电路实现的功能直接用PLD器件来实现,而不必去将现有的电路用语言来描述,但电路图描述方法无法做到简练:

硬件描述语言描述是可编程器件设计的另一种描述方法,语言描述可能精确和简练地表示电路的逻辑功能,现在PLD的设计过程中广泛使用。

常用的硬件描述语言有ABEL,VHDL语言等,其中ABEL是一种简单的硬件描述语言,其支持布尔方程、真值表、状态机等逻辑描述,适用于计数器、译码器、运算电路、比较器等逻辑功能的描述;VHDL语言是一种行为描述语言,其编程结构类似于计算机中的C语言,在描述复杂逻辑设计时,非常简洁,具有很强的逻辑描述和仿真能力,是未来硬件设计语言的主流.

VHDL就是超高速集成电路硬件描述语言。

覆盖面广,描述能力强,是一个多层次的硬件描述语言。

在VHDL语言中,设计的原始描述可以非常简练,经过层层加强后,最终可成为直接付诸生产的电路或版图参数描述。

具有良好的可读性,即容易被计算机接受,也容易被读者理解.使用期长,不会因工艺变化而使描述过时。

因为VHDL的硬件描述与工艺无关,当工艺改变时,只需修改相应程序中的属性参数即可.支持大规模设计的分解和己有设计的再利用。

一个大规模的设计不可能山一个人独立完成,必须由多人共同承担,VHDL为设计的分解和设计的再利用提供了有力的支持

2QuartusII基本使用方法

2.1软件简介

Altera的QuartusII提供了完整的多平台设计环境,能满足各种特定设计的需要,是

单芯片可编程系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具,并为Atera

DSP开发包进行系统模型设计提供了集成综合环境。

QuartusII设计环境完全支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。

QuartusII具备仿真功能,此外,与MATLAB和DSPBuilder结合,可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具。

2.2QuartusII的设计流程

(1)创建工程和编辑设计文件

首先利用NewProjectWizard工具选项创建此设计工程;再通过Newfile

新建原理图文件或vhdl文件。

注意新建一个文件夹,同时将新建的工程文件.qpf和原

理图文件.bdf/.vhd保存在该文件夹中。

(2)编译

利用菜单栏该快捷键进行编译,或者在菜单栏中“processing栏下“startompliation”

进行原理图编译,(stop)可中断仿真进程。

(3)仿真

首先新建波形文件,并以要仿真的文件名保存在同一工程文件夹中,再insert

node/bus,并设置好仿真时间(一般10us),最后利用菜单栏该快捷键进行波形仿真,或

者在菜单栏中“processing”一栏下“startsimuliation”进行波形仿真,(stop)可中断仿

进程。

(4)引脚锁定和下载

3出租车计费器设计内容

3.1设计内容

3.1.1出租车计费设计

实际中出租车的计费工作原理一般分成3个阶段:

(1)车起步开始计费。

首先显示起步价(本次设计起步费为3.00元),车在行驶3km

以内,只收起步价3.00元

(2)车行驶超过3km后,按每公里2.2元计费(在3.00元基础上每行驶1km车费加2.2元),车费依次累加。

(3)行驶路程达到或超过9km后(车费达到10元),每公里加收50%的车费,车费变成按每公里3.3元开始计费。

车暂时停止(行驶中遇红灯或中途暂时停车)不计费,车费保持不变。

若停止则车费清零,等待下一次计费的开始

3.1.2基本设计思想

(1)根据出租车计费原理,将出租车计费部分由5个计数器来完成分别为counterA,

counterB,counterC,counterD,counterE①计数器A完成车费百位。

②计数器B完成车费十

位和个位。

③计数器C完成车费角和分。

④计数器D完成计数到30(完成车费的起步价)。

⑤计数器E完成模拟实现车行驶100m的功能。

(2)行驶过程中车费附加50%的功能:

由比较器实现。

(3)车费的显示:

由动态扫描电路来完成。

用专用模块来实现,完成数据的输即动

态数据的显示。

(74138译码选通数码管显示)

(4)通过分析可以设计出系统的流程图

图3.1.2系统流程图

3.1.3系统设计顶层图

图3.1.3a系统顶层图

RTL视图如下:

图3.1.3b系统RTL视图

3.2计费器的设计

3.2.1模块jifei的实现

图3.2.1模块jifei

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityjifeiis

port(clk,start,stop,pause,js:

instd_logic;

chefei,luc:

outintegerrange0to8000);

endjifei;

architecturertlofjifeiis

begin

process(clk,start,stop,pause,js)

variablea,b:

std_logic;

variableaa:

integerrange0to100;

variablechf,lc:

integerrange0to8000;

variablenum:

integerrange0to9;

begin

if(clk'eventandclk='1')then

if(stop='0')then

chf:

=0;

num:

=0;

b:

='1';

aa:

=0;

lc:

=0;

elsif(start='0')then

b:

='0';

chf:

=700;

lc:

=0;

elsif(start='1'andjs='1'andpause='1')then

if(b='0')then

num:

=num+1;

endif;

if(num=9)then

lc:

=lc+5;

num:

=0;

aa:

=aa+5;

endif;

elsif(start='1'andjs='0'andpause='1')then

lc:

=lc+1;

aa:

=aa+1;

endif;

if(aa>=100)then

a:

='1';

aa:

=0;

else

a:

='0';

endif;

if(lc<300)then

null;

elsif(chf<2000anda='1')then

chf:

=chf+220;

elsif(chf>=2000anda='1')then

chf:

=chf+330;

endif;

endif;

chefei<=chf;

luc<=lc;

endprocess;

endrtl;

3.2.2模块X的实现

功能:

该模块把车费和路程转化为4位十进制数,daclk的频率要比clk快得多

图3.2.2模块X

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityxis

port(daclk:

instd_logic;

ascore,bscore:

inintegerrange0to8000;

age,ashi,abai,aqian,bge,bshi,bbai,bqian:

outstd_logic_vector(3downto0));

endx;

architecturertlofxis

begin

process(daclk,ascore)

variablecomb1:

integerrange0to8000;

variablecomb1a,comb1b,comb1c,comb1d:

std_logic_vector(3downto0);

begin

if(daclk'eventanddaclk='1')then

if(comb1

if(comb1a=9andcomb1b=9andcomb1c=9)then

comb1a:

="0000";

comb1b:

="0000";

comb1c:

="0000";

comb1d:

=comb1d+1;

comb1:

=comb1+1;

elsif(comb1a=9andcomb1b=9)then

comb1a:

="0000";

comb1b:

="0000";

comb1:

=comb1+1;

comb1c:

=comb1c+1;

elsif(comb1a=1)then

comb1a:

="0000";

comb1b:

=comb1b+1;

comb1:

=comb1+1;

else

comb1a:

=comb1a+1;

comb1:

=comb1+1;

endif;

else

ashi<=comb1b;

age<=comb1a;

abai<=comb1c;

aqian<=comb1d;

comb1:

=0;

comb1a:

="0000";

comb1b:

="0000";

comb1c:

="0000";

comb1d:

="0000";

endif;

endif;

endprocess;

process(daclk,bscore)

variablecomb2:

integerrange0to8000;

variablecomb2a,comb2b,comb2c,comb2d:

std_logic_vector(3downto0);

begin

if(daclk'eventanddaclk='1')then

if(comb2

if(comb2a=9andcomb2b=9andcomb2c=9)then

comb2a:

="0000";

comb2b:

="0000";

comb2c:

="0000";

comb2d:

=comb2d+1;

comb2:

=comb2+1;

elsif(comb2a=9andcomb2b=9)then

comb2a:

="0000";

comb2b:

="0000";

comb2:

=comb2+1;

comb2c:

=comb2c+1;

elsif(comb2a=9)then

comb2a:

="0000";

comb2b:

=comb2b+1;

comb2:

=comb2+1;

else

comb2a:

=comb2a+1;

comb2:

=comb2+1;

endif;

else

bshi<=comb2b;

bge<=comb2a;

bbai<=comb2c;

bqian<=comb2d;

comb2:

=0;

comb2a:

="0000";

comb2b:

="0000";

comb2c:

="0000";

comb2d:

="0000";

endif;

endif;

endprocess;

endrtl;

3.2.3模块display的实现

经过该八进制模块将车费和路程显示出来。

图3.2.3display

 

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitydisplayis

port(c:

instd_logic_vector(2downto0);

a1,a2,a3,a4,b1,b2,b3,b4:

instd_logic_vector(3downto0);

dp:

outstd_logic;

d:

outstd_logic_vector(3downto0));

enddisplay;

architectureoneofdisplayis

begin

process(c,a1,a2,a3,a4,b1,b2,b3,b4)

variablecomb:

std_logic_vector(2downto0);

begin

comb:

=c;

casecombis

when"000"=>d<=a1;

dp<='0';

when"001"=>d<=a2;

dp<='1';//角分元的计数点

when"010"=>d<=a3;

dp<='0';

when"011"=>d<=a4;

dp<='0';

when"100"=>d<=b1;//

dp<='0';

when"101"=>d<=b2;

dp<='0';

when"110"=>d<=b3;

dp<='1';

when"111"=>d<=b4;

dp<='0';

whenothers=>null;

endcase;

endprocess;

endone;

3.2.4模块SE的实现

功能:

实现八分频

图3.2.4模块se

3.2.5模块show的实现

功能:

输出数码管动态显示

图3.2.5模块show

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitydiis

port(d:

instd_logic_vector(3downto0);

q:

outstd_logic_vector(6downto0));

enddi;

architecturertlofdiis

begin

process(d)

begin

casedis

when"0000"=>q<="0111111";

when"0001"=>q<="0000110";

when"0010"=>q<="1011011";

when"0011"=>q<="1001111";

when"0100"=>q<="1100110";

when"0101"=>q<="1101101";

when"0110"=>q<="1111101";

when"0111"=>q<="0100111";

when"1000"=>q<="1101111";

whenothers=>q<="1101111";

endcase;

endprocess;

endrtl;

3.2.6硬件设计图

图3.2.6.1ds1~ds4车费显示ds5~ds8路程显示

图3.2.6.2按键控制模、译码显示

图3.2.6.3cpu图3.2.6.4chfei模块

4系统设计仿真

4.1模块jifei的仿真

图4.1模块jifei仿真图

4.2模块X的仿真

图4.2模块X仿真图

4.3模块display的仿真

第1组第2组

图4.3模块display仿真图

4.4模块SE的仿真

 

图4.4模块X仿真图

4.5模块show的仿真

图4.5模块show仿真图

5结论

计费器系统的设计已全部完成,能按预期的效果进行模拟汽车启动、停止、暂停等功能,并设计动态扫描电路显示车费数目,由动态扫描电路来完成。

车暂时停止不计费,车费保持不变。

若停止则车费清零,等待下一次计费的开始。

在出租车计费系统的5个模块中,重点在于jifei模块,X模块、display模块。

jifei模块主要有汽车的启动、停止、暂停、加速按键:

X模块主要是把车费和路程转化为4位十进制:

X模块是将车费和路程显示出来。

各模块完成后,在将它们组合成完整的出租车系统,在设计过程中还需要改进的是控制系统的纠错功能。

出租车计费系统的设计中体现了VHDL覆盖面广,描述能力强,是一个多层次的硬件描述语言及PLD器件速度快,使用方便,便于修改等特点,本设计在实用方面具有一定的价值。

致谢

本文是在指导老师周维龙老师的悉心指导下完成的,周老师在学术上严格要求及在学术上一丝不苟的精神,作者受益匪浅,在此向周老师表示衷心的感谢和敬意,至此,两周的课程设计就快接近尾声了,在这里我再一次诚挚的感谢周老师。

最后,向在设计中给予作者关心、支持和帮助的同学表示谢意!

 

参考文献

[1]候伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计.修订版电子工程师必备知识

[M].西安:

西安电子科技大学出版社.1999

[2]张昌凡,等.可编程逻辑器件及VHDL设计技术[M].广州:

华南理工大学出版社2001

[3]潘松,等.VHDL实用教程[M].成都:

电子科技大学出版社.2000

[4]王小平,王彦芳,等.基于EDA技术的出租车费计价单片系统

[5]EDA技术在数字系统电路设计实验中的应用[7].实验室研究与探索,2002,21(3):

63264

[6]谭会生,张昌凡.EDA技术及应用.西安:

电子科技大学出版社.2001

[7」徐颖.altiumdesignerEDA技术及应用.西安:

机械工业出版社.2005

[8]赵志杰,集成电跻应用识图方法,机械工业出版社,2003,35-400

[9]张庆双,电子元器件的选用与检测,机械工业出版社,2003.

[10]李可,数字钟电路及应用[M],北京:

电子工业出版社,1996

[11]集成电路手册分编委会编,中外集成电路简明速查手册,TTL.CMOS电路[M],北京:

电子工业出版社,1997.

[12]康华光,电子技术基础,高等教育出版社,2002

[13]阎石,数字电子技术基础(第四版)[M],北京:

高等教育出版社,1998

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

当前位置:首页 > 工程科技 > 纺织轻工业

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

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