ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:303.21KB ,
资源ID:6917723      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6917723.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(出租车计费器设计报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

出租车计费器设计报告.docx

1、出租车计费器设计报告摘 要为了克服出租车计费系统传统设计方法的弊端,介绍了基于FPGA的出租车计费器设计的一般思路和方法。本系统是利用VHDL语言、PLD设计基于FPGA的出租车计费系统,选用ALTERA公司低功耗、低成本、高性能的FPGA芯片EPF10K10,以MAX+PLUS软件作为开发平台,设计了出租车计费器系统程序并进行了编译,功能仿真和下载。使其实现计费以及预置和模拟汽车启动、加速、停止、暂停等功能,并动态扫描显示车费数目。将计费器分成计费电路模块,数据转换模块,动态扫描模块,选择信号模块,显示模块,译码模块进行模拟仿真设计加以实现。运用顶层设计思路设计好各个底层文件对各个底层文件进

2、行功能仿真,并用文本方法来实现顶层文件的设计,对顶层文件进行功能仿真,并把顶层文件下载到实验箱的FPGA加以硬件分析。关键词: 出租车计费器;计数器;VHDL语言;MAX+PLUS;FPGA;目 录1 方案比较与选择(须详细阐述创新点或新见解) 12 底层文件仿真与分析 52.1 底层文件仿真 52.2 底层文件分析 53 顶层文件仿真与分析 83.1 顶层文件仿真 83.2 顶层文件分析 84硬件验证分析 95课程设计心得 10Abstract 11参考文献 12附录(源代码) 1方案比较与选择方案选择对比:方案:原理框图:分析:1、 分频模块:假设车轮每转一圈为2米,送一个脉冲,则需要50

3、分频(共100米),同理,若知道车轮直径,即可算出分频比2、 里程模块:每一百米记一次数,最大可以计999.9公里,精确到0.1公里。3、 取整模块:现实中出租车的精确度为0.1公里,计算价格的时候不足一公里的按一公里算,所以加了这一个模块,输出的是计算价格时的里程数。4、 计费模块:按行驶里程收费,起步费为7.0元,在车行3公里后再按2.2元/公里,车行9公里后按3.3元/公里,车停止不计费。5、 显示模块:通过动态扫描显示车费和里程数,将十进制数转化为四位十进制数(如将9999转化为四个9)以方便显示方案二:1.原理框图:图表 2 方案2的原理框图2. 分析:如(图表 2 方案2的原理框图

4、)(1) 计程车在不同的路程阶段都有不同的算法。每来一次时钟边沿,计程车走10米,再根据计程车费用算发算出相应的路费。再把十进制的路费和路程通过转换模块转换成四位二进制BCD码。(2)通过一个通道选择,把要显示出来的二进制BCD码数据输入译码模块,完成了一个动态选择数码管。注意的是:通道选择的时钟CLK1要比CLK2大的很多。一般来说几千赫兹CLK112MHZ,CLK246HZ。 (3)从显示模块输出的数据通过译码模块翻译成数码管上可以显示的阿拉伯数字。方案三:1原理框图:图表 1 方案1的原理框图2. 分析:基于CPLDFPGA的出租车计费器的组成如(图表 1 方案1的原理框图)所示。各部分

5、主要功能如下:(1)A计数器对送来的脉冲信号进行计数(假定每转一圈送一个脉冲)。不同车型的车轮直径可能不一样,通过“设置1”对车型做出选择,以实现对不同车轮直径的车进行调整。(2)B计数器对百米脉冲进行累加,并输出实际公里数的BCD码给译码动态扫描模块。每计满500送出一个脉冲给C计数器。“设置2”实现起步公里数预制。(3)C计数器实现步长可变(即单价可调)的累加计数,每500米计费一次。“设置3”用来完成超价加费、起步价预制等。(4)译码动态扫描将路程与费用的数值译码后用动态扫描的方式驱动数码管。(5)数码管显示将公里数和计费金额均用四位LED数码管显示(三位整数,1位小数)。方案选择:方案

6、二 1. 理由:三个方案总体思想是一致的,都是通过(计数模块)(转换模块)(显示选择)(译码模块)(数码管的输出)的形式,但是在具体实现上有所不同。方案一和三的路程计数方式较为繁琐,既考虑不同的车轮直径,又考虑脉冲分级。而方案二直接假定车轮大小不考虑,直接设定每次脉冲为一定的距离,我们假定是10m,这样就免去考虑车轮转了多少圈,每圈代表多少距离,使整个设计显得更加简单,容易。根据我们组员的讨论,结合不同途径找到的资料,方案二较为容易实现,另外方案二的找到资料比较详细。我们决定选择方案二。2.方案二的程序基本流图图表 3 方案2的基本流图2.底层文件仿真与分析1 计费模块计费模块分有三段仿真:1

7、、当路程不到3公里时,收费7元(图表 4 lucluc300时的仿真波形);3、当大于9公里时,每公里加3.3元(图表 6 luc900时的仿真波形)。图表 4 lucluc300时的仿真波形波形说明: 每一次脉冲num累积一次,当900luc300时累积到一百次的时候chf相应相加22,然后num清零,继续下一轮的计数。lc一直在每次脉冲时计数加1。图表 6 luc900时的仿真波形波形说明: 每一次脉冲num累积一次,当luc900时累积到一百次的时候chf相应相加33,然后num清零,继续下一轮的计数。lc一直在每次脉冲时计数加1。2 转换模块转换模块即把从计费模块传来的数据的千位、百位

8、、十位、个位转换成四位二进制BCD码。实际上就是把数据的千位、百位、十位、个位分离出来。具体波形图看(图表 7 转换模块的仿真波形图)。图表 7 转换模块的仿真波形图波形说明: 将计费模块的的数字输入转换模块,包括lc和chf,在clk1上升沿来临的时候,将各位十进制数个,十,百,千对应的数字转换成对应的二进制BCD码。lc和chf各四个,每个都是四位二进制码。3 显示模块显示模块即把数据的千位、百位、十位、个位经过选择通道的作用把对应的位数显示出来。实际上就是实现下一步的数码管动态扫描。具体仿真波形如(图表 8 显示模块的仿真波形)。图表 8 显示模块的仿真波形波形说明:将转换模块的数据a1

9、a4,b1b4输入显示模块,通过选择通道动态扫描显示输出d。4 译码模块译码模块即分别把显示模块传来的数据的千位、百位、十位、个位进行翻译,使之成为可以在数码管上显示的阿拉伯数字。真所谓“分别”是由于实验箱上的数码管是动态显示的。具体仿真波形如(图表 9 译码模块的仿真图)。图表 9 译码模块的仿真图输入端口:d输出端口:q波形说明: 将转换模块的十进制BCD码d输入译码模块,根据LED工作原理,为了使相应的数字能显示出来,将其翻译为LED数码管点亮对应数字所需要的电平。用0代表低电平,1代表高电平。相应电平使数码管对应的灯亮灭,使之显示需要的数字q。5 通道选择模块通道选择即在显示模块上选择

10、那个数将要通过译码模块显示到数码管。但由于频率很高,所以人眼是看不出数码管的动态变化。这也是时钟1的频率要比时钟2的频率大得很多的原因。具体仿真波形如(图表 10 选择通道的仿真波形)。图表 10 选择通道的仿真波形输入端口: clk输出端口: a波形说明: 在clk上升沿来临的时候a变化,累加一次。a是三位二进制码,能表达整数范围为07,相当于八进制。a一直从07循环,选择相应数码管输出显示。3顶层文件仿真与分析本实验作品的顶层文件是文本形式编,即用文本的元件例化语句把各个模块的输入输出端口连起来。具体的仿真波形如(图表 11 顶层文件仿真波形图)。图表 11 顶层文件仿真波形图波形说明:

11、输入端口:tstop,tstart,tpause,toclk,tclk 输出端口:tq,tac 当按下tstart时,在时钟tclk来临的时候,开始计费,按下tpause的路程和计费都暂停保持原状,当按下tstop的时候路程和车费回到初始状态,路程为0,车费为7。4.硬件验证分析本实验作品是经过一个不断调试的漫长时间,在调试过程中,把自己的代码得到了完善作用。(1)在下载时老是存在“系统繁忙”和“连不上系统”等等问题。分析:我们认为是实验室的计算机有问题。结果换了电脑则恢复正常。(2)把每个模块和顶层文件写好后把代码通过并口下载到实验箱,结果发现只有一个数码管显示。分析:结果发现原来在顶层文件

12、少定义了三个74LS138的输出端口,是为了实现软件与数码管的动态扫描相连接。(3)当按下启动按键时,发现数字的显示有很大的抖动。分析:因为之前我没写按键抖动软件。后来把引脚改为用开关。(4)当连上电源时,发现车费的十位和个位(小数点的前两位)一样跳动。分析可能是顶层文件引脚连接时把他们一起连给某个信号。后来改过则正常运行。(5)当一切搞好后,发现车费和路程数据的显示有时存在很大的延时。分析:本以为是计费模块的代码不够优化,结果发现是转换模块存在着这样的缺点。5.课程设计心得从本次课程设计,加深了对可编程逻辑器件进一步的认识,充分了解了它的强大功能和巨大作用,也熟悉了VHDL的编写及其应用,是

13、对之前EDA课程的巩固和加深,也熟悉了max+plus软件的编译,仿真,引脚分配,下载等功能的使用,使我们收益匪浅。单单从这次课程设计,我们组按照老师给的项目安排表进行操作,我们组从一开始的查阅资料和方案对比以至最后的方案落实,都进行很好的配合合作。但是编写源程序比较繁琐,特别是代码完成后的修改,调试,仿真,都是相当繁重的事情,这项重活我们组组长比较辛苦。还有硬件分析时由于实验箱等问题也是弄到很繁琐,但是最后坚持下来并将这个课程设计完成,这是令我们都很振奋的一次体验。总的上来说,这次课程设计我们都参加了,并且能够从中收获很多东西,重要的是我们之前的配合合作还有平时几乎没有的动手机会。所以,我们

14、都是觉得这次课程设计意义非凡。Rental car fare register system designAbstract:In order to overcome the taxi billing system of traditional design method based on FPGA, introduces the general design of the taxi devices and method. This system is designed by VHDL language and PLD based on FPGA taxi billing system, sel

15、ection ALTERA Co., low power consumption, low cost, high performance EPF10K10 chip, in order to MAX + PLUS software as a development platform designed taxi billing device system program and had compiled, functional simulation and downloads. Causes its realization to cost as well as the initializatio

16、n and the simulation automobile starts, stops, function and so on suspension, and dynamic scanning demonstration fare number. The fare resister is divided into fare-register circuit module, data conversion module, dynamic scanning module, select signal module, display module, decoding module ,all ar

17、e designed used in analog simulation. According to the idea using the top-level documents design, finish it with all the low-level underlying documents designed and functional simulation. Then to download the top-level documents to the experiment box and analyses in hardware.Key words: The rental ca

18、r costs the system; the counter; the VHDL language; MAX+PLUS II;FPGA参考文献 1.潘松,黄继业.EDA技术实用教程.科学出版社.2005.2:145156.2.陈楚,黄道宗.可编程逻辑器件实验指导书.华南农业大学工程学院实验室出版社.2009.11 附录(源代码)程序清单 1 taxi顶层模块-*文件开始* 文件名称: taxi_top.vhd* 最后修改日期: 2012.12.10* 功能描述: taxi计费器顶层模块*- library ieee;use ieee.std_logic_1164.all;use ieee.s

19、td_logic_unsigned.all;entity taxi_top is port (toclk : in std_logic; -数码管扫描时钟 tclk : in std_logic; -计费时钟 tstart : in std_logic; -系统启动 tstop : in std_logic; -系统停止 tpause : in std_logic; -系统暂停 - tsu : in std_logic; tdp : out std_logic; -系统小数点输出 tq : out std_logic_vector(6 downto 0); -数码管显示输出 tac : out

20、 std_logic_vector(2 downto 0) -74LS138的数码管片选输出端口 );end taxi_top;architecture behav of taxi_top is component jifei -计费模块 port(clk : in std_logic; start : in std_logic; stop : in std_logic; pause : in std_logic; - su : in std_logic; chefei : out integer range 0 to 9999; luc : out integer range 0 to 99

21、99); end component; component zhuanghuan -转换模块 port(zhclk : in std_logic; lscore : in integer range 0 to 9999; chscore:in integer range 0 to 9999; lge : out std_logic_vector(3 downto 0); lshi : out std_logic_vector(3 downto 0); lbai : out std_logic_vector(3 downto 0); lqian : out std_logic_vector(3

22、downto 0); chge : out std_logic_vector(3 downto 0); chshi : out std_logic_vector(3 downto 0); chbai : out std_logic_vector(3 downto 0); chqian : out std_logic_vector(3 downto 0); end component; component sele -选择输出通道模块 port(clk : in std_logic; a : out std_logic_vector(2 downto 0); end component; com

23、ponent xianshi -显示模块 port(c : in std_logic_vector(2 downto 0); dp : out std_logic; a1 : in std_logic_vector(3 downto 0); a2 : in std_logic_vector(3 downto 0); a3 : in std_logic_vector(3 downto 0); a4 : in std_logic_vector(3 downto 0); b1 : in std_logic_vector(3 downto 0); b2 : in std_logic_vector(3

24、downto 0); b3 : in std_logic_vector(3 downto 0); b4 : in std_logic_vector(3 downto 0); d : out std_logic_vector(3 downto 0); end component; component yima -译码模块 port(d : in std_logic_vector(3 downto 0); q : out std_logic_vector(6 downto 0); end component; signal ch1 : integer range 0 to 9999; -车费输出中

25、间连点 signal lc1 : integer range 0 to 9999; -路程输出中间连点 signal la1 : std_logic_vector(3 downto 0); -la1la4和chb1chb4是片选数码管的中间连点 signal la2 : std_logic_vector(3 downto 0); signal la3 : std_logic_vector(3 downto 0); signal la4 : std_logic_vector(3 downto 0); signal chb1 : std_logic_vector(3 downto 0); sign

26、al chb2 : std_logic_vector(3 downto 0); signal chb3 : std_logic_vector(3 downto 0); signal chb4 : std_logic_vector(3 downto 0); signal ac : std_logic_vector(2 downto 0); -选择输出口的中间连点 signal dd : std_logic_vector(3 downto 0); -译码管数据输入中间连点 begin u1 : jifei port map (clk=tclk,start=tstart, -元件1 计费 stop=

27、tstop,pause=tpause,chefei=ch1,luc=lc1); u2 : zhuanghuan port map (zhclk=toclk,chscore=ch1, -元件2 转换 lscore=lc1,lge=la1,lshi=la2,lbai=la3,lqian=la4, chge=chb1,chshi=chb2,chbai=chb3,chqian=chb4); u3 : xianshi port map (a1=la1,a2=la2,a3=la3,a4=la4,-元件3 显示 b1=chb1,b2=chb2,b3=chb3,b4=chb4,c=ac,dp=tdp,d=dd

28、); u4 : yima port map (d=dd,q=tq); -元件4 译码 u5 : sele port map (clk=toclk,a=ac); -元件5 选择通道 u6 : sele port map (clk=toclk,a=tac); -元件6 选择通道,连上74LS138end behav;-*文件结束*-程序清单 2 计费模块-*文件开始* 文件名称: jifei.vhd* 最后修改日期: 2012.12.10* 功能描述: 计出路程和路费*-library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsi

29、gned.all;entity jifei is port( clk : in std_logic; start : in std_logic; stop : in std_logic; pause : in std_logic; chefei : out integer range 0 to 9999; luc : out integer range 0 to 9999); end jifei;architecture behav of jifei is begin process(clk,start,stop,pause) variable chf,lc:integer range 0 to 9999; -车费、路程变量 variable num : integer range 0 to 100; variable a : std_logic; -标志,当标志1时,路程记数满1公里 begin if(clkevent and clk=1) then if(stop=1) then -停止开关,车费、路程和记

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1