ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:176.11KB ,
资源ID:9356975      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9356975.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(EDA课程设计计程器.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

EDA课程设计计程器.docx

1、EDA课程设计计程器一、课程设计内容与要求(1)能够实现计费的功能费用的计算是按形式的里程收费的,设出租车的起步价为8.00元,当里程小于3Km时,按起价计算费用;当里程大于3Km时每公里按1.6元计费。等待累计时间超过3min,按每分钟1元计费。所以总费用按下式计算: 总费用=起费用+(里程-3Km)*里程单价+等候时间*等候单价。.(2)能够实现显示的功能a)显示汽车行驶里程:用四位数字显示,显示方式为“XX”,单位为K 。计程范围为0-99K,计程分辨率为1K。b)显示等候时间:用两位数字显示分钟,现实方式为“XX”。计时范围为0-59,计时分辨率为1。c)显示总费用:用四位数字显示,显

2、示方式为“XXXX”,单价为元。计价范围为0-9999元。二、系统方案设计根据设计要求,系统的输入信号有:系统时钟信号CLK,出租车启动信号START,等待信号STOP,公里信号FIN。系统的输出信号有:总费用数CHA0-CHA3,行驶距离(数)KM0-KM1和等待时间MIN0-MIN1等。系统组成方框图如下所示,它由分频模块、计量模块、计费模块和控制模块四部分组成。其系统模块图如图1所示。图1 系统功能原理图三、功能模块的原理及算法分析 有图1系统功能原理图可知:该设计问题自顶向下可分为分频模块、计量模块、计费模块和控制模块四个部分,下面就每个部分的原理及算法进行分析。3.1 分频模块分频模

3、块对频率为240Hz的输入脉冲进行分频,得到的频率为16Hz,10Hz和1Hz的三种频率。该模块产生频率信号用于计费,每个1Hz脉冲为0.1元计费控制,10Hz信号为1元的计费控制,16Hz信号为1.6元计费控制。3.2 计量控制模块 计量控制模块是出租车自动计程器系统的主体部分,该模块主要完成等待几时功能、计价功能、计程功能,同时产生3分钟的等待计时使能控制信号en1,行程3公里外的使能控制信号en0。其中计价功能主要完成的任务是:行程3公里内,且等待累计时间3分钟内,起步价为8元;3公里外以每公里1.6元计费,等待累计时间3分钟外以每分钟1元计费;计时功能主要完成的任务是:计算乘客的等待累

4、计时间,计时器的量程为59分,满量程自动归零;计程功能主要完成的任务是:计算乘客所行使的公里数。计程器的量程为99公里,满量程自动归零。3.3 控制模块 控制模块主要是通过计量模块产生的两个不同的输入使能信号en0,en1,对每个分频模块输出的16hz,10hz的脉冲进行选择输出的过程;本模块实现了双脉冲的二选一;最终目的为了计费模块中对行驶过程中不同的时段进行计价。3.4 计费模块 当计费信号start一直处于高电平即计费状态时,本模块根据控制模块选择出的信号从而对不同的单价时段进行计费。即行程在3km内,而且等待累计时间小于3min则为起步价8元;3km外以每公里1.6元计费,等待累积时间

5、超过3min则按每分钟1元计费。c0,c1,c2,c3分别表示费用的显示。四、主要模块的实现 4.1 分频模块的实现 由图2分频模块封装图可知:系统是对240Hz时钟脉冲信号进行分频,分别得到16Hz、10Hz、1Hz三种频率,本设计中通过三种不同频率脉冲信号实现计程车在行使、等待两种情况下的不同计费。 图2 分频模块封装图4.2 计量模块的实现 由图3可知:本模块实现对于出租车在行使和等待过程中的计程和计时功能。当行使里程大于3Km时,本模块中en0信号变为1;当等待时间大于3min时,本模块中en1信号变为1,clk1每来一个上升沿,计量模块实现一次计数,里程数或者等待时间加1。 图3 计

6、量模块封装图4.3 控制功能的实现 由图5可知:本模块主要是通过两个不同的输入使能信号,对两个输入脉冲进行选择输出,使能信号是计量模块的输出,两个输入脉冲是分频模块输出的16Hz、10Hz的脉冲。 图4 控制模块封装图4.4 计费功能的实现 由图4可知:输入一个脉冲信号,同时当start为高电平时开始计价,c0、c1、c2、c3为价格的显示信号。图5 计时模块封装图4.4 总体功能原理图总体原理如图6所示。图6 总体功能原理图五、程序调试4.1 分频模块波形仿真图图7 分频模块仿真波形图由图7可知:当输入240Hz的clk脉冲信号时,clk每出现240个脉冲是q1、q10、q16分别出现1、2

7、4、15个,相当于计费0.01元、1元、1.6元,帮助计费。4.2 计量模块波形仿真图图8 计量模块波形仿真图 由图8可知:由于公里输入参数fin一直设为高,所以看k1、k0一开始就开始计数,即为行程公里数;当等待时间信号stop设为高电平是,m1、m0开始计数,即为等待时间。4.3 计费模块波形仿真图图9 计费模块波形仿真图 由图9可知:输入一个脉冲信号,同时当start为高电平是开始计价,c0、c1、c2、c3为价格的显示信号,逢9后一位将进1。.4.4 控制模块波形仿真图图10 控制模块波形仿真图 由图10可知:本模块主要是通过两个不同的输入使能信号,对两个输入脉冲进行选择输出,使能信号

8、是计量模块的输出,两个输入脉冲是分频模块输出的16Hz、10Hz的脉冲。4.5 总模块的波形仿真图图11 总模块的波形仿真图六、硬件测试在Quartus软件进行程序编译后,根据实验室提供的EDA实验工具箱,选择目标芯片EP1C3T144C8,并设置对应的引脚值,实现引脚锁定,如图12所示。这里我选用的是模式5,根据模式5的电路图设置数码管85显示的是价格cha3、cha2、cha1、cha0,数码管4、3显示的是行程公里数km1、km0,数码管2、1显示的是等待时间min1、min0,start、stop、fin信号分别对应于键1、键2、键3,系统时钟clock240对应于clcok0,最后进

9、行编程下载到试验箱中。下载到试验箱后,将模式调到5,clock的短路帽插到4Hz处。当按下键1,即启动start信号,可以看到数码85显示0080,即为起步价8元。按下键3,可以发现数码管4、3开始计数,即显示出租车行程公里数。当公里数为3km时,数码管85开始计数,说明当公里数3km时开始计费。按下键2,可以发现码管2、1开始计数,即显示出租车等待的时间,当时间大于3时,数码管85又开始计数,说明当等待时间3s时开始计费。综上所知,实验观察结果符合实验要求,硬件调试成功。图12 设置引脚图七、实验中存在的问题及解决方案7.1 分频模块只得到了频率q10,而频率q1、q16未得到。解决方案:仔

10、细检查程序是否写错,发现在对q1和q16分频程序时,q1未加1,而令q1为0时,写到了q16为0,改正后编译并查看时序即得到正确结果。7.2 计量模块得到时序中只有km1、km0显示,而没有min1、min0显示。解决方案:由于在min1、min0程序中定义了一定变量w,导致时序错误,去掉w即可得到正确结果。7.3 数码管数据显示太快。解决方案:改变clock的频率,将其调低即可。八、实验心得通过此次课程设计,让我重温了EDA技术的基本知识、理论,同时全面地分析该课程设计实现的原理,独立地完成在Quarter软件上对HDL语言程序的编程、调试,下载到试验箱,得到最终结果。我所做的计程器是通过4

11、个模块来实现的,再通过顶层设计中的例话语句将它们整合起来。刚开始把每个模块的程序都编写好了,然后整合后,在顶层文件对应的工程上查看时序图,发现并没有得到想要的结果,后来改了很久还是没有成功,有时还出现乱码,几乎都有想放弃了。后来,让自己静下心来,从每个模块的时序进行着手分析,发现模块对应的程序存在很多的错误,通过一步步修改,终于得到将每个模块的时序都弄好了。然后在顶层文件工程中进行时序仿真即得到了正确的结果。从这次编程中,我学会了遇到问题时,不要盲目地去修改,而是理清思绪,从每个简单部分入手检查,这样才能快速有效地解决问题。由于在编程中我很重视时序图是否正确,所以当把得到正确时序图的工程文件下

12、载到试验箱时即得到了正确的结果。这次课程设计顺利地完成不仅锻炼了我动手、编程能力,而且还让我对EDA强大的功能产生兴趣,我们不能只局限于实验室给我们提供的课程设计机会,而是利用课余时间深入学习它,提高自己的专业技能。九、附件9.1 分频功能实现的源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity fenpin isport(clk:in std_logic; q16:out std_logic; q10:out std

13、_logic; q1:out std_logic);end fenpin;architecture qq of fenpin isbeginprocess(clk)variable count16:integer range 0 to 14;variable count10:integer range 0 to 23;variable count1:integer range 0 to 239;beginif clkevent and clk=1then if count10=23then count10:=0;q10=1;else count10:=count10+1;q10=0;end i

14、f;if count16=14then count16:=0;q16=1;else count16:=count16+1;q16=0;end if; if count1=239then count1:=0;q1=1;else count1:=count1+1;q1=0;end if;end if;end process;end qq;9.2 计量功能实现的源代码如下: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jilia

15、ng isport(s:in std_logic; fin,stop:in std_logic; clk1:in std_logic; en0,en1:buffer std_logic; k1,k0:buffer std_logic_vector(3 downto 0); m1,m0:buffer std_logic_vector(3 downto 0);end jiliang;architecture rt2 of jiliang issignal w:integer range 0 to 59;beginprocess(clk1)beginif clk1event and clk1=1 t

16、henif s=0 then en0=0;en1=0;k1=0000;k0=0000;m1=0000;m0=0000;elsif stop=1 thenif m0=1001 then m0=0000;if m1=0101 then m1=0000;else m1=m1+1;end if;else m000000010 then en1=1;else en1=0;end if;elsif fin=1 then if k0=1001 then k0=0000;if k1=1001 then k1=0000;else k1=k1+1;end if;else k0=k0+1;end if;if k1&

17、k0=00000010 then en0=1;else en0=0;end if;else en1=0;en0=0;end if ;end if;end process;end rt2;9.3 计费功能实现的源代码如下:Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;entity jifei isport(clk2:in std_logic; -计费驱动信号 start:in std_logic; -计费开始信号 c0,c1,c2,c3:b

18、uffer std_logic_vector(3 downto 0);end jifei;architecture rt1 of jifei isbeginprocess(clk2,start)begin if start=0then c3=0000;c2=0000;c1=1000;c0=0000; -起步价5元 elsif clk2event and clk2=1then if c0=1001 then c0=0000; if c1=1001 then c1=0000; if c2=1001 then c2=0000; if c3=1001 then c3=0000; else c3=c3+

19、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 rt1;9.4 控制功能实现的源代码如下:Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all; entity kongzhi isport(en0,en1:in std_logic; -使能选择信号 clk_in1:in std_logic; -14

20、分频输入信号 clk_in2:in std_logic; -13分频输入信号 clk_out:out std_logic); -输出信号 end kongzhi; architecture rt3 of kongzhi isbeginprocess(en0,en1)begin if en0=1 then -实现二选一功能 clk_out=clk_in1; elsif en1=1 then clk_outclk240,q16=m3,q10=m2,q1=m1);u2:jiliang port map(s=start,fin=fin,stop=stop, clk1=m1,en1=n1,en0=n0,k1=km1, k0=km0,m1=min1,m0=min0);u3:kongzhi port map(en0=n1,en1=n0,clk_in1=m2,clk_in2=m3,clk_out=l);u4:jifei port map(clk2=l,start=start,c0=cha0,c1=cha1,c2=cha2,c3=cha3);end behav;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2