出租车计费系统VHDL
出租车计价器代码VHDL
![出租车计价器代码VHDL](https://img.taocdn.com/s3/m/300ea128ccbff121dd3683b1.png)
SIGNAL I:INTEGER RANGE 0 TO 5 :=0; --当状态从go/wait转到idle时,希望将价格等持续显示5秒。
ELSIF (SA='1' AND SB='0') THEN STATE<=GO;
W2<="0000"; W1<="0000"; W0<="0000"; K2<="0000"; K1<="0000"; K0<="0000"; I<=0; FIN<='1'; CLK3S<='0';COUNT3S<=0; --此刻进入go状态已经一秒。
ELSE
STATE<=GO;
W2<=W2; W1<=W1; W0<=W0; K2<=K2; K1<=K1; K0<=K0;I<=I+1;
END IF;
ELSIF (SA='1' AND SB='0') THEN STATE<= GO;
END IF;
END IF;
END PROCESS U1;
U2:PROCESS(CLK1HZ) --有限状态机设计模块
BEGIN
IF RST='1' THEN W2<="0000"; W1<="0000"; W0<="0000"; K2<="0000"; K1<="0000"; K0<="0000"; I<=0; FIN<='0';
(VHDL实验报告)出租车计费器的设计
![(VHDL实验报告)出租车计费器的设计](https://img.taocdn.com/s3/m/e575822d0029bd64793e2c32.png)
电子科技大学成都学院学院标准实验报告(实验)课程名称数字电路EDA设计与应用姓名乱弹的枇杷学号 1240830专业电气工程及其自动化指导教师张一、实验名称出租车计费器的设计二、实验目的1、了解出租车计费器的工作原理。
2、学会用V HDL 语言编写正确的七段码管显示程序。
3、数量掌握用V HDL 编写复杂功能模块。
4、进一步数量状态积在系统设计中的应用。
三、实验原理出租车计费器一般都是按公里计费,通常是起步价xx元(xx元可以行走x公里),然后再是xx元/公里。
所以要完成一个出租车计费器,就要有两个计数单位,一个用来计公里,另外一个用来计费用。
通常在出租车的轮子上都有传感器,用来记录车轮转动的圈数,而车轮子的周长是固定的,所以知道了圈数自然也就知道了里程。
在这个实验中,就要模拟出租车计费器的工作过程,用直流电机模拟出租车轮子,通过传感器,可以得到电机每转一周输出一个脉冲波形。
结果的显示用8个七段码管,前四个显示里程,后三个显示费用。
在设计VHDL程序时,首先在复位信号的作用下将所有用到的寄存器进行清零,然后开始设定到起步价记录状态,在此状态时,在起步价规定的里程里都一直显示起步价,直到路程超过起步价规定的里程时,系统转移到每公里计费状态,此时每增加一公里,计费器增加相应的费用。
为了便于显示,在编写过程中的数据用BCD码来显示,这样就不存在数据格式转换的问题。
比如表示一个三位数,那么就分别用四位二进制码来表示,当个位数字累加大于9时,将其清零,同时十位数字加1,依此类推。
四、实验内容本实验要完成的任务就是设计一个简单的出租车计费器,要求是起步价3元,准行1公里,以后1元/公里。
显示部分的七段码管扫描时钟选择时钟模块的1KHz,电机模块的跳线选择GND端,这样通过旋钮电机模块的电位器,即可达到控制电机转速的目的。
另外用按键模块的S1来作为整个系统的复位按钮,每复位一次,计费器从头开始计费。
直流电机用来模拟出租车的车轮子,没转动一圈认为是行走1米,所以每旋转1000 圈,认为车子前进1公里。
基于VHDL语言的出租车计费系统的设计综述
![基于VHDL语言的出租车计费系统的设计综述](https://img.taocdn.com/s3/m/38eb7cea89eb172ded63b7ea.png)
基于VHDL语言的出租车计费系统的设计摘要本文通过对VHDL的初步学习并掌握了其基本知识后,以FPGA做主控芯片来实现基于VHDL语言的出租车计费的目的。
基于出租车行业的需求,传统的出租车计费器发展使用了十几年,在稳定性、成本、以及使用习惯上都具有一些优势。
本系统由FPGA和一些外围器件组成,具有操作简单,显示明了,功能强大的特点。
使用1602液晶模组作为显示器,可以显示数字、字母、中文、图片等,使系统信息一目了然。
本方案充分发挥人性化的特点。
本系统涉及到的理论知识有:VHDL知识、LCD液晶显示器的工作原理和使用方法,出租车计费系统的原理和实现方法等等。
关键词:1602液晶模组;FPGA; VHDLTAXI BILLING BASED ON VHDLABSTRACTBased on FPGA preliminary study and master its basics, in order to achieve the controlling chip FPGA based on VHDL taxi billing purposes.Based on the taxi industry demand, the traditional taxi meter development using ten years, in stability, cost, and the use of custom has some advantages. The system consists of single-chip FPGA and some peripheral devices, has the advantages of simple operation, display clear, powerful features. The use of 1602 LCD module as the display, can display numbers, letters, Chinese, pictures, make the system message stick out a mile. The proposal to give full play to the characteristics of human nature. The system relates to the theory of knowledge: VHDL, LCD liquid crystal display work principle and using method of billing system of a taxi, the principle and the realization method.Key words: 1602 LCD module;FPGA;VHDL目录1 前言--------------------------------------------------------------------------------------1 2系统设计2.1 总体设计构思---------------------------------------------------------------------2 2.2出租车计价器存在的问题------------------------------------------------------2 2.3问题的修改------------------------------------------------------------------------32.4 设计要求---------------------------------------------------------------------------33 硬件部分3.1 FPGA简介-------------------------------------------------------------------------4 3.2 工作原理---------------------------------------------------------------------------43.3 LCD的简介-----------------------------------------------------------------------54 软件部分4.1 VHDL语言的介绍----------------------------------------------------------------7 4.2 VHDL语言的特点-----------------------------------------------------------------7 4.3 主程序代码------------------------------------------------------------------------84.4 部分仿真------------------------------------------------------------------------------------------195 总结--------------------------------------------------------------------------------------22 6参考文献----------------------------------------------------------------------------------23 7 致谢---------------------------------------------------------------------------------------24第一章前言汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车最重要的工具。
基于vhdl出租车计价器设计说明书
![基于vhdl出租车计价器设计说明书](https://img.taocdn.com/s3/m/a817e980b84ae45c3b358cea.png)
摘要该系统利用VHDL语言,以QuartusII软件作为开发平台,设计了出租车计程计价表,具有车型设置、起步里程设置、起步价设置、分时计价设置、里程显示、计费显示、计时显示、点阵数码管显示汉字及数字钟的报时及发光二极管花色显示等功能。
并进行了程序仿真、动态扫描等步骤。
关键词:VHDL语言、QuartusII软件、仿真目录一、设计任务说明 ---------------------------------------------- - - 2 -二、设计任务要求 ------------------------------------------------ - 2 -三、设计内容 ------------------------------------------------------ - 3 -(一)里程计价部分 ---------------------------------------- - 3 - (二)计时部分 ----------------------------------------------- - 7 - (三)数码管显示部分 ------------------------------------- - 10 - (四)点阵显示部分 ---------------------------------------- - 15 - (五)数字钟的报时及发光二极管花色显示部分---- - 17 - (六)整体电路连接部分 ---------------------------------- - 18 -四、整体电路图 -------------------------------------------------- - 22 -五、硬件实验结果图 -------------------------------------------- - 23 -六、心得体会 ----------------------------------------------------- - 23 -一、设计任务说明设计一个出租车计程计价表,具有车型设置、起步里程设置、起步价设置、分时计价设置、里程显示、计费显示、计时显示、点阵数码管显示汉字及数字钟的报时及发光二极管花色显示等功能。
(整理)出租车计费系统VHDL.
![(整理)出租车计费系统VHDL.](https://img.taocdn.com/s3/m/1fea3dad8bd63186bcebbc92.png)
EDA课程设计:出租车计费系统学生姓名:所在班级:指导老师:完成时间:一、课程设计目的1、综合运用EDA技术,独立完成一个课题的设计,考察运用所学知识,解决实际问题的能力;2、结合理论知识,考察阅读参考资料、文献、手册的能力;3、进一步熟悉EDA技术的开发流程,掌握文件编辑、编译、仿真、下载验证等环节的实现方法和应用技巧;二、课程设计要求实际中出租车的计费工作原理一般分成3个阶段:(1)车起步开始计费。
首先显示起步价(本次设计起步费为7.00元),车在行驶3 km 以内,只收起步价7.00元。
(2)车行驶超过3 km后,按每公里2.2元计费(在7.00元基础上每行驶1 km车费加2.2元),车费依次累加。
(3)行驶路程达到或超过9 km后(车费达到20元),每公里加收50%的车费,车费变成按每公里3.3元开始计费。
车暂时停止(行驶中遇红灯或中途暂时停车)不计费,车费保持不变。
若停止则车费清零,等待下一次计费的开始三、基本设计思想1、根据出租车计费原理,将出租车计费部分由5个计数器来完成分别为counterA,counterB,counterC,counterD,counterE。
①计数器A完成车费百位。
②计数器B完成车费十位和个位。
③计数器C完成车费角和分。
④计数器D完成计数到30(完成车费的起步价)。
⑤计数器E完成模拟实现车行驶100 m的功能。
2、行驶过程中车费附加50%的功能:由比较器实现。
3、车费的显示:由动态扫描电路来完成。
用专用模块来实现,完成数据的输入即动态数据的显示。
4、通过分析可以设计出系统的顶层框图如图3.1所示:图3.1 系统的顶层框图四、出租车计费系统的实现1、系统的总体框图2、程序流程图图4.2程序流程图3、系统各功能模块的实现(1)模块JIFEI的实现:图 4.3 模块模块JIFEI见图4.3。
输入端口START、STOP、PAUSE、JS分别为汽车起动、停止、暂停、加速按键。
VHDL语言的出租车计费器设计说明
![VHDL语言的出租车计费器设计说明](https://img.taocdn.com/s3/m/46045612f011f18583d049649b6648d7c1c708b3.png)
用VHDL语言设计出租车计价器1个报价近年来,出租车行业发展迅速。
全国有数千家出租车公司,出租车计价器市场巨大。
随着电子科学技术的不断发展,特别是集成电路的飞速发展,电子设计自动化已经成为主要的设计手段。
随着EDA技术的蓬勃发展和FPGA等数字可编程器件的出现,数字出租车计价器的设计变得更加简单,性能更加稳定,可以实现更加复杂的功能。
此外,利用EDA软件可以方便地在计算机上实现设计和仿真。
本设计基于VHDL(FPGA)语言,是电子设计领域最具活力和前景的技术,未来必将取代一些过时的数字元件。
1.1课程设计的目的随着电子技术的不断发展和进步,集成电路的设计方法也在不断更新。
今天,传统的手工设计过程已经被先进的电子设计自动化(EDA)工具所取代。
只有基于硬件描述语言和逻辑综合的子项下的电路设计方法,才能满足集成电路系统设计日益复杂的要求,缩短设计周期,满足集成电路系统设计日益迫切的要求。
在这种情况下,传统的出租车计价器的设计方法已经跟不上现在的节奏,过去的出租车计价器的功能也远远不能满足实际需要。
以往出租车计价器的不稳定和功能短是大家开始寻找功能更强大、性能更稳定、价格更低廉的新型出租车计价器的缺点。
大规模可编程逻辑器件和VHDL硬件描述语言的出现使这一切成为可能。
本设计的研究目标和意义是使用价格低廉、性能稳定、价格低廉、扩展性强的出租车计价器,满足当前出租车市场的需求,从而解决当前出租车计价器存在的一系列问题。
1.2课程设计要求1.它可以实现充电功能。
收费标准为:按里程收费,起步费10.00元,车库3公里后再按2元/公里收费。
计价器收费或超过一定收费(如20元)时,每公里收取车费的50%,车停止收费。
2.实现预设功能:可以预设起步费,每公里收费,车行里程。
3.实现模拟功能:可以模拟汽车的启动、停止、暂停、速度等状态。
4.设计一个动态扫描电路:用两位小数显示票价。
5.用VHDL语言设计一个满足上述功能要求的出租车计价器,并用层次化设计方法设计电路。
基于VHDL_的出租车计费器的设计
![基于VHDL_的出租车计费器的设计](https://img.taocdn.com/s3/m/b3e6841214791711cc7917fd.png)
基于VHDL 的出租车计费器的设计目前以硬件描述语言(Verilog 或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA 上进行测试,是现代IC 设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。
一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
本设计是一种采用FPGA芯片进行出租车计费器,主要分为分频模块、计量模块、计费模块、控制模块等模块,利用FPGA的可编程性,简洁又多变的设计方法,缩短了研发周期。
主要采用了FPGA芯片,使用VHDL语言进行编程,使其具有了更强的移植性,更加利于产品的升级。
一、设计任务与要求(1)、能够实现计费功能费用的计算是按行驶里程收费,设出租车的起步价是5.00元,当里程小于3km里时,按起步价收费;当里程大于3km时每公里按1.3元计费。
等待累计时间超过2min,按每分钟1.5元计费。
所以总费用按下式计算:总费用=起步价+(里程-3km)*里程单价+等候时间*等候单价(2)、能够实现显示功能●显示汽车行驶里程:用四位数字显示,显示方式为“XXXX”,单价为km。
计程范围为0~99km,计程分辨率为1km。
●显示等候时间:用两位数字显示分钟,显示方式为“XX”。
计时范围为0~59min,计时分辨率为1min。
●显示总费用:用四位数字显示,显示方式为“XXX.X”,单位为元。
计价范围为999.9元,计价分辨率为0.1元。
二、设计原理根据设计要求,系统的输入信号clk,计价开始信号Start,等待信号Stop,里程脉冲信号fin。
基于VHDL语言的出租车计价器
![基于VHDL语言的出租车计价器](https://img.taocdn.com/s3/m/ac18c74ebe1e650e52ea992c.png)
(基于VHDL语言)出租车计价器自己做的大作业经过测试完全通过,不过里面的时间脉冲以及里程脉冲的时钟信号都比较难搞,不过可以修改其中的值来满足你们提供的时钟脉冲题目要求:(1)行程3公里内(包括3公里),且等待累计时间2分钟内(包括2分钟),起步费为10元;(2)3公里外(不包括3公里)以每公里2元,等待累计时间2分钟外(不包括2分钟)以每分钟以1.0元计费;(3)能显示行驶公里数、等待累计时间和最后的总费用;(4)本计费器的显示范围为0~99元,计价分辨率为1元;计程器显示范围为0~99公里,分辨率为1公里;计时器的显示范围是分钟的显示范围是0—99,分辨率为1分钟。
秒的显示范围是0—59。
分辨率为1秒本出租车计价器的设计共分4个模块:判断模块、时间模块、里程模块、计费模块。
总的设计图如图1所示:计价开始控制判断模块library ieee;use ieee.std_logic_1164.all;--entity judge isport(sclk,sta,lclk: in std_logic;dge: out std_logic);end;architecture beh of judge isbeginprocess(sta,lclk,sclk)variable a: integer range 0 to 64;beginif sta='1' thenif lclk'event and lclk='1' thena:=a+1;end if;if sclk'event and sclk='1' thenif a=0 thendge<='0';--shijian processelsedge<='1';--licheng processend if;end if;if sclk='1' thena:=0;end if;elsedge<='Z';end if;end process;end;时间模块library ieee;use ieee.std_logic_1164.all;--entity time_count isport(sta,sclk,dge: in std_logic;t_count: out std_logic;minge: out integer range 0 to 10;minshi: out integer range 0 to 10); end;--architecture beh of time_count is beginprocess(sta,sclk,dge)variable count: integer range 0 to 60; variable ge: integer range 0 to 10; variable shi: integer range 0 to 10; variable t_c: std_logic;beginif sta='1' thenif dge='0' thenif sclk'event and sclk='1' then count:=count+1;if count=1 thent_c:='0';end if;if count=60 thencount:=0;ge:=ge+1;if ge>2 thent_c:='1';elsif ge>0 thent_c:='1';end if;if ge=10 thenge:=0;shi:=shi+1;if shi=10 thenshi:=0;end if;end if;end if;end if;end if;elsege:=0;shi:=0;t_c:='0';end if;minge<=ge;minshi<=shi;t_count<=t_c;end process;end;里程模块library ieee;use ieee.std_logic_1164.all; --entity time_count isport(sta,sclk,dge: in std_logic;t_count: out std_logic;minge: out integer range 0 to 10;minshi: out integer range 0 to 10); end;--architecture beh of time_count is beginprocess(sta,sclk,dge)variable count: integer range 0 to 60; variable ge: integer range 0 to 10; variable shi: integer range 0 to 10; variable t_c: std_logic;beginif sta='1' thenif dge='0' thenif sclk'event and sclk='1' then count:=count+1;if count=1 thent_c:='0';end if;if count=60 thencount:=0;ge:=ge+1;if ge>2 thent_c:='1';elsif ge>0 thent_c:='1';end if;if ge=10 thenge:=0;shi:=shi+1;if shi=10 thenshi:=0;end if;end if;end if;end if;end if;elsege:=0;shi:=0;t_c:='0';end if;minge<=ge;minshi<=shi;t_count<=t_c;end process;end;计费模块library ieee;use ieee.std_logic_1164.all;--entity price_count isport(sta,t_count,d_count: in std_logic;mge,mshi: out integer range 0 to 10); end;--architecture beh of price_count issignal t_ge,t_shi: integer range 0 to 10; signal d_ge,d_shi: integer range 0 to 10; begin--process(sta,t_count)variable tshi: integer range 0 to 10:=1; variable tge: integer range 0 to 10;beginif sta='1' thenif t_count'event and t_count='1' then tge:=tge+1;if tge=10 thentge:=0;tshi:=tshi+1;if tshi=10 thentshi:=0;end if;end if;end if;elsetge:=0;tshi:=1;end if;t_ge<=tge;t_shi<=tshi;end process;--process(sta,d_count)variable dge,dshi: integer range 0 to 10; beginif sta='1' thenif d_count'event and d_count='1' then dge:=dge+2;if dge=10 thendge:=0;dshi:=dshi+1;if dshi=10 thendshi:=0;end if;end if;end if;elsedge:=0;dshi:=0;end if;d_ge<=dge;d_shi<=dshi;end process;--process(d_ge,d_shi,t_ge,t_shi) variable cge: integer range 0 to 1; variable ge,shi:integer range 0 to 10; beginge:=d_ge+t_ge;if ge>=10 thenge:=ge-10;cge:=1;elsecge:=0;end if;shi:=d_shi+t_shi+cge;mge<=ge;mshi<=shi;end process;end;显示模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity display isport(CLK:in std_logic;sminge,sminshi: in integer range 0 to 10;skmge,skmshi: in integer range 0 to 10;smge,smshi: in integer range 0 to 10;weixuan:OUT std_logic_vector(2 downto 0);seg:out std_logic_vector(7 downto 0)); end;architecture one of display issignal cnt1:std_logic_vector(22 downto 0);signal S:std_logic_vector(2 downto 0);signal sel:std_logic_vector(2 downto 0);beginprocess(CLK)beginif CLK'event and CLK='1' THEN cnt1<=cnt1+1;end if;END PROCESS;S<=cnt1(5 downto 3);--300hzsel<="000" when S="000" else"001" when S="001" else"010" when S="010" else"011" when S="011" else"100" when S="100" else"101" when S="101" else"110" when S="110" else"111" when S="111" else"ZZZ";weixuan<=sel;process(sel,sminshi,sminge,skmshi,skmge,smshi,smge) variable num:integer range 0 to 10;begincase sel ISwhen"000"=>num:=sminge;when"001"=>num:=sminshi;when"011"=>num:=skmge;when"100"=>num:=skmshi;when"110"=>num:=smge;when"111"=>num:=smshi;when others=>num:=0;end case;case num ISwhen 0=>seg<="00111111";when 1=>seg<="00000110";when 2=>seg<="01011011";when 3=>seg<="01001111";when 4=>seg<="01100110";when 5=>seg<="01101101";when 6=>seg<="01111101";when 7=>seg<="00000111";when 8=>seg<="01111111";when 9=>seg<="01101111";when others=>seg<="00000000";end case;end process;end one;元件例化模块library ieee;use ieee.std_logic_1164.all;--entity comp isport(sclk,lclk,sta,dclk: in std_logic;weixuan:OUT std_logic_vector(2 downto 0);seg:out std_logic_vector(7 downto 0)); end;--architecture beh of comp is--component judge isport(sclk,sta,lclk: in std_logic;dge: out std_logic);end component;--component time_count isport(sta,sclk,dge: in std_logic;t_count: out std_logic;minge: out integer range 0 to 10;minshi: out integer range 0 to 10);end component;--component distance_count isport( sta,lclk,dge: in std_logic;kmge,kmshi: out integer range 0 to 10;d_count: out std_logic);end component;--component price_count isport(sta,t_count,d_count: in std_logic;mge,mshi: out integer range 0 to 10);end component;--component display isport(CLK:in std_logic;sminge,sminshi: in integer range 0 to 10;skmge,skmshi: in integer range 0 to 10;smge,smshi: in integer range 0 to 10;weixuan:OUT std_logic_vector(2 downto 0);seg:out std_logic_vector(7 downto 0));end component;--signal w,x,y: std_logic;signal time_ge,time_shi:integer range 0 to 10;signal pri_ge,pri_shi:integer range 0 to 10;signal dis_ge,dis_shi:integer range 0 to 10;--beginU1: judge port map(sta=>sta,sclk=>sclk,lclk=>lclk,dge=>w);U2: time_count port map(sta=>sta,sclk=>sclk,dge=>w,t_count=>x,minge=>time_ge,minshi=>time_shi);U3: distance_count port map(sta=>sta,lclk=>lclk,dge=>w,d_count=>y,kmge=>dis_ge,kmshi=>dis_shi);U4: price_count port map(sta=>sta,t_count=>x,d_count=>y,mge=>pri_ge,mshi=>pri_shi);U5: display port map(dclk,time_ge,time_shi,dis_ge,dis_shi,pri_ge,pri_shi,weixuan,seg);end;。
出租车计费器的FPGA实现(含VHDL代码)
![出租车计费器的FPGA实现(含VHDL代码)](https://img.taocdn.com/s3/m/a50bad0190c69ec3d5bb75bf.png)
可编程逻辑器件电路设计课程设计报告出租车计费器的FPGA实现华南农业大学工程学院摘要出租车计费系统利用VHDL语言,以MAX+PLUSⅡ软件作为开发平台而设计。
系统包括五大模块——主控模块、分频模块、里程模块、计费模块和显示模块;预置和模拟汽车启动、停止、计费、暂停等功能,并动态扫描显示车费与里程。
关键词: 出租车计费系统VHDL语言MAX+PLUSⅡFPGA 数字系统目录1 方案比较与选择(须详细阐述创新点或新见解) (1)2 底层文件仿真与分析 (4)2.1 底层文件仿真 (4)2.2 底层文件分析 (4)3 顶层文件仿真与分析 (7)3.1 顶层文件仿真 (7)3.2 顶层文件分析 (7)4硬件验证分析 (8)5课程设计心得 (9)Abstract (10)参考文献 (11)附录(源代码)1.方案比较与选择1.1方案一图1图2出租车计费器方案一原理框图1.1.1出租车计费器方案一原理基于CPLD/FPGA的出租车的组成如图1所示。
各部分主要的功能如下:(1)A计数器对车轮的传感器送来的脉冲信号进行计数(每转一圈送一个脉冲)。
不同车型的车轮可能不一样,通过“设置1”对车型做出选择,以实现对不同车型直径的车进行调整。
(2)B计数器对百米脉冲进行累加,并输出实际的公里数的BCD码给出译码动态扫描模块。
每计,满500送出一个脉冲给出C计数器。
“设置2”实现起步公里数预制。
(3)C计数器实现步长可变(即单价可调)的累加计数,每500米计费一次。
“设置3”用来完成超价加费,起步价预制等。
(4)译码/动态扫描见路程与费用的数字译码后动态扫描的方式驱动数码管。
(5)数码管显示将公里数和计费金额平均用四位数码管显示(三位整数,1为小数)1.1.2出租车计费器方案一优点根据车型的车轮直径来进行脉冲调整,因为实际车轮大小并非完全一致,需要根据实际大小而重新设置;起步价调整。
起步价调整解决了由于地域的同步而导致起步价的不同,从而是出租车计费系统有更广和广阔的市场,同时也解决了由于起步价调整而更换计费系统的问题。
EDA基于VHDL语言的出租车计价器课程设计
![EDA基于VHDL语言的出租车计价器课程设计](https://img.taocdn.com/s3/m/53b976ac3b3567ec112d8ae1.png)
哈尔滨远东理工学院EDA课程设计题目:基于VHDL语言出租车计费器摘要本文介绍了一种采纳单片FPGA芯片进行出租车计费器的设计方式,要紧论述如何利用新兴的EDA器件取代传统的电子设计方式,利用FPGA的可编程性,简练而又多变的设计方式,缩短了研发周期,同时使出租车计费器体积更小功能更壮大。
本设计实现了出租车计费器所需的一些大体功能,计费包括起步价、行车里程计费、等待时刻计费,同时考虑到出租车行业的一些特殊性,更注重了把一些新的思路加入到设计中。
要紧包括采纳了FPGA芯片,利用VHDL语言进行编程,使其具有了更强的移植性,加倍利于产品升级。
关键词:VHDL 计费器FPGAAbstractThis paper describes the use of a single chip FPGA for the design of accounting-fee machine, mainly on how to use the emerging EDA electronic devices designed to replace traditional methods, using the programmable FPGA, concise and changing the design Ways to shorten the development cycle, so that taxi accounting-fee machine in a smaller more powerful. The design and implementation of the taxi accounting-fee machine for some basic functions, including billing starting price, driving metered, the waiting time billing, taking into account the special nature of some of the taxi industry, to pay more attention to a number of new Ideas into the design. Mainly including the use of the FPGA chip, the use of VHDL programming, so as to make it a stronger transplanted, and more conducive to product upgrades.Key words: VHDL,accounting-fee machine,FPGA前言 (1)第一部份设计要求 (2)一、设计目的 (2)二、系统要求 (2)三、功能描述 (2)四、补充说明 (2)第二部份系统设计方案 (3)第三部份要紧模块设计 (5)一、计程计费模块 (5)二、显示模块 (5)三、操纵模块 (6)第四部份仿真结果与分析 (7)一、计程计费模块仿真 (7)二、整体仿真 (7)第五部份硬件调试 (8)一、引脚锁定 (8)二、硬件验证情形 (8)总结 (10)致谢 (11)参考文献 (12)附录A 电路图 (13)一、电路图 (13)二、PCB图 (14)三、3D仿真图 (14)附录B 程序代码 (17)一、top顶层文件 (17)二、taxi操纵模块 (18)二、display显示模块 (20)随着出租车行业的进展,对出租车计费器的要求也愈来愈高。
(整理)VHDL——出租车计价器.
![(整理)VHDL——出租车计价器.](https://img.taocdn.com/s3/m/4bf3cbe076a20029bd642da1.png)
该系统利用VHDL语言、PLD设计出租车计费系统,以MAX+PLUSⅡ软件作为开发平台,设计了出租车计费器系统程序并进行了程序仿真。
使其实现计费以及预置和模拟汽车启动、停止、暂停等功能,并动态扫描显示车费数目。
关键词: 出租车计费器;计数器;VHDL语言;MAX+PLUSⅡ;一、实验任务及要求1.能实现计费功能,计费标准为:按行驶里程收费,起步费为10.00元,并在车行3公里后再按2元/公里,当计费器计费达到或超过一定收费(如20元)时,每公里加收50%的车费,车停止不计费。
2. 实现预置功能:能预置起步费、每公里收费、车行加费里程。
3. 实现模拟功能:能模拟汽车启动、停止、暂停、车速等状态。
4. 设计动态扫描电路:将车费显示出来,有两位小数。
5. 用VHDL语言设计符合上述功能要求的出租车计费器,并用层次化设计方法设计该电路。
6. 各计数器的计数状态用功能仿真的方法验证,并通过有关波形确认电路设计是否正确。
7. 完成电路全部设计后,通过系统实验箱下载验证设计的正确性。
二、实验原理系统顶层框图:计费器按里程收费,每100米开始一次计费。
各模块功能如下:(1) 车速控制模块当起停键为启动状态时(高电平),模块根据车速选择和基本车速发出响应频率的脉冲驱动计费器和里程显示模块进行计数;当处于停止状态时暂停发出脉冲,此时计费器和里程显示模块相应的停止计数。
(2) 里程动态显示模块其包括计数车速控制模块发出的脉冲以及将计数显示动态显示出来,每来一个脉冲里程值加0.1(控制器每发一个脉冲代表运行了0.1公里)。
(3) 计费动态显示模块其初值为10元,当里程超过3公里后才接受计数车速控制模块发出的脉冲的驱动,并且计数显示动态显示出来,每来一个脉冲(代表运行了0.5公里)其数值加1元,当收费超过20时数值加1.5元。
三、出租车计费系统的实现3.1系统的总体模块图:3.2系统各功能模块的实现:(1)模块MS的实现模块MS,输入端口CK0、CK1为两个不同的时钟信号,来模拟汽车的加速和匀速,JS加速按键。
用VHDL语言开发的出租车计费系统设计
![用VHDL语言开发的出租车计费系统设计](https://img.taocdn.com/s3/m/ff84b0a96bec0975f565e206.png)
用VHDL语言开发的出租车计费系统设计
0 引言
出租车计价系统较多的是利用单片机进行控制,但较易被私自改装,且
故障率相对较高,且不易升级;而FPGA具有高密度、可编程及有强大的软件支
持等特点,所以设计的产品具有功能强、可靠性高、易于修改等特点。
本文正是基于FPGA,设计了一种出租车的计费系统,它可以直观地显
示出租车行驶的里程和乘客应付的费用。
1 系统功能设计
所设计的计价器的计费标准为:车在行驶3 km以内,只收起步价9.0元;车行驶超过3 km后,按每公里2元计费。
行驶路程达到或超过9 km后,车费按
每公里3.0元开始计费。
车遇红灯或中途暂停时,每3分钟计0.5元。
若停止(rst)则车费清零,等待下一次计费的开始。
要求能够显示里程数和乘客应付的
费用,其中里程数精确到0.01 km,乘客应付的费用精确到0.1元,显示范围为:里程为0~99.99公里,费用为0~999.9元。
2 系统设计方案
基于FPGA的出租车计费系统的组成如3 各模块设计
设计FPGA控制部分,包括控制计价模块,BCD转换模块,动态扫描译
码模块以及分频模块。
采用混合设计的方法,各子部分用VHDL编程,顶层部
分用原理3.1 控制计价模块(jijia)
控制计价模块由里程计费模块、等待计费模块、总价模块组成。
里程计费模块,主要对传感器公里脉冲信号pulse计数(20m一个脉冲),
计算出租车本次交易行驶的路程以及里程费用。
每数到50个pulse为1 km,总。
出租车自动计费器VHDL程序报告
![出租车自动计费器VHDL程序报告](https://img.taocdn.com/s3/m/ede1105a71fe910ef02df867.png)
出租车自动计费器VHDL程序报告EDA 课程设计课程 ____________题目 ____________学院 ____________专业班级学生姓名学生学号指导教师****年**月**日3、 用加法器将几项收费相加,P=P1+P2+P34、 P1为起价,P2为行车里程计费,P3为等候时间计费,用四个数码管表示总的计费结果。
四、系统设计原理及过程1、 基本原理本次设计首先在Quartus Ⅱ环境中对出租车自动计费器的各个部分利用VHDL 这一硬件描述语言予以设计,生成模块。
而整个设计的核心部分就在里程、计时、计费处理模块。
里程、计时模块完成行驶距离和等待时间的处理以及起步距离之后和等待时间的计费脉冲的产生。
计费处理模块完成起步价计费、在计费脉冲来临之际累加计费的功能。
随后运用Quartus Ⅱ中的仿真功能对其予以仿真,从仿真的结果中分析程序的正确性。
待所有模块的功能正确之后,运用原理图搭建电路并进行整体仿真直至达到最初的设计要求,最后再在实验箱上综合下载检验设计的正确与否。
2、 系统框图根据设计要求,电路具有计时、计程、计费功能,用数码管显示行驶公里数、等待时间、收费金额,行车里程和等待时间的处理电路将汽车行驶的里程数、转换成与之成正比的计费脉冲,然后由计费电路转换成收费金额,实验中以一个脉冲模拟汽车前进十米,则每100个脉冲表示1公里,3公里以后每公里产生一个计费脉冲,一个1HZ 的脉冲用来表示等待时间,60个脉冲代表1分钟,5分钟即300个脉冲产生一个等待计费脉冲,然后用计费电路对计费脉冲进行计费。
实验箱中只有一个48MHZ 的时钟,所以需要分频之后再送给其他模块,最后将等待时间、行驶里程、计费金额经过译码电路送到数码管显示。
其设计框图如图1所示:48MHZ行驶、分八分数据计译码显图1整体系统框图3、 电路及模块分析 系统总体设计电路如图2:VCCCLKINPUT VCC START INPUT VCC WR INPUT VCCRSTINPUT led7s[7..0]OUTPUT B[7..0]OUTPUT CLK OUTY[2..0]CNT8insta[3..0]POINTled7s[7..0]decl7s inst1P0[3..0]P1[3..0]P2[3..0]K0[3..0]K1[3..0]K2[3..0]M0[3..0]M1[3..0]S[2..0]D[3..0]B[7..0]POINTMAX81inst3clkFoutpulse inst4clk Foutpulse10inst5clkFoutpulsesp inst6B START RST P0[3..0]P1[3..0]P2[3..0]JIN inst7CLK0CLK1START WR RSTB1B2KM0[3..0]KM1[3..0]KM2[3..0]MIN1[3..0]MIN0[3..0]JIFEI inst2OR2inst8图2 出租车自动计费器顶层电路原理图1)行驶里程、等待时间处理模块本模块是系统的核心模块之一,能够对外部的行驶距离脉冲、等待时间脉冲进行计数。
出租车计费器VHDL语言
![出租车计费器VHDL语言](https://img.taocdn.com/s3/m/5ab83e31783e0912a2162ae3.png)
《数字逻辑电路》课程设计——出租车计费器的设计计算机学院软件工程1401赵雷3140608027出租车计费器的设计一、系统设计任务及要求(1)能实现计费功能,计费标准为:按行驶里程收费,起步价为7.00元,并在车行3千米后再按2元/千米,当总费用达到或超过40元时,每千米收费4元,客户端需要停车等待时按时间收费,计费单价每20秒1元。
(2)设计动态扫描电路:以十进制显示出租车行驶的里程与车费,在数码管上显示(前四个显示里程,后三个显示车费)。
(3)用VHDL语言设计符合上述功能要求的出租车计费器,并用层次化设计方法设计该电路。
(4)完成电路全部设计后,通过系统试验箱下载验证设计的正确性。
二、系统设计方案根据系统设计设计要求不难得知,整个出租车计费系统按功能主要分为速度选择模块、计程模块、计时模块、计费模块4个模块。
车速控制模块计数器模块译码模块动态扫描电路模块顶层原理图1.速度模块:通过对速度信号sp的判断,决定行使的路程,这里是通过速度信号来模拟一个变量的取值。
如kinside变量,其含义是行进100m所需的时钟周期数,然后每行进100m,则产生一个脉冲clkout来驱动计费模块。
VHDL语言:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Taxi_part1 isport(clk,reset,start,stop:in std_logic;sp :in std_logic_vector(2 downto 0);clkout :out std_logic);end Taxi_part1;architecture behavior of Taxi_part1 isbeginprocess(clk,reset,stop,start,sp)type state_type is(s0,s1);variable s_state:state_type;variable cnt:integer range 0 to 1400;variable kinside:integer range 0 to 1400;begincase sp iswhen "000"=> kinside:=0;when "001"=> kinside:=1400;when "010"=> kinside:=1200;when "011"=> kinside:=1000;when "100"=> kinside:=800;when "101"=> kinside:=600;when "110"=> kinside:=400;when "111"=> kinside:=200;end case;if(reset='1') then s_state:=s0;elsif(clk'event and clk='1') thencase s_state iswhen s0=>cnt:=0;clkout<='0';if(start='1') then s_state:=s1;else s_state:=s0;end if;when s1=>clkout<='0';if(stop='1') then s_state:=s0; --相当于无客户上车elsif(sp="000") then s_state:=s1; ---有客户上车,但车速位0,即客户刚上车还未起步elsif(cnt=kinside) then cnt:=0;clkout<='1'; s_state:=s1;else cnt:=cnt+1; s_state:=s1;end if;end case;end if;end process;end behavior;2.计程模块:由于一个clkout信号代表行进100m,故通过对clkout计数,可以获得共行进的距离kmcount。
VHDL出租车计费
![VHDL出租车计费](https://img.taocdn.com/s3/m/9cf5888f195f312b3069a546.png)
目录1 引言 (1)2 VHDL介绍 (2)2.1 硬件描述语言VHDL (2)2.2 VHDL语言的特点 (3)3 QuartusII软件简介 (5)3.1软件介绍 (5)3.2界面介绍 (5)3.2.1软件打开界面 (5)3.2.2代码输入界面 (6)3.2.3功能仿真界面 (7)3.2.4波形仿真界面 (7)4 计费器设计与仿真 (8)4.1硬件电路设计 (8)4.2软件代码设计 (8)4.2.1启动-停止功能代码 (8)4.2.2暂停功能代码 (10)4.2.3复位功能代码 (10)4.2.4数码管显示功能代码 (10)4.3系统功能仿真 (11)4.3.1波形仿真图 (11)4.3.2波形仿真结果分析 (11)5引脚锁定及下载 (12)5.1引脚锁定 (12)5.2下载 (12)5.3结果分析 (13)6设计总结 (14)参考文献 (15)附录 (16)1 引言VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Descriptiong Language,诞生于1982年。
1987年底,VHDL被美国国防部确认为标准硬件描述语言。
自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。
此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。
现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。
「基于VHDL语言的出租车计费器设计」
![「基于VHDL语言的出租车计费器设计」](https://img.taocdn.com/s3/m/7b61f560cdbff121dd36a32d7375a417876fc15a.png)
「基于VHDL语言的出租车计费器设计」出租车计费器是一种广泛应用于出租车行业的设备,用于计算车辆的费用并实时显示给乘客。
本文将基于VHDL语言设计一个简单的出租车计费器。
设计一个出租车计费器需要考虑以下几个方面:车辆里程计算、时间计费、费用显示和控制。
首先,我们将从车辆里程计算开始设计。
假设出租车的速度传感器每隔一段时间测量一次速度,我们可以通过速度传感器数据和时间信息计算车辆的里程。
这里我们可以设计一个有限状态机来记录车辆的行驶状态和位置信息,并计算里程。
可以使用计算机存储器来存储车辆位置信息,并使用计数器来记录总里程。
接下来,我们需要设计时间计费模块。
假设每分钟的计费费率为X元,我们可以使用一个计数器来记录车辆行驶的时间,并将计数器的值与X元相乘得到计费金额。
我们还可以通过设置计数器的初始值和最大值来控制计费的时间间隔和最长计费时间。
费用显示模块是出租车计费器的核心功能之一、我们可以使用七段数码管或LCD显示屏来实时显示费用信息。
设计费用显示模块需要确定费用显示的格式,例如小数点位置、位数等。
我们还可以设计一个使费用显示模块能够显示不同运行状态下的附加信息的控制模块。
最后,我们需要设计一个控制模块来实现出租车计费器的整体控制。
这个模块可以通过读取车辆速度和时间计费器的值,并将这些值传递给里程计算器和时间计费器。
此外,控制模块还可以实现一些功能,如启动和停止计费器、调整计费费率、重置里程和时间等。
综上所述,基于VHDL语言的出租车计费器设计涉及到车辆里程计算、时间计费、费用显示和控制等多个方面。
我们可以使用VHDL语言来实现这些功能模块,并通过模块化设计方法将它们组合在一起,实现一个功能完善的出租车计费器。
这个设计不仅可以提高出租车行业的计费效率,还可以为乘客提供准确的费用信息,提升用户体验。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA课程设计:出租车计费系统学生姓名:所在班级:指导老师:完成时间:一、课程设计目的1、综合运用EDA技术,独立完成一个课题的设计,考察运用所学知识,解决实际问题的能力;2、结合理论知识,考察阅读参考资料、文献、手册的能力;3、进一步熟悉EDA技术的开发流程,掌握文件编辑、编译、仿真、下载验证等环节的实现方法和应用技巧;二、课程设计要求实际中出租车的计费工作原理一般分成3个阶段:(1)车起步开始计费。
首先显示起步价(本次设计起步费为7.00元),车在行驶3 km 以内,只收起步价7.00元。
(2)车行驶超过3 km后,按每公里2.2元计费(在7.00元基础上每行驶1 km车费加2.2元),车费依次累加。
(3)行驶路程达到或超过9 km后(车费达到20元),每公里加收50%的车费,车费变成按每公里3.3元开始计费。
车暂时停止(行驶中遇红灯或中途暂时停车)不计费,车费保持不变。
若停止则车费清零,等待下一次计费的开始三、基本设计思想1、根据出租车计费原理,将出租车计费部分由5个计数器来完成分别为counterA,counterB,counterC,counterD,counterE。
①计数器A完成车费百位。
②计数器B完成车费十位和个位。
③计数器C完成车费角和分。
④计数器D完成计数到30(完成车费的起步价)。
⑤计数器E完成模拟实现车行驶100 m的功能。
2、行驶过程中车费附加50%的功能:由比较器实现。
3、车费的显示:由动态扫描电路来完成。
用专用模块来实现,完成数据的输入即动态数据的显示。
4、通过分析可以设计出系统的顶层框图如图3.1所示:图3.1 系统的顶层框图四、出租车计费系统的实现1、系统的总体框图图4.1 系统总体框图2、程序流程图3、系统各功能模块的实现(1)模块JIFEI的实现:模块JIFEI见图4.3。
输入端口START、STOP、PAUSE、JS分别为汽车起动、停止、暂停、加速按键。
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;图 4.3 模块车开始启动里程不计数里程计数里程显示计费器计数车费显示车跑完一次后车费、里程清零YESYESYESNON图4.2程序流程图entity jifei isport (clk,start,stop,pause,js:in std_logic; chefei,luc:out integer range 0 to 8000);end jifei;architecture rtl of jifei isbeginprocess(clk,start,stop,pause,js)variable a,b:std_logic;variable aa:integer range 0 to 100;variable chf,lc:integer range 0 to 8000; variable num:integer range 0 to 9;beginif(clk'event and clk='1')thenif(stop='0')thenchf:=0;num:=0;b:='1';aa:=0;lc:=0;elsif(start='0')thenb:='0';chf:=700;lc:=0;elsif(start='1' and js='1'and pause='1')then if(b='0')thennum:=num+1;end if;if(num=9)thenlc:=lc+5;num:=0;aa:=aa+5;end if;elsif(start='1'and js='0'and pause='1')thenlc:=lc+1;aa:=aa+1;end if;if(aa>=100)thena:='1';aa:=0;elsea:='0';end if;if(lc<300)thennull;elsif(chf<2000 and a='1')thenchf:=chf+220;elsif(chf>=2000 and a='1')thenchf:=chf+330;end if;end if;chefei<=chf;luc<=lc;end process;end rtl;(2)模块X的实现:模块X见图4.4。
该模块把车费和路程转化为4位十进制数,daclk的频率要比clk 快得多图4.4 模块Xlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity x isport(daclk:in std_logic;ascore,bscore:in integer range 0 to 8000;age,ashi,abai,aqian,bge,bshi,bbai,dqian:out std_logic_vector(3 downto 0)); end x ;architecture rtl of x isbeginprocess(daclk,ascore)variable comb1:integer range 0 to 8000;variable comb1a,comb1b,comb1c,comb1d:std_logic_vector(3 downto 0);beginif(daclk'event and daclk='1')thenif(comb1<ascore)thenif(comb1a=9 and comb1b=9 and comb1c=9)thencomb1a:="0000";comb1b:="0000";comb1c:="0000";comb1d:=comb1d+1;comb1:=comb1+1;elsif(comb1a=9 and comb1b=9)thencomb1a:="0000";comb1b:="0000";comb1:=comb1+1;comb1c:=comb1c+1;elsif(comb1a=9)thencomb1a:="0000";comb1b:= comb1b+1;comb1:= comb1+1;elsecomb1a:= comb1a+1;comb1:= comb1+1;end if;elseashi<= comb1b;age<= comb1a;abai<= comb1c;aqian<= comb1d;comb1:=0;comb1a:="0000";comb1b:="0000";comb1c:="0000";comb1d:="0000";end if;end if;end process;process(daclk,bscore)variable comb2:integer range 0 to 8000;variable comb2a,comb2b, comb2c,comb2d:std_logic_vector(3 downto 0); beginif(daclk'event and daclk='1')thenif(comb2<bscore)thenif(comb2a=9 and comb2b=9 and comb2c=9)thencomb2a:="0000";comb2b:="0000";comb2c:="0000";comb2d:=comb2d+1;comb2:=comb2+1;elsif(comb2a=9 and comb2b=9)thencomb2a:="0000";comb2b:="0000";comb2:= comb2+1;comb2c:= comb2c+1;elsif(comb2a=9)thencomb2a:="0000";comb2b:=comb2b+1;comb2:=comb2+1;elsecomb2a:= comb2a+1;comb2:= comb2+1;end if;elsebshi<=comb2b;bge<=comb2a;bbai<=comb2c;bqian<=comb2d;comb2:=0;comb2a:="0000";comb2b:="0000";comb2c:="0000";comb2d:="0000";end if;end if;end process;end rtl;(3)模块XXX1的实现:模块XXX1见图4.5。
经过该八进制模块将车费和路程显示出来。
图4.5 模块XXX1library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity XXX1 isport(c:in std_logic_vector(2 downto 0);dp:out std_logic;a1,a2,a3,a4,b1,b2,b3,b4:in std_logic_vector(3 downto 0); d:out std_logic_vector(3 downto 0));end XXX1;architecture rtl of xxx1 isbeginprocess(c,a1,a2,a3,a4,b1,b2,b3,b4)variable comb:std_logic_vector(2 downto 0);begincomb:=c;case comb isWhen"000"=>d<=a1;dp<='0';When"001"=>d<=a2;dp<='0';When"010"=>d<=a3;dp<='1';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';when others=>null;end case;end process;end rtl;(4)模块SE的实现:4.6模块SE见图library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity se isport(clk:in std_logic;a:out std_logic_vector(2 downto 0));end se;architecture rtl of se isbeginprocess(clk)variable b:std_logic_vector(2 downto 0); beginif(clk'event and clk='1')thenif(b="111")thenb:="000";elseb:=b+1;end if;end if;a<=b;end process;end rtl;(5)模块DI的实现:4.7模块DI见图library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity di isport(d:in std_logic_vector(3 downto 0);q:out std_logic_vector(6 downto 0));end di;architecture rtl of di isbeginprocess(d)begincase d isWhen"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";when others=>q<="1101111";end case;end process;end rtl;4、系统仿真(1)模块X的仿真结果:将车费和路程转换成4位的十进制如图4.8所示:输入端为:Daclk, ascore, bscore输出端为:Age, ashi, aqian, abai, bge, bshi, bqian, bbai;图4.8 模块X仿真波形图(2)模块JIFEI的仿真结果:该模块是模拟汽车的启动、停止、暂停、加速按键,如图4.9所示:输入端口为:stop, start, pause, js;输出端口为:clk, b;图4.9 模块JIFEI仿真波形图(3)模块XXX1的仿真结果:该模块是将车费和路程显示出来如图4.10所示输入端为:c, a1,a2,a3,a4,b1,b2,b3,b4;输出端为:dp,d;图4.10 模块XXX1仿真波形图(4)模块SE的结果验证:模块SE仿真如图4.11所示:输入端为:clk输出端为:a图4.11模块SE仿真波形图(5)模块DI的结果验证:模块DI仿真的结果如图4.12所示输入端为:d输出端为:q图4.12 模块DI仿真波形图五、结论出租车计费器系统的设计已全部完成,能按预期的效果进行模拟汽车启动、停止、暂停等功能,并设计动态扫描电路显示车费数目,由动态扫描电路来完成。