工程学院毕业设计FPGA的出租车计费器论文.doc_第1页
工程学院毕业设计FPGA的出租车计费器论文.doc_第2页
工程学院毕业设计FPGA的出租车计费器论文.doc_第3页
工程学院毕业设计FPGA的出租车计费器论文.doc_第4页
工程学院毕业设计FPGA的出租车计费器论文.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

长春工程学院毕业设计(论文)1 引言最近几年出租车行业发展迅速,在全国有几千家出租车公司,因此出租车计费器的市场是庞大的。由于受到油价影响,各大城市都推出了运价油价联动机制,所以出租车计费器计价标准的灵活设定成为未来计费器不可缺少的一部分。而出租车运价是1993年制定的,1998年做过微调,可见已经十年没有变动了,所以现在的计费器都没有把灵活设定计价标准的功能加入其中,以至于出现了更改计价标准时要取下芯片重新记录,据可靠统计每台计费器更换标准以及调试所需时间为1小时,一个城市的出租车计费器修改所需时间为1个月。现在计费器大多数以单片机为平台的,但是单片机程序是不通用的,不同的芯片有不同的指令集,因此设计研发比较困难。而fpga等数字可编程器件的出现彻底解决了这个问题,而且性能更稳定、设计更灵活、能实现较复杂的功能,运用eda软件可方便的在电脑上实现设计与仿真。本设计是基于fpga的出租车计费器设计,使用软件max+plus和超高速硬件描述语言vhdl来实现起价标准灵活设定、白天深夜不同计价标准设定、超价加费设定、led显示(包括等待时间、等待费用,行驶里程、里程费用)等功能。fpga是电子设计领域中最具活力和发展前途的一项技术,未来必定会取代部分落伍的数字器件。2 概述2.1 出租车计费器现状最近几年出租车行业发展迅速,在全国有几千家出租车公司,出租车计费器的市场非常庞大。随着出租车行业的发展,对出租车计费器的要求也越来越高,用户不仅要求计费器性能稳定,计费准确,有防作弊功能;同时还要求其具有车票资料打印 、ic费、语音报话、和电脑串行通信等功能。随着生活水平的提高,更加精良的计价器来为乘客提供更加方便快捷的服务。随着改革开放日益深入,出租车行业的发展势头已十分突出,国内各机械厂家纷纷推出国产计价器。出租车计价器的功能从刚开始的只显示路程到能够自主计费,以及现在的能够打一发票和语音提示、按时间自主变动单价等功能。现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。目前市场上使用的出租车计费器主要采用的都是利用mcu如89c51单片机实现的计费器设计,显示方式上主要采用的是固定显示内容的led显示。传统的出租车计费器由于发展使用了十几年,在稳定性、成本、以及使用习惯上都具有一些优势,但是随着出租车价格市场化,我国加入wto以来主导出租车行业成本的许多因素主要包括油价的波动,都对传统的出租车计费器提出了更高的要求。近一年来,各大城市都在对出租车价格进行调整,由于数量太多,很多城市的调价甚至需要一个月的时间才能完成,经常会同一时间出现几个价格,有的城市的出租车上还会出现司机人工计价的尴尬情形。这些都暴露了传统计费器在灵活性和升级换代能力的天生不足。传统计费器的不足可以体现在以下两点: 1产品更新周期长传统计费器利用mcu如89c51单片机实现汽车计费器的设计,大部分的功能可以用单片机来实现。但是单片机程序是不通用的,不同的芯片有不同的指令集,因此设计研发比较困难,周期长。如果系统设计的不好,则系统不是很稳定,而且灵活度不够,不易实现功能复杂的设计。 2计价方式的不灵活 每次计价标准的修改都需要将芯片从新记录,使得每次调价都需要耗费大量的人力物力,很难达到目前油价联动的需求。2.2 fpga概述 1. fpga发展状况自1985年xilinx公司推出第一片现场可编程逻辑阵列(fpga)至今,fpga已经成为当今电子设计应用市场上首选的可编程逻辑器件之一。从航空航天到数字信号处理,再到汽车家电等消费领域,无处不见fpga的身影。而且,随着微电子等工艺的进步,fpga器件本身的性能逐年在提高,使得fpga器件与其他同类器件相比更有竞争力。在这个各类电子设计器件百花齐放的时代,广大消费者需要对这些电子设计器件有个更深入地了解,从而为自己的科研学习或工业生产挑选到既能满足各项性能指标要求,又经济实惠的合适的电子设计器件。因此,进行fpga器件的应用研究并进行各类电子设计产品的性能优势对比分析是一项很有价值和实际意义的工作。 随着eda技术的高速发展,电子系统的设计技术和工具发生了深刻的变化,大规模可编程逻辑器件fpga的出现,给设计人员带来了诸多方便。利用它进行产品开发,不仅成本低、周期短、可靠性高,而且可以随时在系统中修改其逻辑功能。fpga器件的成本越来越低,actel公司发布第三代的基于flash的可编程逻辑方案。这些新的fpga芯片最低价将达到1.5美元,代表了全球最低成本的fpga,并且相对于基于sram的fpga来说具有保密的优势。基于flash的fpga可以提供加密、低功耗、上电工作、可重复编程的方案。7 2. fpga的结构与原理目前生产fpga的公司主要有xilinx、altera、actel、lattice、quicklogic等,生产的fpga品种和型号繁多。尽管这些fpga的具体结构和性能指标各有特色,但它们都有一个共同之处,即由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块,从而实现不同的设计。典型的fpga通常包含三类基本资源:可编程逻辑功能块、可编程输入/输出块和可编程互连资源。可编程逻辑功能块是实现用户功能的基本单元,多个逻辑功能块通常规则地排成一个阵列结构,分布于整个芯片;可编程输入/输出块完成芯片内部逻辑与外部管脚之间的接口,围绕在逻辑单元阵列四周;可编程内部互连资源包括各种长度的连线线段和一些可编程连接开关,它们将各个可编程逻辑块或输入/输出块连接起来,构成特定功能的电路。用户可以通过编程决定每个单元的功能以及它们的互连关系,从而实现所需的逻辑功能。不同厂家或不同型号的fpga,在可编程逻辑块的内部结构、规模、内部互连的结构等方面经常存在较大的差异。除了上述构成fpga基本结构的三种资源以外,随着工艺的进步和应用系统需求的发展,一般在fpga中还可能包含以下可选资源:存储器资源(块ram、分布式ram);数字时钟管理单元(分频/倍频、数字延迟、时钟锁定);算数运算单元(高速硬件乘法器、乘加器);多电平标准兼容的i/o接口;高速串行i/o接口;5特殊功能模块(以太网mac等硬ip核);微处理器(powerpc405等硬处理器ip核)。下面介绍两种fpga的一般结构。第一种包括5个可配置部分:(1)可配置逻辑块,用于实现大部分逻辑功能;(2)在可配置逻辑块的四周分布着可编程的输入输出块(input/output blocks),提供封装引脚与内部逻辑之间的连接接口;(3)丰富的多层互连结构的可编程连线;(4)片上的随机存取块状ram;(5)全数字式延迟锁相环(dll)时钟控制块,与每个全局时钟输入缓冲器相连,该闭环系统确保时钟边沿到达内部触发器与其到达输入引脚同步,有效地消除时钟分配的延迟。另一种fpga器件主要包括:(1)逻辑阵列,由多个逻辑阵列块(logic array blocks)排列而成,用于实现大部分逻辑功能;(2)在芯片四周分布着可编程的输入输出单元(input/output elements),提供封装引脚与内部逻辑之间的连接接口;(3)丰富的多层互连结构的可编程连线;(4)片上的随机存取块状ram;(5)锁相环(pll),用于时钟的锁定与同步、能够实现时钟的倍频和分频;(6)高速的硬件乘法器,有助于实现高性能的dsp功能。目前绝大部分fpga都采用查找表技术,最基本逻辑单元都是由lut和触发器组成的。查找表简称为lut,本质上就是一个ram。目前fpga中多使用4输入的lut,所以每一个lut可以看成一个有4位地址线的16x1的ram。当用户通过原理图或vhdl语言描述了一个逻辑电路以后,fpga开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入ram。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出该地址对应的内容,然后输出即可。由于lut主要适合sram工艺生产,所以目前大部分fpga都是基于sram工艺的。而sram工艺的芯片在掉电后信息就会丢失,因此需要外加一片专用的配置芯片。在上电的时候,由这个专用配置芯片把数据加载到fpga中,fpga就可以正常工作。少数fpga产品采用反熔丝或flash工艺,掉电后配置信息不会丢失,因此这种fpga芯片不需要外加的专用配置芯片。82.3 vhdl硬件描述语言 1.vhdl语言的发展状况vhdl的英文全名是very-high-speed integrated circuit hardware description language,诞生于1982年。1987年底,vhdl被ieee(the institute of electrical and electronics engineers)和美国国防部却认为标准硬件描述语言。自ieee公布了vhdl的标准版本(ieee-1076)之后,各eda公司相继推出了自己的vhdl设计环境,或宣布自己的设计工具可以和vhdl 接口。此后vhdl在电子设计领域得到了广泛的接收,并逐步取代了原有的非标准硬件描述语言。1933年,ieee对vhdl进行论文修订,从更高的抽象层次和系统描述能力上扩展vhdl的内容,公布了新版本的vhdl,即ieee标准的1076-1993版本。现在,vhdl和verilog语言作为ieee的工业标准硬件描述语言,又得到众多eda公司的支持,在电子工程领域,以成为事实上的通用硬件描述语言。有专家认为,在新世纪中,vhdl语言将承担起几乎全部的数字系统设计任务。2. vhdl的特点vhdl主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,vhdl的语言形式和描述风格与句法十分类似于一般的计算机高级语言。vhdl的程序结构特点是将一项工程设计,或设计实体(可以是一个元件、一个电路模块或一个系统)分成外部(或称可视部分,即端口)和内部(或称不可视部分),即设计实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦内部开发完成后,其他的设计可以直接调用这个实体。这种将设计实体分成内外部分的概念是vhdl系统设计的基本点。应用vhdl进行工程设计的优点是多方面的,具体如下:l 与其它的硬件描述语言相比,vhdl具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。就目前流行的eda工具和vhdl综合器而言,将基于抽象的行为描述风格的vhdl程序综合成为具体的fpga和cpld等目标器件的网表文件已不成问题,只是在综合与优化效率上略有差异。l vhdl最初是作为一种仿真标准格式出现的,因此vhdl既是一种硬件电路描述和设计语言,也是一种标准的网表格式,还是一种仿真语言,其丰富的仿真语句和库函数,使得在任何大系统的设计早期,就能用于查验设计系统的功能可行性,随时可对设计进行仿真模拟。即在远离门级的高层次上进行模拟,是设计者对整个工程设计的结构和功能的可行性作出决策。l vhdl语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能,符合市场所需求的,大规模系统高效、高速的完成必须由多人甚至多个开发组共同并行工作才能实现的特点。vhdl中设计实体的概念、程序包的概念、设计库的概念为设计的分解和并行工作提供了有利的支持。l 对于用vhdl完成的一个确定的设计,可以利用eda工具进行逻辑综合和优化,并自动低把vhdl描述设计转变成门级网表。这种方式突破了门级设计的瓶颈,极大地减少了电路设计的时间和可能发生的错误,降低了开发成本。应用eda工具的逻辑优化功能,可以自动地把一个综合后的设计变成一个更高效、更高速的电路系统。反过来,设计者还可以容易地从综合和优化后的电路获得设计信息,返回去更新修改vhdl设计描述,使之更为完善。l vhdl对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。正因为vhdl的硬件描述与具体的工艺技术和硬件结构无关,vhdl设计程序的硬件实现目标器件有广阔的选择范围,其中包括各系列的cpld、fpga及各种门阵列实现目标。l 由于vhdl具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序的条件下,只需改变端口类属参量或函数,就能轻易地改变设计的规模和结构。13 3.关于自顶向下的系统设计方法使用vhdl设计系统方法是自顶向下的系统设计方法,在设计过程中,首先是从整体上对系统设计作详细的规划,然后完成电路系统功能行为方面的设计,其设计流程如图。vhdl仿真器vhdl文本编辑时序与功能仿真器fpga/cpld适配器fpga/cpld器件和电路系统fpga/cpld编程下载器vhdl文本编辑图2-1 vhdl设计流程图3 设计方案论证与选择3.1 基于单片机的设计方案方案一:用单片机设计出租车计费器(1)硬件设计:整个计费器系统共由五个模块组成, 分别为主控模块、按键显示模块、防作弊及脉冲输入模块、通信模块和电源模块。(2)软件设计:该计费器的软件设计主要由两部分组成, 一是单片机的软件设计,二是pc 机的软件设计3.2 基于fpga的设计方案方案二:用fpga设计出租车计费器 测控fpga芯片通过采集传感器脉冲信号wclk进行里程计算、里程计费,利用外部脉冲信号sclk产生标准时钟信号,以计算等待时间、等待费用,并产生里程标志(lcbz)、超价标志(cjbz)、等待标志(ddbz)、熄灯标志(xdbz)、计费标志(jfbz)等有关控制标志信号,同时根据发出的开始信号(start)、车轮选择(clxz)、时段标志(sdbz)、传输数据选择(sel)等控制信号,将有关计算结果显示出来。测控fpga的vhdl程序设计,根据系统的设计要求,可将整个测控fpga系统czjfxt分为七个模块,他们分别是:分频器模块fpq,等待判断模块ddpb,里程计算模块lcjs,里程计费模块lcjf,等待计时模块ddjs,等待计费模块ddjf,输出数据选择模块scxz,译码显示模块ymqxs,bcd码转换模块bcdch。3.3 方案论证与选择 鉴于fpga 能完成任何数字器件的功能,使用 fpga 来开发数字电路,可以大大缩短设计时间,减少 pcb 面积,提高系统的可靠性。同时由于 fpga 的功能完全取决于 vhdl 语言编写的程序,不拘泥于某种芯片的特殊指令,因此选择方案二设计。4 出租车计费系统设计说明4.1 出租车计费标准白天6:0023:00深夜23:006:00总额2元/km(超过2km)4元/km(超过2km)4元/km(超过10km超价收费)6元/km(超过10km超价收费)起步价格5.00元1元/5分钟(车速低于12km/h不到1小时)20元/小时(车速低于12km/h超过1小时)表4-1 出租车计费标准表4.2 出租车计费系统技术指标 以fpga为主体设计出租车计费系统,主要技术指标如下:1.里程,即汽车行驶里程,单位为km。2. 单价, 即里程单价,单位为元/km,根据每天不同的时间段有两种情况:当时间段为 06:00-23:00时单价为2元/km,超过10km时单价为4元/km,其他时间段内单价为4元/km,超过10km时单价为6元/km。3.等候时间,等候的定义是:当汽车行使速度小于或等于12km/小时时为等候。4.等候单价,等候单价有两种情况:在等候时间小于一小时的情况下,等候单价为1元/6分钟;在等候时间大于1小时的情况下,等候单价为20元/小时。5.费用的计算,出租车的起价为5.00元,当里程小于2km时,按起价计算费用;当里程大于2km时,按下式计算费用:费用=里程*里程单价+等候时间*等候单价4.3 出租车计费系统总体框架设计基于fpga的出租车计费器的组成框图如图4-1所示。各部分主要功能如下:1a计数器对车轮传感器送来的脉冲信号进行记数(每转一圈送一个脉冲)。不同车型的车轮直径可能不一样,通过“设置1”对车型做出选择,以实现对不同车轮直径的车进行调整。2.b计数器对百米脉冲进行累加,每计满500送出一个脉冲给c计数器。3.c计数器实现步长可变(即单价可调)的累加计数,每500米计费一次。“设置2”用来完成超价加费、起步价预制等。4.d计数器实现等待时间的累加计数,通过设置3将外部时钟信号转化为标准时钟信号。5.e计数器时间等待费用的累加计数,通过设置4实现超时加费。设置1设置2设置3设置4计数器a计数器b计数器c计数器d计数器e译 码数 码 管 显 示车轮脉冲外部时钟信号里程里程费用等待时间等待费用图4-1 基于fpga的出租车计费器组成框图5 出租车计费器系统的vhdl设计5.1 测控fpga的总体设计根据系统的设计要求,可将整个测控fpga系统czjfxt分为七个模块,他们分别是:分频器模块fpq,等待判断模块ddpb,里程计算模块lcjs,里程计费模块lcjf,等待计时模块ddjs,等待计费模块ddjf,输出数据选择模块scxz,译码显示模块ymqxs,bcd码转换模块bcdch。其内部组成原理图如图5-1所示图5-1 基于fpga的出租车计费系统内部组成原理图5.2 出租车计费器系统内部模块设计1.分频器模块fpq:将外部始终信号sclk(设计时假设为200hz)经过适当分频后,产生1hz的系统工作用的基准时钟信号clk1hz,供系统中的有关模块计时用。图5-2 分频器模块fpq分频器模块fpq的vhdl源程序:fpq.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fpq is port (sclk: in std_logic; sclk=200hz clk1hz: out std_logic); clk1hz=1hzend entity fpq;architecture art of fpq is signal cnt100: integer range 0 to 99; signal clk1: std_logic; begin process( sclk) begin if sclkevent and sclk= 1 thenif cnt100=99 then cnt100=0; clk1=not clk1;else cnt100=cnt100+1;end if;elseclk1=clk1; end if; clk1hz=clk1;end process;end architecture art;2.等待判别模块ddpb:根据速度传感器脉冲信号wclk和分频器产生的基准时钟信号clk1hz,计算单位时间里wclk的脉冲个数,亦即出租车行驶速度,从而判别出租车时候处于等待状态,发出等待标志信号ddbz。当速度大于12km/h,即速度大于200m/min时,出租车处于行驶状态,这时等待标志ddbz=0。当速度小于12km/h,即速度小于200m/min时,出租车处于等待状态,这时等待标志ddbz=1。该模块的vhdl程序设计可分为三个进程:60s周期性跳变信号产生进程,每分钟行使距离计算进程,等待标志判别进程。等待标志判别进程就是比较每分钟wclk脉冲个数与等待状态wclk脉冲临界个数120的大小,从而确定ddbz的赋值。图5-3 等待判别模块ddpbddpb.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity ddpb is port (start,wclk:in std_logic;clk1hz: in std_logic;ddbz: out std_logic);end entity ddpb;architecture art of ddpb is signal t60s: std_logic;signal wclkcou: std_logic_vector (7 downto 0);begin 产生60s周期性跳变信号进程process (start, clk1hz) is variable cnt60: std_logic_vector (7 downto 0); begin if start=1 then cnt60:=00000000 ; t60s=0; elsif clk1hzevent and clk1hz=1 then if cnt60= 00111100 then cnt60=60 t60s=1; cnt60:=00000000; else cnt60:=cnt60+1; t60s=0; end if; end if;end process;每分钟行驶距离计算进程process (start, wclk, t60s) isbegin if start=1 then wclkcou=00000000;elsif wclkevent and wclk=1 then if t60s=1 then wclkcou=00000000; else wclkcou=wclkcou+1; 距离计算 end if;end if;end process; 等待标志判别进程process (wclkcou, t60s) isbegin if t60sevent and t60s=1 then if wclkcou=01111000 then ddbz=1; 等待 else ddbz=0; 行驶 end if; end if; end process;end architecture art;3.里程计算模块lcjs:根据速度传感器脉冲信号wclk和等待标志ddbz,对出租车行使的里程数xslc进行计算,同时发出里程标志信号lcbz、超价标志cjbz和里程计费标志信号jfbz。如果lcbz=0,说明行使距离没超过2km,按起价计费。如果lcbz=1,说明超过2km,里程计费启动,如果cjbz=1,说明行驶超过10km,实行超价加费;如果;每行使500m应计费1次,并且计费的启动信号应是某一时刻,因此每行驶500m,计费标志信号jfbz应跳变1次。该模块的 vhdl程序设计可分为两个进程:里程计算及标志产生进程、产生计费信号进程。产生计费信号进程就是每行驶500米jfbz由低电平0变为高电平1,经过一个系统时钟周期后jfbz又回到低电平0,里程计费模块lcjf就是在jfbz脉冲信号的上升沿进行计费的加法操作。图5-4 里程计算模块lcjs里程计算模块lcjs的vhdl源程序:lcjs.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity lcjs is port(start,ddbz,wclk: in std_logic; xslc: out std_logic_vector (7 downto 0); lcbz, cjbz, jfbz: out std_logic);end entity lcjs;architecture art of lcjs issignal bms: std_logic_vector (7 downto 0);signal bms1: integer range 0 to 99;signal jfbz1:std_logic;begin里程计算及标志产生进程process(start,wclk)variable ms: std_logic_vector( 7 downto 0);begin if start=1 then ms:=00000000; bms=00000000; lcbz=0;elsif wclkevent and wclk=1 then if ddbz=0 then if clxz=00 then if ms=00111100 then ms=60 ms:=00000000; bms=20 then lcbz=100 then cjbz=1; 大于10km标志 end if; end if; else ms:=ms+1; 米数计算 end if; elsif clxz=01 then if ms=00111010 then ms=58 ms:=00000000; bms=20 then lcbz=100 then cjbz=1; 大于10km标志 end if; end if; else ms:=ms+1; 米数计算 end if; elsif clxz=10 then if ms=00111000 then ms=56 ms:=00000000; bms=20 then lcbz=100 then cjbz=1; 大于10km标志 end if; end if; else ms:=ms+1; 米数计算 end if; elsif clxz=11 then if ms=00110110 then ms=54 ms:=00000000; bms=20 then lcbz=100 then cjbz=1; 大于10km标志 end if; end if; else ms:=ms+1; 米数计算 end if; end if; end if;end if;end process;里程计算结果输出xslc=bms;里程计算结果转换bms1jfbz1jfbz1jfbz1=0;end case; end process;计费标志去毛刺进程 process(wclk,jfbz1) is begin if wclkevent and wclk=1 thenjfbz=jfbz1;end if;end process;end architecture art; 4.里程计费模块lcjf1:在计费标志信号jfbz、等待标志信号ddbz、里程标志信号lcbz、超价标志信号cjbz和 时段标志信号xdbz等信号的控制下,计算行驶里程超过2km以上里程的费用lcfy。该模块的vhdl程序是通过由多个条件控制的加法进程来完成里程计费的,里程计费的条件是在ddbz=0,并且在jfbz的上升沿根据sdbz分别进行加法计费操作。当sdbz=1时,表示在06:0023:00时段,其单价sd1为2元/km,超过10km时,单价sd3为4/km;当sdbz=0时,表示其他时段,其单价sd2为4元/km,超过10km时,单价sd4为6/km。如果lcbz=1,说明行驶距离超过2km,里程计费启动;如果lcbz=0,说明没超过2km,按起价收费。图5-5 里程计费模块lcjf1里程计费模块lcjf1的vhdl源程序:lcjf1.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity lcjf1 is generic(sd1:integer:=1; 06:00-23.00单价 sd2:integer:=2; 其他时段单价sd3:integer:=2; 超过10km时06:00-23:00单价sd4:integer:=3); 超过10km时其他时段单价 port(lcbz,jfbz,start,ddbz,sdbz,cjbz:in std_logic; lcfy:out std_logic_vector(7 downto 0);end entity lcjf1;architecture art of lcjf1 is signal lcfy1: std_logic_vector(7 downto 0); begin process(start,lcbz,sdbz,jfbz,cjbz)beginif start=1 then lcfy1=00000000;elsif jfbzevent and jfbz=1 then if ddbz=0 then 行驶状态 if lcbz=0 then 2km以内 lcfy1=00000101; 起价5元 elsif lcbz=1 then 2km以上 if cjbz=0 then 10km以内 if sdbz=0 then 06:00-23:00 lcfy1=lcfy1+sd1; elsif sdbz=1 then lcfy1=lcfy1+sd2; end if; elsif cjbz=1 then 10km以上 if sdbz=0 then lcfy1=lcfy1+sd3; elsif sdbz=1 then lcfy1=lcfy1+sd4; end if; end if; end if; end if;end if; end process; lcfy=lcfy1;end architecture art;5.等待计时模块ddjs:在等待标志信号ddbz和基准时钟信号clk1hz的控制下,进行等待时间ddsj的计算,其中ddsj的低8位表示等待时间的秒数,ddsj的高8位表示等待时间的分钟数。图5-6 等待计时模块ddjs等待计时模块ddjs的vhdl源程序:ddjslibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity ddjs is port(start,ddbz:in std_logic; clk1hz: in std_logic; ddsj:out std_logic_vector(15 downto 0); xdbz:out std_logic);end entity ddjs;architecture art of ddjs is signal ms,mg,fs,fg:std_logic_vector( 3 downto 0); signal xideng:std_logic; begin process(start,ddbz,clk1hz) isbegin if start=1 then ms=0000;mg=0000; fs=0000;fg=0000;elsif clk1hzevent and clk1hz=1 then if ddbz=1 then if mg=9 then mg=0000; if ms=5 then ms=0000; if fg=9 then fg=0000; if fs=5 then xideng=1;fs=0000; else fs=fs+1; 分数十位计算 end if; else fg=fg+1; 分数各位计算 end if; else ms=ms+1; 秒数十位计算 end if; else mg=mg+1; 秒数各位计算 end if; end if;end if; end process; xdbz=xideng; ddsj(15 downto 12)=fs; ddsj(11 downto 8)=fg; ddsj(7 downto 4)=ms; ddsj(3 downto 0)=mg;end architecture art;6.等待计费模块ddjf:在等待标志信号ddbz和熄灯标志信号xdbz控制下,进行等待费用ddfy的计费操作。该模块的vhdl程序包括两个进程:60s周期性跳变信号产生进程、等待费用计算进程。等待费用计算的条件是在ddbz=1并且xdbz=0时,按1元/6分钟计费,当ddbz=1且xdbz=1时,按2元/6分钟计费。图5-7 等待计费模块ddjf等待计费模块ddjf的vhdl源程序:ddjf.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity ddjf is每分钟等待费用定义,单位为分generic (wdj1: integer:=1; wdj2: integer:=2);port ( start ,xdbz, ddbz, clk1hz: in std_logic; ddfy: out std_logic_vector(7 downto 0);end entity ddjf;architecture art of ddjf is signal ddfy1:std_logic_vector (7 downto 0); signal cnt360:std_logic_vector (8 downto 0); signal t360s: std_logic; begin 产生360s周期性跳变信号进程 process(clk1hz) is begin if clk1hzevent and clk1hz=1 then if cnt360= 101101000 then cnt360=360 t

温馨提示

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

评论

0/150

提交评论