From 4ab1a1efbdc964c1f41114c48bcebead5d975cb9 Mon Sep 17 00:00:00 2001 From: Erik Kooistra <kooistra@astron.nl> Date: Tue, 23 Jun 2015 07:15:54 +0000 Subject: [PATCH] Use MB ref_clk pin and MB ref_rst from ctrl_unb2_board. --- .../revisions/unb2_test_all/unb2_test_all.vhd | 8 ++++ .../revisions/unb2_test_ddr/unb2_test_ddr.vhd | 8 ++++ .../designs/unb2_test/src/vhdl/unb2_test.vhd | 15 ++++--- .../unb2_test/tb/vhdl/tb_unb2_test.vhd | 40 ++++++++++++------- 4 files changed, 51 insertions(+), 20 deletions(-) diff --git a/boards/uniboard2/designs/unb2_test/revisions/unb2_test_all/unb2_test_all.vhd b/boards/uniboard2/designs/unb2_test/revisions/unb2_test_all/unb2_test_all.vhd index b9e7e59011..383e7956da 100644 --- a/boards/uniboard2/designs/unb2_test/revisions/unb2_test_all/unb2_test_all.vhd +++ b/boards/uniboard2/designs/unb2_test/revisions/unb2_test_all/unb2_test_all.vhd @@ -67,6 +67,10 @@ ENTITY unb2_test_all IS SB_CLK : IN STD_LOGIC; -- Clock 10GbE back upper 24 lines BCK_REF_CLK : IN STD_LOGIC; -- Clock 10GbE back lower 24 lines + -- DDR reference clocks + MB_I_REF_CLK : IN STD_LOGIC; -- Reference clock for MB_I + MB_II_REF_CLK : IN STD_LOGIC; -- Reference clock for MB_II + -- back transceivers BCK_RX : IN STD_LOGIC_VECTOR((c_unb2_board_tr_back.bus_w * c_unb2_board_tr_back.nof_bus)-1 downto 0); BCK_TX : OUT STD_LOGIC_VECTOR((c_unb2_board_tr_back.bus_w * c_unb2_board_tr_back.nof_bus)-1 downto 0); @@ -156,6 +160,10 @@ BEGIN SB_CLK => SB_CLK, BCK_REF_CLK => BCK_REF_CLK, + -- DDR reference clocks + MB_I_REF_CLK => MB_I_REF_CLK, + MB_II_REF_CLK => MB_II_REF_CLK, + -- back transceivers BCK_RX => BCK_RX, BCK_TX => BCK_TX, diff --git a/boards/uniboard2/designs/unb2_test/revisions/unb2_test_ddr/unb2_test_ddr.vhd b/boards/uniboard2/designs/unb2_test/revisions/unb2_test_ddr/unb2_test_ddr.vhd index 1d0a58989c..a7ea8386df 100644 --- a/boards/uniboard2/designs/unb2_test/revisions/unb2_test_ddr/unb2_test_ddr.vhd +++ b/boards/uniboard2/designs/unb2_test/revisions/unb2_test_ddr/unb2_test_ddr.vhd @@ -62,6 +62,10 @@ ENTITY unb2_test_ddr IS ETH_SGIN : IN STD_LOGIC_VECTOR(c_unb2_board_nof_eth-1 DOWNTO 0); ETH_SGOUT : OUT STD_LOGIC_VECTOR(c_unb2_board_nof_eth-1 DOWNTO 0); + -- DDR reference clocks + MB_I_REF_CLK : IN STD_LOGIC; -- Reference clock for MB_I + MB_II_REF_CLK : IN STD_LOGIC; -- Reference clock for MB_II + -- SO-DIMM Memory Bank I MB_I_IN : IN t_tech_ddr4_phy_in; MB_I_IO : INOUT t_tech_ddr4_phy_io; @@ -113,6 +117,10 @@ BEGIN ETH_SGIN => ETH_SGIN, ETH_SGOUT => ETH_SGOUT, + -- DDR reference clocks + MB_I_REF_CLK => MB_I_REF_CLK, + MB_II_REF_CLK => MB_II_REF_CLK, + -- SO-DIMM Memory Bank I MB_I_IN => MB_I_IN, MB_I_IO => MB_I_IO, diff --git a/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd b/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd index 87a2029fc5..366a2971a2 100644 --- a/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd +++ b/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd @@ -79,6 +79,10 @@ ENTITY unb2_test IS SB_CLK : IN STD_LOGIC := '0'; -- Clock 10GbE back upper 24 lines BCK_REF_CLK : IN STD_LOGIC := '0'; -- Clock 10GbE back lower 24 lines + -- DDR reference clocks + MB_I_REF_CLK : IN STD_LOGIC := '0'; -- Reference clock for MB_I + MB_II_REF_CLK : IN STD_LOGIC := '0'; -- Reference clock for MB_II + -- back transceivers --BCK_RX : IN STD_LOGIC_VECTOR((c_unb2_board_tr_back.bus_w * c_unb2_board_tr_back.nof_bus)-1 downto 0) := (OTHERS=>'0'); --BCK_TX : OUT STD_LOGIC_VECTOR((c_unb2_board_tr_back.bus_w * c_unb2_board_tr_back.nof_bus)-1 downto 0); @@ -114,13 +118,11 @@ ENTITY unb2_test IS QSFP_RST : INOUT STD_LOGIC; -- SO-DIMM Memory Bank I - -- FIXME: verify/edit quartus pinning list to conform t_tech_ddr4_phy_in,t_tech_ddr4_phy_io,t_tech_ddr4_phy_ou records defined in technology/ddr/tech_ddr_pkg.vhd MB_I_IN : IN t_tech_ddr4_phy_in := c_tech_ddr4_phy_in_x; MB_I_IO : INOUT t_tech_ddr4_phy_io; MB_I_OU : OUT t_tech_ddr4_phy_ou; -- SO-DIMM Memory Bank II - -- FIXME: verify/edit quartus pinning list to conform t_tech_ddr4_phy_in,t_tech_ddr4_phy_io,t_tech_ddr4_phy_ou records defined in technology/ddr/tech_ddr_pkg.vhd MB_II_IN : IN t_tech_ddr4_phy_in := c_tech_ddr4_phy_in_x; MB_II_IO : INOUT t_tech_ddr4_phy_io; MB_II_OU : OUT t_tech_ddr4_phy_ou; @@ -217,6 +219,9 @@ ARCHITECTURE str OF unb2_test IS SIGNAL SA_CLK_buf : STD_LOGIC; + SIGNAL mb_I_ref_rst : STD_LOGIC; + SIGNAL mb_II_ref_rst : STD_LOGIC; + SIGNAL ddr_I_clk200 : STD_LOGIC; SIGNAL ddr_I_rst200 : STD_LOGIC; SIGNAL ddr_II_clk200 : STD_LOGIC; @@ -955,9 +960,9 @@ BEGIN -- IO_DDR --------------------------------------------------------------------------- -- DDR reference clock - ctlr_ref_clk => ext_clk200, - ctlr_ref_rst => ext_rst200, - + ctlr_ref_clk => MB_I_REF_CLK, + ctlr_ref_rst => mb_I_ref_rst, + -- DDR controller clock domain ctlr_clk_out => ddr_I_clk200, ctlr_rst_out => ddr_I_rst200, diff --git a/boards/uniboard2/designs/unb2_test/tb/vhdl/tb_unb2_test.vhd b/boards/uniboard2/designs/unb2_test/tb/vhdl/tb_unb2_test.vhd index 85e5b0f46c..7c3260bcaf 100644 --- a/boards/uniboard2/designs/unb2_test/tb/vhdl/tb_unb2_test.vhd +++ b/boards/uniboard2/designs/unb2_test/tb/vhdl/tb_unb2_test.vhd @@ -1,6 +1,6 @@ ------------------------------------------------------------------------------- -- --- Copyright (C) 2012 +-- Copyright (C) 2012-2015 -- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> -- JIVE (Joint Institute for VLBI in Europe) <http://www.jive.nl/> -- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands @@ -55,8 +55,6 @@ USE tech_ddr_lib.tech_ddr_pkg.ALL; ENTITY tb_unb2_test IS GENERIC ( g_design_name : STRING := "unb2_test"; - g_sim_unb_nr : NATURAL := 0; -- UniBoard 0 - g_sim_node_nr : NATURAL := 3; -- Node 3 g_sim_model_ddr : BOOLEAN := FALSE ); END tb_unb2_test; @@ -75,13 +73,15 @@ ARCHITECTURE tb OF tb_unb2_test IS CONSTANT c_version : STD_LOGIC_VECTOR(1 DOWNTO 0) := "00"; CONSTANT c_fw_version : t_unb2_board_fw_version := (1, 0); - CONSTANT c_cable_delay : TIME := 12 ns; - CONSTANT c_eth_clk_period : TIME := 8 ns; -- 125 MHz XO on UniBoard - CONSTANT c_clk_period : TIME := 5 ns; - CONSTANT c_sa_clk_period : TIME := tech_pll_clk_644_period; -- 644 MHz - CONSTANT c_sb_clk_period : TIME := tech_pll_clk_644_period; -- 644 MHz - CONSTANT c_bck_ref_clk_period : TIME := tech_pll_clk_644_period; -- 644 MHz - CONSTANT c_pps_period : NATURAL := 1000; + CONSTANT c_cable_delay : TIME := 12 ns; + CONSTANT c_eth_clk_period : TIME := 8 ns; -- 125 MHz XO on UniBoard + CONSTANT c_clk_period : TIME := 5 ns; + CONSTANT c_sa_clk_period : TIME := tech_pll_clk_644_period; -- 644 MHz + CONSTANT c_sb_clk_period : TIME := tech_pll_clk_644_period; -- 644 MHz + CONSTANT c_bck_ref_clk_period : TIME := tech_pll_clk_644_period; -- 644 MHz + CONSTANT c_mb_I_ref_clk_period : TIME := 40 ns; -- 25 MHz + CONSTANT c_mb_II_ref_clk_period : TIME := 40 ns; -- 25 MHz + CONSTANT c_pps_period : NATURAL := 1000; -- DUT SIGNAL clk : STD_LOGIC := '0'; @@ -105,6 +105,10 @@ ARCHITECTURE tb OF tb_unb2_test IS SIGNAL qsfp_led : STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp_nof_leds-1 DOWNTO 0); + -- DDR reference clocks + SIGNAL mb_I_ref_clk : STD_LOGIC := '1'; -- Reference clock for MB_I + SIGNAL mb_II_ref_clk : STD_LOGIC := '1'; -- Reference clock for MB_II + -- DDR4 PHY interface SIGNAL MB_I_IN : t_tech_ddr4_phy_in; SIGNAL MB_I_IO : t_tech_ddr4_phy_io; @@ -150,11 +154,13 @@ BEGIN ---------------------------------------------------------------------------- -- System setup ---------------------------------------------------------------------------- - clk <= NOT clk AFTER c_clk_period/2; -- External clock (200 MHz) - eth_clk <= NOT eth_clk AFTER c_eth_clk_period/2; -- Ethernet ref clock (125 MHz) - sa_clk <= NOT sa_clk AFTER c_sa_clk_period/2; -- sa clock (644 MHz) - sb_clk <= NOT sb_clk AFTER c_sb_clk_period/2; -- sb clock (644 MHz) - bck_ref_clk <= NOT bck_ref_clk AFTER c_bck_ref_clk_period/2; -- bck_ref clock (644 MHz) + clk <= NOT clk AFTER c_clk_period/2; -- External clock (200 MHz) + eth_clk <= NOT eth_clk AFTER c_eth_clk_period/2; -- Ethernet ref clock (125 MHz) + sa_clk <= NOT sa_clk AFTER c_sa_clk_period/2; -- Serial Gigabit IO sa clock (644 MHz) + sb_clk <= NOT sb_clk AFTER c_sb_clk_period/2; -- Serial Gigabit IO sb clock (644 MHz) + bck_ref_clk <= NOT bck_ref_clk AFTER c_bck_ref_clk_period/2; -- Serial Gigabit IO bck_ref clock (644 MHz) + mb_I_ref_clk <= NOT mb_I_ref_clk AFTER c_mb_I_ref_clk_period/2; -- MB I reference clock (25 MHz) + mb_II_ref_clk <= NOT mb_II_ref_clk AFTER c_mb_II_ref_clk_period/2; -- MB II reference clock (25 MHz) INTA <= 'H'; -- pull up @@ -216,6 +222,10 @@ BEGIN SB_CLK => sb_clk, BCK_REF_CLK => bck_ref_clk, + -- DDR reference clocks + MB_I_REF_CLK => mb_I_ref_clk, + MB_II_REF_CLK => mb_II_ref_clk, + PMBUS_ALERT => '0', -- Serial I/O -- GitLab