基于VHDL的计程车计价器设计.docx

上传人:b****6 文档编号:5814613 上传时间:2023-01-01 格式:DOCX 页数:26 大小:288.08KB
下载 相关 举报
基于VHDL的计程车计价器设计.docx_第1页
第1页 / 共26页
基于VHDL的计程车计价器设计.docx_第2页
第2页 / 共26页
基于VHDL的计程车计价器设计.docx_第3页
第3页 / 共26页
基于VHDL的计程车计价器设计.docx_第4页
第4页 / 共26页
基于VHDL的计程车计价器设计.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

基于VHDL的计程车计价器设计.docx

《基于VHDL的计程车计价器设计.docx》由会员分享,可在线阅读,更多相关《基于VHDL的计程车计价器设计.docx(26页珍藏版)》请在冰豆网上搜索。

基于VHDL的计程车计价器设计.docx

基于VHDL的计程车计价器设计

 

 

第一节出租车计费目标

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

车起步开始计费。

首先显示起步价(本次设计起步费为7.00元),车在行驶3km以内,只收起步价7.00元。

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

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

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

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

第二节基本设计思想

一、根据出租车计费原理,将出租车计费部分由5个计数器来完成分别为counterA,counterB,counterC,counterD,counterE。

①计数器A完成车费百位计数。

②计数器B完成车费十位和个位③计数器C完成车费角和分。

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

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

二、行驶过程中车费附加50%的功能:

由比较器实现。

三、车费的显示:

由动态扫描电路来完成。

用专用模块来实现,完成数据的输入即动态数据的显示。

四、通过分析可以设计出系统的顶层框图如图2.1所示:

图2.1系统的顶层框图

第三章基于VHDL的出租车计费系统的实现

 

二、部分模块设计

FPGA部分可划分成两个模块,其中正弦波发生器模块又可细分成几个小模块。

①锁存器设计

锁存器用来将单片机送来的频率数据锁存稳定在FPGA中,可以用片内的锁存器资源(或用触发器)来构成。

②运算器设计

运算器是用来将频率数据转换成正弦波点与点之间的定时数据。

该运算器实际上最终可转换成一除法器。

该除法器描述如下:

—VECTOR(WIDTH—R-1DOWNTO0));

ENDCOMPONENT;

上述描述实际上是调用了Altera公司的参数化模块库(LPM)中的一个元件。

元件描述后,只要在程序中用Genericmap和portmap语句映射该元件即可。

所要注意的是,上述口信号remainder是numerator和denominator模运算的结果,所以应将remainder与denominator/2相比较,实际结果应在比较的基础上决定加1还是不加1。

③定时器设计

定时器根据运算器传来的定时数据定时。

它可以通过对基准时钟计数来实现,当定时时间一到,就触发波形的输出。

设计中采用了两个计数模块来同时计数,一个模块计数时钟的上边沿,而另一模块则计数时钟的下边沿。

这样相当于使系统时钟频率提高了一倍,充分利用了系统资源。

④波形输出

波形输出是当定时器满足定时要求触发后就输出此时的正弦值,多个点的触发输出就形成了一个正弦波。

为节省芯片资源,这部分求某时正弦值的功能不采用构造运算器来算出正弦值,而是利用查表结构。

象Xilinx公司FPGA芯片则可以利用CLB块来配置RAM或直接利用Logiblox来生成。

还有象Altera公司的Flex10k系列就用查找表结构(LUT)来构建片内ROM或RAM。

在工程文件中创建RAM或ROM块以后,可以通过将各时刻的正弦值(以ASCII字符表示)写进MIF文件(初始化文件)中,从而存储在RAM或ROM块中。

在定时器触发后生成该时的地址,通过查询该RAM或ROM块就可输出该时得正弦值。

 

第二节系统框图及各功能模块的实现及主程序

一、程序流程图

图3.1程序流程图

 

二、系统总体框图

下图所示为系统的总体框图,该系统主要由负责汽车启动,停止,暂停,加速等功能的计费模块,负责把车费和路程转化为4位10进制数的转换模块,负责显示车费和路程的显示模块,以及复位模块和显示译码模块等5个模块组成。

图3.2系统总体框图

三、计费模块的实现

计费模块如图3.2所示,输入端口START、STOP、PAUSE、JS分别为汽车起动、停止、暂停、加速按键。

LUC、CHEFEI分别表示汽车行驶的路程及相应的车费。

图3.2

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;

四、十进制转换模块的实现

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

图3.3

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;

endif;

else

 

五、车费路程显示模块的实现

如图3.5所示,通过该八进制模块,车费和路程将被显示出来

图3.5车费路程显示模块

begin

comb:

=c;

casecombis

when”000”=>d<=a1;

dp<=’0’;

when”001”=>d<=a2;

dp<=’0’;

when”010”=>d<=a3;

dp<=’1’;

when”011”=>d<=a4;

whenothers=>null;

endcase;

endprocess;

endrtl;

六、八进制选择模块实现

模块如图3.6所示,该模块主要负责对不同时刻的车费路程的数值显示进行选择。

图3.6八进制选择模块

 

begin

if(clk’eventandclk=’1’)then

if(b=”111”)then

b:

=”000”;

else

b:

=b+1;

endif;

endif;

a<=b;

endprocess;

endrtl;

七、显示译码模块实现

模块如图3.7

图3.7显示译码模块

 

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;

 

第三节本章小结

本章首先对于主要使用的软件maxplus进行了一个简单的介绍,然后交代了总设计的框图以及流程图,给阅读者以一个大体的印象。

从3.4节开始,分5个模块详细介绍了主要程序,一个出租车计费系统的程序在本章全部交待完毕。

第四章系统仿真

第一节软件AlteraMax+plus介绍

一、软件功能简介

MAX+plusⅡ(MultipleArrayandProgrammingLogicUserSystem)开发工具是美国Altera公司推出的一种EDA工具,具有灵活高效,使用便捷,易学易用的特点。

Altera公司在推出各种CPLD和FPGA的同时也在不断地升级相应的开发工具软件,已从早期的第一代A+plus、第二代MAX+plus发展到目前的第三代MAX+plusII和第四代Quartus。

使用MAX+plusⅡ软件,设计者无需精通器件内部的复杂结构,只需熟悉所用的设计输入工具,如硬件描述语言、原理图等进行输入,MAX+plusⅡ自动将设计转换成目标文件下载到器件中去。

MAX+plusⅡ开发系统具有以下特点。

①多平台系统MAX+plusⅡ的设计输入、处理与校验功能一起提供了全集

成化的可编程开发工具,可以加快动态调试,缩短开发周期。

②开放的界面MAX+plusⅡ可与其它工业标准的设计输入、综合和校验工

具链接。

具有EDIF,VHDL,VerilogHDL以及其他的网表接口,便于与许多公司的EDA工具接口,包括Cadence,Mentor,Synopsys,Synplicity,Viewlogic等公司提供的EDA工具的接口。

③模块组合式工具软件MAX+plusⅡ具有一个完整的可编程逻辑设计环境,

包括设计输入、设计处理、设计校验仿真和下载编程四个模块,设计者可以按设计流程选择工作模块。

④与结构无关MAX+plusⅡ支持Altera的Classic、MAX5000、MAX7000、

FLEX8000、FLEXlOK等可编程器件系列,提供工业界中唯一真正与结构无关的可编程逻辑设计环境。

⑤硬件描述语言MAX+plusⅡ支持各种HDL硬件设计输入语言,包括VHDL、VerilogHDL和Altera的硬件描述语言AHDL。

二、可编程逻辑器件设计流程简介

可编程逻辑器件CPLD/FPGA的设计是指利用开发软件和编程工具对器件进行开发的过程。

可编程逻辑器件的设计流程包括设计准备、设计输入、设计处理(项目编译)、仿真和定时分析、器件编程下载(设计实现)四个步骤。

三、MAX+plusII可编程设计流程

①设计准备在对可编程逻辑器件的芯片进行设计之前,首先要进行方案论证、系统设计和器件选择等设计准备工作。

设计者首先要根据任务要求,如系统所完成的功能及复杂程度,对工作速度和器件本身的资源、成本及连线的可布通性等方面进行权衡,选择合适的设计方案。

在前面已经介绍过,数字系统的设计方法通常采用从顶向下的设计方法,也是基于芯片的系统设计的主要方法,它首先从系统设计入手,在顶层进行功能划分和结构设计,采用硬件描述语言对高层次的系统进行描述,并在系统级采用仿真手段,验证设计的正确性,然后再逐级设计在低层的结构。

由于高层次的设计与器件及工艺无关,而且在芯片设计前就可以用软件仿真手段验证系统方案的可行性,因此自顶向下的设计方法,有利于在早期发现结构设计中的错误,避免不必要的重复设计,提高设计的一次成功率。

自顶向下的设计采用功能分割的方法从顶向下逐次进行划分,这种层次化设计的另一个优点是支持模块化,从而可以提高设计效率。

②设计输入设计者将所设计的系统或电路以开发软件要求的某种形式表现出来,并送入计算机的过程称为设计输入。

设计输入通常有以下几种方式。

1).原理图输入方式

2).硬件描述语言输入方式

3).波形输入方式

4).层次化设计输入方式

四、项目编译(设计处理)

这是器件设计中的核心环节。

在设计处理过程中,编译软件将对设计输入文件进行逻辑化简、综合和优化,并适当地用一片或多片器件自动进行适配,最后产生编程用的编程文件。

1语法检查和设计规则检查

2设计输入完成之后,在编译过程首先进行语法检验,如检查原理图有无漏

连信号线,信号有无双重来源,文本输入文件中的关键字有无输入错误等各种语法错误,并及时列出错误信息报告供设计者修改;然后进行设计规则检验,检查总的设计有无超出器件资源或规定的限制并将编译报告列出,指明违反规则情况以供设计者纠正。

③逻辑优化和综合

化简所有的逻辑方程或用户自建的宏,使设计所占用的资源最少。

综合的目

的是将多个模块设计文件合并为一个网表文件,并使层次设计平面化(即展平)。

④适配和分割

确定优化以后的逻辑能否与器件中的宏单元和I/0单元适配,然后将设计分割为多个便于适配的逻辑小块形式映射到器件相应的宏单元中。

如果整个设计

不能装入一片器件时,可以将整个设计自动分(分割)成多块并装入同一系列的多片器件中去。

划分(分割)工作可以全部自动实现,也可以部分由用户控制,还可以全部由用户控制进行。

划分时应使所需器件数目尽可能少,同时应使用于器件之间通信的引线端子数目最少。

⑤布局和布线

布局和布线工作是在设计检验通过以后由软件自动完成的,它能以最优的方式对逻辑元件布局,并准确地实现元件间的互连。

布线以后软件会自动生成布线报告,提供有关设计中各部分资源的使用情况等信息。

⑥生成编程数据文件

项目编译的最后一步是产生可供器件编程使用的数据文件。

对CPLD来说,是产生熔丝图文件,即JEDEC文件(电子器件工程联合制定的标准格式,简称JED文件);对于FPGA来说,是生成位数据文件(BitstreamGeneration)。

五、仿真和定时分析(项目校验)

设计项目的校验包括设计项目的仿真(功能仿真)、定时分析两个部分。

一个设计项目在编译完成后只能为项目创建一个编程文件,但并不能保证是否真正达到了用户的设计要求,如逻辑功能和内部时序要求等。

所以在器件编程之前应进行全面模拟检测和仿真调试,以确保其设计项目在各种可能的情况下正确响应和正常工作,这就是项目校验(仿真调试)的必要性。

MAX+plusⅡ提供的设计校验过程包括仿真和定时分析,项目编译后,为确保设计无误,再用专门软件进行仿真。

如果发现了错误,则对设计输入进行部分修改直至无误。

①仿真(Simulation)MAX+plusIISimulator(仿真器)具有很强的灵活性,可以控制对单个器件或多个器件设计的仿真。

该模拟程序使用编译过程中生成的二进制模拟网表文件,对一个设计实现功能仿真和时序仿真。

设计者可以直接用矢量输入语言来定义输入激励,也可以用MAX+plusⅡWaveEditor直接绘制波形。

仿真结果在WaveEditor或TextEditor窗口显示,也可作为波形或文本文件打印出来。

②定时分析(TimingAnalysis)MAX+plusTimiⅡngAnalyzer(定时分析程序)能按矩阵方式计算设计中点到点的延时,确定在器件引线端上要求的上升和保持时间,估计最大时钟频率。

MAX+plusⅡ设计输入工具与定时分析程序综合在一起,允许在设计文件中简单地指定起始和终点标记,或者用FloorplanEditor(平面图编辑器)来确定最短和最长的传播延时。

六、器件编程下载

在以上步骤都正确实施并完全通过以后,我们就可以将我们设计的项目(最终的数据编程文件)下载到器件中去,然后加入实际的激励信号进行测试,在我们的目标系统中进行产品级使用了。

如果还未最终达到我们的设计目的,则需返回以上步骤查找设计问题直至无误。

至此,我们已经完整的完成了可编程逻辑器件的产品级设计流程,相信用户通过对以上步骤的了解,对可编程逻辑器件的设计有了一定的概念和了解。

(有关器件下载编程配置的详细使用说明见MAX+plusII软件设计与应用举例章节。

七、可编程逻辑常用设计输入法介绍

MAX+plusII的设计输入方法有多种,主要包括文本设计输入、原理图输入、波形设计输入、层次设计输入和平面图设计输入等多种方式,另外,还可以利用第三方EDA工具生成的网表文件输入,该软件可接受的网表有EDIF格式、VHDL格式及Verilog格式。

设计者可根据实际情况灵活地使用最适合自己的设计方法。

第二节模块仿真结果

一、十进制转换模块的仿真结果

将车费和路程转换成4位的十进制如图4.1所示:

输入端为:

Daclk,ascore,bscore

输出端为:

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

图4.1仿真波形图

如图所示,age,ashi,abai,aqian,分别表示车费的个位,十位,百位和千位的计数显示,在daclk的上升沿发生变化。

bge,bshi,bbai,bqian;分别表示路程的个位,十位,百位和千位的显示,在daclk的下降沿开始发生变化。

二、计费模块的仿真结果

该模块是模拟汽车的启动、停止、暂停、加速按键,如图4.2所示:

输入端口为:

stop,start,pause,js,clk;

输出端口为:

b;

图4.2模块JIFEI仿真波形图

如图所示,在clk的上升沿,js变为1的时候,计费系统开始计费。

三、车费路程显示模块的仿真结果

该模块是将车费和路程显示出来如图4.3所示

输入端为:

c,a1,a2,a3,a4,b1,b2,b3,b4;

输出端为:

dp,d;

图4.3车费路程显示模块仿真波形图

四、八进制选择模块结果验证

模块仿真如图4.4所示:

输入端为:

clk

输出端为:

a

图4.4八进制选择模块仿真波形图

如图所示,在clk的上升沿a开始发生变化,并开始进行计数,当进行到“111”时在下一个上升沿复位为“000”,此模块与“车费路程显示模块”相连接,负责选择显示车费路程。

五、显示译码模块结果验证

模块仿真的结果如图4.5所示

输入端为:

d

输出端为:

q

图4.5显示译码模块仿真波形图

如图,经过本模块以后,输入端输入的2进制数被7段显示译码器翻译成为相对应的数字显示出来。

 

第三节本章小结

本章主要对于前面第三章节所交待的5个模块的程序进行仿真并进行相应的结果验证。

 

第五章结论

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

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

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

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

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

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

在出租车计费系统的5个模块中,重点在于计费模块,十进制计费转换模块、车费路程转换模块。

计费模块主要有汽车的启动、停止、暂停、加速按键;十进制模块主要是把车费和路程转化为4位十进制;车费路程模块是将车费和路程显示出来。

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

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

 

致谢

本文是在指导老师希捷·莱茵老师和Kk-sara老师的悉心指导下完成的,罗老师在学术上严格要求,给予我孜孜不倦的教诲和不断的鼓励,及在学术上一丝不苟的精神,本人受益匪浅,在此向莱茵老师表示衷心的感谢和敬意!

至此,毕业设计就快接近尾声了,在这里我再一次诚挚的感谢莱茵老师和在大学期间对我谆谆教导的老师和领导们。

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

 

参考文献

[1]候伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计.[M].西安:

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

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

华南理工大学出版社,2001

[3]曾繁泰,陈美金.VHDL程序设计[M].北京:

清华大学出版社,2001

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

电子科技大学出版社,2000

[5]高健,沈庆宏,高敦堂.ITS中车辆检测器设备的研究与实现[J].

交通与计算机,2002.20(5):

77-81

[6]王小平,王彦芳,等.基于EDA技术的出租车费计价单片系统[J].实验室研究与探索,2003,19(5):

55-57

[7]卢庆利.将VHDL硬件描述语言引入数字电路教学的探索[J].实

验室研究与探索,2000,19(5):

164-168

[8]刘艳.EDA技术在数字系统电路设计实验中的应用[J].实验室研

究与探索,2002,21(3):

105-107

[9]潭会生,张昌凡.EDA技术及应用[J].西安:

电子科技大学出版社.2001,16

(2):

46-48

[10]徐颖.Protel99SEEDA技术及应用[J].西安:

机械工业出版社.2005,11(9):

99-100 

[11]MarkD.Birnbaum.Essentialelectronicdesignautomation中国机械出版社.2005

[12]徐灵献.EDA技术在现代电子设计中的应用2003,

[13]金凤莲.VHDL语言在EDA仿真中的应用2005,

[14]周清华,马善农,谢勇勤等.基于CPLD的出租车计价器的设计与研究2004,

[15]陈爱萍.数字系统设计与ASIC技术2002,

[16]余华,岳秋琴.电子设计自动化技术的发展及在现代数字电子系统设计中的应用2001,

 

二、中文翻译

摘要

本文提出了一种出租车多通道计价的方案,能同时处理一个以上乘客的情形。

为了从理论上说明本方案,提出了一个实验上的三通道型的士的完整设计(其原型是根据埃及科学和技术研究学院的研究而建成得)。

1.导言

在不发达的国家,早上把人们从他们家送到工作的地方,然后下午送回来已成为一个大问题,尤其是在大城市。

作为解决这个问题的一个部分,在某些国家出租车用来解决这个问题,送人们从一个地方到另外一个地方。

例如,出租车的四个席位可携带四个不同的没有任何关系的乘客,除了他们的路线是相同的。

因此,依靠目前的传统的单车道计价以确定所需的票价,把每个乘客的计费分开,这已成为一个非常困难的问题。

因此,在出租车司机,车主,乘客和国家税务部门之间存在着不公平的财政关系。

在这种情况下,出租车司机强迫乘客支付多于他们所应付的。

在某些情况下乘客支付了他们应付车费的双倍。

本常规单频道计程车,出租车司机不能够确定出租车日常收入。

在某些情况下(出租车的4个席位),他们可能只有出租车四分之一的收入(大部分的出租车司机)。

从这些支付工资的出租车司机以及作为燃料费用外,还要维修以及汽车折旧等费用。

事实上,出租车业主并非似乎如此糟糕。

一项在出租车司机和车主之间的协议已经达成,司机应保证每天固定收入,以及向业主支付燃料以及维修的费用。

即使如此,还是有的出租车司机的很大一部分份额之收入的出租车。

现在还存在的单声道计价,已经变得非常,国家税务部门也知道这种困难每年估计出租车业主的收入支出,以及应支付的税务也

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

当前位置:首页 > 高等教育 > 其它

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

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