收藏 分销(赏)

出租车计费器的设计.doc

上传人:xrp****65 文档编号:6985569 上传时间:2024-12-24 格式:DOC 页数:16 大小:122KB 下载积分:10 金币
下载 相关 举报
出租车计费器的设计.doc_第1页
第1页 / 共16页
出租车计费器的设计.doc_第2页
第2页 / 共16页


点击查看更多>>
资源描述
课程设计说明书 14 目 录 1 引言 1 2 EDA技术简介 2 3 FPGA简介 3 4 总体设计 5 4.1 总体设计思想 5 4.1.1 分频模块 5 4.1.2控制模块 5 4.1.3计量模块 5 4.1.4译码显示模块 6 4.2 时序仿真图及延时分析 6 4.3 VHDL源代码 8 5 设计总结 11 参考文献 12 1 引言 随着出租车行业的发展,对出租车计费器的要求也越来越高,用户不仅要求计费器性能稳定,计费准确。利用VHDL语言设计出租车计费系统,使其实现计费以及预置和模拟汽车启动、停止、等待等功能设计出动态扫描电路显示车费数目,突出了其作为硬件描述语言的良好的可能性、可移植性和易理解等优点。此程序通过下载到芯片EP1K30TC144-3后,可应用于实际的出租车系统中。 本文针对FPGA器件,用EDA工具软件Max+P1usⅡ,设计了一种出租车的计价器,它可以以十进制数的形式,直观地显示出租车行驶的里程和乘客应付的费用,具有一定的实际应用价值。 2 EDA技术简介 EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。 EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。 现在对EDA的概念或范畴用得很广,包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。 EDA工具软件可大致分为芯片设计辅助软件、可编程芯片辅助设计软件、系统设计辅助软件等三类。 目前进入我国并具有广泛影响的EDA软件是系统设计软件辅助类和可编程芯片辅助设计软件:Protel、PSPICE、multiSIM10(原EWB的最新版本)、OrCAD、PCAD、、LSIIogic、MicroSim,ISE,modelsim等等。这些工具都有较强的功能,一般可用于几个方面,例如很多软件都可以进行电路设计与仿真,同进还可以进行PCB自动布局布线,可输出多种网表文件与第三方软件接口。 3 FPGA简介 FPGA是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。它由早期的电子管、晶体管、小中规模集成电路,发展到超大规模集成电路(VLSIC,几万门以上)以及许多具有特定功能的专用集成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。 其后出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与—或”表达式来描述,所以PLD能以乘积和的形式完成大量的组合逻辑功能。PLD的结构分为两类:逻辑单元阵列(LCA),包括逻辑块和互连阵列、I/O块;复合PLD结构,包括逻辑块和互连矩阵开关。 这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。 PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和E2PROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA器件既有现场可编程的,也有掩膜可编程的。在PAL的基础上又发展了一种通用阵列逻辑(GAL,Generic ArrayLogic),如GAL16V8、GAL22V10等。它采用了EPROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。 为了弥补这一缺陷,20世纪80年代中期,Altera和Xilinx分别推出了类似于PAL结构的扩展型CPLD(Complex Programmable Logic Dvice)和与标准门阵列类似的FPGA(FieldProgrammable Gate Array),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。与门阵列等其他ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品不需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在10000件以下)之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。 可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 4 总体设计 4.1 总体设计思想 根据设计要求,系统的输入信号有:系统时钟信号CLK-240,计价开始信号START,等待信号STOP,里程脉冲信号FIN。系统的输出信号有:总费用数cha0-cha3,行驶距离km0、km1和等待时间min0、min1等。 系统组成方框图4-1所示,它由外部输入模块、控制模块和显示模块三部分组成。 时钟信号 计费 分频器 显 示 控 制 器 等待信号 计时 公里脉冲 计程 计费/复位 图4-1 出租车计价器系统组成方框图 4.1.1 分频模块 分频模块是对系统时钟频率进行分频,分别得到13Hz,15Hz和1Hz三种频率。 4.1.2控制模块 计价器控制模块主要完成对计价器状态的控制。 4.1.3计量模块 计量模块完成计价、计时和计程功能。 计价部分:行程在3km内,而且等待累计时间小于2分钟,起步费为5元;3km外以每公里按1.3元计费,等待累计时间超过2分钟按每分钟1.5元计费。 计时部分:计算乘客的等待累计时间。计时器的量程为59分钟,满量程后自动归零。 计程部分:计算乘客所行驶的公里数。计程器的量程为99km,满量程后自动归零。 4.1.4译码显示模块 译码显示模块完成计价、计时和计程数据显示。计费数据送入译码显示模块进行译码,最后送至以百元、十元、元、角为单位对应的数码管上显示。计程数据送入译码显示模块进行译码,最后送至以km为单位的数码管上显示。计时数据送入译码显示模块进行译码,最后送至以分为单位对应的数码管上显示。  4.2 时序仿真及延时分析 图 4-2 时序仿真图 根据图4-2仿真波形知,当START为0时,路程计数器、时间计数器、计费计数器均为0;当START为1时,表示出租车行驶状态,计费计数器显示5元,FIN为1时,满1km路程计数器加1;路程3km内,计费计数器保持5元不变,超过3km后每增加1km计费计数器加1.3元,此时等待时间计数器保持不变。 图 4-3时序仿真图 根据图4-3仿真波形知,当START为1时,系统启动后,STOP为1时,出租车处于停止等待状态,等待时间计数器计时在2分钟等待时间内计费计数器不变;等待时间超过2分钟后,每增加1分钟计费计数器加1.5元,此时路程计数器保持不变。 图 4-4延时分析 由上图可知:当clk_240输入变化时, cha00的输出会延时16.3ns,其它同理由图可知 图 4-5延时分析 由上图可知:当clk_240输入变化时, cha20的输出会延时12.9ns,其它同理由图可知 图 4-6延时分析 由上图可知:当clk_240输入变化时,km00的输出会延时14.2ns,其它同理由图可知 图 4-7延时分析 由上图可知:当clk_240输入变化时,km13的输出会延时15.2ns,其它同理由图可知 4.3 VHDL源代码 Library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_airth.all; use ieee.std_logic_unsigned.all; entity tll is port ( clk_240 :in std_logic; start :in std_logic; stop:in std_logic; fin:in std_logic; 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 tll; architecture behav of tll is signal f_15,f_16,f_1:std_logic; signal q_15:integer range 0 to 12; signal q_16:integer range 0 to 14; signal q_1:integer range 0 to 194; 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 en1,en0,f:std_logic; begin feipin:process(clk_240,start) begin if clk_240'event and clk_240='1' then if start='0' then q_15<=0;q_16<=0;f_15<='0';f_16<='0';f_1<='0';f<='0'; else if q_15=12 then q_15<=0;f_15<='1'; else q_15<=q_15+1;f_15<='0'; end if; if q_16=14 then q_16<=0;f_16<='1'; else q_16<=q_16+1;f_16<='0'; end if; if q_1=194 then q_1<=0;f_1<='1'; else q_1<=q_1+1;f_1<='0'; end if; if en1='1' then f<=f_15; elsif en0='1' then f<=f_16; else f<='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 w<=0;en1<='0';en0<='0'; m1<="000";m0<="0000";k1<="0000";k0<="0000"; elsif stop='1' then if w=59 then w<=0; if m0="1001" then m0<="0000"; if m1="101" then m1<="000"; else m1<=m1+1; end if; else m0<=m0+1; end if; if m1&m0>"0000001"then en1<='1'; else en1<='0'; end if; else w<=w+1;en1<='0'; end if; elsif fin='1' 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; if k1&k0>"00000010" then en0<='1'; else en0<='0'; end if; else en1<='0';en0<='0'; end if; cha3<=c3;cha2<=c2;cha1<=c1;cha0<=c0; km1<=k1;km0<=k0;min1<='0'&m1;min0<=m0; end if; end process; process(f,start) begin if start='0' then c3<="0000";c2<="0000";c1<="0101";c0<="0000"; elsif f'event and f='1' then 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; end if; end process; end behav; 5 设计总结 通过这次EDA课程设计,我学到了很多的东西,不仅巩固以前所学过的知识,而且学到了很多在书本上所没有的知识。从而进一步加深了对EDA的了解,让我对它产生了浓厚的兴趣。这次课程设计让我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,还要把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到的问题,可以说是困难重重,这毕竟第一次做,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 这次出租车计费系统的设计让我体会最深的一点就是,一定要保持一种严谨的态度,尤其是在引脚锁定的时候一定要仔细认真,否则会严重影响实验结果。而且我还意识到一点做事绝不能眼高手低,凡事想当然,只有自己亲自动手一遍一遍地查错改错才能使自己不断进步,并且从中会体会到成功的喜悦。 总得来说这次出租车计费系统的设计比较成功的。在设计中遇到了很多问题,尤其在下载到实验箱时,最后在樊老师的辛勤的指导下,终于下载调试成功。 很感谢学校为我们安排的这次课设以及指导老师的耐心指导和详细讲解。 参考文献 [1].姜雪松等,VHDL设计实例与仿真,机械工业出版社,2007.1 [2].陈耀和,VHDL语言设计技术,电子工业出版社,2004.3 [3].王辉,殷颖等,MAX + plus II和Quartus II应用与开发技巧,机械工业出版社,2007.1 [4].曹昕燕, 周凤臣, 聂春燕.《EDA技术实验与课程设计》.清华大学出版社 [5].谭会生, 张昌凡.《EDA技术及应用》(第二版).西安电子科技大学出版社
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服