EDA课程设计

2018-12-05 21:26

在系统编程技术课程设计 课程名称任课教师设计题目班级 姓名 学号 日期 在系统编程技术 谭敏 出租车自动计费器 05自动化(1)班 王娜 0510203027 2008年1月1日

1

出租车自动计费器EDA设计

1、题目分析

1.1 设计要求

设计一个出租车自动计费器,计费包括起步价、行车里程计费、等待时间计费3部分;用3位数码管显示金额,最大值为999.9元,最小计价单元为0.1元,行程3公里内,且等待时间3分钟以内,起步价为8元,超过3公里,以每公里1.6元计费,等待时间单价为每分钟1元;用两位数码管显示总里程,最大为99公里,用两位数码管显示等待时间,最大值为59MIN。

1.2设计原理

根据层次化设计理论,该设计问题自顶向下可分为分频模块、控制模块、计量模块、译码和动态扫描显示模块,其系统框图如下图所示,各模块功能如下所述。 FPGA

时钟信号 分频器 计费 译码 显示 等待信号 控制器 公里脉冲 计时 计程 计费/复位 出租车自动计费器系统方框图

1.3 模块分析

(1)分频模块:

分频模块对频率为240HZ的输入脉冲进行分频,得到的频率为16HZ,10HZ,1HZ的3种频率。该模块产生频率信号用于计费,每个1HZ脉冲为0.1元计费

控制,10HZ信号为1元的计费控制,16HZ信号用于1.6元计费控制。 (2)计量模块:

计量控制模块是出租车计费器系统的主体部分,该模块主要完成等待时间功能、计价功能、计程功能,同时产生三分钟的等待计时使能控制信号EN1、行程3公里外达的使能控制信号EN0。其中计价功能主要完成的任务是:行程3公里

2

内,且等待时间3分钟以内,起步价为8元,超过3公里,以每公里1.6元计费,等待时间单价为每分钟1元;计时功能完成的任务是:计算乘客的等待时间,计时器的量程为59分钟,满量程自动归零。计程功能主要完成的任务是:计算乘客所行驶的公里数,计时器的量程为99公里,满量程自动归零。 (3)译码显示模块:

该模块经过8选1选择器将计费数据(4位BCD码)、计时数据(2位BCD码)、计程数据(2位BCD码)动态显示输出。其中计费数据JIFEI4—JIEFEI1送入显示译码模块进行译码,最后送至以百元、十元、元、角为单价对应的数码管上显示,最大显示为999.9元;计时数据送入显示译码模块进行译码,最后送至以分为单位对应的数码管上显示,最大显示为59S;计程数据送入显示译码模块进行译码,最后送入以公里为单位的数码管上显示,最大显示为99公里。

2、出租车自动计费器的层次化设计方案

根据选定的方案,以自顶向下的方法实现此方案,编写应用程序并仿真画出波形图以及原件符号图,

(1)该电路的核心部分就是计数分频电路,通过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 is

port (clk_240:in std_logic; ---频率为240hz的时钟 start: in std_logic; ---计价时能信号 stop: in std_logic; ---等待信号

fin: in std_logic; ---公里脉冲信号 char1,char2,char0,char3: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 is

signal f10,f16,f1:std_logic ; -----频率为10HZ,16HZ,1HZ的信号 signal q10:integer range 0 to 23; ----24分频器 signal q16:integer range 0 to 14; -----15分频器 signal q1:integer range 0 to 239; ------240分频器 signal w:integer range 0 to 59; -----秒计数器

signal c3,c2,c1,c0:std_logic_vector(3 downto 0); ----10进制费用计数器 signal k1,k0:std_logic_vector(3 downto 0); ----公里计数器

3

signal m1:std_logic_vector(2 downto 0); -----分的10位计数器

signal m0:std_logic_vector(3 downto 0); -----分的个计数器

signal en1,en0,f:std_logic; -----时能信号 begin

feipin:process(clk_240,start) begin

if clk_240'event and clk_240='1' then

if start ='0'then q10<=0;q16<=0;f<='0';f10<='0';f16<='0'; else

if q10=23 then q10<=0;f10<='1'; -----此IF 语句得到频率为10HZ的信号 else q10<=q10+1;f10<='0'; end if;

if q16=14 then q16<=0;f16<='1'; ----此IF 语句得到频率为16HZ的信号

else q16<=q16+1;f16<='0'; end if ;

if q1=239 then q1<=0;f1<='1'; ----此IF 语句得到频率为1HZ的信号

else q1<=q1+1;f1<='0'; end if ;

if en1='1' then f<=f10; ----此IF 语句得到计数脉冲f elsif en0='1'then f<=f16; else f<='0'; end if ; end if; end if;

end process;

main: process(f1) begin

if f1'event and f1='1'then if start ='0' then

w<=0;en1<='0';en0<='0';m1<=\elsif stop ='1'then

if w=59 then w<=0; ----此IF 语句完成等待计时 if m0=\ ----此IF 语句分计数 if m1<=\else m1<=m1 +1; end if;

else m0<=m0+1; end if ;

if m1&m0>\ ----此IF 语句得到en1使能信号

4

else en1<='0'; end if ;

else w<=w+1; en1<='0'; end if;

elsif fin='1'then

if k0=\ ----此IF 语句完成公里脉冲计数 if k1<=\

else k1<=k1 +1; end if;

else k0<=k0+1; end if ;

if k1&k0>\ ----此IF 语句得到en0使能信号 else en0<='0'; end if;

else en1<='0';en0<='0'; end if ;

char3<=c3;char2<=c2;char1<=c1;char0<=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<=\elsif f'event and f='1'then

if c0=\ ----此IF 语句完成对费用的计数 if c1=\if c2=\if c3<=\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的输入脉冲进行分

5


EDA课程设计.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第二篇 变压器运行规范

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: