EDA编程出租车计价器 .docx
精品名师归纳总结目录1 课程设计目的 22 设计任务与要求 22.1 设计任务 22.2 设计要求 2 3 系统组成 24 模块设计 34.1 秒分频模块 34.2 把握模块 34.3 计量模块 34.3.1计价部分44.3.2计时部分44.3.3计程部分44.4 译码显示模块 4 5 程序调试运行 45.1 顶层原理图 45.2 仿真结果 5 6 硬件验证 66.1 引脚锁定 66.2 硬件验证情形 7 7、课程设计总结 77.1 、收成 77.2 、心得体会 8参考文献 9附录 10可编辑资料 - - - 欢迎下载精品名师归纳总结出租车自动计价器的设计1 课程设计目的为培养同学树立正确的设计思想和实事求是的工作作风,学习运用所学基础学问理论、专业学问、基本技能去分析和解决工程技术实际问题,提高同学的综合素养,使同学成为工程应用型合格人才,故进行 EDA技术及应用的课程设计。帮忙同学全面熟识、把握 VHDL语言基本学问,把握利用 VHDL语言对常用的的组合规律电路和时序规律电路编程,把编程和实际结合起来,熟识编制和调试程序的技巧,把握分析结果的如干有效方法,进一步提高上机动手才能,培养使用设计综合电路的才能,养成供应文档资料的习惯和规范编程的思想。2 设计任务与要求2.1 设计任务本课题要求设计车租车自动计价器,能基本实现自动计价的功能。2.2 设计要求本出租车计价器的计费系统:行程3 公里内,且等待累计时间 2 分钟内,起步费为 10 元。 3 公里外以每公里 1.6 元计费,等待累计时间 2 分钟外以每分钟 1.5 元计费。并能显示行驶公里数、等待累计时间、总费用。设计的主要技术指标如下:、计价范畴: 0 999.9 元计价辨论率: 0.1 元、计程范畴: 0 99 公里计程辨论率: 1 公里、计时范畴: 059 分计时辨论率: 1 分3 系统组成出租车自动计价器的系统方框图如图1 所示:它有分频模块、 把握模块、计时模块、计费模块及显示等模块组成。可编辑资料 - - - 欢迎下载精品名师归纳总结时钟信号分频器计费等待信号计时把握器显示公里脉冲计费 /复位计程图 1. 出租车自动计价器的系统方框图4 模块设计4.1 秒分频模块秒分频模块对频率为 240Hz的输入脉冲进行分频,得到的频率为16Hz,15Hz和 1Hz 的三种频率。该模块产生频率信号用于计费,每个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 分,满量程自动归零。即时数据送入显示译码模块进行译码,最终送至以分为单位对应的数据管上显示。4.3.3 计程部分计程部分用于运算乘客所行使的公里数。计程器的量程为99 公里,满量程自动归零。计程数据送入显示译码模块进行译码, 最终送至以公里为单位对应的数据管上显示。4.4 译码显示模块译码显示模块完成计价、计时、计程数据显示。该模块经过 8 选 1 选择器将计费数据( 4 位 BCD码)、计时数据( 2 位 BCD码)、计程数据( 2 位 BCD码)动态选择输出。其中计费数据送入显示译码模块进行译码,最终送至百元、十元、元、角为单位对应的数码管上显示,最大显示为999.9 元。计时数据送入显示译码模块进行译码, 最终送至分为单位对应的数码管上显示, 最大显示为 59 秒。 计程数据送入显示译码模块进行译码, 最终送至以公里为单位的数码管上显示, 最大显示为 99 公里。5 程序调试运行5.1 顶层原理图可编辑资料 - - - 欢迎下载精品名师归纳总结图 2 出租车自动计价器的原理图5.2 仿真结果图 3 出租车自动计价器的波形仿真图中 clk_240 栏为黑阴影是由于时钟频率太大,周期太小。可编辑资料 - - - 欢迎下载精品名师归纳总结6 硬件验证6.1 引脚锁定做硬件验证之前需要清楚试验板上各键与各信号的链接情形,参照资料得出本设计中各引脚的对应情形如下,本设计下载时选择模式0.试验板位置信号通用目标器件引脚名目标器件EP10K10PLCC8引4 脚号1、键 8:clk_240PIO7162、键 7:startPIO611 3、键 6:stopPIO5104、键 5: loadPIO1095. 数码管 1 min0PIO1930 PIO1829PIO17 28PIO16 276. 数码管 2min1PIO23 38 PIO2237PIO2136 PIO20 357. 数码管 3km0PIO2749 PIO2648PIO2547 PIO24398. 数码管 4km1PIO31 53PIO3052 PIO29 51 PIO28509. 数码管 5cha0 PIO3560可编辑资料 - - - 欢迎下载精品名师归纳总结PIO3459PIO33 58PIO32 5410. 数码管6cha1PIO3965PIO3864PIO3762PIO366111. 数码管7cha2PIO4371PIO4270PIO4167PIO406612. 数码管PIO46 788cha3PIO4779PIO4573PIO44726.2 硬件验证情形做好引脚锁定后, 打开硬件箱的电源,数码管有正确的数字显示,链接硬件箱与运算机开头验证。 操作运行试验结果完全符合要求。通过仿真验证说明,本文所设计的出租车计价器能够正常的显示行驶的里程数和乘客应对的费用,符合预定的计费标准和功能要求。7、课程设计总结7.1 、收成通过一个多星期的课程设计,从选题到查资料,从完善原理图到写报告文档, 让我明白了课程设计是名副其实的综合性训练,不仅要运用学过的 EDA技术及应用,数字电路、模拟电路以及电子技术试验等学问, 仍要学会查阅各种图书资料和工具书, 并将新学问可编辑资料 - - - 欢迎下载精品名师归纳总结和所学的结合起来为自己所用。在做整个课程设计的过程中,我进一步熟识使用了max+plus2 仿真软件, 能较好的应用这个软件, 不管是文本程序的编写仍是在顶层原理图的设计都有所提高,仍增强了动手才能。应用软件的时候,要留意积存每次的体会和 错误,下次遇到该留意的的方就要当心点, 遇到出过错误的的方就要特别留意不要再犯同样的错误,这种方法应当适用做任何一件事吧。在设计中遇到一些困难和问题,在向老师请教和与同学的争辩中,解决了问题,觉得很有收成。7.2 、心得体会在整个课程设计的过程中让我意识到耐心、 毅力和细心是做好一件事的必需品质。在应用 max+plus2软件的时候,有很多小细节是需要留意的,不然一不当心就会显现 很多错误。文本程序编辑的时候,储存要留意后缀名,储存文件名和实体名要一样,保 存位置要是某个盘里的某个文件夹, 这三个留意点特别重要, 由于其中任何一点都会引发一系列的错误。检查这三点无误后,然后再可以依据运行报告来对程序进行完善。 图形编辑中同样有很多需要留意的的方, 以及怎样将文本和图形结合起来。 通过这次设计, 我更好的把握了这些基本技巧,学会了多学多练,也懂得了实践出真知。可编辑资料 - - - 欢迎下载精品名师归纳总结参考文献1. 朱正伟主编,EDA 技术及应用,清华高校出版社, 20052. 黄智伟等主编,FPGA 系统设计与实践,电子工业出版社, 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 。-公里脉冲信号cha3,cha2,cha1,cha0:out std_logic_vector3 downto 0。-费用数据km1,km0:out std_logic_vector3 downto 0。-公里数据min1,min0: out std_logic_vector3 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。-分频器signal w:integer range 0 to 59。-秒计数器signal c3,c2,c1,c0:std_logic_vector3 downto 0。 -制费用计数器signal k1,k0:std_logic_vector3 downto 0。-公里计数器 signal m1:std_logic_vector2 downto 0。-分的十位计数器signalm0:std_logic_vector3 downto 0。-分的个位计数器signal en1,en0,f:std_logic。-使能信号begin可编辑资料 - - - 欢迎下载精品名师归纳总结feipin:processclk_240,start beginif clk_240'event and clk_240='1' thenif start='0' then q_15<=0。q_16<=0 。f_15<='0' 。f_16<='0' 。f_1<='0' 。f<='0' 。elseif 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' 。 -此 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 。processf_1 beginif f_1'event and f_1='1' thenif start='0' thenw<=0 。en1<='0' 。en0<='0' 。m1<="000" 。m0<="0000" 。k1<="0000" 。k0<="0000" 。可编辑资料 - - - 欢迎下载精品名师归纳总结elsif stop='1' thenif 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+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' thenif 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 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 。processf,startbeginif start='0' then c3<="0000"。c2<="0001" 。c1<="0000" 。c0<="0000" 。elsif f'event and f='1' thenif 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 。可编辑资料 - - - 欢迎下载