EDA设计_出租车自动计费系统.doc
课 程 设 计课 程 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.基本原理 根据设计要求,系统的输入信号有:系统时钟信号CLK,计价开始信号START,等待信号STOP,里程脉冲信号FIN。系统的输出信号有:总费用数CHA0-CHA3,行驶距离(数)KM0-KM1和等待时间MIN0-MIN1等。2.设计框图系统组成方框图如下所示,它由外部输入模块、控制模块和显示模块三部分组成。控制模块是整个系统的核心,它由分频模块、控制模块、计量模块和译码显示模块构成。时钟信号等待信号公里脉冲计费|复位分频器控制器计费计时计程显示系统框图二、设计步骤和调试过程1、总体设计电路 (1)分频模块 分频模块是对系统时钟频率进行分频,分别得到16HZ,15HZ和1HZ三种频率。 (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 ISPORT( CLK: IN STD_LOGIC; -系统时钟 START: IN STD_LOGIC; -计费开始信号 STOP: IN STD_LOGIC; -行驶中,中途等待停止信号 FIN: IN STD_LOGIC; -1KM脉冲信号 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;BEGINFEIPIN: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;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 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>"" THEN EN0<='1' ELSE EN0<='0' END IF; ELSIF STOP='1' THEN EN0<='0' IF M1&M0>"" THEN EN1<='1' ELSE EN1<='0' END IF; 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; ELSE C0<=C0+1; END IF; ELSIF(K0/=TEMP0)THEN C13:=0; END IF; ELSIF(EN1='1')THEN IF(C15<15)THENC15:=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; 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仿真图2 图中显示为出租车总行驶里程为8KM,累计等待时间为3MIN,所以总费用为8.5元。4、实验调试结果 为验证所设计程序是否正确,将程序下载进行硬件测试。在Quartus开发环境中进行管脚锁定,连接好数码管驱动电路,然后将目标文件下载到器件中。经过多次数据测试,显示正常,基本实现本实验的要求。三、结论及心得体会这次的课程设计对于我来说是毕业前的一次演练,从选题到画出流程图,再到写出程序,不停的编不停的改不停的查资料直至最后完成,有问题大家都坐在一起讨论,一起努力,一起攻克问题。我想我们享受的就是这个过程,而不仅仅只是结果。通过这次的设计,我知道了,在任何问题面前,只要我们努力,只要我们勇敢,我想,它们都不是问题,都不是困难。参考资料1 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.2 康华光主编.电子技术基础 模拟部分. 北京:高教出版社,2006.3 阎石主编.数字电子技术基础. 北京:高教出版社,2003.课程设计成绩评价表课程名称EDA技术课程设计题目名称出租车自动计费系统学生姓名学号指导教师姓名职称序号评价项目指 标满分评分1工作量、工作态度和出勤率按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。202课程设计质量课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。453创新工作中有创新意识,对前人工作有一些改进或有一定应用价值。54答辩能正确回答指导教师所提出的问题。30总分评语:指导教师: 2010年 3 月13 日