




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
出租车计费器原理出租车计费器基于以下原理:一个计数器对车轮传感器送来的脉冲信号进行计数(每转一圈送一个脉冲)。这样根据不同车轮直径就可以得到在一定时间内的行驶路程, 最终一个相应的脉冲信号传给计费系统,计费系统根据该信号判别行驶状态,如过慢则认为等待等,根据不同的预设条件,计算相应费用。内容1、用VHDL语言设计一个出租车计费器;包含以下功能:计费及显示里程:五位数字,单位为km,精确到0.1km等候时间:五位数字显示分钟和秒,显示方式为xxxxx,速度小于12km/h时为等候,等候大于一小时,不显示,但进行统计计算。行驶里程费用:起步价10元,6公里内,之后超过一公里有相应价格,不同时段单价不同。显示费用,五位数字。单位为元。通过选择控制,可以显示等待时间,等待费用,行驶里程,行时费用,以及总费用。原理框图引脚分配情况CLKP25DATAOUT12AE20SELECT0A21DATAOUT11AF20SELECT1 B21DATAOUT10AC20SELECT2B22DATAOUT9AB20STARTF6DATAOUT8AE21SDBZY11DATAOUT7AF21WCLKAA10DATAOUT6U18DATAOUT19AB18DATAOUT5U17DATAOUT18V17DATAOUT4W19DATAOUT17W17DATAOUT3V18DATAOUT16AA18DATAOUT2AE22DATAOUT15AA17DATAOUT1AF22DATAOUT14AC19DATAOUT0AD21DATAOUT13AD19波形仿真1等待判别模块Start0时,随着时钟CLK1HZ的变化,每60个周期T60S出现一个跳变,这期间wclk小于20时,等待标志位DDBZ为高电平。正确。2等待计时模块的仿真在start1时,所有数据清零。Start0时,随着时钟CLK1HZ的变化,等待时间ddsj的数据相应依次增加(秒个位0000-0001-0010-0011)。正确。3总模块在start1时,所有数据清零。Start0时,随着时钟CLK1HZ的变化,CLK1HZ 60 个周期内,wclk大于20则等待时间ddsj为0,等待费用DDFY为0,行驶里程逐步变化,里程费用LCFY刚开始保持不变,因为小于起步里程,费用为起步价。行驶里程逐步变化到大于起步里程,里程费用LCFY开始增加。CLK1HZ 60 个周期内,wclk小于20则等待时间ddsj的数据相应依次增加,等待费用DDFY开始计费。当start1时,所有数据重新清零。正确。下图为方便观察,其中变化明显部分给出特写,不再赘述。VHDL源程序代码-clkgen.vhdlibrary IEEE;- 1HZuse IEEE.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clkgen is port ( CLK : in std_logic; CLK1HZ: out std_logic );end entity;architecture clk_arch of clkgen is signal COUNT : integer range 0 to 50000000; -50MHZ -1hzbegin - 50M/1=50000000 PROCESS(CLK) BEGIN if clkevent and clk=1 then IF COUNT= 50000000 then COUNT=0; ELSE COUNT=COUNT+1; END IF; END IF; END PROCESS;PROCESS(COUNT) BEGIN IF COUNT= 5000000 THEN - 1HZ CLK1HZ=1; ELSE CLK1HZ=0; END IF;END PROCESS;end architecture;-等待判别-DDPB.VHDLibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;USE IEEE.STD_LOGIC_ARITH.ALL;entity DDPB isport ( WCLK,START:in std_logic; CLK1HZ:IN STD_LOGIC; DDBZ:OUT STD_LOGIC:=0 );end;architecture behv of DDPB is SIGNAL T60S: STD_LOGIC; SIGNAL wclkc: STD_LOGIC_VECTOR(7 DOWNTO 0); -脉冲计数信号,记录车轮传感器传来的数字,在60秒内BEGIN-产生60s周期性调变信号PROCESS(CLK1HZ,START)VARIABLE CNT60:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINif start=1 then CNT60:=00000000;t60s=0;ELSIF clk1hzevent and clk1hz=1 then IF CNT60=00111100 then -60 T60S=1; CNT60:=00000000; ELSE CNT60:=CNT60+1;T60S=0; END IF; END IF; END PROCESS;-每分钟行驶距离计算进程PROCESS(WCLK,START,T60S) BEGINif start=1 then WCLKc=00000000;ELSIF WCLKevent and WCLK=1 then IF T60S=1 then - 60 s? WCLKc=00000000; ELSE WCLKc=WCLKc+1; - -计算距离,单位为10m END IF; END IF; END PROCESS;-等待标志判别进程PROCESS(WCLK,START,T60S) BEGINIF t60sevent and t60s=1 then IF WCLKc=00010100 then- - WCLKc=20十米,12km/h,比这个速度小 DDBZ=1; ELSE DDBZ=0; END IF; END IF; END PROCESS; END BEHV;-实验十四 出租车计费器-里程计算模块- LCJS.VHDlibrary IEEE;use IEEE.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity LCJS isGENERIC(-0:INTEGER:=160 ; - 06:00-22:00单价 -1:INTEGER:=180; - 其它时间 qibu:INTEGER:=60 - 起步公里数,6公里内为固定价格 -jg:INTEGER:=1000 -起步价格,6公里内为10元 ); port ( START,DDBZ,WCLK: in std_logic; XSLC : out std_logic_vector(15 downto 0); LCBZ,jfbz : out std_logic );end entity;architecture arch of LCJS is signal bms : std_logic_vector(15 downto 0); -百米数signal bms1:integer range 0 to 99999;signal jfbz1:std_logic; begin PROCESS(start,wclk)variable sms :std_logic_vector(7 downto 0); - 十米数 BEGINif start=1 then -new cycle,not wait,running sms:=00000000; bms=0000000000000000; - 百米数 lcbz=0;elsif wclkevent and wclk=1 then if ddbz=0 then - 行驶中 if sms=00001010 then -10次计数,100m sms:=00000000; bms=qibu then -6km大于起步里程, 60 00m lcbz=1; end if ; else sms:=sms+1; end if; end if; end if;end process;-里程计算结果输出 xslc=bms;- 里程计算结果转换BMS1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1jfbz1=0;end case;end process;-计费标志去毛刺 process(wclk,jfbz1)begin if wclkevent and wclk=1 then jfbz=jfbz1;end if ;end process;end arch;-实验十四 出租车计费器-里程计费模块- LCJF.VHDlibrary IEEE;use IEEE.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity LCJF isGENERIC(SD0:INTEGER:=160; - 06:00-22:00单价,1.6元 SD1:INTEGER:=180; - 其它时间1.8元 qibu:INTEGER:=60; - 起步公里数,6公里内为固定价格 qbjg:INTEGER:=1000 -起步价格,6公里内为10元 ); port ( START,DDBZ: in std_logic; -开始,等待标志 LCBZ,jfbz,SDBZ: in std_logic; - 里程,计费,时段标志 LCFY : out std_logic_vector(15 downto 0) - 行驶产生的费用 );end entity;architecture arch of LCJF is signal LCFY1: std_logic_vector(15 downto 0); -里程费用缓存 begin PROCESS(start,LCBZ,jfbz,SDBZ) BEGINif start=1 then -new cycle,not wait,running LCFY1=0000000000000000; -CLEAR OLD VALUES elsif JFBZevent and JFBZ=1 then - 计费了 if ddbz=0 then - 运行中 if LCBZ=0 then -6KM 以内,起步以内 LCFY1=0000000000000000; elsif LCBZ=1 then -6KM 以上,超过起步 if SDBZ=0 then -时段0 LCFY1=LCFY1+SD0; - 相应费用 elsif SDBZ=1 then -时段1 LCFY1=LCFY1+SD1; end if; end if; end if;end if;end process;lcfy=lcfy1+qbjg;- 此处费用为:没有超过6千米时为10元,超过了为(10超过的里程时段单价 end arch;-实验十四 出租车计费器-等待计时模块- DDJS.VHDLibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;USE IEEE.STD_LOGIC_ARITH.ALL;entity ddjs isport ( DDBZ,START:in std_logic; -等待标志 ,开始 CLK1HZ:IN STD_LOGIC; - 时钟 DDSJ:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);- 等待时间 XDBZ:OUT STD_LOGIC - 标志 );end;architecture behv of ddjs is SIGNAL XIDENG: STD_LOGIC; SIGNAL MS,MG,FS,FG:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN-产生60s周期性调变信号PROCESS(CLK1HZ,START,DDBZ) BEGINif 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; -6进制计数秒数十位计算 IF MG=9 then MG=0000; -十进制计数分数个位计算 IF MS=5 then MS=0000; -6进制计数分数十位计算 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 behv;-实验十四 出租车计费器-等待计费模块- LCJF.VHDlibrary IEEE;use IEEE.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity DDJF is- 每分钟等待费用定义 ,单位为分GENERIC(DD0:INTEGER:=20; - 一小时以内20分每分钟,5分钟一元 DD1:INTEGER:=33 - 一小时以上33分每分钟,每小时20元 - qibu:INTEGER:=60; - 起步公里数,8公里内为固定价格 - qbjg:INTEGER:=1000 -起步价格,8公里内为10元 ); port ( START,DDBZ,XDBZ,CLK1HZ: in std_logic; -开始,等待标志 DDFY : out std_logic_vector(15 downto 0) -等待费用 );end entity;architecture arch of DDJF is signal DDFY1 : std_logic_vector(15 downto 0); -里程费用缓存SIGNAL T60S: STD_LOGIC;SIGNAL CNT60:STD_LOGIC_VECTOR(7 DOWNTO 0); begin -产生60s周期性调变信号PROCESS(CLK1HZ) BEGINIF clk1hzevent and clk1hz=1 then IF CNT60=60 then CNT60=00000000;T60S=1; ELSE CNT60=CNT60+1;T60S=0; END IF; END IF; END PROCESS; -等待费用计算进程PROCESS(DDBZ,XDBZ,T60S,START) BEGINif start=1 then -new cycle,not wait,running DDFY1=0000000000000000; -CLEAR OLD VALUES elsif T60Sevent and T60S=1 then - 够60秒 if ddbz=1 then - 等待 if xdbz=0 then -1小时以内 DDFY1=DDFY1+DD0; - 相应费用 elsif XDBZ=1 then -1小时以内以上 DDFY1=DDFY1+DD1; end if; end if; end if;end process;ddfy=ddfy1; end arch;-实验十四 出租车计费器-输出控制模块,带有总费用计算及输出- SCKZ.VHDlibrary IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; use IEEE.NUMERIC_STD.ALL;use ieee.std_logic_unsigned.all;-use ieee.std_logic_arith.all;entity SCKZ is port ( SEL : in std_logic_vector(2 downto 0); -选择显示控制信号 DDSJ : in std_logic_vector(15 downto 0); -等待时间 DDFY : in std_logic_vector(15 downto 0); -等待费用 XSLC : in std_logic_vector(15 downto 0); -行驶里程,百米为单位 LCFY : in std_logic_vector(15 downto 0); -行驶产生的费用 BCDCode : out std_logic_vector(19 downto 0) -输出显示, 已转换成BCD码 );end entity;architecture arch of SCKZ is signal ZFY : std_logic_vector(15 downto 0); -总费用 signal i_data :std_logic_vector(15 downto 0);- 输出数据缓存 signal ww,qw,bw,shw,gw:std_logic_vector(3 downto 0);- begin -process(se) ZFY=LCFY+DDFY; -计算总费用 I_DATA=DDSJ WHEN SEL=000 ELSE DDFY WHEN SEL=001 ELSE XSLC WHEN SEL=010 ELSE LCFY
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于大数据分析的多媒体教室设备使用效率提升
- 基于OBE模式的虚拟仿真教学资源建设与管理
- 个性化学习与多元化培训模式的融合策略
- PBL方法对中职生心理问题干预效果的研究
- 《三颗心》课件教学课件
- 绿化工申请报告范文(3篇)
- 物业消杀合同(标准版)
- Dihydrocarveol-生命科学试剂-MCE
- 临边作业安全培训
- 人员灼伤(热冷)应急预案
- 安全员a证考试试题库及答案
- 2025年护士资格证真题附答案详解
- 心电图课件教学
- 商业航天行业深度报告:政策技术需求共振商业航天赛道加速
- 新员工网络安全知识培训课件
- 《泌尿系统感染:2025EAU指南》解读
- 后勤人员消防知识培训课件
- 2025年高等教育法学类自考-00859警察组织行为学历年参考题库含答案解析(5套典型考题)
- 《无机化学》第六版 课件 第5章 原子结构与元素周期律
- 2025年大队委选拔笔试题目及答案
- 美的面包机使用说明书
评论
0/150
提交评论