1、 计算机科学与通信工程学院 数字逻辑数字逻辑 课程设计报告课程设计报告 多功能数字钟的设计与实现多功能数字钟的设计与实现 姓姓 名:名: 专业专业班级:班级: 通信通信 1002 学学 号号: 指导老师:指导老师: 设计设计日期:日期: 2012.06.202012.06.24 计算机科学与通信工程学院 一、设计目的一、设计目的 1、学会应用数字系统设计方法进行电路设计; 2、学习使用 QuartusII 9.0, 进一步提高软件的开发应用能力,增强自己 的动手实践能力。 3、培养学生书写综合实验报告的能力。 二、设计任务及要求二、设计任务及要求 实现多功能数字钟的设计,主要有以下功能: 1、
2、记时、记分、记秒 2、校时、校分、秒清 0 3、整点报时 4、时间正常显示 5、闹时功能(选做) 三、设计思路三、设计思路 3.1 3.1 计时模块计时模块 3.1.1 3.1.1 设计原理设计原理 计时模块如图 3.1.1 所示,其中计时用 60 进制计数器,计分和计秒用 24 进制计数器。 60进制计数器进制计数器24进制计数器进制计数器60进制计数器进制计数器 1HZ 2MUX2MUX 60进制计数器进制计数器24进制计数器进制计数器60进制计数器进制计数器 1HZ 2MUX2MUX 图 3.1.1 计时间模块 计时间过程: 计秒:1HZ 计数脉冲,059 循环计数,计数至 59 时产生
3、进位信号; 计分:以秒计数器进位信号作为分计数脉冲,059 循环计数,59 时产生进位; 计时:以分计数器进位信号作为时计数脉冲,023 循环计数,23 时清 0。 计数器的设计: 3.1.2 3.1.2 设计程序设计程序 编程分别设计 24、60 进制计数器,计数状态以 BCD 码形式输出。 24 进制计数器源程序: 计算机科学与通信工程学院 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity FEN24 is port(en,clk:in std_logic; -高电平有效的使
4、能信号/输入时钟 co:out std_logic; h1,h0:out std_logic_vector(3 downto 0); -时高位/低位 end FEN24; architecture behave of FEN24 is begin process(clk) variable cnt1,cnt0:std_logic_vector(3 downto 0); -记数 begin if(en=0)then -“使能”为 0 cnt0:=“0010“; cnt1:=“0001“; elsif clkevent and clk=1then -上升沿触发 if cnt1=“0010“and
5、cnt0=“0011“then cnt0:=“0000“; -高位/低位同时为 0 时 cnt1:=“0000“; co=1; else co=0; if cnt0=“1001“then cnt0:=“0000“; cnt1:=cnt1+1; else cnt0:=cnt0+1; -高位记数累加 end if; end if; end if; h1=cnt1; h0=cnt0; end process; end behave; 60 进制计数器源程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity FEN60 is 计算机科学与通信工程学院 port(en,clk:in std_logic; -高电平有效的使能信号/输入时钟 co:out std_logic; -输出/进位信号 s1,s0:out std_logic_vector(3 downto 0); end FEN60; architecture behave of FEN60 is begin process(clk,en) variable cnt1,cnt0:std_logic_vector(3 downto 0); -计数 begin if en=0then -“使能”为 0 cnt1:=