⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frequency.vhd

📁 有關於EP2C的一些程序(EX:I2C,FLASH,IRDA,MUSIC,LED,LIGHT,SRAM,UART,PS2,SPI )
💻 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 + -