出租车自动计费器EDA设计.doc
《出租车自动计费器EDA设计.doc》由会员分享,可在线阅读,更多相关《出租车自动计费器EDA设计.doc(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date出租车自动计费器EDA设计出租车自动计费器EDA设计6.7出租车自动计费器EDA设计6.7.1 设计要求设计一个出租车自动计费器,计费包括起步价、行车里程计费、等待时间计费三部分,用三位数码管显示金额,最大值为999.9元,最小计价单元为 0.1元,行程 3公里内,且等待累计时间3分钟内,起步费为8元,超过3公里,以每公里1.6元计费,等待时间单价为每分钟1元。用两位
2、数码管显示总里程。最大为99公里,用两位数码管显示等待时间,最大值为59min。 6.7.2原理描述 根据层次化设计理论,该设计问题自顶向下可分为分频模块,控制模块 计量模块、译码和动态扫描显示模块,其系统框图如图6-63所示,各模块功能如下:图6-63出租车自动计费器系统框图1分频模块分频模块对频率为240Hz的输入脉冲进行分频,得到的频率为16Hz,10Hz和1Hz的三种频率。该模块产生频率信号用于计费,每个1HZ脉冲为0.1元计费控制,10HZ信号为1元的计费控制,16Hz信号为1.6元计费控制。2 计量控制模块计量控制模块是出租车自动计费器系统的主体部分,该模块主要完成等待计时功能、计
3、价功能、计程功能,同时产生3分种的等待计时使能控制信号en1, 行程 3公里外的使能控制信号en0。其中计价功能主要完成的任务是:行程 3公里内,且等待累计时间3分钟内,起步费为8元;3公里外以每公里1.6元计费,等待累计时间3分钟外以每分钟1元计费;计时功能主要完成的任务是:计算乘客的等待累计时间,计时器的量程为59分,满量程自动归零;计程功能主要完成的任务是:计算乘客所行驶的公里数。计程器的量程为99公里,满量程自动归零。3 译码显示模块该模块经过8选1选择器将计费数据(4位BCD码)、计时数据(2位BCD码)、计程数据(2位BCD码)动态选择输出。其中计费数据jifei4 jifei1送
4、入显示译码模块进行译码,最后送至百元、十元、元、角为单位对应的数码管上显示,最大显示为999.9元;计时数据送入显示译码模块进行译码,最后送至分为单位对应的数码管上显示,最大显示为59秒;计程数据送入显示译码模块进行译码,最后送至以公里为单位的数码管上显示,最大显示为99公里。6.7.3层次化设计方案1出租车自动计费器系统的主体FPGA电路txai的VHDL设计根据6.7.2节的功能描述,该电路的核心部分就是计数分频电路,通过VHDL语言的顺序语句IF-THEN-ELSE根据一个或一组条件来选择某一特定的执行通道,生成计费数据、计时数据和里程数据。其VHDL源程序如下:LIBRARY IEEE
5、; 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_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
6、 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分
7、频器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
8、_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;
9、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
10、 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; el
11、se 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 出租车 自动 计费 EDA 设计
限制150内