数字钟设计实验报告.doc_第1页
数字钟设计实验报告.doc_第2页
数字钟设计实验报告.doc_第3页
数字钟设计实验报告.doc_第4页
数字钟设计实验报告.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

J I A N G S U U N I V E R S I T Y数字逻辑课程设计报告 学院名称:专业班级:学生姓名:学生学号: 年 月 日一、设计目的 1、学会应用数字系统设计方法进行电路设计。 2、进一步提高MaxplusII软件开发应用能力。 3、提高VHDL进行综合设计的能力 4、培养学生综合实验能力。2、 设计任务及要求 1、拥有正常的时、分、秒计时功能;2、能利用实验板上的按键实现校时、校分及秒清零功能;3、能利用实验板上的扬声器做整点报时;4、在MAXPLUS 中采用层次化方法进行设计; 5、完成全部电路设计后在实验板上下载,验证设计课题的正确 三、设计思路 整个系统分成5个模块来实现,分别是及时模块、校时模块、整点报时模块、分频模块、动态显示模块。(1) 计时模块 1、设计方案 计时间过程: 计秒:1HZ计数脉冲,059循环计数,计数至59时产生进位信号。 计分:以秒计数器进位信号作为分计数脉冲,059循环计数,59时产生进位。 计时:以分计数器进位信号作为时计数脉冲,023循环计数,23时清0。 该模块的设计方法为使用一个二十四进制和两个六十进制计数器级联,构成数字钟的基本框架。二十四进制计数器用于计时,六十进制计数器用于计分和计秒。只要给秒计数器一个1Hz的时钟脉冲,则可以进行正常计时。分计数器以秒计数器的进位作为计数脉冲,小时计数器以分计数器的进位作为技术脉冲。2、 设计代码二十四进制:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt24 isport(clk:in std_logic; qh,ql:out std_logic_vector(3 downto 0); -qh为高位,ql为低位end cnt24;architecture one of cnt24 is begin process(clk) variable qli,qhi:std_logic_vector(3 downto 0):=0000; begin if clkevent and clk=1 then qli:=qli+1; -有脉冲到来时开始计时 if qli=1010 then qhi:=qhi+1; qli:=0000; end if; if (qhi=0010)and(qli=0100) then qhi:=0000; qli:=0000; end if; end if; ql=qli; qh=qhi; end process; end one; 六十进制:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt60 is port( clk,clr:in std_logic; qh,ql:out std_logic_vector(3 downto 0); -qh为高位,ql为低位 tc:out std_logic); -tc为低位向高位的进位 end cnt60; architecture one of cnt60 is begin process(clk,clr) variable ch,cl: std_logic_vector(3 downto 0); variable c: std_logic; begin if clr=0 then ch:=0000;cl:=0000; elsif clkevent and clk=1 then if ch=0101 and cl=1001 then ch:=0000; cl:=0000;c:=1; -计时到59时产生进位 elsif cl1001 then cl:=cl+1;c:=0; elsif cl=1001 then cl:=0000;ch:=ch+1;c:=0; end if; end if; tc=c; qh=ch; ql=cl; end process; end one; 3、 仿真波形截图二十四进制:通过系统编译后生成器件 六十进制通过系统编译后生成器件 (2) 校时模块 1、设计要求 按校时键,时位迅速递增,满23清0;按下校分键,分位迅速递增,满59清0,注意:此时不向时位产生进位;按秒清0键,秒清0。 2、注意问题 (1)如何实现校对时间时,计数器快速递增? 按键校对时间时,将一个频率较高的计数脉冲信号作用于计数器,屏蔽正常计时的计数脉冲信号。(2) “抖动”的消除 电路抖动:一次按键的弹跳现象,电路产生多个计数脉冲,导致一次按键,多次计数的误动作。 抖动产生的原因:物理原因。消除方法:D触发器,同步按键脉冲。 原理:一个CP内,屏蔽所有抖动脉冲。3、设计方法综合上述要求及可能出现的问题,校时模块可以用VHDL语言设计一个器件,该器件的功能是用3个波动开关控制校时功能:清零键打开时,秒计数器的清零端为0;较分键打开时分计数器的使能端为1,进位端输出为零,同时给予它一个4Hz的时钟信号;校时键打开小时计数器使能端为1,时钟信号为4Hz。因此,可选择 二选1的多路选择器。 具体策略:按键输出接2选1 MUX选择端,正常的计时时钟与校时时钟分别接2选1MUX的两个数据输入端。4、 设计代码二路选择器 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux2 isport( A,B:in std_logic; S:in std_logic; Y:out std_logic );end mux2;architecture one of mux2 isbegin process(A,B,S) begin if S=0 then Y=A; else Y=B; -Y为0时选择A,为1时选择B end if; end process;end one;5、 二路选择器的生成器件(3) 报时模块 1、设计要求 从59分50秒开始,每2秒一次低音报时;当达到整点时,进行一次高音报时。 低音:频率可定为500HZ;高音:频率可定为1KHZ。 报时效果:报时脉冲接扬声器输入,引脚号:N6。 2、实现方案用VHDL语言设计一个器件,其输入端与计时器分、秒的输出端相接。当时间为59分50秒、52秒、54秒、56秒、58秒时编号为hz500的输出端为1,否则为0。当00分00秒时编号为hz1k的输出端为1,否则为0。 hz500的输出端与500hz的连线同接在与门上, Hz1k的输出端与1khz的连线同接在与门上,2个与门输出端接在一个或门上,输出端连在扬声器上。3、 设计代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity zdbs isport(mh,ml,sh,sl : in std_logic_vector(3 downto 0); sig500,sig1k : out std_logic);end zdbs;architecture a of zdbs issignal q : std_logic_vector(15 downto 0);signal s500,s1k : std_logic;beginq(15 downto 12)=mh;q(11 downto 8)=ml;q(7 downto 4)=sh;q(3 downto 0)=sl;hring : blockbegin s500=1 when q=0101100101010000 else 1 when q=0101100101010010 else 1 when q=0101100101010100 else 1 when q=0101100101010110 else 1 when q=0101100101011000 else 0; s1k=1 when q=0000000000000000 else 0;end block hring;sig500=s500;sig1k=s1k;end a;4、生成器件(4) 分频模块 1、设计要求 设计一个进制较大的计数器,分频产生各种频率的脉冲信号。 2、设计方案 通过一个标准的时钟脉冲产生一个基准频率,利用计数器来进行一级或多级分频,生成所需要的各种频率信号。3、 分频器的设计代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity freq_divider is port(clk: in std_logic; hz1,hz4,hz64,hz512: out std_logic);end freq_divider;architecture fen of freq_divider isbegin process (clk)variable ping:std_logic_vector(9 downto 0):=0000000000;begin if clkevent and clk=0 then if ping1111111111 then ping:=ping+1; hz1=ping(9); hz4=ping(7); hz64=ping(3); hz5120); end if; end if; end process;end fen;4、 生成器件(五)动态扫描 1、设计要求 动态模式下,8个数码管连接同个七段码,需要进行分时控制的动态扫描显示。 2、设计方案在动态方式下,所有的数码管对应同一组七段码,每一个数码管有一个选择端控制点亮或熄灭,如果全部点亮,则都显示同样的数字。若要实现6位不同时间的显示,则需要利用人的视觉缺陷。 可以将6个不同时间段分别将每组时间经过七段码后输出六个数码管,当某一组时间的七段码到达时,只点亮对应位置上的数码管,显示相应的数字;下一个循环将另一组时间的七段码送至数码管,同样点亮相应的数码管,6次一循环,形成以扫描序列。24进制(时)与60进制(分、秒)计数器的输出分成6组,每一组(4位BCD码)接BCD-7段码显示译码器(动态显示只需1个),驱动数码管显示。选用8个数码管中的6个作为时间显示 。2、 设计代码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=111 then dount:=000; ELSE dount:=dount+1; END IF; END IF; selkeykeykeykeykeykeykeykeynull; END CASE; END PROCESS; PROCESS (key) BEGIN case key is when0000=seg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outnull; END CASE; END PROCESS; END beha;4、生成器件4、 设计中遇到的问题1、电子钟在下载的时候秒在50的时候会产生进位,在60的时候又产生进位 解决方法:在秒进位输出接一个D触发器2、 在用VHDL语言写程序时,经常会出错,经常忘括号、分号,导致程序编出来有好多错。3、 在对二十四进制和六十进制模块进行仿真是出现的波形就是不正常,达不到预期的结果, 经过反复的调试才找到问题所在,主要原因是控制的时间不合理。通过对时间的控制, 最终得到了输出正确波形。4、 在连接图时,有的线没接好,编译出来会有很多错。5、 设计结果多功能数字钟的顶层图为:通过管教锁定,数码管能正常的计时,计时到59分50秒时,每两秒一次低音报时,整点时进行高音报时,可以将报时信号接到实验板上的扬声器输出。而以不同频率的脉冲信号区分低音和高音报时。比如可用500Hz信号进行低音报时信号,1kHz信号作为高音报时信号。按下校时键,小时计数

温馨提示

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

评论

0/150

提交评论