收藏 分享(赏)

数字逻辑课程设计报告(优秀版)new.doc

上传人:dzzj200808 文档编号:2239103 上传时间:2018-09-07 格式:DOC 页数:13 大小:116.50KB
下载 相关 举报
数字逻辑课程设计报告(优秀版)new.doc_第1页
第1页 / 共13页
数字逻辑课程设计报告(优秀版)new.doc_第2页
第2页 / 共13页
数字逻辑课程设计报告(优秀版)new.doc_第3页
第3页 / 共13页
数字逻辑课程设计报告(优秀版)new.doc_第4页
第4页 / 共13页
数字逻辑课程设计报告(优秀版)new.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、数字逻辑课程设计报告1目录目录1一、 设计目的2二、 设计要求2三、 设计方案2四、 顶层图及相关模块说明31、 顶层图32、 各模块说明(1)进制模块3a、 二十四进制5b、 六十进制5(1)动态扫描模块6(2)分频模块8(3)报时模块9(4)二路选择器模块10五、经验总结.12数字逻辑课程设计报告2一、设计目的1 学会应用数字系统设计方法进行电路设计;2 进一步提高 Quartus9.0 软件的开发应用能力;3 培养学生书写综合实验报告的能力。二、设计要求1、能进行正常的时、分、秒计时,用动态扫描的方式显示,需用 6 个数码管。(1)用 M6M5 进行 24 进制小时的显示。(2)用 M4

2、M3 进行 60 进制分的显示。(3)用 M2M1 进行 60 进制秒的显示。2、利用按键实现 “校时” 、 “校分”和“秒清 0”功能。(1)SA:校时键。按下 SA 键时,时计数器迅速递增,按 24 小时循环,并且计满 23 时回到 00。(2)SB:校分键。按下 SB 键时,分计数器迅速递增,按 60 小时循环,并且计满 59 时回到 00,但不向时进位。(3)SC:秒清零。按下 SC 时,秒计数器清零。要求按键均不产生数字跳变,因此须对“SA” 、 “SB”进行消抖处理。3、能进行整点报时。(1)在 59 分 50、52、54 、56、58 秒按 500Hz 频率报时;(2)在 59

3、分 60 秒用 1KHz 的频率作最后一声正点报时。4、更高要求:能进行闹时功能(1) 闹时的最小时间间隙为 10 分钟,闹时长度为 1 分钟。闹时频率可以自己设置。(2) 按下闹时按键 SD 后,将一个闹时时间数存入计数器内。时钟正常运行时,闹时时间和运行的时间进行比较,当比较结果相同时输出一个启动信号,触发闹时电路工作,输出音频信号。三、设计方案1、按自顶向下的层次化设计方法设计。(1)顶层图(2)消抖电路用 D 触发器构成,SA 、SB、SC 为包含抖动的输入信号,而电路的输出则是一个边沿整齐的输出信号。(3)计时( 24 进制计数器) ,计分(60 进制计数器) 、计秒(60 进制计数

4、器)模块可由 10 进制计数器连接构成,也可用 VHDL 语言完成。10 进制计数器需自己设计(用 VHDL 语言,与所做实验 74160 计数器相同) ,不能调用系统库。(4) 其他如分频电路、提供报时控制信号、闹时电路等模块用 VHDL 语言实现。(5) 数字显示采用动态扫描的方式,原理参考课本 P212 图 6-23。也可以采用 VHDL 编写。数字逻辑课程设计报告3四、顶层图及相关模块说明1、顶层图VCsa INPUTVCsb INPUTVCsc INPUTVCcp INPUTselout2OUTPUT selout1OUTPUTselout0OUTPUTsegout5OUTPUT s

5、egout4OUTPUTsegout3OUTPUT segout2OUTPUTsegout1OUTPUT segout0OUTPUTsegout6OUTPUTspeakerOUTPUTCLRNDPRNQDFinstCLRNDPRNQDFinst3CLRNDPRNQDFinst4NOTinst5NOTinst6NOTinst7absymux21inst8absymux21inst9NAND2inst10NOT inst11clkcountql3qh3ql2qh2ql1qh1ql0qh0count24inst12clkclr countQL3QH3QL2QH2QL1QH1QL0QH0count60

6、inst13clkclr countQL3QH3QL2QH2QL1QH1QL0QH0count60inst14VCclks70f70m70selout20segout60dtsminst18m130m030s130s030sig50sig1kalertinst30 AND2inst31AND2inst32OR2inst3clk hz512hz256hz64hz4hz1fryinst34PIN_J4PIN_A12PIN_B12PIN_B15PIN_H3PIN_H4PIN_K5PIN_L5PIN_K4PIN_L3PIN_L4PIN_G4PIN_G3PIN_F4PIN_N6s3s7s2s6s1s5s

7、0s4f3f7f2f6f1f5f0f4m3m7m2m6m1m5m0m4q512q512f74f30m74m30s70f70m70selout20segout60selout2selout1selout0segout6segout5segout4segout3segout2segout1segout0模块分析:程序下载后自动进入及时状态,sa、sb、sc 分别控制时、分、秒。2、各模块说明(1)进制模块十进制源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ls160 isport

8、(data : in std_logic_vector(3 downto 0);数字逻辑课程设计报告4clk,ld,p,t,clr : in std_logic;count : buffer std_logic_vector(3 downto 0);tc:out std_logic);end ls160;architecture behavior of ls160 isbegintcselselselselselselselsegsegsegsegsegsegsegsegsegsegseg=5 then q=“000“; else q=q+1; end if;实现。再定义一个类型为 std_l

9、ogic_vector(5 downto 0)的 sel信号,它用来产生一个长度为 6 的数,该数在同一时刻只有一位是高电平表示正在扫描该显示管,在进程结束时它的值将赋给 selout 输出。定义一个std_logic_vector(6 downto 0)类型的 seg,用来存放将由四位 bcd 码编码而来的七段显示码。最后在进程中定义一个 std_logic_vector(3 downto 0)类型的number 变量,用来存放时、分、秒的高位或低位,然后将该数编码成七段显数字逻辑课程设计报告9示码,并赋给 seg 信号。具体算法如下:建立一个以 clk 脉冲为敏感变量的进程,先判断是否是

10、clk 的高电平脉冲,若不是则什么也不执行,若是高电平脉冲,则执行以下程序。P 加 1,用 case 语句根椐 p 的值,给 number 赋予当前要扫描的数码管的值,用 case 语句根椐 number 的值编译成对应的七段显示管的值并赋给 seg,当进程结束时把 seg 的值赋给 segout,把 sel 的值赋给selout,然后由这两个端口输出。(3)分频模块分频器源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity

11、 fry isport(clk:in std_logic;hz512:out std_logic;hz256:out std_logic;hz64:out std_logic; hz4:out std_logic;hz1:out std_logic); end fry;architecture f of fry issignal q:std_logic_vector(9 downto 0);begin process(clk)begin if clkevent and clk=1then q=q+1;end if;end process;hz512=q(0);hz256=q(1);hz64=q

12、(3);hz4=q(7);hz1=q(9);end f;生成器件:数字逻辑课程设计报告10fryinstclk hz512hz256hz64hz4hz1模块说明:由于 clk 的频率为 1024hz,所以可以定义一个std_logic_vector(9 downto 0),使它不停地从 0000000000 加到 1111111111 然后又返回 0000000000,由于最低位在 clk 脉冲到来时从 0 变为 1,然后又在下一个脉冲变回 0,因此最低位的时钟周期为 clk 的时钟周期的两倍,它的频率就为 clk 频率的确 1/2 即 512hz。同理,次高位的频率就为 clk 频率的 1/

13、2 * 1/2 = 1/4,用这种方法就可以得到各种能整除 1024 的频率,从而实现分频。(4)报时模块报时器源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity alert isport(m1,m0,s1,s0 : in std_logic_vector(3 downto 0); sig500,sig1k : out std_logic);end alert;architecture a of alert issigna

14、l q : std_logic_vector(15 downto 0);signal s500,s1k : std_logic;beginq(15 downto 12)=m1;q(11 downto 8)=m0;q(7 downto 4)=s1;q(3 downto 0)=s0;hring : blockbegin s500=1 when q=“0101100101010000“ else1 when q=“0101100101010010“ else1 when q=“0101100101010100“ else1 when q=“0101100101010110“ else1 when q

15、=“0101100101011000“ else0;s1k=1 when q=“0000000000000000“ else 0;end block hring;sig500=s500;sig1k=s1k;end a;生成器件:数字逻辑课程设计报告11alertinstm130m030s130s030sig500sig1k报时系统:(4)二路选择器二路选择器源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 ISPORT ( a , b ,s: IN STD_LOGIC ;y : OUT STD_LOGIC );END ENTIT

16、Y mux21;ARCHITECTURE one OF mux21 ISBEGINPROCESS(a,b,s)BEGIN IF s = 1 THENy=a; ELSE y=b;END IF;END PROCESS;END ARCHITECTURE one;生成器件:mux21instabsy数字逻辑课程设计报告12经验总结一周的课程设计已经结束了,通过这次课程设计,加强了我们动手、思考和解决问题的能力,使多功能数字钟从设想、设计、调试到功能的实现。在这一过程中,我熟悉了 VHDL 语言的编写,掌握了多层次、模块化的数字逻辑电路设计,学会了自主检查错误,分析错误,改正错误。在设计过程中,经常会遇

17、到这样那样的情况,就是心里想老着这样的接法可以行得通,但实际接上电路,总是实现不了,因此耗费在这上面的时间用去很多。做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。比如一些芯片的功能,平时看课本,这次看了下次就忘了,通过动手实践让我们对各个元件映象深刻。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这个期末测试之后的课程设计对我们的作用是非常大的。数字逻辑课程设计报告13在不断的调试中,我发现了许多问题,我一步步地消除问题,最终实现了多功能数字钟的功能。在这个过程中,我们也发现了许多值得探讨的地方,如怎样改变发声的频率使发出的声音更好听,更多样化,怎样选择开关,怎样减少开关的使用,怎样消除险象等。这次的课程设计提高了我的分析问题、解决问题的能力。在多功能数字钟的设计过程中,我充分体会到了数字电路设计的趣味,体会到解决问题的快乐,也增强了动手实践的能力,在遇到困难时,我学会了与老师、同学一起分析问题,探讨解决方案,使自己的综合能力得到了提高。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报