lianglu.vhd

来自「该程序可是多路频率检测」· VHDL 代码 · 共 62 行

VHD
62
字号
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_SIGNED.ALL;

ENTITY lianglu IS
   PORT (Clr,clk,ENA:IN STD_LOGIC; 
         DCLK1,DCLK2: IN STD_LOGIC;          
         M1,M2:OUT STD_LOGIC); 
END lianglu; 

ARCHITECTURE ONE OF lianglu IS

SIGNAL X1,X2,Q1,Q2:STD_LOGIC_VECTOR(11 DOWNTO 0);
SIGNAL LOAD1,LOAD2: STD_LOGIC;

BEGIN

PROCESS(Clr,clk)
      BEGIN   
        IF clr='1' THEN  Q1<="000000000000";
        ELSIF CLK'EVENT AND CLK='1' THEN
                   IF ENA ='1'  THEN  
                           IF DCLK1 = '1' THEN  Q1 <= Q1+1;
                           ELSE   Q1 <= "000000000000"; 
                           END IF;                          
                   END IF;
        END IF;
        LOAD1 <= NOT DCLK1; 
END PROCESS;

PROCESS(Clr,clk)
      BEGIN   
        IF clr='1' THEN  Q2<="000000000000";
        ELSIF CLK'EVENT AND CLK='1' THEN
                   IF ENA ='1'  THEN  
                           IF DCLK2 = '1' THEN  Q2 <= Q2+1;
                           ELSE   Q2 <= "000000000000"; 
                           END IF;                          
                   END IF;
        END IF;
        LOAD2 <= NOT DCLK2; 
END PROCESS;

PROCESS(Q1)
BEGIN
     IF rising_edge(LOAD1)  THEN  X1 <= Q1 ;                                         
       IF 	X1 < "000011001000"  THEN M1 <='1';
       ELSE    M1 <= '0';
       END IF;
     END IF;
END PROCESS;

PROCESS(Q2)
BEGIN
     IF rising_edge(LOAD2)  THEN  X2 <= Q2 ;                                         
           IF X2 < "000011001000"  THEN M2 <='1';                
           ELSE    M2 <= '0';
           END IF;
     END IF;
END PROCESS;

END ONE;

⌨️ 快捷键说明

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