--1000分频器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY clkdiv IS
PORT( clk : IN STD_LOGIC; --输入时钟信号
en : IN STD_LOGIC; --使能信号
clk_div : OUT STD_LOGIC); --输出分频信号
END clkdiv;
ARCHITECTURE behave of clkdiv IS
SIGNAL clkout : STD_LOGIC;
BEGIN
clk_div <= clkout;
PROCESS (en, clk)
VARIABLE cnt : INTEGER RANGE 0 TO 499;
--频率想要为原来1\N,则cnt范围取0到N/2-1
BEGIN
IF en = '1' THEN
cnt := 0;
clkout <= '0'; --注意信号与变量不同的赋值方式
ELSIF rising_edge(clk) THEN
IF cnt = 499 THEN
cnt := 0;
clkout <= not(clkout);
ELSE cnt := cnt + 1;
END IF;
END IF;
END PROCESS;
END behave;
文章评论(0条评论)
登录后参与讨论