基于xilinx仿真 数字电子时钟的VHDL设计.doc
文本预览下载声明
VHDL语言设计数字时钟
实验性质:综合性 实验级别:
开课单位:信息与通信工程学院通信工程系 学时:4学时
一、实验目的:
1、学习用VHDL语言实现比较大型的电路的方法。
2、继续巩固cpld技术层次化设计方法。
二、实验器材:
计算机、Quartus II软件或xilinx ISE
三、实验内容:
设计一数字时钟,要求具有时、分、秒、计数显示功能,以24小时循环计时;具有清零,调节小时,分钟功能;具有整点报时功能。
四、实验步骤:
1、根据电路特点,用层次设计的概念,将此任务分成若干模块,规定每一模块的功能和各模块之间的接口。让几个学生分作和调试其中之一,然后再将各模块合起来联试。以培养学生之间的合作精神,同时加深层次化设计概念。
2、了解软件的元件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何融合。
3、模块说明:
各种进制的计数及时钟控制模块(10进制、6进制、24进制)
扫描分时显示,译码模块
各模块都用VHDL语言编写
实现电子钟原理图
各模块程序
秒模块:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity second is
Port ( clk : in STD_LOGIC;
reset : in STD_LOGIC;
semin : in STD_LOGIC;
enmin : out STD_LOGIC;
daout : out STD_LOGIC_VECTOR (6 downto 0));
end second;
architecture Behavioral of second is
signal count:std_logic_vector(6 downto 0);
signal enmin_1,enmin_2:std_logic;
begin
daout=count;
enmin_2=(semin and clk);
enmin=(enmin_1 or enmin_2);
process(clk,reset,semin)
begin
if(reset=0)then
count=0000000;
enmin_1=0;
elsif(clkevent and clk=1)then
if(count(3 downto 0))=1001then
if(count16#60#)then
if(count=1011001)then
enmin_1=1;count=0000000;
else
count=count+7;
end if;
else
count=0000000;
end if;
elsif(count16#60#)then
count=count+1;
enmin_1=0;
else
count=0000000;enmin_1=0;
end if;
end if;
end process;
end Behavioral;
分模块:
library IEEE;
use IEEE.STD_LOGIC_1164
显示全部