基于CPLD的出租车计费器剖析_第1页
基于CPLD的出租车计费器剖析_第2页
已阅读5页,还剩7页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、等级:课程设计课程名称嵌入式系统课程设计课题名称基于CPLD的出租车计费器专业电子信息工程班级1201学号堂姓名许振跃指导老师林愿2015年9月16日1、课程设计任务要求11.1 EDA发展前景11.2 任务要求12、设计步骤12.1 信号输入12.2 数据转换12.3数据显示13、出租车计费系统的实现23.1顶层电路设计23.2子模块设计2系统仿真4.1开始信号的仿真结果54.2加速信号仿真结果6错误!未定义书签。错误!未定义书签。4.3 显示的仿真结果4.4 decoder的仿真结果5、下载调试及实验结果6、设计心得参考文献71、课程设计任务要求1.1 EDA发展前景EDA技术(即Elec

2、tronicDesignAutomation技术)就是依赖强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(HardwareDdscriptionLangurage)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。1.2任务要求CPLD为复杂可编程逻辑器件,通过EDA技术对其进行编程,可将一个较复杂的数字系统集成于一个芯片中,制成专用集成电路芯片,并可随时在系统修改其逻辑功能。并最终完成电路的编程调试。具体要求如下:(1) 实现计费功能,计费标准为:按行驶里程计费,起步价为5.00元,并在车行3

3、Km后按1.40元/Km计费,当计费器达到或超过20元时,每公里加收50%的车费,车停止不计费。(2) 现场模拟功能:能模拟汽车起动、停止、暂停以及加速等状态。(3) 按计动态扫描电路,将车费和路程显示出来,各有两位小数。2、设计步骤2.1信号输入该模块主要实现计费功能和现场模拟功能。计费标准为:按行驶里程计费,起步价为5.00元,并在车行3km后按1.4元/km计费,当计费器达到或超过20元时,每公里加收50%的车费,车停止不计费。并以高低脉冲模拟出租汽车启动、停止、暂停、加速按钮,具有输入信号的作用。2.2 数据转换数据转换模块是一个模为10的加法计数器,可将计费模块输出的车费和路程转换成

4、4位的十进制数。2.3数据显示显示模块是由七段LED数码管译码和动态扫描显示两部分组成。采用的是共阴极七段数码管,根据十六进制数和七段显示段码表的对应关系,其中要求路程和车费都要用2位小数点来表示,所以须设置一个控制小数点的变量,即程序中的dp。这段程序所示的是在数码管的第二、第六个后面显示小数点,实现了路程和车费都用2位小数点表示的功能。数码管控制及译码显示模块将十进制的输入信号用七段数码管显示,由七段发光二极管组成数码显示器,利用字段的不同组合。可分别显示09十个数字。3、出租车计费系统的实现3.1顶层电路设计图1系统总体框图3.2子模块设计3.2.1taxi的实现模块taxi见下图。输入

5、端口speedup,start,pause,stop分别为出租车计费器的加速、起动、暂停、停止按键。实现计费功能,计费标准为:按行驶里程计费,起步价为5.0元,并在车行3Km后按1.40元/Km计费,当计费器达到或超过20元时,每公里加收50%的车费,车停止不计费。Itaxielkmoney12.0-4startdistancefl2.0rstoppause1speedup1.OIinstl图2taix模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydecoderisport(clk20

6、mhz:instdogic;money_in:inintegerrange0to8000;distance_in:inintegerrange0to8000;scan:outstdogic_vector(7downto0);seq7:outstdogic_vector(6downto0);dp:outstdogic);end;architectureoneofdecoderissignalclklkhz:stdogic;signaldata:stdogic_vector(3downto0);signalm_one,m_ten,m_hun,m_tho:stdogic_vector(3downto

7、0);signald_one,d_ten,d_hun,d_tho:stdogic_vector(3downto0);variablenum:integerrange0to9;variabledis:integerrange0to100;variabled:std_logic;beginifstop='1'thenmoney_reg:=0;distance_reg:=0;dis:=0;num:=0;3.2.2 decoder的实现模块decoder见下图。该模块把车费和路程转化为数码管可以显示的信号decoder:iclk20mhzscan7.O1money_in12.0seq7

8、S0>distance_in12.Odpinst图3模块xelsifstart='0'andspeedup="10"andpause='0'andstop='0'thenifnum=9thennum:=0;distance_reg:=distance_reg+5;dis:=dis+5;elsenum:=num+1;endif;elsifstart='O'andspeedup="11"andpause='O'andstop='O'thendistance_

9、reg:=distance_reg+1;dis:=dis+1;endif;ifdis>=100thend:='1'dis:=0;elsed:='0'endif;ifdistance_reg>=300thenifmoney_reg<2000andd='1'thenmoney_reg:=money_reg+140;elsifmoney_reg>=2000andd='1'thenmoney_reg:=money_reg+210;endif;endif;endif;money<=money_reg;dista

10、nce<=distance_reg;endprocess;end;3.2.3 display的实现模块display见下图。经过该八选一模块把车费和路程显示出来。每来一个选通地址,模块就把选到的那一位十进制输入值向后输出,同时在路程的百位和费用的十位显示小数点。实现译码功能。译码管片的选通信号,对输入脉冲进行计数。斜汗闭亍“二占而r两型斤闭亍''-品市陋3j迫门询j3"dp图4模块displayprocess(clklkhz,m_one,m_ten,m_hun,m_tho,d_one,d_ten,d_hun,d_tho)variablecnt:std_logic

11、_vector(2downto0);beginifclklkhz'eventandclklkhz=T'thenent:二ent+1;endif;caseentiswhen"000"=>data<=m_one;dp<='0'scan<="00000001"when"001"=>data<=m_ten;dp<='0'scan<="00000010"when"010"=>data<=m_hun;

12、dp<='1'scan<="00000100"when"011"=>data<=m_tho;dp<='0'scan<="00001000"when"100"=>data<=d_one;dp<='0'scan<="00010000"when"101"=>data<=d_ten;dp<='0'scan<="00100000&

13、quot;when"110"=>data<=d_hun;dp<='1'scan<="01000000"when"111"=>data<=d_tho;dp<='0'scan<="10000000"endcase;endprocess;process(data)begincasedataiswhen"0000"=>seq7<="1111110"when"0001"=&g

14、t;seq7<="0110000"when"0010"=>seq7<="1101101"when"0011"=>seq7<="1111001"when"0100"=>seq7<="0110011"when"0101"=>seq7<="1011011"when"0110"=>seq7<="1011111"when&

15、quot;0111"=>seq7<="1110000"when"1000"=>seq7<="1111111"when"1001"=>seq7<="1111011"whenothers=>seq7<="0000000"endcase;endprocess;end;4、系统仿真4.1开始信号的仿真结果输入端口speedup,start,pause,stop分别为出租车计费器的加速、起动、暂停、停止按键。输入:elk,sta

16、rt,stop,pause,speedup;输出:money,distance;图5开始仿真结果4.2加速信号仿真结果对控制模块taxi进行仿真,观察波形可知,当启动键(start)为一个脉冲时,表示汽车已启动,车费money显示起步价为5.00元,同时路程distance随着计费脉冲开始计数,当停止键(stop)为1时,表示汽车熄火,车费money和路程distance均为0;当暂停键(pause)为1时,车费和路程停止计数;当档位键分别取0、1、2时路程的计数逐步加快,表示车速逐步加快。输入:elk,start,stop,pause,speedup;输出:money,distance;Ti

17、meBar21.275mjjFWer4131帕20E4nsStar!:End>1275inHmm21.28adkB0r«ittB0Hurtt0IUpB0tpB111B1-匚讥1】BIBIdJmtV0一1J"Hl110:101¥1003GOil310lllllllll11111iHI1iilllllllll1111i11iiii1110图6系统仿真结果5、下载调试及实验结果程序下载完后,按下启动键,车费显示起步价为5元。6、设计心得当路程超过3公里后每公里多加1.4元,显示为6.4元。我们这次课程设计的题目是出租车计费器,拿到题目我就有点小激动,因为终于可以利

18、用自己的所学做点与实际生活相关的东西了。首先,我复习的一下VHDL程序设计的基本语法,然后开始熟悉QuartusII的相关操作。包括模块化的编译器。编译器包括的功能模块有分析7综合器,适配器、装配器、时序分析器、设计辅助模块、EDA网表文件生成器、编辑数据接口等。可以通过选择StartCompilation来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。还可以通过选择CompilerTool,在CompilerTool窗口中运行该模块来启动编译器模块。然后,我开始去图书馆找相关的图书,因为当我看了课程设计任务书之后,对于整个程序还是没有把握。所以我希望能够找到相关的程序进行验证,然后修改以符合自己的课程设计的要求。功夫不负有心人,我在图书馆借的几本书中就有和我们课题类似的程序模块。所以,我就将书中的程序在QuartusII中运行了一遍。可是,过程并没有我们想象的那么顺利。我们发现加速功能无法实现,一旦开启加速,数码管就会出现乱码。经过对源代码的一番修改,我们的乱码现象有了一些好转。但是,也并没有完全达到要求。经过在实验箱中的调试,我们终于找到了解决方案,即改变输入的时钟频率。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论