OpenCores
URL https://opencores.org/ocsvn/riscv_vhdl/riscv_vhdl/trunk

Subversion Repositories riscv_vhdl

[/] [riscv_vhdl/] [trunk/] [rtl/] [techmap/] [pll/] [clkp90_k7.vhd] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 sergeykhbr
-----------------------------------------------------------------------------
2
--! @file
3
--! @copyright Copyright 2015 GNSS Sensor Ltd. All right reserved.
4
--! @author    Sergey Khabarov - sergeykhbr@gmail.com
5
--! @brief     Clock phase offset generator (90 deg) for Kintex7 FPGA.
6
------------------------------------------------------------------------------
7
 
8
--! Standard library
9
library ieee;
10
use ieee.std_logic_1164.all;
11
library unisim;
12
use unisim.vcomponents.all;
13
 
14
entity clkp90_kintex7 is
15
  generic (
16
    freq    : integer := 125000
17
  );
18
  port (
19
    --! Active High
20
    i_rst    : in  std_logic;
21
    i_clk    : in  std_logic;
22
    o_clk    : out std_logic;
23
    o_clkp90 : out std_logic;
24
    o_clk2x  : out std_logic;
25
    o_lock   : out std_logic
26
  );
27
end clkp90_kintex7;
28
 
29
architecture rtl of clkp90_kintex7 is
30
 
31
  constant clk_mul : integer := 8;
32
  constant clk_div : integer := 8;
33
  constant period : real := 1000000.0/real(freq);
34
  constant clkio_div : integer := freq*clk_mul/200000;
35
 
36
  signal CLKFBOUT : std_logic;
37
  signal CLKFBIN : std_logic;
38
  signal clk_nobuf : std_logic;
39
  signal clk90_nobuf : std_logic;
40
  signal clkio_nobuf : std_logic;
41
 
42
begin
43
 
44
  CLKFBIN <= CLKFBOUT;
45
 
46
  PLLE2_ADV_inst : PLLE2_ADV generic map (
47
     BANDWIDTH          => "OPTIMIZED",  -- OPTIMIZED, HIGH, LOW
48
     CLKFBOUT_MULT      => clk_mul,   -- Multiply value for all CLKOUT, (2-64)
49
     CLKFBOUT_PHASE     => 0.0, -- Phase offset in degrees of CLKFB, (-360.000-360.000).
50
     -- CLKIN_PERIOD: Input clock period in nS to ps resolution (i.e. 33.333 is 30 MHz).
51
     CLKIN1_PERIOD      => period,
52
     CLKIN2_PERIOD      => 0.0,
53
     -- CLKOUT0_DIVIDE - CLKOUT5_DIVIDE: Divide amount for CLKOUT (1-128)
54
     CLKOUT0_DIVIDE     => clk_div,
55
     CLKOUT1_DIVIDE     => clk_div,
56
     CLKOUT2_DIVIDE     => clkio_div,
57
     CLKOUT3_DIVIDE     => 1,
58
     CLKOUT4_DIVIDE     => 1,
59
     CLKOUT5_DIVIDE     => 1,
60
     -- CLKOUT0_DUTY_CYCLE - CLKOUT5_DUTY_CYCLE: Duty cycle for CLKOUT outputs (0.001-0.999).
61
     CLKOUT0_DUTY_CYCLE => 0.5,
62
     CLKOUT1_DUTY_CYCLE => 0.5,
63
     CLKOUT2_DUTY_CYCLE => 0.5,
64
     CLKOUT3_DUTY_CYCLE => 0.5,
65
     CLKOUT4_DUTY_CYCLE => 0.5,
66
     CLKOUT5_DUTY_CYCLE => 0.5,
67
     -- CLKOUT0_PHASE - CLKOUT5_PHASE: Phase offset for CLKOUT outputs (-360.000-360.000).
68
     CLKOUT0_PHASE      => 0.0,
69
     CLKOUT1_PHASE      => 90.0,
70
     CLKOUT2_PHASE      => 0.0,
71
     CLKOUT3_PHASE      => 0.0,
72
     CLKOUT4_PHASE      => 0.0,
73
     CLKOUT5_PHASE      => 0.0,
74
     COMPENSATION       => "ZHOLD", -- ZHOLD, BUF_IN, EXTERNAL, INTERNAL
75
     DIVCLK_DIVIDE      => 1, -- Master division value (1-56)
76
     -- REF_JITTER: Reference input jitter in UI (0.000-0.999).
77
     REF_JITTER1        => 0.0,
78
     REF_JITTER2        => 0.0,
79
     STARTUP_WAIT       => "TRUE" -- Delay DONE until PLL Locks, ("TRUE"/"FALSE")
80
  ) port map (
81
     -- Clock Outputs: 1-bit (each) output: User configurable clock outputs
82
     CLKOUT0           => clk_nobuf,
83
     CLKOUT1           => clk90_nobuf,
84
     CLKOUT2           => clkio_nobuf,
85
     CLKOUT3           => OPEN,
86
     CLKOUT4           => OPEN,
87
     CLKOUT5           => OPEN,
88
     -- DRP Ports: 16-bit (each) output: Dynamic reconfigration ports
89
     DO                => OPEN,
90
     DRDY              => OPEN,
91
     -- Feedback Clocks: 1-bit (each) output: Clock feedback ports
92
     CLKFBOUT          => CLKFBOUT,
93
     -- Status Ports: 1-bit (each) output: PLL status ports
94
     LOCKED            => o_lock,
95
     -- Clock Inputs: 1-bit (each) input: Clock inputs
96
     CLKIN1            => i_clk,
97
     CLKIN2            => '0',
98
     -- Con trol Ports: 1-bit (each) input: PLL control ports
99
     CLKINSEL          => '1',
100
     PWRDWN            => '0',
101
     RST               => i_rst,
102
     -- DRP Ports: 7-bit (each) input: Dynamic reconfigration ports
103
     DADDR             => "0000000",
104
     DCLK              => '0',
105
     DEN               => '0',
106
     DI                => "0000000000000000",
107
     DWE               => '0',
108
     -- Feedback Clocks: 1-bit (each) input: Clock feedback ports
109
     CLKFBIN           => CLKFBIN
110
    );
111
 
112
  bufgclk0 : BUFG port map (I => clk_nobuf, O => o_clk);
113
  bufgclk90 : BUFG port map (I => clk90_nobuf, O => o_clkp90);
114
  bufgclkio : BUFG port map (I => clkio_nobuf, O => o_clk2x);
115
 
116
end;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.