基于FPGA编程的出租车计价器报告_第1页
基于FPGA编程的出租车计价器报告_第2页
基于FPGA编程的出租车计价器报告_第3页
基于FPGA编程的出租车计价器报告_第4页
基于FPGA编程的出租车计价器报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学 号: 课 程 设 计题 目学 院专 业班 级姓 名指导教师年月日 课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 主要任务: 1、课程设计工作量:1周。 2、技术要求: 设计一个符武汉市合现行计价标准的TAXI计价器。计价方案见附件。 确定设计方案,按功能模块设计分电路,画出总体电路原理图,阐述基 本原理。 用Quartus软件完成设计,下载至开发板上运行。 查阅至少5篇参考文献。 按武汉理工大学课程设计工作规范要求撰写设计报告书。全文用A4纸打印。时间安排: 1、 年 月初作课设具体实施计划与课程设计报告格式的要求说明。 2、 年 月 日 至 年 月 日为课程设计

2、时间。 3、 年 月 日完成课程设计报告与答辩。 指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日 目录1课程设计目的12设计任务与要求22.1设计任务22.2设计要求23系统组成24模块设计34.1秒分频模块34.2控制模块34.3计量模块34.3.1计价部分34.3.2计时部分44.3.3计程部分44.4译码显示模块45程序调试运行45.1顶层原理图45.2仿真结果56硬件验证66.1引脚锁定66.2硬件验证情况77、课程设计总结77.1、收获77.2、心得体会8参考文献9附录10出租车自动计价器的设计1课程设计目的 为培养学生树立正确的设计思想和实事求是的工作作风,学习

3、运用所学基础知识理论、专业知识、基本技能去分析和解决工程技术实际问题,提高学生的综合素质,使学生成为工程应用型合格人才,故进行EDA技术及应用的课程设计。帮助学生全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。2设计任务与要求2.1设计任务本课题要求设计车租车自动计价器,能基本实现自动计价的功能。2.2设计要求本出租车计价器的计费系统:行程3公里内,且等待累计时间2分钟内,起步费

4、为10元;3公里外以每公里1.6元计费,等待累计时间2分钟外以每分钟1.5元计费。并能显示行驶公里数、等待累计时间、总费用。设计的主要技术指标如下:、计价范围:0999.9元 计价分辨率:0.1元、计程范围:099公里 计程分辨率:1公里、计时范围:059分 计时分辨率:1分3系统组成出租车自动计价器的系统方框图如图1所示:它有分频模块、控制模块、计时模块、计费模块及显示等模块组成。显示时钟信号等待信号分频器计费公里脉冲计费/复位计程计时控制器图1.出租车自动计价器的系统方框图4模块设计4.1秒分频模块 秒分频模块对频率为240Hz的输入脉冲进行分频,得到的频率为16Hz,15Hz和1Hz的三

5、种频率。该模块产生频率信号用于计费,每个1HZ脉冲为0.1元计费控制,15HZ信号为1.5元的计费控制,16Hz信号为1.6元计费控制。4.2控制模块 控制模块是系统的核心部分,对计价器的状态进行控制。4.3计量模块计量模块完成计价、计时、计程功能。 4.3.1计价部分 行程3公里内,且等待累计时间2分钟内,起步费为10元;3公里外以每公里1.6元计费,等待累计时间2分钟外以每分钟1.5元计费。计费数据送入显示译码模块进行译码,最后送至以百元、十元、元、角为单位对应的数码管上显示。4.3.2计时部分 计时部分用于计算乘客的等待累计时间。计时器的量程为59分,满量程自动归零。即时数据送入显示译码

6、模块进行译码,最后送至以分为单位对应的数据管上显示。4.3.3计程部分 计程部分用于计算乘客所行使的公里数。计程器的量程为99公里,满量程自动归零。计程数据送入显示译码模块进行译码,最后送至以公里为单位对应的数据管上显示。4.4译码显示模块 译码显示模块完成计价、计时、计程数据显示。 该模块经过8选1选择器将计费数据(4位BCD码)、计时数据(2位BCD码)、计程数据(2位BCD码)动态选择输出。其中计费数据送入显示译码模块进行译码,最后送至百元、十元、元、角为单位对应的数码管上显示,最大显示为999.9元;计时数据送入显示译码模块进行译码,最后送至分为单位对应的数码管上显示,最大显示为59秒

7、;计程数据送入显示译码模块进行译码,最后送至以公里为单位的数码管上显示,最大显示为99公里。运算控制器分频器时钟信号按键控制LED状态显示七段译码器数码管显示计时信号计费信号序列计程信号3/8译码器分频模块控制计数模块显示模块本设计包含运算控制模块、分频器、显示模块这三大部分。图1 出租车自动计费器系统框图运算控制器模块将其他两个进行连接,是本次设计的核心。它包含计程器、计时器、计价器,同时还有读取外部的拨码开关控制信号,提供当前显示信号与显示位选信号,从而周期性交替显示计价/计时信息、等时信息。计程器在非停车状态完成计程功能并产生里程计价信号,计时器在停车状态完成计时功能并产生等时计价信号。

8、计价器是设计的核心与难点,涉及到多种时钟信号,并有多种计费标准。拟使用有限次高速脉冲发生器向一组级联的十进制计数器提供不同费率的计价脉冲,根据里程计价信号、等时计价信号、停车开关状态、当前计费结果等信号,综合考虑,挑选适合次数的计价脉冲,从而实现不同条件的不同计费。计程器、计时器、计价器根据位选信号,输出相应数据的当前选中数字,由顶层模块根据显示数据类型变换信号进行选择,传输给显示模块。本次设计首先在Quartus环境中对出租车自动计费器的各个部分利用VHDL这一硬件描述语言予以设计,进行仿真,然后编写顶层模块将各个模块连接,并对相互之间的信号进行必要处理,从而实现整机功能,最后在实验箱上进行

9、物理测试,寻找漏洞、调整参数,最终确定设计。 分频器TAXI_FP模块设计本设计中分频器模块使用了一个通用的分频器元件例化fp。该模块从外部读入系统时钟方波信号clk,向外输出计时信号clk_time,计程信号clk_mil,数码管扫描信号clk_scan,显示数据类型变换信号clk_v。具体程序代码详见附录。计程器的核心为一个4位十进制数计数单元cnt10,它由四个十进制计数器级联构成。在得到停车信号时,计程信号不输入计数单元,在没有停车信号stop时,每有10个脉冲clk(100m)才进行计数1次。每当成功计数5次,即500m,产生一个里程计费信号p_mil。在得到复位信号rst时,计程器

10、内部所有计数器和计数信号清零复位,里程计费信号输出'0'。根据读入的位选信号wx决定当前输出的数值datain。具体程序代码详见附录。计时器有一个24进制cnt24、两个60进制的计数器cnt60级联构成计时单元。当停车信号stop为'1',进行计时。计时器中还有一个3进制计数器cnt3,每当代表分钟的60进制计数器计数3次,产生一个等时计费信号p_up。当有复位信号rst时,所有计数单元清零,等时计数信号输出'0'。根据读入的位选信号wx决定当前输出的数值datain。具体程序代码详见附录。因为在计费过程中存在1.05元的计费情况,故计价精度精

11、确到分,共有五个计数器。因此计价器的计数单元有四个10进制计数器cnt10,一个10进制计数器cnt10_d。前者复位值为0;后者复位值为3,为价格的第三位计数。它的内部还有一个指定个数脉冲产生器price_s。根据停车信号stop的选择里程计费信号p_mil或p_t,当计费信号为'1'时,输入适当个脉冲,当计费信号为'0',脉冲发生器price_s复位。当计费开关switch或复位信号rst为'1',计价器所有模块复位。根据读入的位选信号wx决定当前输出的数值datain。具体程序代码详见附录。显示模块包含一个8进制计数器cnt8,七段数码管译

12、码器decl7s,实验箱上的3/8译码器。还有五个状态显示灯,分别为停车状态指示stop_s,计费状态指示switch_s,3个当前显示内容标志灯sta(2.0)。当系统复位时,数码管一起显示相同的任意数,五个状态显示灯一起被点亮。正常显示时,等时信息与计价/计程信号以5s为周期交替显示。具体程序代码详见附录。5程序调试运行5.1顶层原理图图2 出租车自动计价器的原理图5.2仿真结果图3出租车自动计价器的波形仿真图中clk_240栏为黑阴影是因为时钟频率太大,周期太小。6、课程设计总结6.1、收获 通过一个多星期的课程设计,从选题到查资料,从完善原理图到写报告文档,让我明白了课程设计是名副其实

13、的综合性训练,不仅要运用学过的EDA技术及应用,数字电路、模拟电路以及电子技术实验等知识,还要学会查阅各种图书资料和工具书,并将新知识和所学的结合起来为自己所用。在做整个课程设计的过程中,我进一步熟悉使用了max+plus2仿真软件,能较好的应用这个软件,不管是文本程序的编写还是在顶层原理图的设计都有所提高,还增强了动手能力。应用软件的时候,要注意积累每次的体会和错误,下次碰到该注意的地方就要小心点,碰到出过错误的地方就要格外注意不要再犯同样的错误,这种方法应该适用做任何一件事吧。在设计中遇到一些困难和问题,在向老师请教和与同学的讨论中,解决了问题,觉得很有收获。6.2、心得体会 在整个课程设

14、计的过程中让我意识到耐心、毅力和细心是做好一件事的必须品质。在应用max+plus2软件的时候,有很多小细节是需要注意的,不然一不小心就会出现很多错误。文本程序编辑的时候,保存要注意后缀名,保存文件名和实体名要一致,保存位置要是某个盘里的某个文件夹,这三个注意点特别重要,因为其中任何一点都会引发一系列的错误。检查这三点无误后,然后再可以按照运行报告来对程序进行完善。图形编辑中同样有很多需要注意的地方,以及怎样将文本和图形结合起来。通过这次设计,我更好地掌握了这些基本技巧,学会了多学多练,也懂得了实践出真知。参考文献1.朱正伟主编,EDA技术及应用,清华大学出版社,20052. 黄智伟等主编,F

15、PGA系统设计与实践,电子工业出版社,20043. 沈明山主编,EDA技术及可编程器件应用实训,科学出版社,2004附录出租车计价器源程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity taxi isport ( clk_240 :in std_logic; -频率为240Hz的时钟 start :in std_logic; -计价使能信号 stop:in std_logic; -等待信号 fin:in std_logic;

16、-公里脉冲信号 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_15,f_16,f_1:std_logic; -频率为15Hz,16Hz,1Hz的信号signal q_15:integer range 0 to 15; -分频器signa

17、l q_16:integer range 0 to 14; -分频器signal q_1:integer range 0 to 239; -分频器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

18、); -分的个位计数器signal en1,en0,f:std_logic; -使能信号beginfeipin: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=15 then q_15<=0;f_15<=

19、'1' -此IF语句得到频率为15Hz的信号 else q_15<=q_15+1;f_15<='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'

20、end if; if en1='1' then f<=f_15; -此IF语句得到计费脉冲f 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' thenw<=0;en1<='0'en0<='0'm1<="0

21、00"m0<="0000"k1<="0000"k0<="0000" elsif 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 m0<=m0+

22、1; end if; if m1&m0>"0000001"then en1<='1' -此IF语句得到en1使能信号 else en1<='0' end if; else w<=w+1;en1<='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 k0<=k0+1; end if; if k1&k0>"00000010" then en0<='1' -此IF语句得到en0使能信号 else en0<='0' end

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论