《基于EDA编程的出租车计价器报告.doc》由会员分享,可在线阅读,更多相关《基于EDA编程的出租车计价器报告.doc(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目录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课程设计目的 为培养学生树立正确的设计思想和实事求是的工作作风,学习运用所学基础知识理论、专业知识、基本技能去分析和解决工程技术实际问题,提高学生的综合素质,使学生成为工程应用型合格人才
2、,故进行EDA技术及应用的课程设计。帮助学生全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。2设计任务与要求2.1设计任务本课题要求设计车租车自动计价器,能基本实现自动计价的功能。2.2设计要求本出租车计价器的计费系统:行程3公里内,且等待累计时间2分钟内,起步费为10元;3公里外以每公里1.6元计费,等待累计时间2分钟外以每分钟1.5元计费。并能显示行驶公里数、等待累计时间、总
3、费用。设计的主要技术指标如下:、计价范围:0999.9元 计价分辨率:0.1元、计程范围:099公里 计程分辨率:1公里、计时范围:059分 计时分辨率:1分3系统组成出租车自动计价器的系统方框图如图1所示:它有分频模块、控制模块、计时模块、计费模块及显示等模块组成。显示时钟信号等待信号分频器计费公里脉冲计费/复位计程计时控制器图1.出租车自动计价器的系统方框图4模块设计4.1秒分频模块 秒分频模块对频率为240Hz的输入脉冲进行分频,得到的频率为16Hz,15Hz和1Hz的三种频率。该模块产生频率信号用于计费,每个1HZ脉冲为0.1元计费控制,15HZ信号为1.5元的计费控制,16Hz信号为
4、1.6元计费控制。4.2控制模块 控制模块是系统的核心部分,对计价器的状态进行控制。4.3计量模块计量模块完成计价、计时、计程功能。 4.3.1计价部分 行程3公里内,且等待累计时间2分钟内,起步费为10元;3公里外以每公里1.6元计费,等待累计时间2分钟外以每分钟1.5元计费。计费数据送入显示译码模块进行译码,最后送至以百元、十元、元、角为单位对应的数码管上显示。4.3.2计时部分 计时部分用于计算乘客的等待累计时间。计时器的量程为59分,满量程自动归零。即时数据送入显示译码模块进行译码,最后送至以分为单位对应的数据管上显示。4.3.3计程部分 计程部分用于计算乘客所行使的公里数。计程器的量
5、程为99公里,满量程自动归零。计程数据送入显示译码模块进行译码,最后送至以公里为单位对应的数据管上显示。4.4译码显示模块 译码显示模块完成计价、计时、计程数据显示。 该模块经过8选1选择器将计费数据(4位BCD码)、计时数据(2位BCD码)、计程数据(2位BCD码)动态选择输出。其中计费数据送入显示译码模块进行译码,最后送至百元、十元、元、角为单位对应的数码管上显示,最大显示为999.9元;计时数据送入显示译码模块进行译码,最后送至分为单位对应的数码管上显示,最大显示为59秒;计程数据送入显示译码模块进行译码,最后送至以公里为单位的数码管上显示,最大显示为99公里。5程序调试运行5.1顶层原
6、理图图2 出租车自动计价器的原理图5.2仿真结果图3出租车自动计价器的波形仿真图中clk_240栏为黑阴影是因为时钟频率太大,周期太小。6硬件验证6.1引脚锁定 做硬件验证之前需要清楚实验板上各键与各信号的链接情况,参照资料得出本设计中各引脚的对应情况如下,本设计下载时选择模式0.实验板位置 信号 通用目标器件引脚名 目标器件EP10K10PLCC84引脚号 1、键8: clk_240 PIO7 162、键7: start PIO6 113、键6: stop PIO5 104、键5: load PIO10 95.数码管1 min0 PIO19 30 PIO18 29 PIO17 28 PIO1
7、6 27 6.数码管2 min1 PIO23 38 PIO22 37 PIO21 36 PIO20 357.数码管3 km0 PIO27 49 PIO26 48 PIO25 47 PIO24 398.数码管4 km1 PIO31 53 PIO30 52 PIO29 51 PIO28 50 9.数码管5 cha0 PIO35 60 PIO34 59 PIO33 58 PIO32 54 10.数码管6 cha1 PIO39 65 PIO38 64 PIO37 62 PIO36 61 11.数码管7 cha2 PIO43 71 PIO42 70 PIO41 67 PIO40 66 12.数码管8 c
8、ha3 PIO47 79 PIO46 78 PIO45 73 PIO44 72 6.2硬件验证情况 做好引脚锁定后,打开硬件箱的电源,数码管有正确的数字显示,链接硬件箱与计算机开始验证。操作运行实验结果完全符合要求。通过仿真验证表明,本文所设计的出租车计价器能够正常地显示行驶的里程数和乘客应付的费用,符合预定的计费标准和功能要求。7、课程设计总结7.1、收获 通过一个多星期的课程设计,从选题到查资料,从完善原理图到写报告文档,让我明白了课程设计是名副其实的综合性训练,不仅要运用学过的EDA技术及应用,数字电路、模拟电路以及电子技术实验等知识,还要学会查阅各种图书资料和工具书,并将新知识和所学的
9、结合起来为自己所用。在做整个课程设计的过程中,我进一步熟悉使用了max+plus2仿真软件,能较好的应用这个软件,不管是文本程序的编写还是在顶层原理图的设计都有所提高,还增强了动手能力。应用软件的时候,要注意积累每次的体会和错误,下次碰到该注意的地方就要小心点,碰到出过错误的地方就要格外注意不要再犯同样的错误,这种方法应该适用做任何一件事吧。在设计中遇到一些困难和问题,在向老师请教和与同学的讨论中,解决了问题,觉得很有收获。7.2、心得体会 在整个课程设计的过程中让我意识到耐心、毅力和细心是做好一件事的必须品质。在应用max+plus2软件的时候,有很多小细节是需要注意的,不然一不小心就会出现
10、很多错误。文本程序编辑的时候,保存要注意后缀名,保存文件名和实体名要一致,保存位置要是某个盘里的某个文件夹,这三个注意点特别重要,因为其中任何一点都会引发一系列的错误。检查这三点无误后,然后再可以按照运行报告来对程序进行完善。图形编辑中同样有很多需要注意的地方,以及怎样将文本和图形结合起来。通过这次设计,我更好地掌握了这些基本技巧,学会了多学多练,也懂得了实践出真知。参考文献1.朱正伟主编,EDA技术及应用,清华大学出版社,20052. 黄智伟等主编,FPGA系统设计与实践,电子工业出版社,20043. 沈明山主编,EDA技术及可编程器件应用实训,科学出版社,2004附录出租车计价器源程序li
11、brary 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; -公里脉冲信号 cha3,cha2,cha1,cha0:out std_logic_vector(3 downto 0);-费用数据 km1,
12、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; -分频器signal q_16:integer range 0 to 14; -分频器signal q_1:integer range 0 to 239; -分
13、频器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; -使能信号beginfeipin:process(clk_240
14、,start)begin if clk_240event 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=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
15、; -此IF语句得到频率为1Hz的信号 else q_1=q_1+1;f_1=0; 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_1event and f_1=1 then if start=0 thenw=0;en1=0;en0=0;m1=000;m0=0000;k1=0000;k0=0000; elsif stop=1 then if w=59 then w=0;
16、-此IF语句完成等待计时 if m0=1001 then m0=0000; -此IF语句完成分计数 if m1=101 then m1=000; else m1=m1+1; end if; else m00000001then 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 k0000000
17、10 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;min1=0&m1;min0=m0; -公里数据、分钟数据输出 end if;end process;process(f,start)begin if start=0 then c3=0000;c2=0001;c1=0000;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; else c2=c2+1; end if; else c1=c1+1; end if; else c0=c0+1; end if; end if;end process;end behav;13
限制150内