数字逻辑课程设计---数字时钟.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字逻辑 课程设计报告 课程名称: EDA 设计题目:数字时钟 专业:通信工程 班级: 姓名: 学号: 一、设计目的 1、熟练地运用数字系统的设计方法进行数字系统设计; 2、能进行较复杂的数字系统设计; 3、按要求设计一个复杂的组合逻辑电路; 二、设计内容 1、要求显示秒、分、时,显示格式如下: 图2.1 显示格式 2、可调时,有闹钟。 三、设计原理 数字钟的基本工作原理: 数字钟以其显示时间的直观性、走时准确性作为一种计时工 具,数字钟的基本组成部分离不开计数器,在控制逻辑电路 的控制下完成预定的各项功能。数字钟的基本原理方框图如 下: 数字原理框图 1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分 ——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。 2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的key0键和key1键进行任意的调整,因为我们用的时钟信号均是经分频器后变成1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。 3)md1为使能端,低电平时正常显示时间,高电平时设置闹钟。可以根据我们自己的需要任意设置闹钟的时间,并且闹钟可持续一分钟。 根据总体方框图及各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、闹钟、分的调整以及小时的调整和一个顶层文件构成。采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。显示:小时采用24进制,而分钟均是采用6进制和10进制的组合。 四:实验仪器 计算机一台 五:设计步骤 1:建立文件夹,用于存放实验内容。 2:建立原理图文件。原理图如下: 3:建立波形文件,输入变量,进行仿真,仿真结果 4 显示程序 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity XIANSHIDZB is Port ( Clk : in std_logic; --状态机时钟信号,同时也是液晶时钟信号 R0,R1,R2: in std_logic_vector(7 downto 0); rs: buffer std_logic; rw : out std_logic; --液晶读写信号 en : out std_logic; --液晶使能信号 Clk_Out : buffer std_logic; --除输出的秒脉冲 d : buffer std_logic_vector(7 downto 0) ); --LCD的数据线 end XIANSHIDZB; architecture Behavioral of XIANSHIDZB is type xianshi is array(0 to 31) of std_logic_vector(7 downto 0);--显示缓冲 signal qx : xianshi :=((others =); type state is (clear,ids,dlnf,dcb,ddram1,outdata1,ddram2,outdata2);--ddram2, signal Count : std_logic_vector(15 downto 0); signal LCLK_OUT : std_logic; signal Counts : integer range 0 to 3000000:=0;--;std_logic_vector(22 downto 0); signal Current_State: state; signal tempa : std_logic_vector(4 downto 0):=00000; begin process(Clk_Out,clk)----秒脉冲 begin if(rising_edge(clk))then Counts = Counts + 1; if(Counts=3000000)then -1秒 Clk_Out = not Clk_Out; en

文档评论(0)

li455504605 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档