clkgen_altera.vhd

来自「The GRLIB IP Library is an integrated se」· VHDL 代码 · 共 171 行

VHD
171
字号
library ieee;use ieee.std_logic_1164.all;-- pragma translate_offlibrary altera_mf;use altera_mf.altera_mf_components.all;-- pragma translate_onentity altera_pll is  generic (    clk_mul  : integer := 1;     clk_div  : integer := 1;    clk_freq : integer := 25000  );  port (    inclk0  : in  std_ulogic;    c0	    : out std_ulogic;    e0	    : out std_ulogic;     locked  : out std_ulogic);end;architecture rtl of altera_pll is  component altpll  generic (       operation_mode         : string := "NORMAL" ;    inclk0_input_frequency : positive;    clk0_multiply_by       : positive := 1;    clk0_divide_by         : positive := 1;    extclk0_multiply_by    : positive := 1;    extclk0_divide_by      : positive := 1  );  port (    inclk       : in std_logic_vector(1 downto 0);    clkena      : in std_logic_vector(5 downto 0);    extclkena   : in std_logic_vector(3 downto 0);    clk         : out std_logic_vector(5 downto 0);    extclk      : out std_logic_vector(3 downto 0);    locked      : out std_logic  );  end component;  signal clkena	: std_logic_vector (5 downto 0);  signal clkout	: std_logic_vector (5 downto 0);  signal inclk	: std_logic_vector (1 downto 0);  signal extclk : std_logic_vector (3 downto 0);begin  clkena <= "000001"; inclk <= '0' & inclk0;  c0 <= clkout(0); e0 <= extclk(0);  altpll0 : altpll  generic map ( --    operation_mode => "ZERO_DELAY_BUFFER", inclk0_input_frequency => clk_freq,     inclk0_input_frequency => clk_freq,     extclk0_multiply_by => clk_mul, extclk0_divide_by => clk_div,    clk0_multiply_by => clk_mul, clk0_divide_by => clk_div)  port map ( clkena => clkena, inclk => inclk, extclkena => clkena(3 downto 0),    clk => clkout, locked => locked, extclk => extclk );end;library ieee;use ieee.std_logic_1164.all;library gaisler;use gaisler.misc.all;use gaisler.libclk.all;library grlib;use grlib.stdlib.all;-------------------------------------------------------------------- Stratix clock generator ---------------------------------------------------------------------------------------------------------entity clkgen_stratix is generic (    clk_mul  : integer := 1;     clk_div  : integer := 1;    sdramen  : integer := 0;    sdinvclk : integer := 0;    pcien    : integer := 0;    pcidll   : integer := 0;    pcisysclk: integer := 0;    freq     : integer := 25000);  port (    clkin   : in  std_logic;    pciclkin: in  std_logic;    clk     : out std_logic;			-- main clock    clkn    : out std_logic;			-- inverted main clock    sdclk   : out std_logic;			-- SDRAM clock    pciclk  : out std_logic;			-- PCI clock    cgi     : in clkgen_in_type;    cgo     : out clkgen_out_type);end; architecture rtl of clkgen_stratix is  constant VERSION : integer := 1;  constant CLKIN_PERIOD : integer := 20;  signal   Clk_i             : std_logic;  signal   Clkint, pciclkint : std_logic;  signal   pllclk, pllclkn   : std_logic;  -- generated clocks  signal   s_clk             : std_logic;    -- altera pll  component altera_pll    generic (      clk_mul  : integer := 1;       clk_div  : integer := 1;      clk_freq : integer := 25000    );    port (      inclk0 : in  std_ulogic;      e0     : out std_ulogic;      c0     : out std_ulogic;      locked : out std_ulogic);  end component;    begin  cgo.pcilock <= '1';  c0 : if (PCISYSCLK = 0) generate    Clkint <= Clkin;  end generate;  c1 : if (PCISYSCLK = 1) generate    Clkint <= pciclkin;  end generate;  c2 : if (PCIEN = 1) generate    p0 : if (PCIDLL = 1) generate      pciclkint <= pciclkin;      pciclk    <= pciclkint;    end generate;    p1 : if (PCIDLL = 0) generate      u0 : if (PCISYSCLK = 0) generate        pciclkint <= pciclkin;      end generate;      pciclk <= clk_i when (PCISYSCLK = 1) else pciclkint;    end generate;  end generate;  c3 : if (PCIEN = 0) generate    pciclk <= Clkint;  end generate;  sdclk_pll : altera_pll   generic map (clk_mul, clk_div, freq)  port map ( inclk0 => cgi.pllref, e0 => sdclk, c0 => s_clk, 	locked => cgo.clklock);  clk <= s_clk;  clkn <= not s_clk;   -- pragma translate_off  bootmsg : report_version   generic map (    "clkgen_stratix" & ": stratix sdram/pci clock generator, version " & tost(VERSION),    "clkgen_stratix" & ": Frequency " &  tost(freq) & " KHz, PLL scaler " & tost(clk_mul) & "/" & tost(clk_div));  -- pragma translate_onend;

⌨️ 快捷键说明

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