课 程 设 计
课 程 EDA技术课程设计 题 目 出租车自动计费系统
院 系 电子科学学院 电子信息工程 专业班级 学生姓名 学生学号 指导教师
2010年 3 月12日
课程设计任务书
课程 EDA技术课程设计 题目 出租车自动计费系统 专业 电子信息工程 姓名 学号 主要内容、基本要求、主要参考资料等 主要内容:
设计一个最大量程为99.99元的出租车自动计费,计费器具有行车里程计费、等候时间计费及起价三部分功能,并用数码管显示车费的数目。
基本要求:
1、设计一个出租车自动计费器,具有行车里程计费、等候时间计费、及起价三部分,用四位数码管显示总金额,最大值为99.99元;
2、行车里程单价1元/公里,等候时间单价0.5元/10分钟,起价3元(3公里起价)均能通过人工输入。 3、行车里程的计费电路将汽车行驶的里程数转换成与之成正比的脉冲数,然后由计数译码电路转换成收费金额,实验中以一个脉冲模拟汽车前进十米,则每100个脉冲表示1公里,然后用BCD码比例乘法器将里程脉冲乘以每公里单价的比例系数,比例系数可由开关预置。例如单价是1.0元/公里,则脉冲当量为0.01元/脉冲。
4、用LED显示行驶公里数,两个数码管显示收费金额。
主要参考资料:
[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005. [2] 康华光主编.电子技术基础 模拟部分. 北京:高教出版社,2006. [3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.
完成期限 2010.3.12 指导教师 专业负责人
2010年 3月8日
1
一、总体设计思想
1.基本原理
根据设计要求,系统的输入信号有:系统时钟信号CLK,计价开始信号START,等待信号STOP,里程脉冲信号FIN。系统的输出信号有:总费用数CHA0-CHA3,行驶距离(数)KM0-KM1和等待时间MIN0-MIN1等。 2.设计框图
系统组成方框图如下所示,它由外部输入模块、控制模块和显示模块三部分组成。控制模块是整个系统的核心,它由分频模块、控制模块、计量模块和译码显示模块构成。 时钟信号 等待信号 分频器 计费 显 控 公里脉冲 制 器 计程 计费|复位 计时 示
系统框图
二、设计步骤和调试过程 1、总体设计电路
(1)分频模块
分频模块是对系统时钟频率进行分频,分别得到16HZ,15HZ和1HZ三种频率。
(2)控制模块
2
计价器控制模块主要完成对计价器状态的控制。 (3)计量模块
计量模块完成计价、计时和计程功能。
计价部分:行程在3KM内,起步费为3元;3KM外以每公里按1元计费,等待累计时间每10MIN按0.5元计费。
计时部分:计算乘客的等待累计时间。计时器的量程为59MIN,满量程后自动归零。
计程部分:计算乘客所行驶的公里数。计程器的量程为99KM,满量程后自动归零。
(4)译码显示模块
译码显示模块完成计价、计时和计程数据显示。计费数据送入译码显示模块进行译码,最后送至以十元、元、角为单位对应的数码管上显示。计程数据送入译码显示模块进行译码,最后送至以KM为单位的数码管上显示。
2、模块设计和相应模块程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CHUZUCHE IS
PORT( CLK: IN STD_LOGIC; --系统时钟 START: IN STD_LOGIC; --计费开始信号 STOP: IN STD_LOGIC; --行驶中,中途等待停止信号
FIN: IN STD_LOGIC; --1KM脉冲信号
3
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 ENTITY CHUZUCHE ;
ARCHITECTURE BEHAVE OF CHUZUCHE IS SIGNAL Q_1: INTEGER RANGE 0 TO 99; 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 TEMP0,TEMP1: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL F_1: STD_LOGIC; SIGNAL EN0,EN1: STD_LOGIC; BEGIN
FEIPIN:PROCESS(CLK,START) BEGIN
IF CLK'EVENT AND CLK='1' THEN IF START='0' THEN
F_1 <='0'; Q_1 <=0; ELSE
IF Q_1<=99 THEN Q_1<=0; F_1<='1'; ELSE
Q_1<=Q_1+1; F_1<='0'; END IF; END IF; END IF; END PROCESS;
4
PROCESS(FIN) BEGIN
IF FIN'EVENT AND FIN='1' THEN IF START='0' THEN K1<=\"0000\"; K0<=\"0000\";
ELSIF STOP='0' THEN IF K0=\"1001\" THEN K0<=\"0000\"; IF K1=\"1001\" THEN K1<=\"0000\"; ELSE K1<=K1+1; END IF; ELSE K0<=K0+1; END IF; END IF; END IF; END PROCESS; PROCESS(F_1) BEGIN
IF F_1'EVENT AND F_1='1' THEN IF START='0' THEN W<=0; M1<=\"000\"; M0<=\"0000\"; ELSIF STOP='1' THEN IF W=59 THEN W<=0; IF M0=\"1001\" THEN M0<=\"0000\"; IF M1=\"0101\" THEN
5
M1<=\"0000\"; ELSE M1<=M1+1; END IF; ELSE M0<=M0+1; END IF; ELSE
W<=W+1; END IF; END IF; END IF; END PROCESS; PROCESS(CLK) BEGIN
IF CLK'EVENT AND CLK='1' THEN IF START='0' THEN EN0<='0'; EN1<='0'; ELSIF STOP='0' THEN EN1<='0';
IF K1&K0>\"00000011\" THEN EN0<='1'; ELSE EN0<='0'; END IF; ELSIF STOP='1' THEN EN0<='0';
IF M1&M0>\"0000010\" THEN EN1<='1'; ELSE EN1<='0'; END IF;
6
END IF; END IF; END PROCESS; PROCESS(CLK,START)
VARIABLE C13,C15 : INTEGER; BEGIN
IF START='0' THEN
C3<=\"0000\"; C2<=\"0000\"; C1<=\"0011\"; C0<=\"0000\"; C13:=0; C15:=0; TEMP0<=\"0000\"; TEMP1<=\"0000\"; ELSIF CLK'EVENT AND CLK='1' THEN IF(EN0='1')THEN IF(C13<13)THEN C13:=C13+1; IF(C13=1)THEN TEMP0<=K0; END IF; IF C0=\"1001\" THEN C0<=\"0000\"; 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;
7
ELSE
C0<=C0+1; END IF;
ELSIF(K0/=TEMP0)THEN C13:=0; END IF; ELSIF(EN1='1')THEN IF(C15<15)THEN C15:=C15+1; IF(C15=1)THEN TEMP1<=M0; END IF;
IF C0=\"1001\" THEN C0<=\"0000\"; 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;
ELSIF(M0/=TEMP1)THEN C15:=0; END IF;
8
END IF; END IF; END PROCESS; PROCESS(F_1) BEGIN
IF F_1'EVENT AND F_1='1'THEN IF START='0' THEN
MIN1<=\"0000\";MIN0<=\"0000\"; KM1<=\"0000\"; KM0<=\"0000\";
CHA3<=\"0000\";CHA2<=\"0000\"; CHA1<=\"0000\";CHA0 <=\"0000\"; ELSE
MIN1<='0'&M1;MIN0<=M0; KM1<=K1; KM0<=K0; CHA3<=C3;CHA2<=C2; CHA1<=C1;CHA0<=C0; END IF; END IF; END PROCESS; END BEHAVE;
3、仿真及仿真结果分析
仿真图1
9
仿真图2
图中显示为出租车总行驶里程为8KM,累计等待时间为3MIN,所以总费用为8.5元。
4、实验调试结果
为验证所设计程序是否正确,将程序下载进行硬件测试。在QuartusⅡ开发环境中进行管脚锁定,连接好数码管驱动电路,然后将目标文件下载到器件中。经过多次数据测试,显示正常,基本实现本实验的要求。
三、结论及心得体会
这次的课程设计对于我来说是毕业前的一次演练,从选题到画出流程图,再到写出程序,不停的编不停的改不停的查资料……直至最后完成,有问题大家都坐在一起讨论,一起努力,一起攻克问题。我想我们享受的就是这个过程,而不仅仅只是结果。通过这次的设计,我知道了,在任何问题面前,只要我们努力,只要我们勇敢,我想,它们都不是问题,都不是困难。
参考资料
[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005. [2] 康华光主编.电子技术基础 模拟部分. 北京:高教出版社,2006. [3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.
10
课程设计成绩评价表
课程名称 EDA技术课程设计 题目名称 出租车自动计费系统 学生姓名 序号 评价项目 工作量、工作态1 量符合教学要求,工作努力,遵守纪律,出勤率度和出勤率 高,工作作风严谨,善于与他人合作。 课程设计选题合理,计算过程简练准确,分析问2 课程设计质量 题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。 工作中有创新意识,对前人工作有一些改进或有3 4 总分 评语: 指导教师: 2010年 3 月13 日
学号 指导教师姓名 职称 满分 评分 指 标 按期圆满的完成了规定的任务,难易程度和工作20 45 创新 答辩 一定应用价值。 能正确回答指导教师所提出的问题。 5 30
因篇幅问题不能全部显示,请点此查看更多更全内容