基于FPGA数字钟研发设计.doc
文本预览下载声明
南昌大学实验报告
学生姓名: 学 号: 专业班级:
实验类型:□验证□综合设计□创新 实验日期: 实验成绩:
实验 数字钟设计
一实验目的
(1)
二实验要求(1)
(2)仿真波形;
(3)测试;
三
由图可以清晰的看到数字钟系统设计中各功能模块间连接关系。系统时钟1KHZ经过分频后产生1秒的时钟信号,1秒的时钟信号作为秒计数模块的输入信号,秒计数模块产生的进位信号作为分计数模块的输入信号,分计数模块的进位信号作为时计数模块的输入信号。秒计数模块、分计数模块、时计数模块的计数输出分别送到显示模块。由于设计中要使用按键进行调节时间,而按键的动作过程中存在产生得脉冲的不稳定问题,所以就牵扯到按键去抖动的问题,对此系统中设置了按键去抖动模块,按键去抖动模块产生稳定的脉冲信号送入按键控制模块,按键控制模块根据按键的动作对秒、分、时进行调节。
原理图如下:
四实验程序LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY fenpin IS
PORT(CLK:IN STD_LOGIC;
CLK1:OUT STD_LOGIC);
END fenpin;
ARCHITECTURE behav OF fenpin IS
SIGNAL X,CNT:STD_LOGIC_VECTOR(11 DOWNTO 0);
BEGIN
P1:PROCESS(CLK)
BEGIN
X=001111101000;--1000分频
IF CLKEVENT AND CLK = 1 THEN CNT=CNT+1;
IF CNT=X-1 THEN CLK1=1;CNT=000000000000;
ELSE CLK1=0;
END IF;
END IF;
END PROCESS;
END behav;
2、60进制计数器(秒、分计数器)模块
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY count60 IS
PORT(EN,RST,CLK1: IN STD_LOGIC;
Q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
COUT: OUT STD_LOGIC);
END count60;
ARCHITECTURE behav OF count60 IS
SIGNAL J : STD_LOGIC_VECTOR(7 DOWNTO 0); --8位BCD计数值
SIGNAL GW,SW : STD_LOGIC_VECTOR(3 DOWNTO 0);--计数器的个,十
BEGIN
P2:PROCESS(EN,RST,CLK1)
BEGIN
GW=J(3 downto 0);
SW=J(7 downto 4);
IF RST=1 THEN J=(others=0);
ELSIF CLK1EVENT AND CLK1=1 THEN
IF EN=1 THEN
IF THEN
IF GW=9 THEN --个位为9时加7调整
J=J+7;
ELSE J=J+1;
END IF;
ELSE J=(others=0);
END IF;
END IF;
IF J THEN
COUT =1; ELSE COUT=0;
END IF;
END IF;
Q=J;
END PROCESS;
END behav;
3、24进制计数器模块
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY count24 IS
PORT(EN,RST,CLK1: IN STD_LOGIC;
Q:
显示全部