《2022年基于CPLD的出租车计费系统设计.docx》由会员分享,可在线阅读,更多相关《2022年基于CPLD的出租车计费系统设计.docx(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品学习资源基于 CPLD 地出租车计费器系统设计摘要:1Abstract:21. 引言11.1 课题背景11.2 国内外讨论现状及趋势11.3 本文地主要工作12. CPLD 、VHDL 介绍12.1 CPLD 现状及进展12.2 CPLD 地结构与特点12.2.1 CPLD 基本结构22.2.2 CPLD 地特点22.3 VHDL 设计优点33. 出租车计费器地设计33.1 出租车计费器地总体设计33.1.1 出租车计费标准33.1.2 总体框架设计33.2 出租车计费器主要模块设计43.2.1 速度模块43.2.2 计程模块43.2.3 计时模块53.2.4 计费模块54. 整体电路设计
2、64.1 整体电路图64.2 电源电路64.3 启动/ 停止按键电路64.4 自动清零部分75. 系统仿真与下载实现75.1 Quartus软件介绍75.2 仿真结果75.2.1 整体仿真85.2.2 速度模块仿真85.2.3 计程模块仿真85.2.4 计时模块仿真95.2.5 计费模块仿真95.3 设计测试96. 总结及展望10致谢10参考文献10摘要 :为了使出租车计费系统设计成本降低、计费准,本文介绍了一种采纳CPLD 芯片进行出租车欢迎下载精品学习资源计费器地设计方法,描述了该课题地讨论意义和应用价值;表达了 CPLD 结构原理及其主要运用; 介绍了超高速集成电路硬件描述语言地设计和主
3、要功能 .本文主要应用可编程规律芯片 EPM7128S 为核心掌握,附加肯定外电路组成出租车计费器系统,使用具有移植性强地特点,便于升级及可重复使用地 VHDL 语言进行设计 .关键字 :CPLD,VHDL,出租车计费器Abstract:In order to reduce design cost taxi billing system, accounting standard, this paper introduces a CPLD chip taxi meter design method, described the research significance and applicat
4、ion value; the CPLD structure principle and its main application; introduces the ultra high speed integrated circuit hardware description language is designed and the main functions. In this paper, the main application of the programmable logicchip EPM7128S as the core control, some additional exter
5、nal circuit taxi meter system, with the use of transplantation and strong features, easy to upgrade and repeated use of VHDL language designKey Words: CPLD, VHDL, Taxi fare Registers欢迎下载精品学习资源1. 引言1.1 课题背景随着城市地进展,出租车行业进展快速,出租车地附属品也应运而生. 传统地出租车计费器大多是由单片机实现地,出租车计价器在最初使用时具备地主要功能是依据行驶里程计价,要求精度高,牢靠性好 .可以
6、说,早期地计价器就是个里程表.随着科学技术地进展,产生了其次代计价器.它采纳了手摇运算机与机械结构相结合地方式,实现了半机械半电子化.此时它在计程地同时仍可完 成计价地工作 .大规模集成电路地进展又产生了第三代计价器,也就是全电子化地计价器.出租车行业以低价高质地服务给人们带来了出行地享受.但是总存在着买卖纠纷困扰着行业地进展 .而在出租车行业中解决这一冲突地最好方法就是改良计价器.用更加精良地计价器来为乘客供应更加便利快捷地服务. 计价器作为出租车地一个重要组成部分,关系着出租车司机和乘客双方利益,起着重要地作用,因此,具有良好性能地计价器对广大出租车司机伴侣来说是很必要地.1.2 国内外讨
7、论现状及趋势目前市场上使用地出租车计费器主要采纳地都是利用89C51 单片机实现地计费器设计,显示方式上主要采纳地是固定显示内容地LED 显示 1. 社会地进展对传统地出租车计费器提出了更高地要求2. 近年来,各大城市都在对出租车价格进行调整,由于数量太多,很多城市地调价甚至需要一个月时间才能完成,常常会同一时间显现几个价格,有地城市出租车上仍会显现司机人工计价地尴尬情形 .这些都暴露了传统计费器敏捷性和升级换代才能地不足3.此次选做地毕业课题是“基于 CPLD 地租出车计费器 ”,利用现在已经很成熟地可编程规律器件来实现这一计费系统,相对用51 单片而言,会比较简洁,这也同样表达出EDA技术
8、上地优势 4.其最突出地地方表现在最具现代电子设计技术特点地功能是日益强大地规律设计仿真测试技术.1.3 本文地主要工作利用 VHDLVery-High-Speed Integrated Circuit HardwareDescription Language语言设计出来地出租车计费器系统将实现计程模块、计时模块以及动态扫描模块等设计方法与技巧.计程模块将用计数器来完成,计数器对脉冲数计数,然后供应应程序数据.通过不同地信号,用比较器可以让我们确定出租车是在车行计程仍是车停计时.再将数据传输到计费模块,通过多种条件判定,最终确定输出值,然后相加确定最终地费用,并显示出来.2. CPLD 、VH
9、DL 介绍2.1 CPLD 现状及进展20 世纪 70 岁月,最早地可编程规律器件 PLD 产生了 .其输出结构是可编程地规律宏单元, 由于它地硬件结构设计可由软件完成,因而它地设计比纯硬件地数字电路具有很强地敏捷性,但其过于简洁地结构也使它们只能实现规模较小地电路.为补偿 PLD 只能设计小规模电路这一缺陷,推出了复杂可编程规律器件 CPLD. 目前应用已深化网络、仪器外表、汽车电子、数控机床、航天测控设备等方面 .72.2 CPLD 地结构与特点欢迎下载精品学习资源CPLD主要是由可编程规律宏单元环绕中心地可编程互连矩阵单元组成.其中 MC结构较复杂,并具有复杂地I/O 单元互连结构,可由
10、用户依据需要生成特定地电路结构,完成肯定地功能.由于 CPLD内部采纳固定长度地金属线进行各规律块地互连,所以设计地规律电路具有时间可猜测性,防止了分段式互连结构时序不完全猜测地缺点.2.2.1 CPLD 基本结构经过几十年地进展,很多公司都开发出了CPLD可编程规律器件.PLD地总体结构(以MAX7000为例,其他型号地结构与此都特别相像见图2-1) :图 2-1CPLD 基本结构2.2.2 CPLD 地特点CPLD 具有编程敏捷、集成度高、设计开发周期短、适用范畴宽、开发工具先进、设计制造成本低、对设计者地硬件体会要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模地电路设
11、计,因此被广泛应用于产品地原型设计和产品生产一般在 10,000 件以下 之中.几欢迎下载精品学习资源乎全部应用中小规模通用数字集成电路地场合均可应用CPLD 器件.CPLD 器件已成为电子产品不行缺少地组成部分,它地设计和应用成为电子工程师必备地一种技能.2.3 VHDL 设计优点第一,它是可以用来描述规律设计地结构,比如规律设计中有多少个子规律,而这些子规律又 是如何连接地 .除此之外, VHDL并不特别关怀一个详细规律依靠何种方式实现,而是把开发者地精力集中到规律所实现地功能上.其次, VHDL采纳类似高级语言地语句格式完成对硬件行为地描述,具备更强地模块化才能, 并拥有良好地可读性以及
12、程序地移植性.第三, VHDL 给出规律地模拟与调试为设计工作供应了最大地空间 .VHDL 调试地过程是相当敏捷地:一方面可以使用传统地调试方法;另一方面,可以使用一些 VHDL 原码调试器,这类调试器可以大大加快 VHDL 程序调试地速度 5.3. 出租车计费器地设计3.1 出租车计费器地总体设计3.1.1 出租车计费标准计费标准为起步3 元,车行 3 公里后为 1.4 元/公里,当计费达到20 元后,每公里加收50%地车费,车停止每 3 分钟增加 0.7 元.车费显示出来,有一位小数.3.1.2 总体框架设计ResetKmmoneyStartSpeed 模块总费用模块SpKilometer
13、sTime 模块总里程模块图 3-1 出租车计费器系统结构图系统接收到 reset 信号后,总费用变为3 元,同时其他计数器、寄存器等全部清零.系统接收到 start 信号后,第一把部分寄存器赋值,总费用不变,单价 price 寄存器通过对总费用地判定后赋为 3 元.其他寄存器和计数器等连续保持为 0.欢迎下载精品学习资源速度模块:通过对速度信号sp 地判定,打算变量kinside 地值.Kinside 即是行进 100m 所需要地时钟周期数,然后每行进100m,就产生一个脉冲clkout.计程模块:由于一个clkout 信号代表行进100m ,故通过对 clkout 计数,可以获得共行进地距
14、离 kmcount.计时模块:在汽车启动后,当遇到顾客等人或红灯时,出租车采纳计时收费地方式.通过对速度信号 sp 地判定打算是否开头记录时间. 当 sp=0 时,开头记录时间.当时间达到足够长时产生timecount 脉冲,并重新计时.一个 timecount 脉冲相当于等待地时间达到了时间计费地长度.计费模块:由两个进程组成.其中,一个进程依据条件对enable 和 price 赋值,当记录地距离达到 3 公里后 enable 变为 1,开头进行每公里收费,当总费用大于 20 元后,就单价 price 由原先地 1.4 元每公里变成 2.1 元每公里;其次个进程在每个时钟周期判定 time
15、out 和 clkout 地值 .当其为 1 时, 就在总费用上加上相应地费用 .3.2 出租车计费器主要模块设计3.2.1 速度模块速度模块第一依据start 信号判定是否开头计费,然后依据输入地速度档位sp 地判定,确定行驶 100m 所需要地时钟数,每前进100m,输出一个 clkout 信号.同时由 cnt 对 clk 进行计数,当 cnt 等于 kinside 时,把 clkout 信号置 1, cnt 清 0.VHDL语言程序见附录,模块原件符号如下.图 3-2 速度模块框图3.2.2 计程模块此模块主要用于记录行进地距离,其模块框图如图 3-3 所示 .通过对 clkout 信号
16、地计数,可以运算行驶地距离 kmcount. 一个 clkout 脉冲相当于行进 100m 所以只要记录 clkout 地脉冲数目即可确定共行进地距离 .Kmcount1 为特别位, kmcount2 为个位, kmcount3 为十位,分别为十进制数 .欢迎下载精品学习资源3.2.3 计时模块速度模块主要用于计时收费,记录计程车速度为0 地时间(如等待红灯),其模块框图如图3-4 所示 .通过对 sp 信号地判定,当sp=0,开头记录时间 .当时间达到足够长时,产生timecount 脉冲,并重新计时 .图 3-4 计时模块框图3.2.4 计费模块计费模块如图3-6 所示,可分为两个进程 .
17、Kmmoney1 用于产生 enable 和 price 信号.当记录距离达到3km 后, enable 信号为 1,开头进行每公里收费 .当总费用大于 40 元后,单价 price 由原先地 2 元变成 4 元,用作计时收费.通过对 sp 信号地判定,当 sp=0,开头记录时间 .当时间达到足够长时,产生timecount 脉冲,并重新计时 .Kmmoney2 用于判定 timecount 和 clkout 地值,当其为1 时,总费用加 1.最终输出为总费用.图 3-5 计费模块框图欢迎下载精品学习资源4. 整体电路设计4.1 整体电路图整体电路如图4-1.硬件电路由Cyclone 电路板组
18、成,clk 为时钟周期信号,由试验箱产生,start/stop 是启动停止按键电路,reset 为自动清零电路 .电源又 AD-DC 开关电源供电 .图 4-1 整体门电路4.2 电源电路电源采纳了 AD-DC 开关电源,输入 115VAC 到 230VAC ,输出 +5V4A. 使用开关电源地好处就是比较节约能源,它地转换效率很高,可达85%以上,稳压范畴宽,除此之外,仍具有稳压精度 高、不使用电源变压器等特点.4.3 启动 /停止按键电路如图 4-2 所示,采纳双刀双路开关,一路开关用于清零部分,由于显示部分特别要求,即计费停止后屏幕上仍旧要保持计费地全部信息,只有当下次计费启动时才清零从
19、新开头计费.另外两路开关,其中一路用于启动指示和启动/停止输出信号给CPLD 芯片地 I/O 口.当按下键后,清零部分和启动计费部分同时进行,但清零只是瞬时地,计费指示灯两起.再次按下键后,开关换到另外地 两路,空车指示灯亮起.图 4-2 启动 /停止按键电路欢迎下载精品学习资源4.4 自动清零部分由于显示部分地特别要求,即计费停止后屏幕上仍旧要保持计费地全部信息,只有当下次计费启动时才清零从新开头计费.VHDL语言地特别性,不能在一个结构中用两个不同地动作使其赋值. 所以必需要有一个瞬时清零地信号,当CPLD 地清零 I/O 端口为 “1时”就自动清零 .使用电容地充放电功能来实现,按键断开
20、时清零输出端为接地,按键闭合时电容充电清零端为高电平,充完电后清零端输出又为低电平,当按键断开后,通过一个2k 欧姆地电阻放电,为下次充电做好预备.如图 4- 3 所示 .图 4-3 自动清零电路5. 系统仿真与下载实现5.1 Quartus软件介绍Quartus是 Altera 公司自行设计地一个完全集成化、易学易用地可编程规律设计环境,它供应了完全集成且与电路结构无关地开发包环境,具有数字规律设计地全部特性,包括:可利用原理图、结构框图、VerilogHDL 、AHDL和 VHDL完成电路描述,并将其储存为设计实体文件;芯片 电路平面布局连线编辑;LogicLock增量设计方法,用户可建立
21、并优化系统,然后添加对原始系统地性能影响较小或无影响地后续模块;功能强大地规律综合工具;完备地电路功能仿真与时序规律仿真工具; 定时/ 时序分析与关键路径延时分析;可使用 SignalTap规律分析工具进行嵌入式地规律分析;支持软件源文件地添加和创建,并将它们连接起来生成编程文件; 使用组合编译方法可一次完成整体设计流程;自动定位编译错误;高效地期间编程与验证工具;可读入标准地EDIF 网表文件、 VHDL 网表文件、和Verilog 网表文件; 能生成第三方EDA 软件使用地 VHDL 网表文件和 Verilog 网表文件;5.2 仿真结果欢迎下载精品学习资源5.2.1 整体仿真对电路整体进
22、行仿真,得出如下仿真波形图5-1.图中,当复位信号reset 为高电平常,系统全部寄存器、计数器都清零;当开头计费信号start 信号有效时,计费器开头计费,依据出租车行驶地速度 sp2.0 地取值运算所用花费和行驶里程;当停止计费信号有效时,计费器停止工作.图 5-1 出租车计费器仿真波形图5.2.2 速度模块仿真速度模块地仿真波形图如图5-2 所示.该模块依据出租车所处地运行状态和不同地势式速度,对相应数目地时钟周期进行计数,车每行驶100m 时输出信号 clkout 输出高电平 .图 5-2 速度模块仿真波形图5.2.3 计程模块仿真计程模块地仿真波形如图5-3 所示 .图中,当 res
23、et 信号有效时,系统复位清零;否就,对输入信号 clkout 进行十进制计数 .欢迎下载精品学习资源图 5-3 计程模块仿真波形图5.2.4 计时模块仿真计时模块地仿真波形图如图5-4 所示 .预设 1000 个时钟周期为20s,对时钟周期进行计数,每计1000 个时钟周期输出高电平,指示计时20 秒.图 5-4 计时模块仿真波形图5.2.5 计费模块仿真计费模块地仿真波形图如图5-5 所示 .当 reset 信号有效时,系统复位清零;否就,当计时计费信号 timecount 和计程计费信号 clkout 为高电平常,依据肯定计费规章进行计费.图 5-5 计费模块仿真功能图综上所述,本设计地
24、出租车计费器完全符合系统设计地要求,实现了出租车计费器所需地各项基本功能 .5.3 设计测试欢迎下载精品学习资源利用 Quartus 6.0 对所设计出租车计费器地VHDL代码进行了仿真,并在Cyclone 型可编程数字实现系统上实现了该掌握.该数字实现系统分成两部分,一是FPGA 地下载板,它主要包括所使用地芯片、 RS-232 接头、接脚转换插槽等;另一部分是I/O 试验板,它主要包括显示、脉冲输出等.出租车计费器地各部分利用数字试验系统所附地RS-232 连接线将运算机中地VHDL 代码设计地内容烧录到该试验系统地EPC2C35F672C8 芯片中进行测试,测试结果基本实现了总费用=起费
25、用+里程 -3km 里程单价 +等待时间 等待单价地出租车计费模式. 6.总结及展望本文论述了基于CPLD 地出租车计费器设计,分别介绍了整个系统和各个模块地设计,使用CPLD芯片、 VHDL硬件描述语言作为设计手段,利用自顶向下地模块化设计思路,通过在Quartus软件下进行地模拟仿真,并进行相应地硬件下载调试,证明所设计地系统完成了出租车计费器地功能,各项技术指标符合预定标准,具有肯定有用性.由于本人在体会水平上地欠缺,设计中可能存在很多不足,请各位老师予以指证!近年来, CPLD 在通信、掌握、数据运算等领域得到了广泛地应用,利用CPLD 来设计电子产品可削减电子系统地开发风险和开发成本
26、;缩短了上市时间;通过在系统编程、远程在线重构等技术降低保护升级成本.并且, CPLD器件地成本越来越低,这些都说明可编程器件已成为现在及将来很长一段时间地主流,用它来实现地出租车计费器省去很多外围电路,稳固,简洁有效,将来必定可以设计出更多更强大地功能,提高产品竞争力.将来基于 CPLD 平台地出租车计费器将会有更低地成本、更小地体积、更安全、更精确和更多功能.致谢本次设计从选题到最终完成,都得到了指导老师邵利敏老师地尽心指导.邵老师渊博地学问、严谨地治学态度和诲人不倦地精神永久是我学习地榜样.在系统设计过程中,我也遇到了较多地困 难,我特别感谢我地伴侣和老师给与我地帮忙和支持,使我能顺当完
27、成本系统地设计与实现.参考文献1 江国强 .EDA 技术与应用 M. 西安:电子科技高校出版社,2000, 310-312.2 潘松 ,黄继业 .EDA 技术与 VHDLM.北京:清华高校出版社, 2005,220-228.3 甘登岱 ,田富鹏 ,朱利娜 .EDA 培训教程 M. 南京:机械工业出版社, 1998, 215-220.4 延明 ,张霖华 .数字电路 EDA 入门M. 北京:邮电高校出版社, 2002, 195-200.5 林愿 .基于 CPLD/FPGA 地出租车计费系统地设计实现M. 西安:电子科学出版社, 2003, 94-101.6 何宾.EDA 原理及应用 . 北京:清华
28、高校出版社, 2021.欢迎下载精品学习资源附录 VHDL 程序Speed模块library ieee ;-加载库文件use ieee.std_logic_1164.all ;use ieee.std_logic_unsigned.all ;entity speed is欢迎下载精品学习资源port-定义输入输出端口clk :in std_logic ;reset:in std_logic ;start:in std_logic ;stop :in std_logic ;sp:in std_logic_vector2 downto 0 ;clkout:out std_logic;end spe
29、ed;architecture rtl of speed is begin欢迎下载精品学习资源beginprocessclk,reset,start,stop,sp-敏锐信号发生变化时,启动进程type state_type iss0,s1;-枚举类型;variable s_state:state_type;variable cnt:integer range 0 to 28 ;variable kinside:integer range 0 to 30 ;case sp is- 速度挑选when000=kinside:=0 ;- 停止状态或空档when001=kinside:=28 ;- 第
30、一档when010=kinside:=24 ;- 其次档when011=kinside:=20 ;-第三档when100=kinside:=16 ;-第四档when101=kinside:=12 ;-第五档when110=kinside:=8 ;-第六档when111=kinside:=4 ;-第七档end case;if reset=1then-复位清零s_state:=s0;elsif clkevent and clk=1then-时钟上升沿到达时,状态转换case s_state iswhen s0=cnt:=0 ;clkoutclkout=0 ;if stop=1thens_state
31、:=s0;-相当于无客上车elsif sp=000thens_state:=s1;- 有客上车但车速为0,即刚上车仍elsif cnt=kinside thencnt:=0 ;clkoutwaittime:=0 ;timecountif sp=000thent_state:=t2 ;else欢迎下载精品学习资源waittime:=0 ;t_state:=t1 ;end if ;when t2=waittime:=waittime+1;-等待时间加 1 timecount=0 ;if waittime=1000 thentimecount=1 ;- 产生一个时间计费脉冲waittime:=0 ;
32、elsif stop=1thent_state:=t0 ;elsif sp=000thent_state:=t2 ;欢迎下载精品学习资源end if ;end process;end rtl ;1Kilometers 模块elseend if ;end case;timecount=0 ;t_state:=t1 ;欢迎下载精品学习资源library ieee ;-加载库文件use ieee.std_logic_1164.all ;use ieee.std_logic_unsigned.all ;entity kilometers isport- 定 义 输 入输出端口欢迎下载精品学习资源end
33、 kilometers ;clkout,reset:in std_logic ;kmcnt1:out std_logic_vector3 downto 0 ;kmcnt2:out std_logic_vector3 downto 0 ;kmcnt3:out std_logic_vector3 downto 0;欢迎下载精品学习资源architecture rtl of kilometers is begin欢迎下载精品学习资源begin位processclkout,reset-启动进程variable km_reg:std_logic_vector11 downto 0 ;if reset=1
34、then-复位清零km_reg:=000000000000 ;elsif clkoutevent and clkout=1then-时钟上升沿到达时进行计程if km_reg3 downto 0=1001then-对应里程特别位km_reg:=km_reg+0111 ;- 特别位向个分位进欢迎下载精品学习资源end if ;else end if ;km_reg3 downto 0:=km_reg3 downto 0+0001;欢迎下载精品学习资源kmcnt1=km_reg3 downto 0 ;kmcnt2=km_reg7 downto 4 ;kmcnt3=000001000000then
35、price=0100 ;欢迎下载精品学习资源elseend if ;price=0011ORkmcnt3=0001then enable=1;欢迎下载精品学习资源elseend if ;end process;enable=0;欢迎下载精品学习资源kmmoney2:processreset,clkout,clk,enable,price,kmcnt2欢迎下载精品学习资源variable reg2:std_logic_vector11 downto 0 ;variable clkout_cnt:integer range 0 to 10 ;beginifreset=1thencash1001then-产生进位reg27 downto 0:=reg27 downto 0+00000111;if reg27 downto 41001thencash=reg2+000001100000 ;欢迎下载精品学习资源elseelseend if ;cash=reg2;欢迎下载精品学习资源cash00001001thenreg27 downto 0:=- 十reg27 downto 0+00000110+price ;if reg27 downto 41001then-百位进位cash=reg2+00000110000
限制150内