|
@ -0,0 +1,72 @@ |
|
|
|
|
|
library ieee ; |
|
|
|
|
|
use ieee.std_logic_1164.all; |
|
|
|
|
|
use ieee.math_real.all; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
entity CC_PLL is |
|
|
|
|
|
generic ( |
|
|
|
|
|
REF_CLK : string := "0"; -- reference clk in MHz |
|
|
|
|
|
OUT_CLK : string := "0"; -- output clk in MHz |
|
|
|
|
|
PERF_MD : string := "UNDEFINED"; -- LOWPOWER, ECONOMY, SPEED (optional, global, setting of Place&Route can be used instead) |
|
|
|
|
|
LOW_JITTER : natural := 1; -- 0: disable, 1: enable low jitter mode |
|
|
|
|
|
CI_FILTER_CONST : natural := 2; -- optional CI filter constant |
|
|
|
|
|
CP_FILTER_CONST : natural := 4 -- optional CP filter constant |
|
|
|
|
|
); |
|
|
|
|
|
port ( |
|
|
|
|
|
CLK_REF : in std_logic; |
|
|
|
|
|
CLK_FEEDBACK : in std_logic; |
|
|
|
|
|
USR_CLK_REF : in std_logic; |
|
|
|
|
|
USR_LOCKED_STDY_RST : in std_logic; |
|
|
|
|
|
USR_PLL_LOCKED_STDY : out std_logic; |
|
|
|
|
|
USR_PLL_LOCKED : out std_logic; |
|
|
|
|
|
CLK270 : out std_logic; |
|
|
|
|
|
CLK180 : out std_logic; |
|
|
|
|
|
CLK0 : out std_logic := '1'; |
|
|
|
|
|
CLK90 : out std_logic := '0'; |
|
|
|
|
|
CLK_REF_OUT : out std_logic |
|
|
|
|
|
); |
|
|
|
|
|
end entity; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
architecture sim of CC_PLL is |
|
|
|
|
|
|
|
|
|
|
|
constant c_period_ns : real := (1000.0 / real'value(OUT_CLK)); |
|
|
|
|
|
constant c_half_period_ns : real := c_period_ns / 2.0; |
|
|
|
|
|
|
|
|
|
|
|
begin |
|
|
|
|
|
|
|
|
|
|
|
Log : process is |
|
|
|
|
|
begin |
|
|
|
|
|
report CC_PLL'instance_name & " CC_PLL CLK0 = " & to_string(1000.0/(c_period_ns), 2) & " MHz"; |
|
|
|
|
|
wait; |
|
|
|
|
|
end process; |
|
|
|
|
|
|
|
|
|
|
|
CLK0 <= not CLK0 after c_half_period_ns * ns; |
|
|
|
|
|
CLK90 <= transport CLK0 after (c_half_period_ns / 2.0) * ns; |
|
|
|
|
|
CLK180 <= not CLK0; |
|
|
|
|
|
CLK270 <= not CLK90; |
|
|
|
|
|
|
|
|
|
|
|
CLK_REF_OUT <= CLK_REF; |
|
|
|
|
|
|
|
|
|
|
|
USR_PLL_LOCKED <= '1'; |
|
|
|
|
|
|
|
|
|
|
|
end architecture; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
library ieee ; |
|
|
|
|
|
use ieee.std_logic_1164.all; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
entity CC_CFG_END is |
|
|
|
|
|
port ( |
|
|
|
|
|
CFG_END : out std_logic |
|
|
|
|
|
); |
|
|
|
|
|
end entity; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
architecture sim of CC_CFG_END is |
|
|
|
|
|
begin |
|
|
|
|
|
|
|
|
|
|
|
CFG_END <= '1'; |
|
|
|
|
|
|
|
|
|
|
|
end architecture; |