欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    数字逻辑课程设计报告.doc

    • 资源ID:14861102       资源大小:425.06KB        全文页数:12页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    数字逻辑课程设计报告.doc

    数字逻辑课程设计多功能数字钟 班级: 学号: 课程设计人: 指导老师:课题: 完成时间:1、 设计目的:学会应用数字系统设计方法进行电路设计,熟练地运用汇编语言。二、设计任务及要求:1.记时、记分、记秒2.校时、校分、秒清03.整点报时4.时间正常显示5.闹时功能三、设计思路:将整个闹钟分为以下几个模块,每个模块中都有详细的各部分的设计思路,源代码及仿真图像,生成的器件。1.计时模块计小时:24进制计数器计分、计秒:60进制计数器 计时间过程:计秒:1HZ计数脉冲,059循环计数,计数至59时产生进位信号。计分:以秒计数器进位信号作为分计数脉冲,059循环计数,59时产生进位。计时:以分计数器进位信号作为时计数脉冲,023循环计数,23时清0。 二十四进制计数器代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt24 is port (clk:in std_logic; qh,ql:out std_logic_vector(3 downto 0);end cnt24;architecture behave of cnt24 issignal q1,q0:std_logic_vector(3 downto 0);begin process(clk) begin if(clk'event and clk='1')then if(q1="0010" and q0="0011")then q1<="0000"q0<="0000" elsif(q0="1001")then q0<="0000"q1<=q1+'1' else q0<=q0+'1' end if; end if; qh<=q1; ql<=q0; end process;end behave;仿真结果:图一、cnt24仿真图像六十进制计数器代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt60 is port (clk:in std_logic; clr:in std_logic; ql,qh:out std_logic_vector(3 downto 0); c:out std_logic);end cnt60;architecture cnt of cnt60 issignal q1,q0:std_logic_vector(3 downto 0);begin process(clk,clr) begin if(clr='1')then q1<="0000"q0<="0000"c<='0' else if(clk'event and clk='1')then if(q1="0101" and q0="1001")then-到59 q1<="0000"q0<="0000"c<='1' elsif(q1<"0101" and q0="1001")then q0<="0000"q1<=q1+'1'c<='0' elsif(q0<"1001") then q0<=q0+'1' end if; end if; end if; qh<=q1; ql<=q0; end process;end cnt;仿真结果:图二、cnt60仿真图像图三、生成的计数器符号2. 校时模块:思路:按下校时键 ,时位迅速递增,满23清0 按下校分键 ,分位迅速递增,满59清0 注意:此时应屏蔽分进位。 按清0键,秒清0。 脉冲按键S1S8、拨动开关K1K12任选三个。两个问题:(1)如何实现校对时间时,计数器快速递增? 按键校对时间时,将一个频率较高的计数脉冲信号作用于计数器,屏蔽正常计时的计数脉冲信号。(2)如何消除“抖动”? 电路抖动:一次按键的弹跳现象,电路产生多个计数脉冲,导致一次按键,多次计数的误动作。 抖动产生的原因:物理原因。 消除的简易方法:D触发器,同步按键脉冲。3. 整点报时模块:从59分50秒开始,每2秒一次低音报时;当达到整点时,进行一次高音报时。低音:频率可定为500HZ;高音:频率可定为1KHZ。报时效果:报时脉冲接扬声器输入,引脚号:N6。整点报时器件代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity alert_31 isport(m1,m0,s1,s0:in std_logic_vector(3 downto 0); siga,sigb:out std_logic);end alert_31;architecture alert of alert_31 is begin siga<='1'when(m1="0101" and m0="1001" and s1="0101" and (s0="0000" or s0="0010" or s0="0100" or s0="0110" or s0="1000")else'0' sigb<='1'when(m1="0000" and m0="0000" and s1="0000" and s0="0000")else'0'end alert;仿真结果:图四、整点报时模块,低频率报时图五、整点报时器件符号4、分频模块:设计一个进制较大的计数器,分频产生各种频率的脉冲信号。代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity freq_divider isport (clk:in std_logic; hz512,hz64,hz4,hz1:out std_logic);End freq_divider;architecture beh of freq_divider issignal cc: std_logic_vector(9 downto 0);beginprocess(clk)beginif(clk'event and clk='1') then if(cc="1111111111")then cc<="0000000000" else cc<=cc+1; end if;end if;end process;hz512<=cc(0);hz64<=cc(3);hz4<=cc(7);hz1<=cc(9);end beh; 仿真结果: 图六、分频器仿真及生成器件符号5. 动态扫描显示模块:动态模式下,8个数码管连接同个七段码,需要进行分时控制的动态扫描显示。七段译码器代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY dtsm is port( clk:in std_logic; h:in std_logic_vector(7 downto 0); m:in std_logic_vector(7 downto 0); s:in std_logic_vector(7 downto 0); seg7out:out std_logic_vector(6 downto 0); sel:buffer std_logic_vector(2 downto 0) );END dtsm;ARCHITECTURE beha of dtsm is signal key:std_logic_vector(3 downto 0); BEGIN PROCESS(clk) variable dount:std_logic_vector(2 downto 0):="000" BEGIN IF(rising_edge(clk)then IF dount="101" then dount:="000" ELSE dount:=dount+1; END IF; END IF; sel<=dount; end process; PROCESS(sel) BEGIN CASE sel IS when "000"=>key<=h(7 downto 4); when "001"=>key<=h(3 downto 0); when "010"=>key<=m(7 downto 4); when "011"=>key<=m(3 downto 0); when "100"=>key<=s(7 downto 4); when "101"=>key<=s(3 downto 0); when others=>null; END CASE; END PROCESS; PROCESS (key) BEGIN case key is when"0000"=>seg7out<="0111111" when"0001"=>seg7out<="0000110" when"0010"=>seg7out<="1011011" when"0011"=>seg7out<="1001111" when"0100"=>seg7out<="1100110" when"0101"=>seg7out<="1101101" when"0110"=>seg7out<="1111101" when"0111"=>seg7out<="0000111" when"1000"=>seg7out<="1111111" when"1001"=>seg7out<="1101111" when"1010"=>seg7out<="1110111" when others=>null; END CASE; END PROCESS; END beha;器件生成:图七、动态扫描器件6. 闹时模块:多路选择器源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity alarmset isport(sel:in std_logic; hclo,mclo,sclo,halr,malr,salr: in std_logic_vector(7 downto 0); h,s,m:out std_logic_vector(7 downto 0);end alarmset;architecture beh of alarmset isbegin process(sel) begin if(sel='0')then h<=hclo; m<=mclo; s<=sclo; else h<=halr; m<=malr; s<=salr; end if; end process;end beh;数值比较器代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity alarmcmp isport( h,m,halr,malr: in std_logic_vector(7 downto 0); stop:in std_logic; sig:out std_logic); end alarmcmp;architecture beh of alarmcmp is begin process(h,m,halr,malr,stop)begin if stop='1'then sig<='0' end if; if h=halr and m=malr and stop='0' then sig<='1' else sig<='0' end if; end process;end beh;器件生成: 图八、多路选择器和数值比较器4、 顶层图:图九、顶层图六、设计中遇到的问题及解决方法:问题1、 第一次下载仿真时,秒不动,按下清零键自动计时,松开又自动清零。解决方法:在秒的计数器清零端加一个非门,这样当一下载到实验板后,在一秒后就可以自动计时,且若要清零则按下Sc按键即可。问题2、分始终保持00状态,秒的进位不能使它变化,校分也不起作用。后来老师检查后才发现,这个问题产生的原因是,我的六十进制计数器是置“1”时清零,而顶层电路图上却是设计的“0”时清零,故错把清零端接至了“vcc”.解决方法:将分的清零端的“vcc”改为“gnd”,再次下载时,分位就可以动了。问题3、不知道如何设置闹钟设定与正常计时状态的显示切换。解决方法: 通过上网搜索以及询问同学,发现了再加一个开关用来控制不同模块的显示。7、 心得体会:在此次的多功能数字钟设计过程中,让我看到理论与实践的差别和联系,理论固然重要,然而我们要在实践中发现错误,并解决错误,提高自己的动手能力和实际解决问题的能力。同时,此次设计也锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。虽然这只是一次简单的课程设计,但通过这次课程设计我了解了课程设计的一般步骤,和设计中应注意的问题。设计本身并不是有很重要的意义,而是对待问题时的态度和处理事情的能力。至于设计的成绩无须看得太过于重要,而是设计的过程,设计的思想和设计电路中的每一个环节,电路中各个部分的功能是如何实现的。最后闹钟也没有自己做出来,仿照同学的设计才做出来,这说明自己平时的学习中还存在很多不足,以后应该更用功学习理论知识,同时加强动手能力。总的来说,这次课程设计使我收获良多,特别是当它第一次整点报时的时候,心中愉悦无比,自己动手学到的东西是最多的。- 12 -

    注意事项

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

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




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开