📄 frequency.vhd
字号:
---------------------------------------------------------------------------------------------------
--*************************************************************************************************
-- CreateDate : 2007-07-12
-- ModifData : 2007-08-21
-- Description : Frequency
-- Author : Explorer01
-- Version : V1.0
--*************************************************************************************************
---------------------------------------------------------------------------------------------------
-- VHDL library Declarations
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.std_logic_unsigned.ALL;
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-- The Entity Declarations
ENTITY Frequency IS
PORT
(
RESET: IN STD_LOGIC;
GCLKP1: IN STD_LOGIC;
GCLKP2: IN STD_LOGIC;
CLK1MHz: OUT STD_LOGIC;
CLK1KHz: OUT STD_LOGIC;
CLK1Hz: OUT STD_LOGIC;
VGACLK: OUT STD_LOGIC;
LCDCLK: OUT STD_LOGIC;
RS232CLK: OUT STD_LOGIC;
irDACLK: OUT STD_LOGIC;
CLK8Hz: OUT STD_LOGIC;
CLK2Hz: OUT STD_LOGIC
);
END Frequency;
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-- The Architecture of Entity Declarations
ARCHITECTURE Behavioral OF Frequency IS
--Clock:
SIGNAL Period1uS, Period1mS, Period1S: STD_LOGIC;
BEGIN
-------------------------------------------------
-- GCLK: 1MHz(1uS)
CLK1uS: PROCESS( RESET, GCLKP1, Period1uS, Period1mS, Period1S )
VARIABLE Count : STD_LOGIC_VECTOR(5 DOWNTO 0); -- 1MHz
VARIABLE Temp : STD_LOGIC;
VARIABLE Count1 : STD_LOGIC_VECTOR(9 DOWNTO 0); -- 1KHz
VARIABLE Count2 : STD_LOGIC_VECTOR(9 DOWNTO 0); -- 1Hz
VARIABLE Count3 : STD_LOGIC_VECTOR(3 DOWNTO 0); -- 76800Hz
VARIABLE CountT : STD_LOGIC_VECTOR(4 DOWNTO 0); -- 37.9KHz
BEGIN
------------------------------------
--GCLKP : 50MHz
--Period: 1uS (Period1uS <= GCLKP1; )
IF( GCLKP1'EVENT AND GCLKP1='1' ) THEN
-- 1uS
IF( Count>"110000" ) THEN Count := (OTHERS=>'0');
ELSE Count := Count + 1;
END IF;
-- 1MHz OUT
Period1uS <= Count(5);
-- 25MHz
Temp := NOT Temp;
END IF;
VGACLK <= Temp;
CLK1MHz <= Period1uS;
------------------------------------
--Period: 1mS
IF( Period1uS'EVENT AND Period1uS='1' ) THEN
-- 1mS
IF( Count1>"1111100110" ) THEN Count1 := (OTHERS=>'0');
ELSE Count1 := Count1 + 1;
END IF;
Period1mS <= Count1(9);
LCDCLK <= Count1(8);
-- 76800Hz
IF( Count3>"1011" ) THEN Count3 := (OTHERS=>'0');
ELSE Count3 := Count3 + 1;
END IF;
RS232CLK <= Count3(3);
-- 37.9KHz : 26uS
IF( CountT > "11000" ) THEN CountT := (OTHERS=>'0');
ELSE CountT := CountT + 1;
END IF;
irDACLK <= CountT(4);
END IF;
CLK1KHz <= Period1mS;
------------------------------------
--Period: 1S (1111100110: 998)
IF( Period1mS'EVENT AND Period1mS='1' ) THEN
IF( Count2>"1111100110" ) THEN Count2 := (OTHERS=>'0');
ELSE Count2 := Count2 + 1;
END IF;
Period1S <= Count2(9);
------------------------------------
CLK8Hz <= Count2(7);
CLK2Hz <= Count2(8);
END IF;
CLK1Hz <= Period1S;
END PROCESS;
END Behavioral;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -