实验五数字时钟的设计.doc
文本预览下载声明
实验五 数字时钟的设计
实验性质:综合性 实验级别:
开课单位:信息与通信工程学院通信工程系 学时:4学时
一、实验目的:
1、学习用VHDL语言实现比较大型的电路的方法。
2、继续巩固cpld技术层次化设计方法。
二、实验器材:
计算机、Quartus II软件
三、实验内容:
设计一数字时钟,要求具有时、分、秒、计数显示功能,以24小时循环计时;具有清零,调节小时,分钟功能;具有整点报时功能。
四、实验步骤:
1、根据电路特点,用层次设计的概念,将此任务分成若干模块,规定每一模块的功能和各模块之间的接口。让几个学生分作和调试其中之一,然后再将各模块合起来联试。以培养学生之间的合作精神,同时加深层次化设计概念。
2、了解软件的元件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何融合。
3、模块说明:
各种进制的计数及时钟控制模块(10进制、6进制、24进制)
扫描分时显示,译码模块
各模块都用VHDL语言编写
五、实验模块:
秒模块
LIBRARY ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
ENTITY second IS
PORT(
clk, reset,setmin : IN STD_LOGIC;
enmin : OUT STD_LOGIC;
da0out: out std_logic_vector (6 downto 0));
END entity second;
ARCHITECTURE fun OF second IS
SIGNAL count: STD_LOGIC_VECTOR( 6 downto 0);
BEGIN
da0out = count;
process ( clk , reset , setmin)
begin
-- enmin=k;
if (reset=0) then
count = 0000000;
elsif (setmin=0) then
enmin = clk;
elsif (clk event and clk=1) then
if (count(3 downto 0)=1001) then
if (count 16#60#) then
if (count=1011001) then
enmin=1;
count=0000000;
ELSE
count=count+7;
end if;
else
count=0000000;
end if;
elsif (count 16#60#) then
count = count+1;
enmin=0 after 100 ns;
else
count=0000000;
end if;
end if;
end process;
END fun;
分析:
脉冲从0计数至59,向前进1,enmin由低电平变至高电平。
分模块
LIBRARY ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
ENTITY minute IS
PORT(
clk, reset,sethour : IN STD_LOGIC;
enhour : OUT STD_LOGIC;
da1out: out std_logic_vector (6 downto 0));
END entity minute;
ARCHITECTURE fun OF minute IS
SIGNAL count: STD_LOGIC_VECTOR( 6 down
显示全部