欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    EDA课程设计计程器.docx

    • 资源ID:9356975       资源大小:176.11KB        全文页数:17页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    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;


    注意事项

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

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开