设计一个出租车自动计费器,计费包括起步价、行车里程计费、等待时间计费三部分,用四位数码管显示金额,最大值为999.9元,最小计价单元为 0.1元,行程 3公里内,且等待累计时间3分钟内,起步费为8元,超过3公里,以每公里1.
6元计费,等待时间单价为每分钟1元。用两位数码管显示总里程,最大为99公里。用两位数码管显示等待时间,最大值为59min。
图2-1系统功能原理图。
由图2-1系统功能原理图可知:该设计问题自顶向下可分为分频模块、计量模块、计费模块、控制模块、译码和动态扫描显示模块。
2.2.1分频模块。
分频模块对频率为240hz的输入脉冲进行分频,得到的频率为16hz,10hz和1hz的三种频率。该模块产生频率信号用于计费,每个1hz脉冲为0.1元计费控制,10hz信号为1元的计费控制,16hz信号为1.
6元计费控制。
2.2.2计量控制模块。
计量控制模块是出租车自动计费器系统的主体部分,该模块主要完成等待计时功能、计价功能、计程功能,同时产生3分种的等待计时使能控制信号en1,行程 3公里外的使能控制信号en0。其中计价功能主要完成的任务是:行程 3公里内,且等待累计时间3分钟内,起步费为8元;3公里外以每公里1.
6元计费,等待累计时间3分钟外以每分钟1元计费;计时功能主要完成的任务是:计算乘客的等待累计时间,计时器的量程为59分,满量程自动归零;计程功能主要完成的任务是:计算乘客所行驶的公里数。
计程器的量程为99公里,满量程自动归零。
2.2.3译码显示模块。
该模块经过8选1选择器将计费数据(4位bcd码)、计时数据(2位bcd码)、计程数据(2位bcd码)动态选择输出。其中计费数据送入显示译码模块进行译码,最后送至百元、十元、元、角为单位对应的数码管上显示,最大显示为999.9元;计时数据送入显示译码模块进行译码,最后送至分为单位对应的数码管上显示,最大显示为59秒;计程数据送入显示译码模块进行译码,最后送至以公里为单位的数码管上显示,最大显示为99公里。
由图3-1分频模块封装图可知:系统是对240hz时钟脉冲信号进行分频,分别得到16hz、10hz、1hz三种频率;本设计中通过三种不同频率的脉冲信号实现在计程车在行驶、等待两种情况下的不同计费。
图3-1分频模块封装图。
由图3-2可知:本模块实现对于出租车在行驶和等待过程中的继承和计时功能;当行驶里程大于3km时,本模块中en0信号变为1;当等待时间大于3min时,本模块中en1信号变为1;clk1每来一个上升沿,计量模块实现一次计数,里程数或者等待时间加1。
图3-2计量模块封装图。
由图3-3可知:输入一个脉冲信号,同时当start为时开始计价;c0、c1、c2、c3为**的显示信号。
图3-3计费模块封装图。
由图3-4可知:本模块主要是通过两个不同的输入使能信号,对两个输入脉冲进行选择输出,使能信号是计量模块中的输出,两个输入脉冲是分频模块输出的16hz、10hz的脉冲。
图3-4控制模块封装图。
由图3-5可知:该模块首先以一个case语句进行通道的选择,接着有以一个case语句对所选的通道进行动态扫描,由于时间极小,因此我们肉眼感觉数字是同时显示出来的。
图3-5译码模块封装图。
图3-6总体功能原理图。
图4-1分频模块**波形图。
由图4-1可知:当输入240hz的clk脉冲信号时,clk每出现240个脉冲时q1、q10、q16分别出现个,相当于计费0.01元、1元、1.6元,帮助计费。
图4-2计量模块波形**图。
由图4-2可知:由于讲输入参数fin一直设为高,将stop一直设为低。所以k1、k0记录路程的输出量有值,而m1、m0记录等待时间的输出量没有值。
图4-3计费模块波形**图。
由图4-3可知:输入一个脉冲信号,同时当start为高时开始计价;c0、c1、c2、c3为**的显示信号,逢9后一位将进1。
图4-4控制模块波形**图。
由图4-4可知:本模块主要是通过两个不同的输入使能信号,对两个输入脉冲进行选择输出,使能信号是计量模块中的输出,两个输入脉冲是分频模块输出的16hz、10hz的脉冲。
图4-5译码模块波形**图。
由图4-5可知:首先以一个case语句进行通道的选择,以8为二进制表示。当某一位为1时,表示选择该通道接着。
接着又以一个case语句对所选的通道进行动态扫描,由于时间极小,因此在我们用肉眼感觉是同时显示出来的。
图4-6总模块的波形**图。
library ieee;
use use
use entity fp is
port ( clk :in std_logic
q16: out std_logic; -频率为16的时钟
q10: out std_logic; -频率为10的时钟
q1: out std_logic); 频率为1的时钟
end fp;
architecture qq of fp is
beginprocess(clk)
variable cout16:integer range 0 to 14
variable cout10:integer range 0 to 23
variable cout1:integer range 0 to 239
beginif clk'event and clk='1'
then if cout16=14240hz分频为16hz
then cout16:=0;q16<='1';
else cout16:=cout16+1;q16<='0';
end if;
if cout10=23240hz分频为10hz
then cout10:=0;q10<='1';
else cout10:=cout10+1;q10<='0';
end if;
if cout1=239240hz分频为1hz
then cout16:=0;q1<='1';
else cout1:=cout1+1;q1<='0';
end if;
end if;
end process;
end qq;
library ieee;
use use
use entity jiliang is
port( s: in std_logic; -计量开始信号。
fin: in std_logic; -计量路程的信号。
stop: in std_logic; -等待信号。
clk1: in std_logic计量驱动信号。
en1,en0:buffer std_logic计量控制信号。
k1,k0: buffer std_logic_vector(3 downto 0); 路程的计量
m1,m0: buffer std_logic_vector(3 downto 0));时间的计量。
end jiliang;
architecture rt2 of jiliang is
signal w:integer range 0 to 59;
beginprocess(clk1)
beginif clk1'event and clk1='1' then --驱动信号发挥作用。
if s='0' then
w<=0;en1<='0';en0<='0';m1<="0000";m0<="0000";-初始化值。
k1<="0000";k0<="0000";
elsif stop='1' then等待信号为高,时间控制信号开始计时。
if w=59 then w<=0
if m0="1001" then m0<="0000
if m1="0101" then m1<="0000";
else m1<=m1+1;
end if;
else m0<=m0+1;
end if
if m1&m0>"00000010"then en1<='1'; 当时间大于3min时使能信号。
en1开始使能
else en1<='0
end if;
else w<=w+1;en1<='0';
end if;
elsif fin='1' then
EDA课程设计报告
eda 课程设计报告。时间 2014年12月21日 学院自动化。专业班级自1204 姓名。学号。指导教师王丽君老师 成绩。2014年 12月。目录。卷烟机烟支漏气跟踪自检装置设计 1 一 设计背景及设计目的 3 1.1设计背景 3 1.2设计目的 3 二 设计原理 3 三 设计步骤 5 3.1模块分...
EDA课程设计报告
课程名称eda技术。设计项目多功能数字钟。系 部 班级姓名学号 指导老师日期2010 06 09 电子系电子仪器仪表与维修仪表z082王叁少安老师。1 数字钟的设计要求。多功能数字钟具有计时功能和时钟的校时基本功能。计时功能采用24小时计时,显示时,分,秒。采用时校时,对于分钟和秒模块采用60进制实...
EDA课程设计报告
课程设计报告。课程。题目。院系。年级专业。班级学号。学生姓名。指导教师。设计时间。摘要。交通灯信号控制器通常要实现自动控制和手动控制其红绿灯的变化,基于fpga设计的交通灯信号控制器电路简单 可靠性好。本设计可控制2个路口的红 黄 绿三盏灯 让其按特定的规律进行变化。利用quartus 对设计结果进...