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

📄 fq_divider.vhd

📁 分频器
💻 VHD
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY fq_divider IS
generic(n:integer:=1667);
PORT(
CLK,reset: IN STD_LOGIC;
CLK_OUT:buffer STD_LOGIC
);
END;
ARCHITECTURE A OF fq_divider IS
SIGNAL CNT1,CNT2:integer:=0;
SIGNAL OUTTEMP:STD_LOGIC;
BEGIN
P1:PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK='1' THEN
   IF CNT1=n-1 THEN
      CNT1<=0;
   ELSE
      CNT1<=CNT1+1;
   END IF;
END IF;
END PROCESS P1;
P2:PROCESS(CLK,reset)
BEGIN
 IF CLK'EVENT AND CLK='0' THEN
   IF CNT2=n-1 THEN
      CNT2<=0;
   ELSE 
      CNT2<=CNT2+1;
   END IF;
END IF;
END PROCESS P2;
P3:PROCESS(CNT1,CNT2)
BEGIN
 if reset='1'then
   OUTTEMP<='0';
 elsif ((n mod 2)=1) then
   IF CNT1=1 THEN
      IF CNT2=0 THEN
         OUTTEMP<='1';
      ELSE 
         OUTTEMP<='0';
      END IF;   
    ELSIF CNT1=(n+1)/2 THEN
          IF CNT2=(n+1)/2 THEN
             OUTTEMP<='1';
          ELSE OUTTEMP<='0';
          END IF;
    ELSE 
          OUTTEMP<='0';
    END IF;
   else
    if cnt1=1 then
       outtemp<='1';
    elsif (cnt1=(n/2+1)) then
       outtemp<='1';
    else
       outtemp<='0';
  end if;
 end if;
END PROCESS P3;
clk_out<=outtemp;
END A;

⌨️ 快捷键说明

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