《出租车自动计费器EDA设计(共9页).doc》由会员分享,可在线阅读,更多相关《出租车自动计费器EDA设计(共9页).doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上6.7出租车自动计费器EDA设计6.7.1 设计要求设计一个出租车自动计费器,计费包括起步价、行车里程计费、等待时间计费三部分,用三位数码管显示金额,最大值为999.9元,最小计价单元为 0.1元,行程 3公里内,且等待累计时间3分钟内,起步费为8元,超过3公里,以每公里1.6元计费,等待时间单价为每分钟1元。用两位数码管显示总里程。最大为99公里,用两位数码管显示等待时间,最大值为59min。 6.7.2原理描述 根据层次化设计理论,该设计问题自顶向下可分为分频模块,控制模块 计量模块、译码和动态扫描显示模块,其系统框图如图6-63所示,各模块功能如下:图6-63出
2、租车自动计费器系统框图1分频模块分频模块对频率为240Hz的输入脉冲进行分频,得到的频率为16Hz,10Hz和1Hz的三种频率。该模块产生频率信号用于计费,每个1HZ脉冲为0.1元计费控制,10HZ信号为1元的计费控制,16Hz信号为1.6元计费控制。2 计量控制模块计量控制模块是出租车自动计费器系统的主体部分,该模块主要完成等待计时功能、计价功能、计程功能,同时产生3分种的等待计时使能控制信号en1, 行程 3公里外的使能控制信号en0。其中计价功能主要完成的任务是:行程 3公里内,且等待累计时间3分钟内,起步费为8元;3公里外以每公里1.6元计费,等待累计时间3分钟外以每分钟1元计费;计时
3、功能主要完成的任务是:计算乘客的等待累计时间,计时器的量程为59分,满量程自动归零;计程功能主要完成的任务是:计算乘客所行驶的公里数。计程器的量程为99公里,满量程自动归零。3 译码显示模块该模块经过8选1选择器将计费数据(4位BCD码)、计时数据(2位BCD码)、计程数据(2位BCD码)动态选择输出。其中计费数据jifei4 jifei1送入显示译码模块进行译码,最后送至百元、十元、元、角为单位对应的数码管上显示,最大显示为999.9元;计时数据送入显示译码模块进行译码,最后送至分为单位对应的数码管上显示,最大显示为59秒;计程数据送入显示译码模块进行译码,最后送至以公里为单位的数码管上显示
4、,最大显示为99公里。6.7.3层次化设计方案1出租车自动计费器系统的主体FPGA电路txai的VHDL设计根据6.7.2节的功能描述,该电路的核心部分就是计数分频电路,通过VHDL语言的顺序语句IF-THEN-ELSE根据一个或一组条件来选择某一特定的执行通道,生成计费数据、计时数据和里程数据。其VHDL源程序如下:LIBRARY IEEE; USE IEEE.std_logic_1164.all;USE IEEE.std_logic_unsigned.all; USE IEEE.std_logic_arith.all;ENTITY taxi isport ( clk_240 :in std
5、_logic; -频率为240Hz的时钟 start :in std_logic; -计价使能信号 stop:in std_logic; -等待信号 fin:in std_logic; -公里脉冲信号 cha3,cha2,cha1,cha0:out std_logic_vector(3 downto 0); -费用数据 km1,km0:out std_logic_vector(3 downto 0); -公里数据 min1,min0: out std_logic_vector(3 downto 0); -等待时间 end taxi;architecture behav of taxi issi
6、gnal f_10,f_16,f_1:std_logic; -频率为10Hz,16Hz,1Hz的信号signal q_10:integer range 0 to 23; -24分频器signal q_16:integer range 0 to 14; -15分频器signal q_1:integer range 0 to 239; -240分频器signal w:integer range 0 to 59; -秒计数器 signal c3,c2,c1,c0:std_logic_vector(3 downto 0); -十进费用计数器signal k1,k0:std_logic_vector(3
7、 downto 0); -公里计数器signal m1:std_logic_vector(2 downto 0); -分的十位计数器 signal m0:std_logic_vector(3 downto 0); -分的个位计数器signal en1,en0,f:std_logic; -使能信号 beginfeipin:process(clk_240,start)begin if clk_240event and clk_240=1 then if start=0 then q_10=0;q_16=0;f_10=0;f_16=0;f_1=0;f=0; else if q_10=23 then
8、q_10=0;f_10=1; -此IF语句得到频率为10Hz的信号 else q_10=q_10+1;f_10=0; end if; if q_16=14 then q_16=0;f_16=1; -此IF语句得到频率为16Hz的信号 else q_16=q_16+1;f_16=0; end if; if q_1=239 then q_1=0;f_1=1; -此IF语句得到频率为1Hz的信号 else q_1=q_1+1;f_1=0; end if; if en1=1 then f=f_10; -此IF语句得到计费脉冲f elsif en0=1 then f=f_16; else f=0; en
9、d if; end if; end if;end process;main:process(f_1)begin if f_1event and f_1=1 then if start=0 then w=0;en1=0;en0=0;m1=000;m0=0000;k1=0000;k0=0000; elsif stop=1 then if w=59 then w=0; -此IF语句完成等待计时 if m0=1001 then m0=0000; -此IF语句完成分计数 if m1=101 then m1=000; else m1=m1+1; end if; else m0then en1=1; -此I
10、F语句得到en1使能信号 else en1=0; end if; else w=w+1;en1=0; end if; elsif fin=1 then if k0=1001 then k0=0000; -此IF语句完成公里脉冲计数 if k1=1001 then k1=0000; else k1=k1+1; end if; else k0 then en0=1; -此IF语句得到en0使能信号 else en0=0; end if; else en1=0;en0=0; end if;cha3=c3;cha2=c2;cha1=c1;cha0=c0; -费用数据输出km1=k1;km0=k0;mi
11、n1=0&m1;min0=m0; -公里数据、分钟数据输出 end if ;end process main;jifei:process(f,start)begin if start=0 then c3=0000;c2=0000;c1=1000;c0=0000; elsif fevent and f=1 then if c0=1001 then c0=0000; -此IF语句完成对费用的计数 if c1=1001 then c1=0000; if c2=1001 then c2=0000; if c3=1001 then c3=0000; else c3=c3+1; end if; else
12、c2=c2+1; end if; else c1=c1+1; end if; else c0=c0+1; end if; end if;end process jifei;end behav; 该源程序包含3个进程模块。fenpin进程对频率为240Hz的输入脉冲进行分频,得到的频率为16Hz,10Hz和1Hz的三种计费频率信号,供main进程和jifei进程进行计费、计时、计程之用;main进程完成等待计时功能、计程功能,该模块将等待时间和行驾公里数变换成脉冲个数计算,同时产生3分种的等待计时使能控制信号en1, 行程 3公里外的使能控制信号en0;jifei进程将起步价8元预先固定在电路中
13、,通过对计费脉冲数的统计,计算出整个费用数据。源程序中输入信号fin是汽车传感器提供的距离脉冲信号;start为汽车计价启动信号,当star=1时,表示开始计费(高电平有效),此时将计价器计费数据初值80(即8.0元)送入,计费信号变量(cha3cha2cha1cha0=0080),里程数清零(km1km0=00),计时计数器清零(min1min0=00) ;stop为汽车停止等待信号(高电平有效),当stop=1时,表示停车等待状态,并开始等待计时计费。其部分仿真输出波形如图6-64和图6-65所示,元件符号如图6-66所示。在图6-64中,stop=0即全程无停止等待时间,因此计时显示输出
14、为00,该图中出租车总行驶5公里,等待累计时间为0分钟,总费用为11.2元;图6-65中共有3次停车等待累计时间为3分钟,出租车总行驶21公里,总费用为57.6元,仿真结果正确。图6-64出租车自动计费器系统的主体电路仿真输出波形(1)图6-65出租车自动计费器系统的主体电路仿真输出波形(2)图6-66出租车自动计费器系统的主体FPGA电路元件符号2 扫描显示电路 该模块包含8选1选择器,模8计数器,七段数码显示译码器三个子模块,其VHDL源程序和仿真输出如下:1)模8计数器se的VHDL源程序和仿真LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IE
15、EE.std_logic_unsigned.all; ENTITY se IS; port(clk:in std_logic; a:out std_logic_vector(2 downto 0);EDN se;ARCHITECTURE rt1 of se ISbegin process(clk) variable b:std_logic_vector(2 downto 0); begin if(clkevent and clk=1)then if(b=111)then b:=000; else b:=b+1; end if; end if; ad=a1; dpd=a2; dpd=a3; dp
16、d=a4; dpd=b1; dpd=b2; dpd=t1; dpd=t2; dpnull; end case; end process;end rt1;源程序中输入信号c2.0为系统选择输入,a1a2a3a4为计费数据BCD码输入,b1b2为里程数BCD码输入,t1t2为计时时间的BCD码输入,d为4位BCD码输出,dp为小数点指示信号(仅计费数据输出时有一位小数)。其仿真输出波形和元件符号如图6-68所示。 (a) (b)图6-68选择器mux8_1(a) 仿真输出波形;(b)元件符号图3)七段数码显示译码器di_LED的VHDL源程序和仿真LIBRARY IEEE;USE IEEE.std
17、_logic_1164.all;USE IEEE.std_logic_unsigned.all; ENTITY di_LED IS; port(d:in std_logic_vector(3 downto 0); q:out std_logic_vector(6 downto 0);end di_LED;architecture rt1 of di_LED isbegin process(d) begin case d is when0000=qqqqqqqqqq=; end case; end process;end rt1;源程序中输入信号d3.0为BCD码输入,q6.0为4七段译码输出(
18、高电平有效)。其仿真输出波形如图6-69(a)所示,元件符号如图6-69(b)所示: (a) (b)图6-69七段数码显示译码器di_LED (a) 仿真输出波形;(b)元件符号图6.7.4出租车自动计费器顶层电路的设计和仿真根据图6-63出租车自动计费器系统框图,出租车自动计费器顶层电路分为四个模块,它们是出租车自动计费器系统的主体FPGA电路txai模块,8选1选择器mux8_1模块,模8计数器se模块,七段数码显示译码器di_LED模块,生成动态扫描显示片选信号的3-8译器模块decode3_8,图6-70所示的是自动计费器顶层电路原理图。按已确立的层次化设计思路,在QuartusII图
19、形编缉器中分别调入前面的层次化设计方案中所设计的低层模块的元件符号txai.sym、mux8_1.sym、se.sym、di_LED.sym、并加入相应的输入输出引脚与辅助元件。而3-8译码器模块decode3_8.sym可利用宏功能向导“MegaWizard Plug-In Manager.” 定制(详细步骤参见第5章5.5节)。而后根据图6-70完成出租车自动计费器的顶层原理图输入。电路连好线,对其编译和仿真。正确编译后仿真输出波形和元件符号如图6-71所示。在图6-71(a)中,K2=0即全程无停止等待时间,因此计时显示输出为3F(00),该图中出租车总行驶3F(0)5B(2)(即2公里
20、),等待累计时间为3F (0)3F (0)(0分钟),总费用为7F.3F(8.0元),仿真结果正确。图6-70出租车自动计费器顶层电路原理图 (a) (b)图6-71出租车自动计费器顶层电路 (a) 仿真输出波形;(b)元件符号图6.7.5 硬件测试为了能对所设计的出租车自动计费器电路进行硬件测试,应将其输入输出信号锁定在开发系统的目标芯片引脚上,并重新编译, 然后对目标芯片进行编程下载,完成出租车自动计费器电路的最终开发,其硬件测试示意图如图6-72。不失一般性,本设计选用的EDA开发平台GW48电路模式为No.7,选择目标器件为EP1C6Q240C8芯片。图6-72中,clk是基准时钟,锁
21、定引脚时将clk接至clock0(接受240Hz的时钟频率);计价使能信号K1(1:开始计价、0停止计价)同键8(PIO7)相连;停车等待信号K2(1: 停车等待、0:正常行驶)接键5(PIO4);公里脉冲信号clk_R(每按一次就输出一个脉冲)接键4(PIO13); 输出se7.0 是8个数码管的位选控制信号,对应EP1C6Q240C8芯片的PIO34、PIO35、PIO36、PIO37、PIO38、PIO39、PIO40、PIO41,该信号高电平有效,由低位至高位分别接通数码管8、数码管7、数码管6、数码管5、数码管4、数码管3、数码管2、数码管1;输出dp和out6.0为8段控制信号 ,由高位至低位分别接并联数码管的输入信号p(小数点)、g、f、e、d、c、b、a,该信号将锁定对应EPIC6芯片引脚的PIO49、PIO48、PIO47、PIO46、PIO45、PIO44、PIO43、PIO42。图6-72出租车自动计费器硬件测试示意图数码管8数码管7数码管6数码管5显示行车计费数据,数码管4数码管3显示行车里程数据,数码管2数码管1显示停车等待的计时时间 专心-专注-专业