课程设计报告课程名称EDA技术课题名称出租车计费系统专业通信工程班级学号姓名指导教师2015年月日2湖南工程学院课程设计任务书课程名称EDA技术课题出租车计费系统专业班级学生姓名学号指导老师审批任务下达日期2015年月日任务完成日期2015年月日《数字系统与逻辑设计》课程设计任务书一、设计目的全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。二、设计要求1、设计正确,方案合理。2、程序精炼,结构清晰。3、设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。4、上机演示。5、有详细的文档。文档中包括设计思路、设计仿真程序、仿真结果及相应的分析与结论。三、进度安排第十七周星期二课题讲解,查阅资料星期三总体设计,详细设计星期四编程,上机调试、修改程序星期五:答辩星期六-星期天:撰写课程设计报告附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现;四、系统调试与仿真;五、总结与体会;六、附件(所有程序的原代码,要求对程序写出必要的注释);七、评分表。目录一、出租车计费系统的总体设计.........................21.1出租车计费设计................................21.2基本设计思想..................................2二、出租车计费系统的功能实现.........................32.1系统的总体框图................................32.2程序流程图....................................42.3系统各功能模块的实现...........................7三、系统调试与仿真..................................12四、总结与体会......................................17五、评分表..........................................192一、出租车计费系统的总体设计1.1出租车计费设计本系统为出租车计费系统,有计费、计里程、复位、显示等功能,当按下reset复位键(S1)后开始重新计费和计里程数(复位,计费回复为起步价,里程清空),起步价是6元/2公里,往后汽车每行使1公里计费增加1元。在2公里内,只有计公里数增加,计费不变,当超过两公里后开始跳表。公里数每增加100米,公里数自增0.1公里,公里数每增加1000米,计费自增1元。(根据生活中打的的实际情况,当路程在0-1.9公里时,计费一直显示6元,当路程跳为2公里(满两公里),计费自增1,此后每次进位计费都要自增1)1.2基本设计思想本实验要完成的任务就是设计一个简单的出租车计费器,要求起步价是3元,开行1公里,以后1元/1公里。时钟输入为1KHz的系统时钟,直流电机模块每转一圈输出一个脉冲信号给CPU,另外用按键模块S1来作为整个系统的复位按钮,每复位一次,计费器开始重头计费。直流电机模块用来模拟出租车的车轮子,每转动一圈认为是行走1米,所以每旋转1000圈,认为车子前进1公里。系统设计是需要检测电机的转动情况,每转一周,计米计数器增加1。直流电机每转一圈输出一个脉冲(pulse)信号(但由于本人使用的箱子有问题,故用clk时钟代替pulse脉冲),用按键S1来作为整个系统的复位按钮(reset),每按下复位键,计费器从头开始计费,里程数清零。脉冲pulse每转1000圈视为汽车行走了1公里,本人以0.1公里为单位进行程序编写。每当pulse上升时,进行计数信号count自增1,当count到达99时,就会在下一次判断时进入里程数和计费数的增加,公里数每增加100米,公里数自增0.1公里,在两公里以前,需要作出判断,计费应该保持6元起步价不变,当2公里以后(根据打的的实际情况,包括2公里),公里数每增加1000米(每进一位),计费自增1元。显示也是本系统的重要步骤,我通过clk时钟和信号move8控制数码管的移位,clk每上升一次,move8移动一位,再用两个case语句控制选段和输出显示。每当clk上升,控制数码管的信号就会移动一位,再通过第一个case语句锁定移动到的需要显示的数码管,然后通过第二个case语句将对应数码管上所需要显示的值(money0-3,kilometre0-3)显示在数码管上,disp7-0分别对应数码管上的小数点、gfedcba。3二、出租车计费系统的功能实现2.1系统的总体框图该系统由计费、记里程、脉冲、选段、显示几个部分组成,为了尽可能减少竞争与冒险,本人将该系统写入了一个进程中,在这一个进程中,计费和里程都由pulse脉冲来决定是否增加,显示部分则有clk上升后的不断扫描显示,系统总体框图如下:计费里程pulse脉冲显示出租车计费系统clk时钟选段42.2程序流程图1.脉冲流程图YNNYNYreset='0'?Kilometre0-3=”0000”Money0-3=”0000”pulse'eventandpulse='1'?count=count+1;count100?count=0Money0-3计费Kilometre0-3计数开始52.计费、计里程流程图YNYNNNYYYYNYNN开始kilometre09?kilometre0=kilometre0+0001;kilometre1=kilometre1;kilometre2=kilometre2;kilometre3=kilometre3;count=0;kilometre19andkilometre0=9?kilometre10orkilometre20orkilometre30?kilometre0=0000;kilometre1=kilometre1+0001;kilometre2=kilometre2;kilometre3=kilometre3;count=0;kilometre29andkilometre1=9andkilometre0=9?money0+0001ormoney1+0001ormoney2+0001ormoney3+0001kilometre0=0000;kilometre1=kilometre1+0001;kilometre2=kilometre2;kilometre3=kilometre3;count=0;kilometre39andkilometre2=9andkilometre1=9andkilometre0=9?kilometre0=0000;kilometre1=0000;kilometre2=kilometre2+0001;kilometre3=kilometre3;count=0;money0+0001ormoney1+0001ormoney2+0001ormoney3+0001kilometre0=0000;kilometre1=0000;kilometre2=0000;kilometre3=kilometre3+”0001”;count=0;money0+0001ormoney1+0001ormoney2+0001ormoney3+0001kilometre3=9andkilometre2=9andkilometre1=9andkilometre0=9?kilometre0=0000;kilometre1=0000;kilometre2=0000;kilometre3=”0000”;count=0;money0+0001ormoney1+0001ormoney2+0001ormoney3+000163.显示流程图NYYN开始clk'eventandclk='1'?move8=move8+1;casemove8iswhen000=sel=10000000;a=money0;b='0';when001=sel=01000000;a=money1;b='0';when010=sel=00100000;a=money2;b='0';when011=sel=00010000;a=money3;b='0';when100=sel=00001000;a=kilometre0;b='0';when101=sel=00000100;a=kilometre1;b='1';when110=sel=00000010;a=kilometre2;b='0';when111=sel=00000001;a=kilometre3;b='0';endcase;caseaiswhen0000=disp=10111111;when0001=disp=10110000;when0010=disp=11011011;when0011=disp=11001111;when0100=disp=11100110;when0101=disp=11101101;when0110=disp=11111101;when0111=disp=10000111;when1000=disp=11111111;when1001=disp=11101111;whenothers=null;endcase;caseaiswhen0000=disp=10111111;when0001=disp=10110000;when0010=disp=11011011;when0011=disp=11001111;when0100=disp=11100110;when0101=disp=11101101;when0110=disp=11111101;when0111=disp=10000111;when1000=disp=11111111;when1001=disp=11101111;whenothers=null;endcase;b=’1’?72.3系统各功能模块的实现libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitytaxiis--实体,设置输入、输出port(reset:instd_logic;pulse:instd_logic;--脉冲,转1圈为1米,控制计费、计里程clk:instd_logic;--时钟,控制显示sel:outstd_logic_vector(7downto0);--选择数码管disp:outstd_logic_vector(7downto0);--选择发光数字money_0:outstd_logic_vector(3downto0);--输出四位费用money_1:outstd_logic_vector(3downto0);money_2:outstd_logic_vector(3downto0);money_3:outstd_logic_vector(3downto0);kilometre_0:outstd_logic_vector(3downto0);--输出四位里程,其中一位为小数kilometre_1:outstd_logic_vector(3downto0);kilometre_2:outstd_logic_vector(