数字逻辑课程设计报告 MaxplusⅡ软件数字钟_第1页
数字逻辑课程设计报告 MaxplusⅡ软件数字钟_第2页
数字逻辑课程设计报告 MaxplusⅡ软件数字钟_第3页
数字逻辑课程设计报告 MaxplusⅡ软件数字钟_第4页
数字逻辑课程设计报告 MaxplusⅡ软件数字钟_第5页
已阅读5页,还剩15页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字逻辑课程设计实验报告多功能数字钟目 录1.实验目的- 32.预习要求- 33.实验要求- 34.设计说明与提示- 45.仪器与器材- 56.层次化设计结构- 5)计时模块- 5)时间校对模块- 7)报时模块- 10)分频模块- 13)动态显示模块- 14)顶层图- 197.设计过程中出现的问题- 198.设计体会- 19一、实验目的1、学会应用数字系统方法进行电路设计;2、进一步提高Maxplus软件开发应用能力;3、培养综合实验的能力;二、预习要求1、层次化设计方法设计多功能数字钟。2、画出顶层原理图,及各模块电路或编出模块VHDL语言源文件。三、实验要求设计一个多功能数字时钟1、能进行

2、正常的时、分、秒计时功能,用动态扫描的方式,需用6个数码管。1)用M6M5进行24进制小时的显示;2)用M4M3进行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频率报时。

3、2)在59分60秒用1KHz的频率作最后一声正点报时。4、能进行闹时功能。1)闹时的最小时间间隙为10分钟,闹时长度为1分钟。2)按下闹时按键sd后,将一个闹时时间数存入计数器内。时钟正常运行时,闹时时间和运行的时间进行比较,当比较结果相同时输出一个启动信号,触发闹时电路工作,输出音频信号。5、按自顶向下的层次化设计方法设计。1)顶层图。2)消抖电路用D触发器构成,SA、SB、SC等为包含抖动的输入信号,而电路的输出则是一个边沿整齐的输出信号。3)计时(24进制计数器),计分(60进制计数器)、计秒(60进制计数器)模块由VHDL语言完成。4)其他如分频电路、提供报时控制信号、闹时电路等模块用

4、VHDL语言实现。6、用Maxplus软件设计符合以上功能要求的多功能数字钟,并用层次化设计方法设计该电路。7、报时功能,闹时功能用功能仿真的方法验证,可通过观察有关波形确认电路设计是否正确。8、完成全部电路设计后,再SE-3实验系统上下载验证设计课题的正确性。四、设计说明与提示多功能数字钟框图如下:五、仪器与器材1、开发软件Maxplus2、微机3、ISP实验板六、层次化设计结构多功能数字钟的模块分为计时模块、时间校对模块、报时模块、分频模块和动态显示模块。1、计时模块1)实现功能:计时:24进制计数器;计分、计秒:60进制计数器 一片24进制计数器,两片60进制计数器2)计时模块示意图:3

5、)24进制计数器VHDL语言描述:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity counter24_60 isport(cp:in std_logic; bin:out std_logic_vector(5 downto 0); s:in std_logic; clr:in std_logic; ec:in std_logic; cy24:out std_logic);end counter24_60;architectur

6、e a of counter24_60 issignal Q:std_logic_vector(4 downto 0);signal rst,dly:std_logic;beginprocess(cp,rst)beginif rst=1 then Q=00000;elsif cpevent and cp=1 then dly=Q(4);if ec=1 then Q=Q+1;end if;end if;end process;cy24=not Q(4) and dly;rst=1 when Q=24 or clr=1 else 0;bin=(0&Q) when s=1 else 000000;e

7、nd architecture;24进制计数器的生成器件图:4)60进制计数器VHDL语言描述:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity counter60_60 isport(cp:in std_logic; bin:out std_logic_vector(5 downto 0); s:in std_logic; clr:in std_logic; ec:in std_logic; cy60:out std_logi

8、c);end counter60_60;architecture a of counter60_60 issignal Q:std_logic_vector(5 downto 0);signal rst,dly:std_logic;beginprocess(cp,rst)beginif rst=1 then Q=000000;elsif cpevent and cp=1 then dly=Q(5);if ec=1 then Q=Q+1;end if;end if;end process;cy60=not Q(5) and dly;rst=1 when Q=60 or clr=1 else 0;

9、bin=Q when s=1 else 000000;end a;60进制计数器的生成器件图:2.时间校对模块1)实现功能:按下校时键 ,时位迅速递增,满23清0按下校分键 ,时位迅速递增,满59清0 ( 注意:此时不向时位产生进位)按清0键,秒清0。计时(分)与较时(分)的选择:二选1的多路选择器具体策略:按键输出接21MUX选择端,正常的计时间信号与校对所用的信号分别接21MUX两个输入。注意问题:抖动 消除方法:D触发器,同步计数脉冲。原理:一个触发器CP(64HZ)内,屏蔽所有的抖动脉冲。2)计时与校时模块示意图:3)二路选择器的VHDL语言描述:library ieee;use ie

10、ee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity mux2_60 isport(a,b:in std_logic;s:in std_logic;y:out std_logic);end mux2_60;architecture arcmux of mux2_60 isbeginprocess(a,b,s)beginif s=0 then y=a;else y=b;end if;end process;end arcmux; 二路选择器的生成器件图:4)D触发器的图形

11、描述:D触发器的生成器件图:5)时间校对模块图:3、报时模块1)模块说明:功能说明:从59分50秒开始,每过2秒进行低音报时,当达到整点时,进行一次高音报时。 低音的频率可定为500HZ;高音的频率可定为1KHZ;人为设定在八点零八分闹时一分钟,频率为1KHZ;本模块端口说明:m1,m0,s1,s0分别为整点报时分和秒的高低位的输入,A,B分别是闹钟报时时和分的输入,500HZ,1kHZ分别为500hz和1khz鸣叫的控制信号。功能实现:定义f0,f1信号,用于存放两种频率闹时的控制信号;定义以m1,m0,s1,s0为敏感信号的一个进程,然后判断秒是否为判断秒的高位是5,如果秒的低位为0、2、

12、6、8则f0为1;若分是00则判断秒是否都为0,若都为0则f1为1。进程结束时把f0,f1的值分别赋给f500HZ,f1kHZ。2)整点报时模块示意图:3)整点报时VHDL语言描述:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity baoshi_60 isport(m1,m0:in std_logic_vector(3 downto 0); s1,s0:in std_logic_vector(3 downto 0); s500,s1000:out std_logic);end baos

13、hi_60;architecture a of baoshi_60 issignal f1,f0:std_logic;begin process(m1,m0,s1,s0) begin if (m1=0101 and m0=1001 and s1=0101 )then if( s0=0000 or s0=0010 or s0=0100 or s0=0110or s0=1000 ) then f0=1; else f0=0;f1=0; end if; else if (m1=0000 and m0=0000 and s1=0000 and s0=0000 ) then f1=1; else f1=

14、0;f0=0 end if; end if; end process; s500=f0; s1000=f1;end a; 整点报时的生成器件图:4)闹钟报时VHDL语言描述:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity malarm_60 is port(a,b:in std_logic_vector(7 downto 0); speak:out std_logic);end malarm_60;architecture b

15、ehave of malarm_60 isbeginprocess(a,b) begin if(a=00001000 and b=00001000 ) thenspeak=1;elsespeak=0;end if;end process;end behave;闹钟报时的生成器件图:4、分频模块:1) 模块说明:该模块实现将频率为1024Hz输入脉冲clk,分成512Hz、256Hz、64Hz、4Hz、1Hz等低频脉冲。由于clk的频率为1024hz,所以可以定义一个std_logic_vecture(9 downto 0),使它不停地从0000000000加到1111111111然后又返回00

16、0000000,由于最低位在clk脉冲到来时从0变成1,然后又在下一个脉冲变回0,因此最低位的时钟周期为clk的时钟周期的两倍,它的频率就为clk频率的1/2即512HZ。同理,次高位的频率就为clk频率的1/2*1/2=1/4,用这种方法就可以得到各种能整除1024的频率,从而实现分频功能。2)实现功能:通过一个标准的时钟脉冲产生一个基准频率(CP1),利用计数器来进行一级或多级分频,生成所需要的各种频率信号。3)分频模块示意图:4)分频功能VHDL语言描述:library ieee;use ieee.std_logic_1164.all;usi ieee.std_logic_unsigne

17、d.all;entity frequencydivider_60 is port(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 frequencydivider_60;architecture a of frequencydivider_60 is signal q:std_logic_vector(9 downto 0); begin process(clk) begin if clkev

18、ent and clk=1 then q=q+1; end if ; end process; hz512=q(0); hz256=q(1); hz64=q(3); hz4=q(7); hz1=q(9);end a;分频功能的生成器件图:5、动态显示模块:1)实现功能: 时间的显示: 24进制与60进制计数器的输出分成6组,每一组(4位)接BCD7段码译码器,驱动数码管显示。选用8个数码管中的6个作为时间显示。动态扫描原理与实现: 由两个VHDL语言实现由二进制到BCD码,再由BCD码到七段显示码的转化,还有一个扫描功能的实现。2)二进制到BCD转化的VHDL语言描述:library ieee

19、;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity binary_bcd_60 isport(bin:in std_logic_vector(5 downto 0); bcd:out std_logic_vector(7 downto 0);end binary_bcd_60;architecture a of binary_bcd_60 isbeginbcd=00000000 when bin=0 else 00000001 when bin=1 el

20、se 00000010 when bin=2 else 00000011 when bin=3 else 00000100 when bin=4 else 00000101 when bin=5 else 00000110 when bin=6 else 00000111 when bin=7 else 00001000 when bin=8 else 00001001 when bin=9 else00010000 when bin=10 else00010001 when bin=11 else00010010 when bin=12 else00010011 when bin=13 el

21、se00010100 when bin=14 else00010101 when bin=15 else00010110 when bin=16 else00010111 when bin=17 else00011000 when bin=18 else00011001 when bin=19 else00100000 when bin=20 else00100001 when bin=21 else00100010 when bin=22 else00100011 when bin=23 else00100100 when bin=24 else00100101 when bin=25 el

22、se00100110 when bin=26 else00100111 when bin=27 else00101000 when bin=28 else00101001 when bin=29 else00110000 when bin=30 else00110001 when bin=31 else00110010 when bin=32 else00110011 when bin=33 else00110100 when bin=34 else00110101 when bin=35 else00110110 when bin=36 else00110111 when bin=37 el

23、se00111000 when bin=38 else00111001 when bin=39 else01000000 when bin=40 else01000001 when bin=41 else01000010 when bin=42 else01000011 when bin=43 else01000100 when bin=44 else01000101 when bin=45 else01000110 when bin=46 else01000111 when bin=47 else01001000 when bin=48 else01001001 when bin=49 el

24、se01010000 when bin=50 else01010001 when bin=51 else01010010 when bin=52 else01010011 when bin=53 else01010100 when bin=54 else01010101 when bin=55 else01010110 when bin=56 else01010111 when bin=57 else01011000 when bin=58 else01011001 when bin=59 else00000000;end a;二进制转化为BCD码的生成器件图:3)BCD码转化为七段显示码的V

25、HDL语言描述:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity bcd_qi_60 isport(decoder_in:in std_logic_vector(3 downto 0); decoder_out:out std_logic_vector(6 downto 0) );end bcd_qi_60;architecture decoder_bcd_display of bcd_qi_60 isbegindecoder_

26、out=1111110 when decoder_in=0 else 0110000 when decoder_in=1 else 1101101 when decoder_in=2 else 1111001 when decoder_in=3 else 0110011 when decoder_in=4 else 1011011 when decoder_in=5 else 1011111 when decoder_in=6 else 1110000 when decoder_in=7 else 1111111 when decoder_in=8 else 1111011 when deco

27、der_in=9 else 0000000 ;end decoder_bcd_display;BCD码转化为七段显示码的生成器件:4)扫描功能的VHDL语言描述:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity scaner_60 isport(a,b,c,d,e,f:in std_logic_vector(3 downto 0);cp:in std_logic;sel:out std_logic_vector(5 downto 0);display:out std_logic_vector(3 downto 0);end scane

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论