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

📄 clk_div.vhd

📁 实现对时钟信号的技术分频
💻 VHD
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY clk_div IS
     PORT(CLK:IN STD_LOGIC;
         clk_div3:OUT STD_LOGIC);
END clk_div;
  ARCHITECTURE behave OF clk_div IS
	   CONSTANT LD:STD_LOGIC_VECTOR(1 DOWNTO 0):="01";
	   CONSTANT MD:STD_LOGIC_VECTOR(1 DOWNTO 0):="10";
	   CONSTANT ZERO:STD_LOGIC_VECTOR(1 DOWNTO 0):=(OTHERS=>'0');
	   SIGNAL COUNTF:STD_LOGIC_VECTOR(1 DOWNTO 0);
	   SIGNAL COUNTR:STD_LOGIC_VECTOR(1 DOWNTO 0);
       SIGNAL LEVELR:STD_LOGIC;
	   SIGNAL LEVELF:STD_LOGIC;
	BEGIN
      PROCESS(CLK)
         BEGIN 
			IF(CLK'EVENT AND CLK='1')THEN
			   IF(COUNTR=MD)THEN
			   COUNTR<=ZERO;
			   ELSE COUNTR<=COUNTR+1;
			   END IF;
			END IF;
	  END PROCESS;
	 
	 PROCESS(CLK)
         BEGIN 
			IF(CLK'EVENT AND CLK='0')THEN
			   IF(COUNTF=MD)THEN
			   COUNTF<=ZERO;
			   ELSE COUNTF<=COUNTF+1;
			   END IF;
			END IF;
	  END PROCESS;
	
	 PROCESS(CLK)
          BEGIN 
            IF(CLK'EVENT AND CLK='1')THEN
				IF(COUNTR=ZERO)THEN
				LEVELR<='1';
				ELSIF(COUNTR=LD)THEN 
				LEVELR<='0';
				END IF;
			END IF;
	  END PROCESS;
        
     PROCESS(CLK)
          BEGIN 
            IF(CLK'EVENT AND CLK='0')THEN
				IF(COUNTF=ZERO)THEN
				LEVELF<='1';
				ELSIF(COUNTF=LD)THEN 
				LEVELF<='0';
				END IF;
			END IF;
	  END PROCESS;
	
	clk_div3<=LEVELR OR LEVELF;
	END behave;
	

    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -