资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
出租车自动计费器EDA设计出租车自动计费器EDA设计 设计要求设计一个出租车自动计费器,计费包括起步价、行车里程计费、等待时间计费三部分,用三位数码管显示金额,最大值为元,最小计价单元为 元,行程 3公里内,且等待累计时间3分钟内,起步费为8元,超过3公里,以每公里元计费,等待时间单价为每分钟1元。用两位数码管显示总里程。最大为99公里,用两位数码管显示等待时间,最大值为59min。 原理描述 根据层次化设计理论,该设计问题自顶向下可分为分频模块,控制模块 计量模块、译码和动态扫描显示模块,其系统框图如图6-63所示,各模块功能如下:图6-63出租车自动计费器系统框图1分频模块分频模块对频率为240Hz的输入脉冲进行分频,得到的频率为16Hz,10Hz和1Hz的三种频率。该模块产生频率信号用于计费,每个1HZ脉冲为元计费控制,10HZ信号为1元的计费控制,16Hz信号为元计费控制。2 计量控制模块计量控制模块是出租车自动计费器系统的主体部分,该模块主要完成等待计时功能、计价功能、计程功能,同时产生3分种的等待计时使能控制信号en1, 行程 3公里外的使能控制信号en0。其中计价功能主要完成的任务是:行程 3公里内,且等待累计时间3分钟内,起步费为8元;3公里外以每公里元计费,等待累计时间3分钟外以每分钟1元计费;计时功能主要完成的任务是:计算乘客的等待累计时间,计时器的量程为59分,满量程自动归零;计程功能主要完成的任务是:计算乘客所行驶的公里数。计程器的量程为99公里,满量程自动归零。3 译码显示模块该模块经过8选1选择器将计费数据(4位BCD码)、计时数据(2位BCD码)、计程数据(2位BCD码)动态选择输出。其中计费数据jifei4 jifei1送入显示译码模块进行译码,最后送至百元、十元、元、角为单位对应的数码管上显示,最大显示为元;计时数据送入显示译码模块进行译码,最后送至分为单位对应的数码管上显示,最大显示为59秒;计程数据送入显示译码模块进行译码,最后送至以公里为单位的数码管上显示,最大显示为99公里。层次化设计方案1出租车自动计费器系统的主体FPGA电路txai的VHDL设计根据节的功能描述,该电路的核心部分就是计数分频电路,通过VHDL语言的顺序语句IF-THEN-ELSE根据一个或一组条件来选择某一特定的执行通道,生成计费数据、计时数据和里程数据。其VHDL源程序如下:LIBRARY IEEE; USE USE taxi isport ( clk_240 :in std_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 issignal 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 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 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; end 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 m00000010then en1=1; -此IF语句得到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 k000000010 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;min1=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 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元预先固定在电路中,通过对计费脉冲数的统计,计算出整个费用数据。源程序中输入信号fin是汽车传感器提供的距离脉冲信号;start为汽车计价启动信号,当star=1时,表示开始计费(高电平有效),此时将计价器计费数据初值80(即元)送入,计费信号变量(cha3cha2cha1cha0=0080),里程数清零(km1km0=
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号