From 213aad03592b8bf3df2211e4ca8ecb8f49a68bec Mon Sep 17 00:00:00 2001 From: Leon Hiemstra <hiemstra@astron.nl> Date: Tue, 26 May 2015 13:59:11 +0000 Subject: [PATCH] using a CLKBUF in betweekn input clock and PLL --- .../src/vhdl/unb2_board_clk125_pll.vhd | 71 +++++++++++++++---- 1 file changed, 56 insertions(+), 15 deletions(-) diff --git a/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_clk125_pll.vhd b/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_clk125_pll.vhd index 775017a5c8..54cb709666 100644 --- a/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_clk125_pll.vhd +++ b/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_clk125_pll.vhd @@ -20,7 +20,7 @@ -- ------------------------------------------------------------------------------- -LIBRARY IEEE, common_lib, technology_lib, tech_pll_lib; +LIBRARY IEEE, common_lib, technology_lib, tech_clkbuf_lib, tech_pll_lib, tech_fractional_pll_lib; USE IEEE.STD_LOGIC_1164.ALL; USE common_lib.common_pkg.ALL; USE technology_lib.technology_pkg.ALL; @@ -35,7 +35,9 @@ USE technology_lib.technology_pkg.ALL; ENTITY unb2_board_clk125_pll IS GENERIC ( - g_technology : NATURAL := c_tech_arria10 + g_technology : NATURAL := c_tech_arria10; + g_use_clkbuf : BOOLEAN := TRUE; + g_use_fpll : BOOLEAN := FALSE ); PORT ( arst : IN STD_LOGIC := '0'; @@ -51,19 +53,58 @@ END unb2_board_clk125_pll; ARCHITECTURE arria10 OF unb2_board_clk125_pll IS + + SIGNAL clk125buf : STD_LOGIC; + BEGIN - u_pll : ENTITY tech_pll_lib.tech_pll_clk125 - GENERIC MAP ( - g_technology => g_technology - ) - PORT MAP ( - areset => arst, - inclk0 => clk125, - c0 => c0_clk20, - c1 => c1_clk50, - c2 => c2_clk100, - c3 => c3_clk125, - locked => pll_locked - ); + no_clkbuf : IF g_use_clkbuf=FALSE GENERATE + clk125buf <= clk125; + END GENERATE; + + gen_clkbuf : IF g_use_clkbuf=TRUE GENERATE + u_clkbuf : ENTITY tech_clkbuf_lib.tech_clkbuf + GENERIC MAP ( + g_technology => g_technology, + g_clock_net => "GLOBAL" + ) + PORT MAP ( + inclk => clk125, + outclk => clk125buf + ); + END GENERATE; + + + gen_pll : IF g_use_fpll=FALSE GENERATE + u_pll : ENTITY tech_pll_lib.tech_pll_clk125 + GENERIC MAP ( + g_technology => g_technology + ) + PORT MAP ( + areset => arst, + inclk0 => clk125buf, + c0 => c0_clk20, + c1 => c1_clk50, + c2 => c2_clk100, + c3 => c3_clk125, + locked => pll_locked + ); + END GENERATE; + + --gen_fractional_pll : IF g_use_fpll=TRUE GENERATE + -- u_pll : ENTITY tech_pll_lib.tech_pll_clk125 + -- GENERIC MAP ( + -- g_technology => g_technology + -- ) + -- PORT MAP ( + -- areset => arst, + -- inclk0 => clk125buf, + -- c0 => c0_clk20, + -- c1 => c1_clk50, + -- c2 => c2_clk100, + -- c3 => c3_clk125, + -- locked => pll_locked + -- ); + --END GENERATE; + END arria10; -- GitLab