课程设计课程名称嵌入式系统课程设计课题名称基于CPLD的出租车计费器专业电子信息工程班级1201学号19姓名许振跃指导老师林愿2015年9月16日等级:目录1、课程设计任务要求..................................................................................................11.1EDA发展前景............................................................................................................11.2任务要求...................................................................................................................12、设计步骤...................................................................................................................12.1信号输入...................................................................................................................12.2数据转换...............................................................................................................12.3数据显示...................................................................................................................13、出租车计费系统的实现............................................................................................23.1顶层电路设计...........................................................................................................23.2子模块设计...............................................................................................................24、系统仿真...................................................................................................................54.1开始信号的仿真结果...............................................................................................54.2加速信号仿真结果...................................................................................................64.3显示的仿真结果........................................................................错误!未定义书签。4.4decoder的仿真结果.................................................................错误!未定义书签。5、下载调试及实验结果..............................................................................................76、设计心得...................................................................................................................7参考文献.........................................................................................................................811、课程设计任务要求1.1EDA发展前景EDA技术(即ElectronicDesignAutomation技术)就是依赖强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(HardwareDdscriptionLangurage)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。1.2任务要求CPLD为复杂可编程逻辑器件,通过EDA技术对其进行编程,可将一个较复杂的数字系统集成于一个芯片中,制成专用集成电路芯片,并可随时在系统修改其逻辑功能。并最终完成电路的编程调试。具体要求如下:(1)实现计费功能,计费标准为:按行驶里程计费,起步价为5.00元,并在车行3Km后按1.40元/Km计费,当计费器达到或超过20元时,每公里加收50%的车费,车停止不计费。(2)现场模拟功能:能模拟汽车起动、停止、暂停以及加速等状态。(3)按计动态扫描电路,将车费和路程显示出来,各有两位小数。2、设计步骤2.1信号输入该模块主要实现计费功能和现场模拟功能。计费标准为:按行驶里程计费,起步价为5.00元,并在车行3km后按1.4元/km计费,当计费器达到或超过20元时,每公里加收50%的车费,车停止不计费。并以高低脉冲模拟出租汽车启动、停止、暂停、加速按钮,具有输入信号的作用。2.2数据转换数据转换模块是一个模为10的加法计数器,可将计费模块输出的车费和路程转换成4位的十进制数。2.3数据显示显示模块是由七段LED数码管译码和动态扫描显示两部分组成。采用的是共阴极七段数码管,根据十六进制数和七段显示段码表的对应关系,其中要求路程和车费都要用2位小数点来表示,所以须设置一个控制小数点的变量,即程序中的dp。这段程序所示2的是在数码管的第二、第六个后面显示小数点,实现了路程和车费都用2位小数点表示的功能。数码管控制及译码显示模块将十进制的输入信号用七段数码管显示,由七段发光二极管组成数码显示器,利用字段的不同组合。可分别显示0~9十个数字。3、出租车计费系统的实现3.1顶层电路设计图1系统总体框图3.2子模块设计3.2.1taxi的实现模块taxi见下图。输入端口speedup,start,pause,stop分别为出租车计费器的加速、起动、暂停、停止按键。实现计费功能,计费标准为:按行驶里程计费,起步价为5.0元,并在车行3Km后按1.40元/Km计费,当计费器达到或超过20元时,每公里加收50%的车费,车停止不计费。图2taix模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;3entitydecoderisport(clk20mhz:instd_logic;money_in:inintegerrange0to8000;distance_in:inintegerrange0to8000;scan:outstd_logic_vector(7downto0);seq7:outstd_logic_vector(6downto0);dp:outstd_logic);end;architectureoneofdecoderissignalclk1khz:std_logic;signaldata:std_logic_vector(3downto0);signalm_one,m_ten,m_hun,m_tho:std_logic_vector(3downto0);signald_one,d_ten,d_hun,d_tho:std_logic_vector(3downto0);variablenum:integerrange0to9;variabledis:integerrange0to100;variabled:std_logic;beginifstop='1'thenmoney_reg:=0;distance_reg:=0;dis:=0;num:=0;3.2.2decoder的实现模块decoder见下图。该模块把车费和路程转化为数码管可以显示的信号。图3模块xelsifstart='0'andspeedup=10andpause='0'andstop='0'thenifnum=9thennum:=0;distance_reg:=distance_reg+5;dis:=dis+5;elsenum:=num+1;4endif;elsifstart='0'andspeedup=11andpause='0'andstop='0'thendistance_reg:=distance_reg+1;dis:=dis+1;endif;ifdis=100thend:='1';dis:=0;elsed:='0';endif;ifdistance_reg=300thenifmoney_reg2000andd='1'thenmoney_reg:=money_reg+140;elsifmoney_reg=2000andd='1'thenmoney_reg:=money_reg+210;endif;endif;endif;money=money_reg;distance=distance_reg;endprocess;end;3.2.3display的实现模块display见下图。经过该八选一模块把车费和路程显示出来。每来一个选通地址,模块就把选到的那一位十进制输入值向后输出,同时在路程的百位和费用的十位显示小数点。实现译码功能。译码管片的选通信号,对输入脉冲进行计数。图4模块display5process(clk1khz,m_one,m_ten,m_hun,m_tho,d_one,d_ten,d_hun,d_tho)variablecnt:std_logic_vector(2downto0);beginifclk1khz'eventandclk1khz='1'thencnt:=cnt+1;endif;casecntiswhen000=data=m_one;dp='0';scan=00000001;when001=data=m_ten;dp='0';scan=00000010;when010=data=m_hun;dp='1';scan=00000100;when011=data=m_tho;dp='0';scan=00001000;when100=data=d_one;dp='0';scan=00010000;when101=data=d_ten;dp='0';scan=00100000;when110=data=d_hun;dp='1';scan=01000000;when111=data=d_tho;dp='0';sca