江苏大学数字逻辑电路课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
江苏大学
数字逻辑电路课程设计
课题:多功能数字钟
学号:4141110023
姓名:谢舟
专业班级:J 计算机1401
学院:京江学院
指导老师:耿霞
2016年1月9日
J计算机1401 谢舟4141110023
目录
一、实验目的 (1)
二、顶层图 (1)
三、系统功能分析 (1)
1.时、分、秒的基本组成VHDL (1)
2.分配器和二路选择器 (4)
3.计时和校时模块 (5)
4.整点报时模块 (6)
5.分频模块 (7)
6.动态显示模块 (8)
7.闹钟模块 (11)
四、引脚锁定 (12)
五、心得体会 (12)
一、实验目的
多功能数字钟具有以下功能:
(1)能进行正常的时、分、秒计时。
(2)可使用以EP1C12F324C8为核心的硬件系统上的脉冲按键或者拨动开关实现“校
时”、“校分”及秒清零功能。
(3)可使用以EP1C12F324C8为核心的硬件系统上的扬声器进行整点报时。
(4)设置闹钟,并连接扬声器实现闹铃功能。
(5)通过以EP1C12F324C8为核心的硬件系统上的动态扫描数码管显示时间。
二、顶层图
三、系统功能分析
根据总体设计框图,可以将整个系统分为6个模块来实现,分别是计时模块、校时模块、整点报时模块、分频模块、动态显示模块及闹钟模块。
1.时、分、秒的基本组成VHDL
(1)24进制计数器
源程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity cnt24 is
port(clk:in std_logic;
ql,qh:out std_logic_vector(3 downto 0);
tc:out std_logic);
end cnt24;
architecture one of cnt24 is
signal l,h:std_logic_vector(3 downto 0);
signal co:std_logic;
begin
process(clk)
begin
if (clk'event and clk='1') then
if (l<"1001" and (h="0000" or h="0001")) then
l<=l+1;h<=h;co<='0';
end if;
if(l="1001" and (h="0000" or h="0001")) then
h<=h+1;l<="0000";co<='0';
end if;
if(l<"0100" and h<"0010") then
l<=l+1;h<=h;co<='0';
end if;
if(l="0011" and h="0010") then
h<="0000";l<="0000";co<='1';
end if;
end if;
qh<=h;
ql<=l;
tc<=co;
end process;
end one;
模块图:
(2)60进制计数器
源程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cnt60 is
port (
clk,clr:in std_logic;
ql,qh:buffer std_logic_vector(3 downto 0);
tc:out std_logic
);
end cnt60;
architecture behavor of cnt60 is
signal h,l:std_logic_vector(3 downto 0);
signal co:std_logic;
begin
process(clk,clr)
begin
if (clr='0') then h<="0000"; l<="0000"; co<='0';
elsif (clk'event and clk='1') then
if (l="1001") then
if (h="0101") then h<="0000";l<="0000";co<='1';
else h<=h+1;l<="0000";co<='0';
end if;
else
l<=l+1;h<=h;
co<='0';
end if;
end if;
qh<=h;
ql<=l;
tc<=co;
end process;
end behavor;
模块图:
2.分配器和二路选择器(1)分配器
源程序:
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;
entity dex2 is
port(sel:in std_logic;
data: in std_logic;
o1,o2:out std_logic); end dex2;
architecture beh of dex2 is begin
process(sel)
begin
if(sel='0')then
o1<=data;
else
o2<=data;
end if;
end process;
end beh;
模块图: