VHDL语言的EDA《出租车计价器》数电课程设计_第1页
VHDL语言的EDA《出租车计价器》数电课程设计_第2页
VHDL语言的EDA《出租车计价器》数电课程设计_第3页
VHDL语言的EDA《出租车计价器》数电课程设计_第4页
VHDL语言的EDA《出租车计价器》数电课程设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数电课程设计报告设计课题:出租车计价器姓名:班级:学号:指导老师10引言随着我国市场经济的发展,交通也越来越便利,特别是计程车,以快捷、方便的特点早已盛行各个城市,成为城市交通的重要工具。计程车市场从90年代初的起步阶段到现在已经进入了高峰期。随着城市化水平的提高和人民生活水平的改善,计程车的服务也就显得越来越重要。因此计程车计价器也就应运而生了。本设计就是针对目前计程车计价器的问题设计的一种基于可编程逻辑器件FPGA勺ASIC,并用超高速硬件描述语言VHD闾程实现的可同时显示金额、乘车时间、乘车总路程的“多功能”计价器。有较好的实用价值和较高的可行性。一、整体方案设计实现计程车的计价器功能。

2、一方面实现基本功能时,包括在行程中满足2公里以内计起步价6元,以后在车行2公里后且10公里以内再按1.8元/公里,10公里以后按2.2元/公里计费;处于等待的状态下满足5分钟以内不计价,以后以2元/分计费。另一方面多功能的实现,计价器可以显示总费用,总行程数和总乘车时间等等。实现模拟功能:能模拟汽车启动、停止等状态。设计的主要技术指标如下:1、计价范围:0999.0元计价分辨率:0.1元。2、计程范围:099公里计价分辨率:1公里。3、计时范围:59分59秒计时分辨率:1秒(1小时)设计方案比较方案一:用单片机实现:通过软件编程,仿真,调试,符合要求后将程序用编程器写入到单片机芯片上。利用单片

3、机的中断响应乘客开车或者等待的请求,进行相应的处理。利用寄存器存放计价器系统运行状态,从而可以根据整个行程的状态进行计价。方案二:用FPGAG编程门阵列)实现:利用硬件描述语言编程,仿真调试后下载到可编程逻辑器件(CPLD)上实现。可以对计程车整个过程进行判断、处理。整个过程完全实现了自动化和智能化。比较而言,方案一的开发及制作成本较低,能较大程度地利用资源,但外围电路较多,调试复杂,抗干扰能力差,特别对这种计程车的计价器需要长时间不间断运作的系统,由于主要是软件运作,容易出错,造成系统不稳定。方案二将所有器件集成在一块芯片上,体积大大减小的同时还提高了稳定性,并且可应用EDA次件仿真,调试,

4、易于进行功能扩展,外围电路较少,采用硬件逻辑电路实现,其最大的优点是稳定性好,抗干扰能力强,非常适合作为计程车的计价器系统的控制核心。基于对以上各个因素的考虑,我们觉得FPGA?现计程车的计价器的设计更设计的要求,提升设计的可行性。因此,决定选用以FPGM核心,用VHD闾程来实现计价器的设计。二、系统模块划分将系统分为三个大模块1系统各项计费功能的实现;CP1端输入的脉冲信号经系统内部分频后做为模拟行车里程信号。CP洲输入脉冲信号进系统内部分频后做为行车时间信号。RR»复位信号,RR='1'时计价器清零,RSTN为计价器开关。CASH150MILES15印TIMES1

5、5印端分别输出乘车费用,行车里程,行车总时间,它们都是用16位2进制BCM表示。2各模块的LCD显示模块BUSY控制器忙信号,数据未显示稳定时BUSY=1反之为0;CASHH70CASHL7-0:乘车费用16位2进制BC则的高8位数据和低八位数据;CPIN:输入工作时钟信号;MILEH7-PMILEL7叼:行车里程16位2进制BC则的高8位数据和低八位数据;R:LCD显示开关;TMH0PTML7P:行车时间16位2进制BC则的高8位数据和低八位数据;ADDR3P:字符在LCD屏幕上的地址(共两行,每行16个字符)ADDR="0000”“1111”对应每行的第015个字符;CLK控制器

6、工作时钟,上升沿有效;DATA70:ASCII码数据总线;OUTLINE:LCD160斛幕上的行选择信号,LINE=0时数据在第一行显示,LINE=1时数据在第二行显示;RST复位信号,高电平有效;STORB:E据输入有效使能,高电平有效;3LCD空制显示模块UleiCtrl、CLKRSTUDATA7.O-«ADDft3.OLINEvccBUSYSTROBELCDJJGHTUSLCDDATATRILCDDB7.DJ)LCD_DATAO7.0LCD_DATAI7.OI0EUF8BLCDELCD_RWLCDRSLCD_RSLCD_ELCDRWEE!H!LCD16XZACLK控制器工作时钟

7、,上升沿有效RST复位信号,高电平有效DATA7.0:ASCII码数据总线ADDR3.0:字符在LCD屏幕上的地址(共两行,每行16个字符)ADDR="0000”“1111”对应每行的第015个字符LINE:LCD1602屏幕上的行选择信号,LINE=0时数据在第一行显示,LINE=1时数据在第二行显示BUSY控制器忙信号,数据未显示稳定时BUSY=1反之为0STROBE数据输入有效使能,高电平有效LCD显示器接口:LCD_E:LCLS示器使能LCD_RW:LCD写方向控制LCD_RS:LC阶令,数据选择LCD_DATA_TRI:LCD据高阻态控制LCD_DATAO:LCD据输出总线

8、LCD_DATAI:LC瞅据输入总线三、主要VHDLK程序1、计费功能的实现LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;entityJFQZMKisport(CP1,CP2,RR,RSTN:INSTD_LOGIC;MILES,CASH,TIMES:OUTSTD_LOGIC_VECTOR(15DOWNTO0);endJFQZMK;architectureJFQLLofJFQZMKisSIGNALCASHOUT:STD_LOGIC_VECTOR(15DOWNTO0);-CASHTIME&CASH

9、M组成SIGNALCP3:STD_LOGIC;- -十个十米记为0.1KM的SIGNAL- -十个0。1KMB冲记为1KMi勺SIGNALSIGNALT:STD_LOGIC_VECTOR(15DOWNTO0);SIGNALCP:STD_LOGIC;- -十个0。1KMB冲记为1KMi勺SIGNAL- -时间计数及分频的SIGANALSIGNALCOUNTER_REG:STD_LOGIC_VECTOR(31DOWNTO0);SIGNALCOUNTER:STD_LOGIC_VECTOR(31DOWNTO0);SIGNALTIMESOUT:STD_LOGIC_VECTOR(15DOWNTO0);SI

10、GNALCLK:STD_LOGIC;- -时间计数及分频的SIGANAL- -里程计算部分的SIGNALSIGNALMILESOUT:STD_LOGIC_VECTOR(15DOWNTO0);- -里程计算部分的SIGNALSIGNALCASHL:STD_LOGIC_VECTOR(15DOWNTO0);SIGNALCASHH:STD_LOGIC_VECTOR(15DOWNTO0);SIGNALCASHMILE:STD_LOGIC_VECTOR(15DOWNTO0);- -行车计费部分的SIGNAL温馨推荐您可前往百度文库小程序享受更优阅读体验不去了立即体验- -停车计费部分的SIGNALSIGN

11、ALCOST:STD_LOGIC_VECTOR(15DOWNTO0);SIGNALCV:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALCASHTIME:STD_LOGIC_VECTOR(15DOWNTO0);- -停车计费部分的SIGNAL- -将16位二进制价格转换到BCD®FUNCTIONCONVERT(AA:STD_LOGIC_VECTOR)RETURNSTD_LOGIC_VECTORISVARIABLEAN:STD_LOGIC_VECTOR(15DOWNTO0);- ARIABLES:STD_LOGIC_VECTOR(15DOWNTO0);BEGINAN:

12、=X"0000"S:=X"0000"IFAA(N)='1'THENCASENISWHEN0=>AN:=X"0001"WHEN1=>AN:=X"0002"WHEN2=>AN:=X"0004"WHEN3=>AN:=X"0008"WHEN4=>AN:=X"0016"WHEN5=>AN:=X"0032"WHEN6=>AN:=X"0064"WHEN7=>AN:=X

13、"0128"WHEN8=>AN:=X"0256"WHEN9=>AN:=X"0512"WHEN10=>AN:=X"1024"WHEN11=>AN:=X"2048"WHEN12=>AN:=X"4096"WHEN13=>AN:=X"8192"WHENOTHERS=>AN:=X"0000"ENDCASE;IF("0"&S(3downto0)+("0"&am

14、p;AN(3DOWNTO0)>"01001"THENS(3DOWNTO0):=S(3DOWNTO0)+AN(3DOWNTO0)+"0110"S(15DOWNTO4):=S(15DOWNTO4)+X"001"ELSES(3DOWNTO0):=S(3DOWNTO0)+AN(3DOWNTO0);ENDIF;IF("0"&S(7DOWNTO4)+("0"&AN(7DOWNTO4)>"01001"THENS(7DOWNTO4):=S(7DOWNTO4)+AN

15、(7DOWNTO4)+"0110"S(15DOWNTO8):=S(15DOWNTO8)+X"01"ELSES(7DOWNTO4):=S(7DOWNTO4)+AN(7DOWNTO4);ENDIF;IF("0"&S(11DOWNTO8)+("0"&AN(11DOWNTO8)>"01001"THENS(11DOWNTO8):=S(11DOWNTO8)+AN(11DOWNTO8)+"0110"S(15DOWNTO12):=S(15DOWNTO12)+X"

16、;1"ELSES(11DOWNTO8):=S(11DOWNTO8)+AN(11DOWNTO8);ENDIF;S(15DOWNTO12):=S(15DOWNTO12)+AN(15DOWNTO12);ENDIF;ENDLOOP;RETURNS;ENDFUNCTION;- -将16位二进制价格转换到BCD®BEGIN- -10个脉冲记为0.1KM的实现PROCESS(CP1,RR)-CP1,RRINPUTSIGNALBEGINIFRR='1'THENCT<=X"0000"ELSIFCP1='1'ANDCP1'EVE

17、NTTHENCT<=X"0000"CP3<='1'ELSECP3<='0'CT<=CT+"1"ENDIF;ENDIF;ENDPROCESS;- -10个脉冲记为0.1KM的实现- -10个0。1KMB冲记为1KM的实现PROCESS(CP3,RR)BEGINIFRR='1'THENT<=X"0000"ELSIFCP3='1'ANDCP3'EVENTTHENT<=X"0000"CP<='1'

18、;ELSECP<='0'T<=T+"1"ENDIF;ENDIF;ENDPROCESS;- -10个0。1KM永冲记为1KM的实现完- -将时间脉冲分频PROCESS(CP2,RR)BEGINIFRR='1'THENCOUNTER_REG<="11111111111111"-X"989680"-仿真时设为2COUNTER<=X"00000000"CLK<='0'ELSEIFCP2='1'ANDCP2'EVENTTHE

19、NIFCOUNTER>=COUNTER_REGTHENCOUNTER<=X"00000000"CLK<=NOTCLK;ELSECOUNTER<=COUNTER+1;ENDIF;ENDIF;ENDIF;ENDPROCESS;- -时间脉冲分频完- -时间计数的实现PROCESS(CLK,RR)- ARIABLETIMESOUT_I:STD_LOGIC_VECTOR(15DOWNTO0);BEGINIFRR='1'THENTIMESOUT<=X"0000"TIMESOUT_I:=X"0000"

20、ELSIFCLK='1'ANDCLK'EVENTTHENIFTIMESOUT_I(15DOWNTO0)="1"THEN-16位二进制数转BCD码TIMESOUT_I:=X"0000"ELSEIFTIMESOUT_I(11DOWNTO0)="100101011001"THENTIMESOUT_I(11DOWNTO0):="000000000000"TIMESOUT_I:=TIMESOUT_I+"0"ELSEIFTIMESOUT_I(7DOWNTO0)="01011

21、001"THENTIMESOUT_I(7DOWNTO0):="00000000"TIMESOUT_I:=TIMESOUT_I+"0"ELSEIFTIMESOUT_I(3DOWNTO0)="1001"THENTIMESOUT_I(3DOWNTO0):="0000"TIMESOUT_I:=TIMESOUT_I+"0"TIMESOUT_I:=TIMESOUT_I+"1"ENDIF;ENDIF;ENDIF;ENDIF;TIMESOUT<=TIMESOUT_I;ENDI

22、F;-16位二进制数转BCD马ENDPROCESS;- -时间计数的实现完- -里程计算部分PROCESS(CP3,RR)- ARIABLEMILESOUT_I:STD_LOGIC_VECTOR(15DOWNTO0);BEGINIFRR='1'THENMILESOUT<=X"0000"MILESOUT_I:=X"0000"ELSIFCP3='1'ANDCP3'EVENTTHENIFMILESOUT_I(15DOWNTO0)="1"THEN-16位二进制数转BCffiMILESOUT_I:=

23、X"0000"ELSEIFMILESOUT_I(11DOWNTO0)="100110011001"THENMILESOUT_I(11DOWNTO0):="000000000000"MILESOUT_I:=MILESOUT+"0"ELSEIFMILESOUT_I(7DOWNTO0)="10011001"THENMILESOUT_I(7DOWNTO0):="00000000"MILESOUT_I:=MILESOUT_I+"0"ELSEIFMILESOUT_I(

24、3DOWNTO0)="1001"THENMILESOUT_I(3DOWNTO0):="0000"MILESOUT_I:=MILESOUT_I+"0"ELSEMILESOUT_I:=MILESOUT_I+"1"ENDIF;ENDIF;ENDIF;ENDIF;-16位二进制数转BCD码MILESOUT<=MILESOUT_I;ENDIF;ENDPROCESS;-里程计算部分完-行车计费部分PROCESS(MILESOUT,RR)BEGINIFRR='1'THENCASHL<=X"0

25、000"ELSIFMILESOUT<"0"THENCASHL<="0"ELSECASHL<="0"ENDIF;ENDPROCESS;PROCESS(MILESOUT,CP,RR)BEGINIFRR='1'THENCASHH<=X"0000"ELSIFCP='1'ANDCP'EVENTTHENIFMILESOUT<"0"THENCASHH<=X"0000"ELSIFMILESOUT<&q

26、uot;0"THENCASHH<=CASHH+"0"-程<=10公里,1.8元/公里ELSECASHH<=CASHH+"0"-程>10公里,2.2元/公里ENDIF;ENDIF;ENDPROCESS;PROCESS(CASHH,CASHL,RR)BEGINIFRR='1'THENCASHMILE<=X"0000"ELSECASHMILE<=CASHH+CASHL;ENDIF;ENDPROCESS;- -行车计费部分完- -停车计费部分PROCESS(MILESOUT,CLK

27、,RR)BEGINIFRR='1'THENCOST<=X"0000"CV<=X"00"CASHTIME<=X"0000"ELSIFCLK='1'ANDCLK'EVENTTHENIFCOST/=MILESOUTTHENCV<="00000000"ELSIFCV="00000101"THENCASHTIME<=CASHTIME+"0"停车超过5分钟,每等一分钟2元ELSEENDIF;COST<=MILES

28、OUT;ENDIF;ENDPROCESS;- -停车计费部分完- -计价部分PROCESS(CASHTIME,CASHMILE,RR)- ARIABLECASHOUT_I:STD_LOGIC_VECTOR(15DOWNTO0);BEGINIFRR='1'THENCASHOUT_I:=X"0000"ELSECASHOUT_I:=CONVERT(CASHTIME+CASHMILE);ENDIF;CASHOUT<=CASHOUT_I;ENDPROCESS;-计价部分完-输出部分PROCESS(MILESOUT,CASHOUT,TIMESOUT)MILES&l

29、t;=MILESOUT;CASH<=CASHOUT;TIMES<=TIMESOUT;ENDPROCESS;-输出部分完ENDJFQLL;2、各模块的LCD显示模块。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;entityJFQLCDisport(CPIN,R,BUSY:INSTD_LOGIC;TMH,TML,MILEH,MILEL,CASHH,CASHL:INSTD_LOGIC_VECTOR(7DOWNTO0);CLK,RST,STROBE,OUTLINE:OUTSTD_LOGIC;DA

30、TA:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ADDR:OUTSTD_LOGIC_VECTOR(3DOWNTO0);endJFQLCD;architectureJFQofJFQLCDisTYPESTATESIS(S0,S1,S2,S3,S4);SIGNALS:STATES;SIGNALLCDPT:INTEGERRANGE0TO23;SIGNALCPCT:INTEGERRANGE0TO65535;SIGNALCP:STD_LOGIC;beginPROCESS(CPIN,R)BEGINCLK<=CPIN;IFR='1'THENCPCT<=65535;

31、ELSIFCPIN='1'ANDCPIN'EVENTTHENIFCPCT=0THENCPCT<=65535;CP<=NOTCP;ELSECPCT<=CPCT-1;ENDIF;ENDPROCESS;PROCESS(CP,R)BEGINIFR='1'THENS<=S0;LCDPT<=0;RST<='1'ELSIFCP='1'ANDCP'EVENTTHENCASESISWHENS0=>S<=S1;LCDPT<=0;RST<='1'WHENS1=&

32、gt;RST<='0'STROBE<='0'IFBUSY='0'THENLCDPT<=LCDPT+1;IFLCDPT=10THENS<=S3;ELSES<=S2;ENDIF;ENDIF;WHENS2=>S<=S1;STROBE<='1'WHENS3=>STROBE<='0'IFBUSY='0'THENIFLCDPT=23THENLCDPT<=10;ELSELCDPT<=LCDPT+1;ENDIF;S<=S4;ENDIF;W

33、HENS4=>STROBE<='1'S<=S3;WHENOTHERS=>NULL;ENDCASE;ENDIF;ENDPROCESS;PROCESS(LCDPT,TMH,TML,CASHH,CASHL,MILEH,MILEL)BEGINCASELCDPTISWHEN0=>NULL;WHEN1=>DATA<="00111010”;ADDR<="0011"OUTLINE<='0'-:WHEN2=>DATA<="00101110”;ADDR<="10

34、11"OUTLINE<='0'-.WHEN3=>DATA<="01001011”;ADDR<="1101"OUTLINE<='0'-KWHEN4=>DATA<="01101101”;ADDR<="1110"OUTLINE<='0'-mWHEN5=>DATA<="01000011”;ADDR<="0010"OUTLINE<='1'-CWHEN6=>DA

35、TA<="01000001”;ADDR<="0011"OUTLINE<='1'-AWHEN7=>DATA<="01010011”;ADDR<="0100"OUTLINE<='1'-SWHEN8=>DATA<="01001000”;ADDR<="0101"OUTLINE<='1'-HWHEN9=>DATA<="00111010”;ADDR<="0110&qu

36、ot;OUTLINE<='1'-:WHEN10=>DATA<="00101110”;ADDR<="1011"OUTLINE<='1'-.-LCDPT=722显示FS1FS8-LCDPT=2325显示ZB/TMWHEN11=>DATA<="0011"&TMH(7DOWNTO4);ADDR<="0001"OUTLINE<='0'WHEN12=>DATA<="0011"&TMH(3D

37、OWNTO0);ADDR<="0010"OUTLINE<='0'WHEN13=>DATA<="0011"&TML(7DOWNTO4);ADDR<="0100"OUTLINE<='0'WHEN14=>DATA<="0011"&TML(3DOWNTO0);ADDR<="0101"OUTLINE<='0'WHEN15=>DATA<="0011"&a

38、mp;MILEH(7DOWNTO4);ADDR<="1000"OUTLINE<='0'WHEN16=>DATA<="0011"&MILEH(3DOWNTO0);ADDR<="1001"OUTLINE<='0'WHEN17=>DATA<="0011"&MILEL(7DOWNTO4);ADDR<="1010"OUTLINE<='0'WHEN18=>DATA<=&qu

39、ot;0011"&MILEL(3DOWNTO0);ADDR<="1100"OUTLINE<='0'WHEN19=>DATA<="00100000”;ADDR<="0111"OUTLINE<='1'WHEN20=>DATA<="0011"&CASHH(7DOWNTO4);ADDR<="1000"OUTLINE<='1'WHEN21=>DATA<="001

40、1"&CASHH(3DOWNTO0);ADDR<="100T'OUTLINE<='T;WHEN22=>DATA<="0011"&CASHL(7DOWNTO4);ADDR<="1010"OUTLINE<='1'WHEN23=>DATA<="0011"&CASHL(3DOWNTO0);ADDR<="1100"OUTLINE<='1'WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;ENDJFQ;四、设计电路的仿真波形图1总模块仿真波形STIMESMWRSThl1I一RR1ISMILESCP2ODOQU(MOT_ii口m口口iiriCP1国CASH1OTOO-innrinnnngypJ6q6OTIMES(XKKJMD卜【风0B01210卜山0D卜P)Q&)D:闭00【5】00D卜B01|0L阴0RSTN1RR13计程模块仿真波形日MILESM00卜同01

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论