用VHDL编写一个分频器,实现输出1MHz-1Hz之间的任意频率

如题,求高手可以帮帮忙小弟感激不尽

clk 输入一个相对较大的频率,
频率要多少就用N_diviseur除!

LIBRARY IEEE;
USE IEEE.Std_Logic_1164.ALL;

ENTITY div IS
GENERIC( n_diviseur : INTEGER := 2 );
PORT ( clk : IN Std_Logic;
clock : OUT Std_Logic);
END ENTITY;

ARCHITECTURE beha OF div IS
BEGIN
PROCESS (clk)
VARIABLE compteur : INTEGER RANGE 0 TO n_diviseur;

BEGIN

IF (clk'EVENT AND clk = '1') THEN
IF (compteur >= n_diviseur-1) THEN
compteur := 0;
clock <= '1';
ELSE
compteur := compteur + 1;
clock <= '0';
END IF;
END IF;
END PROCESS;
END ARCHITECTURE;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-05
library ieee;
use ieee.std_logic_1164.all;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity div_ry is
port(
clk_in :in std_logic;---------input clk
d:in std_logic_vector(7 downto 0);----------分频系数,根据你实际频率算下,用拨码开关实现
clk_out :out std_logic);-------输出clk
end div_ry;

architecture behav of div_ry is
signal clk_reg :std_logic;
signal cnt :integer;
begin
process(clk_in)
begin
if clk_in'event and clk_in='1' then
if cnt = d then
cnt<=0;
clk_reg<=not clk_reg;
else
cnt<=cnt+1;
end if;
end if;
clk_out<=clk_reg;
end process;
end behav;
能实现
第2个回答  2010-05-05
控制分频比可以实现你的设计,达到
步进=1HZ,
clkin=32MHz;
Jitter=1/16Ui.
简单原理就是你用分频器分出M分频和N分频的不同比重来实现步进1Hz.