基于fpga出租车计价器设计大学本科毕业论文.doc

上传人:知****量 文档编号:91633806 上传时间:2023-05-27 格式:DOC 页数:25 大小:625.04KB
返回 下载 相关 举报
基于fpga出租车计价器设计大学本科毕业论文.doc_第1页
第1页 / 共25页
基于fpga出租车计价器设计大学本科毕业论文.doc_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《基于fpga出租车计价器设计大学本科毕业论文.doc》由会员分享,可在线阅读,更多相关《基于fpga出租车计价器设计大学本科毕业论文.doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、沈阳工程学院课程设计摘 要 本文介绍了一种采用单片FPGA芯片进行出租车计费器的设计方法,主要阐述如何使用新兴的EDA器件取代传统的电子设计方法,利用FPGA的可编程性,简洁而又多变的设计方法,缩短了研发周期,同时使出租车计费器体积更小功能更强大。本设计实现了出租车计费器所需的一些基本功能,计费包括起步价、行车里程计费、等待时间计费,同时考虑到出租车行业的一些特殊性,更注重了把一些新的思路加入到设计中。主要包括采用了FPGA芯片,使用VHDL语言进行编程,使其具有了更强的移植性,更加利于产品升级。关键词:VHDL,计费器,Quartus,FPGA,EDAIAbstractThis paper

2、introduces a design method for taxi meter using a single FPGA chip, mainly on how to use the new EDA device to replace the conventional electronic design method, using FPGA programmability, the design method which is simple and variable, shorten the development cycle, at the same time the taxi meter

3、 smaller function more powerful. The design and implementation of the taxi meter of some of the basic functions, billing, including the starting price, mileage billing, waiting time and billing, considering the particularity of the taxi industry, pay more attention to add some new ideas to the desig

4、n. Mainly include the use of the FPGA chip, using VHDL language programming, so that it has a stronger portability, more conducive to product upgrades.Keywords VHDL, billing, Quartus II, FPGA, EDAI沈阳工程学院课程设计目 录摘 要IIAbstractIII1 引言12 VHDL简述及应用22.1VHDL简述22.2 VHDL的应用23 FPGA的简述33.1 FPGA的介绍33.2 FPGA的整体结构

5、33.3 Altera公司的FPGA34方案的论证与选择54.1方案论证54.2方案的选择65主要模块设计75.1按键模块75.2控制模块75.3 计费模块85.4里程模块85.5显示模块95.6分频模块96模块仿真分析116.1按键模块仿真116.2控制模块仿真116.3计费模块仿真126.4里程模块仿真126.5分频模块仿真13结论14致谢15参考文献16附录117附录218基于FPGA出租车计价器设计1 引言随着EDA 技术的发展及大规模可编程逻辑器件CPLD/FPGA 的出现, 电子系统的设计技术和工具发生了巨大的变化, 通过EDA 技术对CPLD/FPGA编程开发产品, 不仅成本低、

6、周期短、可靠性高,而且可随时在系统中修改其逻辑功能。本文介绍了一定外围电路组成的出租车计费器系统。2 VHDL简述及应用2.1VHDL简述VHDL具有多层次描述系统硬件功能的能力,支持自顶向下和基于库的设计特点。其开发流程:在顶层用方框图或硬件语言对电路的行为进行描述后,进行系统仿真验证和纠错。再用逻辑综合优化工具生成具体的门级逻辑电路的网表。然后通过适配器将网表文件配置于指定的目标器件,产生最终下载文件或配置文件。最后把适配后生成的下载或配置文件通过编程器或编程电缆下载到具体的FPGA/CPLD器件中去,以便进行硬件调试和验证,而实现可编程的专用集成电路ASIC的设计。它出现于80年代后期,

7、最初是由美国国防部开发出来的,是为了供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。VHDL是超高速集成电路硬件描述语言,是一种用于电路设计的高级语言。VHDL主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中,同时也被一些实力较为雄厚的单位用来设计ASIC。2.2 VHDL的应用VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL系统设计与其他硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统

8、设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。3 FPGA的简述3.1 FPGA的介绍目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。 系统设计师可以根据需要通过可编辑的连接把FPG

9、A内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。3.2 FPGA的整体结构FPGA具有掩膜可编程门阵列的通用结构,它由逻辑功能块排成阵列组成,并由可编程的互连资源连接这些逻辑功能块来实现不同的设计。下面以Xilinx公司的FPGA为例,分析其结构特点。FPGA一般由三种可编程电路和一个用于存放编程数据的静态存储器SRAM组成。这三种可编程电路是:可编程逻辑块(ConfigurableLogicBlock,CLB)、输入/输出模块(I/OBlock,IOB)和互连资源(Interco

10、nnectResource,IR)。FPGA的基本结构如图1.19所示,可编程逻辑块(CLB)是实现逻辑功能的基本单元,它们通常规则地排列成一个阵列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源(IR)包括各种长度的连线线段和一些可编程连接开关,它们将各个CLB之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路3.3 Altera公司的FPGAAltera公司的Cyclone II系列扩大了FPGA的密度,最多可以达到68416个逻辑单元,并且还提供了622个可用的输入/输出引脚和1.1M比特的嵌入

11、式寄存器。Cyclone II器件的制造基于300mm晶圆,采用台积电90nm、低K值电介质工艺,这种工艺技术采用了低绝缘体过程,确保了快速性、有效性和低成本。Cyclone II器件通过使硅片的面积最小化,所以可以在单芯片上支持复杂的数字系统,而且在成本上还可以和ASIC进行竞争。Altera 最新一代低价位的FPGAcyclone II FPGA系列,和同类90nmFPGA器件相比,它提高了百分之六十的性能和降低了一半的功耗。它的低成本和优化特征使Cyclone II 系列为各种各样的汽车、消费、通讯、视频处理、测试以及测量、和其他最终市场提供了理想的解决方案。4方案的论证与选择4.1方案

12、论证方案一运算控制器分频器时钟信号按键控制LED状态显示七段译码器数码管显示计费信号计程信号3/8译码器分频模块控制计数模块显示模块方案二顶层元件 按键模块 控制模块 计费模块 显示模块 启动键 停止键 里程显示 费用显示 费用计数 里程计数二选一多路选择器4.2方案的选择 经本人认真仔细研究,为了更好地实现出租车计价器EDA设计,本人最终设计思路选择方案二。最初的思路是1hz的时钟信号传输给按键模块,然后按键模块控制控制模块,控制模块同时控制计费模块和里程模块,最终传输给显示模块。所以方案二更适合作为本设计的方案。 5主要模块设计5.1按键模块分别从a、b输入两个二位四进制数值,a3、a2、

13、a1、a0,b3、b2、b1、b0,由比较器比较大小,当ab时X输出高电平,当ab时X输出高电平,当ab时Y输出高电平,当a=b时Z输出高电平,其他情况下都为低电平。 上面的仿真波形是给a、b随机加上时钟用高低电平表示1和0然后进行仿真实验,通过对仿真输出的X、Y、Z的高低电平分析,该程序能够实现题目要求的两个二位四进制数值的比较。结果符合设计要求。6.2控制模块仿真 图6.2 控制模块仿真 a,b是两个数据通道输入端口,s是通道选择控制信号,y为数据输出端。当s取值分别为1和0时,输出端y将分别输出来自输入口a和b的数据,针对选通控制端s上所加的不同电平,输出端y将有对应的信号输出。根据波形

14、所示,符合控制模块设计要求。6.3计费模块仿真图6.3 计费模块仿真 据图6-3所示的仿真,根据本仿真glclk为时钟信号为1HZ,出租车初始钱为7块,之后每增加一公里钱就会加一块,共四个数码管,每个管显示到9后进一位然后清零,共可以显示四位金钱数。6.4里程模块仿真图6.4 里程模块仿真 据图6-4所示的仿真,根据本仿真glclk为时钟信号为1HZ,出租车初始公里为0,之后每增加一公里公里数就会加一,共四个数码管,每个管显示到9后进一位然后清零,共可以显示四位公里数。6.5分频模块仿真图6.5 分频模块仿真结论该设计电路基本能满足乐曲硬件演奏电路的EDA设计要求。一个星期的EDA课程设计马上

15、就要结束了。时间总是过得很快,经过一周的课程设计的学习,我已经自己能制作一个出租车计价器,这其中的兴奋是无法用言语表达的。学习EDA这段时间也是我们一学期最忙的日子,不仅面临着期末考试,而且中间还有一些其他科目的实验,更为紧急的是,之前刚做完的信号实验,本周必须完成EDA的课程设计。任务对我们来说,显得很重。为了尽快完成EDA的课程设计,我一天也没歇息。相关知识缺乏给学习它带来很大困难,为了尽快掌握它的用法,我照着原理图学习视频一步一步做,终于知道了如何操作。刚开始我网上搜索了一下相关内容,顺便到学校图书馆借相关书籍,经过不断比较与讨论,最终敲定了电路原理图,并且询问了兄弟班关于元器件的参数情

16、况。在做电路仿真时,我程序都已经编程完事,修改好参数后,创建网络列表时系统总是报错,无论我怎样修改都不行,后来请教同学,他们也遇到了同样的困惑。任何事情都不可能是一帆风顺的,开始是创建网络表时出现问题,后来是没有差错但出来的仿真波形不是预计中的,这确实很难修改。输出时仿真波形总是一条直线,我弄了一晚上也找不出原因,整个人也显得焦躁不已。接下来,虽然我们没有实物阶段。但是我想之前的电工实习让我简单的接触到了焊接实物,以为会比较轻松,但实际焊接起来才发现此次与电工实习中的焊接实物有很大的不同,要自己对焊板上元件进行布置和焊接电路元件连线,增加了很大的难度。由于采用了电路板,为了使步线美观、简洁,还

17、真是费了我们不少精力,经过不断的修改与讨论,最终结果还比较另人满意。经过这段课程设计的日子,我发现从刚开始的MAX+PLUS到现在的Quartus II,不管是学习哪种软件,都给我留下了很深的印象。由于没有接触,开始学得很费力,但到后来就好了。在每次的课程设计中,遇到问题,最好的办法就是问别人,因为每个人掌握情况不一样,不可能做到处处都懂,发挥群众的力量,复杂的事情就会变得很简单。这一点我深有体会,在很多时候,我遇到的困难或许别人之前就已遇到,向他们请教远比自己在那冥思苦想来得快。通过这次课程设计,我明白了一个团队精神的重要性,因为从头到尾,想出出主意,来解决中间出现的各种问题。从原理图的最终

18、敲定,到波形的仿真,每项工作都完成得很棒,衔接得很好,才使我很快的完成了任务。尽管现在只是初步学会了EDA,离真正掌握还有一定距离,但学习的这段日子确实令我收益匪浅,不仅因为它发生在特别的时间,更重要的是我又多掌握了一门新的技术。致谢本人的学位论文是在我的专业课老师孟老师的亲切关怀和悉心指导下完成的。他们严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,孟老师都始终给予我细心的指导和不懈的支持。在此谨向孟老师致以诚挚的谢意和崇高的敬意。在此,我还要感谢在一起愉快的度过大学生活的每个可爱的同学们和尊敬的老师们,正是由于你们的帮助和支持,我才能

19、克服一个一个的困难和疑惑,直至本文的顺利完成。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!谢谢你们!参考文献1潘松著.EDA技术实用教程-VHDL版(第五版)M),科学出版社,20141王伟著.Verilog HDL程序设计与应用M),人民邮电出版社,20052潘松. CPLD/FPGA 在电子设计中的应用前景J.电子技术应用,1999,25( 7) 3张原.可编程逻辑器件设计及应用M.北京: 机械工业出版社,20034阎石. 电子技术基础( 数字部分) M.北京:清华大学出版社,20005 Al

20、era公司.Data Book.1999dd6王振红.VHDL 数字电路设计与应用实践教程M.北京: 机械工业出版社, 2003.7 Mark Zwolinski.VHDL 数字系统设计M.北京: 电子工业出版社, 2002.8LIN Yuan Design of the taximeter system based on CPLD/FPGA9LI B i n The Design of Frequency Meter for Equal ObservationsBased on CPLD and C Language10艾红,王捷,等.数字频率计中c语言编程的研究团.仪器仪表学报,2002,

21、23增刊(3):7 -8.11郭改枝,李树华,王志慧.内蒙古大学学报(自然科学版)田.2004,35(1):83-87.12乔长安,陈运涛,张富平,等.等精度频率测量方法Jl.火力与指挥控制,2003,28增刊:61-6213王核著.Verilog HDL程序设计与应用M),人民大学出版社,,2007:139-172.14陈逸译.USB大全Ml.中国电力出版社,2001.15Cypresss emiconductor SL- 811HS embed2ded USB hostSlave附录1总电路图如下:附录2 分频模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.A

22、LL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DIV ISPORT (CLK:IN STD_LOGIC; K_OR,K1,K2:OUT STD_LOGIC); END;ARCHITECTURE BHV OF DIV ISSIGNAL C1,C2:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL M1,M2:STD_LOGIC;BEGINPROCESS(CLK,C1) BEGINIF CLKEVENT AND CLK =1then IF (C1=11000111) THEN C1=00000000; ELSE C1=C1+1;END I

23、F;IF (C1=00000001) THEN M1=NOT M1; ELSIF (C1=00000011)THEN M1=NOT M1;END IF;END IF;END PROCESS;PROCESS(CLK,C2) BEGINIF CLKEVENT AND CLK =1then IF (C2=11000111) THEN C2=00000000; ELSE C2=C2+1;END IF;IF (C2=00000001) THEN M2=NOT M2; ELSIF (C2=00000011)THEN M2=NOT M2;END IF;END IF;END PROCESS;K1=M1; K2

24、=M2; K_OR=M1 OR M2 ;END BHV;多路选择器模块entity mux21a is port(a,b,s:in bit; y:out bit);end entity mux21a;architecture bhv of mux21a is begin process(a,b,s) begin if(s=1) then y=a;else y b) then X =1; Y =0; Z =0; elsif(a b) then X =0; Y =1; Z =0; ELSE X =0; Y =0; Z =1; end if; end process; end behave;计费模块

25、library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt_fy isport(glclk: in std_logic; reset:in std_logic;pul:in std_logic;money0:out std_logic_vector(3 downto 0);money1:out std_logic_vector(3 downto 0);money2:out std_logic_vector(3 downto 0);money3:out std_logic_vector(3

26、 downto 0);end;architecture behav of cnt_fy issignal money_cnt0:std_logic_vector(3 downto 0);signal money_cnt1:std_logic_vector(3 downto 0);signal money_cnt2:std_logic_vector(3 downto 0);signal money_cnt3:std_logic_vector(3 downto 0);beginprocess(glclk)beginif reset=1 thenmoney_cnt0=0111;money_cnt1=

27、0000;money_cnt2=0000;money_cnt3=0000;elsif glclkevent and glclk=0 thenif money_cnt3=9 and money_cnt2=9 and money_cnt1=9 and money_cnt0=9 thenmoney_cnt0=0000; money_cnt1=0000; money_cnt2=0000; money_cnt3=0000; elsif money_cnt3/=9 and money_cnt2=9 and money_cnt1=9 and money_cnt0=9 thenmoney_cnt0=0000;

28、 money_cnt1=0000; money_cnt2=0000;money_cnt3=money_cnt3+0001;elsif money_cnt2/=9 and money_cnt1=9 and money_cnt0=9 thenmoney_cnt0=0000; money_cnt1=0000; money_cnt2=money_cnt2+0001;money_cnt3=money_cnt3;elsif money_cnt1/=9 and money_cnt0=9 thenmoney_cnt0=0000; money_cnt1=money_cnt1+0001;money_cnt2=mo

29、ney_cnt2;money_cnt3=money_cnt3;elsif money_cnt0/=9 then money_cnt0=money_cnt0+0001;money_cnt1=money_cnt1;money_cnt2=money_cnt2;money_cnt3=money_cnt3;end if;end if;end process;money0=money_cnt0;-+0011;money2=money_cnt2;money1=money_cnt1;money3=money_cnt3;end;计程模块library ieee;use ieee.std_logic_1164.a

30、ll;use ieee.std_logic_unsigned.all;entity cnt_gl isport(glclk:in std_logic;reset:in std_logic;km_cnt0:out std_logic_vector(3 downto 0);km_cnt1:out std_logic_vector(3 downto 0);km_cnt2:out std_logic_vector(3 downto 0);km_cnt3:out std_logic_vector(3 downto 0);end;architecture behav of cnt_gl issignal

31、cnt0:std_logic_vector(3 downto 0); signal cnt1:std_logic_vector(3 downto 0); signal cnt2:std_logic_vector(3 downto 0); signal cnt3:std_logic_vector(3 downto 0); beginprocess(reset,glclk)beginif reset=1 thencnt0=0000; cnt1=0000; cnt2=0000; cnt3=0000; elsif glclkevent and glclk=0 thenif cnt3=9 and cnt

32、2=9 and cnt1=9 and cnt0=9 thencnt0=0000; cnt1=0000; cnt2=0000; cnt3=0000; elsif cnt3/=9 and cnt2=9 and cnt1=9 and cnt0=9 thencnt0=0000; cnt1=0000; cnt2=0000;cnt3=cnt3+0001;elsif cnt2/=9 and cnt1=9 and cnt0=9 thencnt0=0000; cnt1=0000; cnt2=cnt2+0001;cnt3=cnt3;elsif cnt1/=9 and cnt0=9 thencnt0=0000; cnt1=cnt1+0001;cnt2=cnt2;cnt3=cnt3;elsif cnt0/=9 then cnt0=cnt0+0001;cnt1=cnt1;cnt2=cnt2;cnt3=cnt3;end if;end if;end process;km_cnt0=cnt0;km_cnt1=cnt1;km_cnt2=cnt2;km_cnt3LED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7S NULL; END CASE;END IF;END PROCESS; END;21

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁