课程设计出租车自动计费器的设计.doc

上传人:laozhun 文档编号:4135658 上传时间:2023-04-07 格式:DOC 页数:24 大小:148.50KB
返回 下载 相关 举报
课程设计出租车自动计费器的设计.doc_第1页
第1页 / 共24页
课程设计出租车自动计费器的设计.doc_第2页
第2页 / 共24页
课程设计出租车自动计费器的设计.doc_第3页
第3页 / 共24页
课程设计出租车自动计费器的设计.doc_第4页
第4页 / 共24页
课程设计出租车自动计费器的设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《课程设计出租车自动计费器的设计.doc》由会员分享,可在线阅读,更多相关《课程设计出租车自动计费器的设计.doc(24页珍藏版)》请在三一办公上搜索。

1、课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 信息工程学院 题 目: 出租车自动计费器的设计 一、设计目的根据设计要求,完成对出租车自动计费器的设计。进一步加强对Quartus的应用和对VHDL语言的使用。二、设计内容和要求设计一个出租车自动计费器,计费包括起步价、行车里程计费、等待时间计费3部分,用4位数码管显示金额、最大值为999.9元,最小计价单元为0.1元,行程3公里内,且等待累计时间3分钟内,起步费为8元,超过3公里,以每公里1.6元计费,等待时间单价为每分钟1元;用两位数码管显示等待时间,最大值为59min。掌握Quartus的操作和使用方法。利用Quartus软件

2、对所设计的电路进行仿真分析。 三、初始条件CPLD,七段数码管,时钟信号,3-8译码器,拨码开关等。四、时间安排1、2008年6月30日集中,作课设具体实施计划与课程设计报告格式的要求说明。2、2008年6月30日至2008年7月3日,查阅相关资料,学习电路的工作原理。3、2008年7月4日至2008年7月9日,电路调试和设计说明书撰写。4、2008年7月10日上交课程设计成果及报告,同时进行答辩。课设答疑地点:鉴主13楼电子科学与技术实验室。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目 录摘 要1绪 论12设计内容及要求22.1 设计的目的及主要任务2 2.1.1 设计

3、的目的 2 2.1.2 设计任务及主要技术指标22.2 设计思想23 设计原理及单元模块设计33.1设计原理及方法33.2单元模块设计33.2.1分频/计量控制模块33.2.2译码显示模块73.3顶层电路的设计114电路的仿真及分析134.1单元模块的仿真及分析134.1.1分频/计量控制模块134.1.2译码显示模块144.2顶层电路的仿真及分析155硬件调试176 心得体会18参考文献19摘要本文介绍了一种采用单片CPLD芯片进行出租车计费器的设计方法,主要阐述如何使用新兴的EDA器件取代传统的电子设计方法,利用CPLD的可编程性,简洁而又多变的设计方法,缩短了研发周期,同时使出租车计费器

4、体积更小功能更强大。本设计实现了出租车计费器所需的一些基本功能,计费包括起步价、行车里程计费、等待时间计费,同时考虑到出租车行业的一些特殊性,更注重了把一些新的思路加入到设计中。主要包括采用了CPLD芯片,使用VHDL语言进行编程,使其具有了更强的移植性,更加利于产品升级。关键词:VHDL;计费器;Quartus;CPLDAbstract This paper describes the use of a single chip CPLD for the design of accounting-fee machine, mainly on how to use the emerging ED

5、A electronic devices designed to replace traditional methods, using the programmable CPLD, concise and changing the design Ways to shorten the development cycle, so that taxi accounting-fee machine in a smaller more powerful. The design and implementation of the taxi accounting-fee machine for some

6、basic functions, including billing starting price, driving metered, the waiting time billing, taking into account the special nature of some of the taxi industry, to pay more attention to a number of new Ideas into the design. Mainly including the use of the CPLD chip, the use of VHDL programming, s

7、o as to make it a stronger transplanted, and more conducive to product upgrades. Key words: VHDL, accounting-fee machine , Quartus , CPLD1 绪论人类社会已经进入信息化时代,信息社会的发展离不开电子产品的进步。现代电子产品在性能提高、复杂度降低的同时,价格却一直呈下降趋势,而且产品更新换代的步伐也越来越快,实现这种进步的主要原因就是生产制造技术和电子设计技术的发展。前者以微细加工技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数万个晶体管;后

8、者的核心就是EDA技术。没有EDA技术的支持,想要完成超大规模集成电路的设计制造是不可想象的,反过来,生产制造技术的不断进步又必须对EDA技术提出新要求。EDA代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(VHDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件1。可编程逻辑器件自20世纪70年代以来,经历了PAL、GAL、CPLD、FPGA几个发展阶段,其中CPLD、FPGA属高密度可编程逻辑器件,目前集成度以高达200万门

9、/片,它将掩膜ASIC集成度高的优点和可编程逻辑器件设计生产方便的特点结合在一起,特别适合于样品研制和小批量产品开发,使产品能以最快的速度上市,而当市场扩大时,它可以和容易地转由ASIC实现,因此开发风险也大为降低。CPLD/FPGA器件已成为现代高层次电子设计方法的实现载体。 VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为3种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用VHDL来完成。另外,VHDL还有以下优点:VHDL的宽范围描述能力使它成为高层次设计的核心

10、,将设计人员的工作重心转移到了系统功能的实现和调试上,只需要花较少的精力用于物理实现;VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用;VHDL的设计不依赖于特定的器件,方便了工艺的转换。VHDL是一个标准语言,为众多的EDA场上支持,因此移植性好2。2 设计内容及要求2.1设计的目的及主要任务2.1.1设计的目的学会在Quartus环境中运用VHDL语言设计方法构建具有一定逻辑功能的模块,并能运用图形设计方法完成顶层原理图的设计。掌握出租车自动计费器的主要功能与在CPLD中的实现方法。 2.1.2 设计任务及主要技术指标设计一个出租车

11、自动计费器,计费包括起步价、行车里程计费、等待时间计费3部分,用4位数码管显示金额、最大值为999.9元,最小计价单元为0.1元,行程3公里内,且等待累计时间3分钟内,起步费为8元,超过3公里,以每公里1.6元计费,等待时间单价为每分钟1元;用两位数码管显示等待时间,最大值为59min。运用Quartus软件中的仿真功能对所设计的出租车自动计费器的各个模块及顶层电路的功能进行仿真分析。将所设计的整个系统写入CPLD器件中,加上需要的外围电路在实验箱上实现整个系统的硬件搭建。2.2设计思想本次设计首先在Quartus环境中对出租车自动计费器的各个部分利用VHDL这一硬件描述语言予以设计,生成模块

12、。而整个设计的核心部分就在分频/计量模块,该模块完成的功能主要包括计费脉冲的产生,等待计时、计价、计程功能。随后运用Quartus中的仿真功能对其予以仿真,从仿真的结果中分析程序的正确性。待所有模块的功能正确之后,运用原理图搭建顶层电路并进行整体仿真直至达到最初的设计要求,最后再在实验箱上检验设计的正确与否。3 设计原理及单元模块设计3.1 设计原理及方法根据层次化设计理论,该设计问题自顶向下可分为分频模块、控制模块、计量模块、译码动态扫描显示模块,其系统框图如图所示3。图3-1 出租车自动计费器系统框图3.2 单元模块设计3.2.1分频/计量控制模块分频模块对频率为240HZ的输入脉冲进行分

13、频,得到16HZ、10HZ、和1HZ的三种频率。该模块产生频率信号用于计费,每1HZ脉冲为0.1元计费控制,10HZ信号为1元的计费控制,16HZ信号为1.6元计费控制。计量控制模块是出租车计费的主体部分,该模块主要完成等待计时功能、计价功能、计程功能,同时产生3分钟的等待计时始能控制信号en1 、行程3公里外的是能控制信号en0。其中计价功能主要完成的任务是:行程3公里内,且等待累计时间在3分钟内,起步费为8元;3公里以外以每公里1.6元计费。等待时间3分钟以外以每分钟1元计费。计时功能主要完成的任务是:计算乘客的等待累计时间,计时的量程为59分,满量程自动归零。计程功能主要完成的任务是:计

14、算乘客所行驶的公里数,计程器的量程为99公里,满量程自动归零4。根据前面的描述,该电路的核心部分就是分频/计量控制电路,通过VHDL语言的顺序语句IF-THEN-ELSE根据一个或一组条件来选择某一特定的执行通道,生成计费数据、计时数据和里程数据。其VHDL源程序如下。LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_unsigned.all;USE IEEE.std_logic_arith.all;ENTITY taxi isport(clk_240:in std_logic; -频率为240Hz的时钟 start:in

15、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 taxi;architecture behav of taxi issignal f_10,f_16,f_1:std_logic; -频率

16、为10Hz,16Hz,1Hz的信号signal q_10:integer range 0 to 23; -24分频器signal q_16:integer range 0 to 14; -15分频器signal q_1:integer range 0 to 239; -240分频器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_l

17、ogic_vector(2 downto 0); -分的十位计数器 signal m0:std_logic_vector(3 downto 0); -分的个位计数器signal en1,en0,f:std_logic; -使能信号beginfeipin:process(clk_240,start)begin if clk_240event and clk_240=1 then if start=0 then q_10=0;q_16=0;f_10=0;f_16=0;f_1=0;f=0; else if q_10=23 then q_10=0;f_10=1; -此IF语句得到频率为10Hz的信号

18、else q_10=q_10+1;f_10=0; end if; if q_16=14 then q_16=0;f_16=1; -此IF语句得到频率为16Hz的信号 else q_16=q_16+1;f_16=0; end if; if q_1=239 then q_1=0;f_1=1; -此IF语句得到频率为1Hz的信号 else q_1=q_1+1;f_1=0; end if; if en1=1 then f=f_10; -此IF语句得到计费脉冲f elsif en0=1 then f=f_16; else f=0; end if; end if; end if;end process;m

19、ain:process(f_1)begin if start=0 then w=0;en1=0;en0=0;m1=000;m0=0000;k1=0000;k0=0000; elsif f_1event and f_1=1 then if stop=1 then if w=59 then w=0; -此IF语句完成等待计时 if m0=1001 then m0=0000; -此IF语句完成分计数 if m1=101 then m1=000; else m1=m1+1; end if; else m00000010 then en1=1;en0=0; -此IF语句得到en1使能信号 else en

20、1=0;en0=0; end if; else w=w+1;en1=0;en0=0; end if; elsif fin=1 then if k0=1001 then k0=0000; -此IF语句完成公里脉冲计数 if k1=1001 then k1=0000; else k1=k1+1; end if; else k000000010 then en0=1; -此IF语句得到en0使能信号 else en0=0; end if; else en1=0;en0=0; end if;cha3=c3;cha2=c2;cha1=c1;cha0=c0; -费用数据输出km1=k1;km0=k0;mi

21、n1=0&m1;min0=m0; -公里数据、分钟数据输出 end if;end process main;jifei:process(f,start)begin if start=0 then c3=0000; c2=0000; c1=1000; c0=0000; elsif fevent and f=1 then if c0=1001 then c0=0000; -此IF语句完成对费用的计数 if c1=1001 then c1=0000; if c2=1001 then c2=0000; if c3=1001 then c3=0000; else c3=c3+1; end if; els

22、e c2=c2+1; end if; else c1=c1+1; end if; else c0=c0+1; end if; end if;end process jifei;end behav;该源程序包含3个进程模块。fenpin进程对频率为240HZ的输入脉冲进行分频,得到的频率为16HZ、10HZ和1HZ的3种计费频率信号,供main进程和jifei进程进行计费、计时、计程之用;main进程完成等待计时功能、计程功能,该模块将等待时间和行驶公里数变换成脉冲个数计算,同时产生3 分钟的等待计时使能控制信号en1、行程3公里外的使能控制信号en0;jifei进程将起步价8预先固定在电路中,

23、通过对计费脉冲个数的统计,计算出整个费用数据。生成的元件符号如图3-2所示。图3-2 出租车自动计费器系统的主体FPGA电路taxi的元件符号3.2.2 译码显示模块该模块经过8选1选择器将计费数据(4位BCD 码)、计时数据(2位BCD码)、计程数据(2位BCD码)动态显示输出。其中计费数据jifei4jifei1送入译码显示模块进行译码,然后送至以百元、十元、元、角为单位对应的数码管上显示,最大显示为999.9元;计时数据送入译码显示模块进行译码,最后送至一分为单位对应的数码管上显示,最大显示为59s ;计程数据送入译码显示模块进行译码,最后送至以公里为单位的数码管上显示,最大显示为99公

24、里。该模块包含8选1 选择器、模8计数器、七段显示译码器3个子模块。其VHDL源程序如下。模8计数器se的VHDL源程序。LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_unsigned.all;ENTITY se IS port(clk:in std_logic; a:out std_logic_vector(2downto 0);END se;ARCHITECTURE rt1 of se ISbegin process(clk) variable b:std_logic_vector(2 downto 0); begi

25、n if(clkevent and clk=1)then if(b=111)then b:=000; else b:=b+1; end if; end if; ad=a1;dpd=a2;dpd=a3;dpd=a4;dpd=b1;dpd=b2;dpd=t1;dpd=t2;dpnull; end case; end process;end rt1;源程序中输入信号c2.0为系统选择输入,a1a2a3a4为计费器数据BCD码输入,b1b2为里程数BCD码输入,t1t2为计时时间的BCD码输出,d为4位BCD码输出,dp为小数点信号。生成的元件符号如图3-4所示。图3-4选择器mux8_1的元件符号七

26、段数码显示译码器di_LED的VHDL源程序。LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_unsigned.all;ENTITY di_LED IS port(d:in std_logic_vector(3 downto 0); q:out std_logic_vector(6 downto 0);end di_LED;architecture rt1 of di_LED isbegin process(d) begin case d is when0000=qqqqqqqqqq=1101111; end case;

27、end process;end rt1;源程序中输入信号d3.0位BCD码输入,q6.0为七段译码输出(高电平有效)。生成的元件符号如图3-5所示。图3-5七段数码显示译码器di_LED的元件符号3.3顶层电路的设计根据图3-1出租车自动计费器系统框图,出租车自动计费顶层电路分为4个模块,它们是出租车自动计费器系统的主体FPGA电路taxi模块,模8计数器se模块,8选1选择器mux8_1模块,七段数码显示译码器di_LED模块,生成动态扫描显示片选信号的3-8译码器模块decode3_8。按已经确立的层次化设计思路,在图形编辑中调入前面的层次化设计方案中所设计的底层的元件符号taxi.sym

28、、mux8_1.sym、se.sym、di_LED. Sym,并加入相应的输入输出引脚与辅助元件。由于实验箱中有已经带有3-8译码器,所以在顶层电路的设计中就不再需要此模块。然后完成出租车自动计费器的顶层原理图搭建,最终得到的顶层电路原理图如图3-6所示。图3-6 出租车自动计费器顶层电路原理图4电路的仿真及分析在VHDL设计流程中,设计的验证是一个重要但费时的环节。由于验证方法手段不断改进和提高,对于一个系统的设计,提倡用软件、硬件协同验证方法,加速仿真过程。有经验的设计师认为,一个设计项目的成功与否,关键是仿真,其中涉及工作的90%时间花在仿真验证上。仿真有功能仿真与时序仿真之分。在逻辑综

29、合和布线之前对VHDL模型的逻辑功能进行仿真,可以有效提高效率。以下是对本次设计的各个模块以及顶层电路进行的功能仿真及分析5。4.1 单元模块的仿真及分析4.1.1分频/计量控制模块源程序中输入信号fin是汽车传感器提供的距离脉冲信号;start为汽车计价启动信号,当start=1时,表示开始计费(高电平有效),此时将计价器计费数据初值80(即8.0元)送入,计费信号变量(cha3cha2cha1cha0=0080),里程数清零(km1km0=00),计时计数器清零(min1min0=00);stop为汽车停止等待信号(高电平有效),当stop=1时表示停车等待状态,并开始等待计时计费。其无等

30、待时间的仿真输出波形如图4-1所示。图4-1 出租车自动计费器系统的主体FPGA电路taxi仿真输出波形(1)在图4-1中,stop=0即全程无停止等待时间,因此计时显示输出为00,该图中出租车总行驶22公里,等待累计时间为0分钟,总费用为38.4元;同理论计算的结果一致,仿真结果正确。有等待时间的仿真输出波形如图4-2所示。图4-2 出租车自动计费器系统的主体FPGA电路taxi仿真输出波形(2)图4-2中停车等待累计时间为4分钟,出租车总行驶36公里,总费用为61.8元;同力路计算的结果一致,仿真结果正确。4.1.2 译码显示模块该模块包含8选1 选择器、模8计数器、七段显示译码器3个子模

31、块,其仿真输出如下。模8计数器se的仿真,其仿真输出波形如图4 -3所示。图4-3 模8计数器se仿真输出波形图4-3中随着输入时钟clk上升沿的到来,输出a在07之间的作周期性变化。8选1选择器mux8_1的仿真,其中c2.0为系统选择输入,a1a2a3a4为计费器数据BCD码输入,b1b2为里程数BCD码输入,t1t2为计时时间的BCD码输出,d为4位BCD码输出,dp为小数点信号(仅计费数据输出时有一位小数)。其仿真输出波形如图4 -4所示。图4-4 选择器mux8_1仿真输出波形图4-4中随着系统的选择输入c从0依次变化到7,系统的输出d依次选择输出a1a2a3a4 b1b2 t1t2

32、的值,同时小数点信号dp在d选择输出a3时为高电平。七段数码显示译码器di_LED的仿真,其中d3.0为BCD码输入,q6.0为七段译码输出(高电平有效)。其仿真输出波形如图4-5所示。图4-5 七段数码显示译码器di_LED仿真输出波形4.2 顶层电路的仿真及分析根据图3-6完成出租车自动计费器的顶层原理图输入。电路连好线,对其编译和仿真。正确编译后输出的仿真波形如图4-6所示。图4-6 出租车自动计费器顶层电路仿真输出波形在图4-6中,STOP=0即全程无停止等待时间,因此计时显示输出为3F(00),该电路中出租车总行驶3F(0)7D(6)(即6公里),等待累计时间为3F(0)3F(0)(

33、0分钟),总费用为06(1)5B(2)7F(8)(即12.8元),仿真结果真确。VHDL语言设计的出现从根本上改变了以往数字电路的设计模式,使电路由硬件设计转变为软件设计,使电子设计的核心转化为VHDL语言的编程设计,这样提高了设计的灵活性,降低了电路的复杂程度,修改起来也很方便。并且整个设计很大一部分由电脑辅助来完成,大大缩短了设计周期,减少了设计费用,降低了设计风险6。 5 硬件调试仿真结果正确后,就可将文件下载到芯片中。连接硬件系统后,通上电源,经Quartus中的“PROGRAMMER”菜单,调出编程器窗口。一切就绪后,按下编程器窗口中的“START”按钮,设计的内容就开始下载到CPL

34、D芯片中。要想硬件调试能够取得成功,外围电路的设置是非常重要的。本次设计的硬件调试过程中的相关设置包括以下几个方面:时钟模块采用程序设计中最为相近的频率305HZ(相关跳线设置为JP1=1/16,JP2=1/16,JP3=1/16,JP=1/8,JP11=1/2);FIN、START、STOP均用拨码开关控制;数码管的段选及小数点只需对应连接即可;为选信号与sel2.0对应相连即可。打开电源,数码管有正确的数字显示。实验测试表明:该计费器实现了按预制参数自动计费(最大计费金额为9999元)、自动计程(最大计程公里数为99公里)、自动计时(最大计时时间为59min)等功能;能够实现行程3公里内,

35、且等待累计时间3分钟内,起步费为8元,超过3公里,以每公里1.6元计费,等待时间单价为每分钟1元,且预置参数可调范围大。由于采用了CPLD大规模可编程逻辑器件,整机功耗小、抗干扰能力强、系统稳定、工作可靠、升级方便。另外,根据实际需要,系统可方便地增加以下功能:通过芯片内部编程增加时钟功能(器件内部资源足够),既可为司机和乘客提供方便,又能为夜间行车自动调整收费标准提供参考;用CPLD的输出引线控制语音芯片,可向乘客发出问候语、提醒乘客告诉司机所要到达的地点、报出应收缴的费用等7。 误差分析。6 心得体会本次课程设计至此已经接近尾声,两周的时间虽然很短暂,但在这两个星期的设计过程中收获颇丰。设

36、计的核心内容就是Quartus环境中,利用VHDL语言设计出基于CPLD的出租车自动计费器。整个设计过程中首先对数字电路这门课程有了更深的了解,因为课程设计本身要求将以前所学的理论知识运用到实际的电路设计当中去,在电路的设计过程中,无形中便加深了对数字电路的了解及运用能力,对课本以及以前学过的知识有了一个更好的总结与理解;以前的数字实验只是针对某一个小的功能设计,而此次得EDA课程设计对我们的总体电路的设计的要求更严格,需要通过翻阅复习以前学过的知识确立了实验总体设计方案,然后逐步细化进行各模块的设计;其次,在电路仿真的过程中总会出现一些问题,需要我们细心解决,所以这两周下来,我对电路故障的排

37、查能力有了很大的提高;再次,通过此次课程设计,我对设计所用到的软件有了更加深刻地了解,这对我们以后的工作和学习的帮助都很有用处。感谢学校给我们这次机会,锻炼了我们的动手能力。通过这次课设让我明白了理论和实际操作之间差距,而且也让我很明确得意识到自己在数电上有很多的知识漏洞,以后应该多钻研一下。同时也感谢指导老师在设计过程中的辅导以及同学的帮助。参考文献1潘松,黄继业EDA技术与VHDL北京:清华大学出版社,2007.12宋嘉玉,孙丽霞EDA实用技术北京:人民邮电出版社,2006.12 3齐洪喜,陆颖VHDL电路设计实用技术北京:清华大学出版社,2004.54刘艳萍,高振斌,李志军EDA实用技术及应用北京:国防工业出版社,2006.15章彬宏EDA应用技术北京:北京理工大学出版社,2007.76汉泽西EDA技术及其应用北京:北京航空航天大学出版社,2004.57谭会生EDA技术基础长沙:湖南大学出版社,2004.8本科生课程设计成绩评定表姓 名性 别 专业、班级课程设计题目: 出租车自动计费器的设计课程设计答辩或质疑记录:成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号