Commit 893be7ba authored by Grzegorz Daniluk's avatar Grzegorz Daniluk

wr_core_v2: spec_top for new version of wrcore

parent 4c98fb83
...@@ -6,11 +6,14 @@ use IEEE.NUMERIC_STD.all; ...@@ -6,11 +6,14 @@ use IEEE.NUMERIC_STD.all;
use work.gn4124_core_pkg.all; use work.gn4124_core_pkg.all;
use work.gencores_pkg.all; use work.gencores_pkg.all;
use work.wrcore_pkg.all; use work.wrcore_pkg.all;
use work.wbconmax_pkg.all; --use work.wbconmax_pkg.all;
library UNISIM; library UNISIM;
use UNISIM.vcomponents.all; use UNISIM.vcomponents.all;
library work;
use work.wishbone_pkg.all;
entity spec_top is entity spec_top is
generic generic
...@@ -73,12 +76,11 @@ entity spec_top is ...@@ -73,12 +76,11 @@ entity spec_top is
dac_cs1_n_o : out std_logic; dac_cs1_n_o : out std_logic;
dac_cs2_n_o : out std_logic; dac_cs2_n_o : out std_logic;
fpga_scl_b : inout std_logic; fpga_scl_b : inout std_logic;
fpga_sda_b : inout std_logic; fpga_sda_b : inout std_logic;
button1_i : inout std_logic; button1_i : in std_logic;
button2_i : inout std_logic; button2_i : in std_logic;
------------------------------------------------------------------------- -------------------------------------------------------------------------
-- SFP pins -- SFP pins
...@@ -223,54 +225,98 @@ architecture rtl of spec_top is ...@@ -223,54 +225,98 @@ architecture rtl of spec_top is
dma_stall_i : in std_logic--_vector(g_DMA_WB_SLAVES_NB-1 downto 0) -- for pipelined Wishbone dma_stall_i : in std_logic--_vector(g_DMA_WB_SLAVES_NB-1 downto 0) -- for pipelined Wishbone
); );
end component; -- gn4124_core end component; -- gn4124_core
component wr_core
generic ( component xwr_core is
g_simulation : integer; generic(
g_virtual_uart : natural; g_simulation : integer := 0;
g_ep_rxbuf_size_log2 : integer; g_phys_uart : boolean := true;
g_dpram_initf : string; g_virtual_uart : boolean := false;
g_dpram_size : integer; g_owr_num_ports : natural := 1; --how many 1-wire ports
g_num_gpio : integer); g_ep_rxbuf_size_log2 : integer := 12;
port ( g_dpram_initf : string := "";
clk_sys_i : in std_logic; g_dpram_size : integer := 16384; --in 32-bit words
clk_dmtd_i : in std_logic; g_interface_mode : t_wishbone_interface_mode := CLASSIC;
clk_ref_i : in std_logic; g_address_granularity : t_wishbone_address_granularity := WORD
clk_aux_i : in std_logic := '0'; );
rst_n_i : in std_logic; port(
pps_p_o : out std_logic; clk_sys_i : in std_logic;
dac_hpll_load_p1_o : out std_logic; clk_dmtd_i : in std_logic;
dac_hpll_data_o : out std_logic_vector(15 downto 0); clk_ref_i : in std_logic;
dac_dpll_load_p1_o : out std_logic; clk_aux_i : in std_logic;
dac_dpll_data_o : out std_logic_vector(15 downto 0); rst_n_i : in std_logic;
phy_ref_clk_i : in std_logic;
phy_tx_data_o : out std_logic_vector(7 downto 0); dac_hpll_load_p1_o : out std_logic;
phy_tx_k_o : out std_logic; dac_hpll_data_o : out std_logic_vector(15 downto 0);
phy_tx_disparity_i : in std_logic; dac_dpll_load_p1_o : out std_logic;
phy_tx_enc_err_i : in std_logic; dac_dpll_data_o : out std_logic_vector(15 downto 0);
phy_rx_data_i : in std_logic_vector(7 downto 0);
phy_rx_rbclk_i : in std_logic; phy_ref_clk_i : in std_logic;
phy_rx_k_i : in std_logic; phy_tx_data_o : out std_logic_vector(7 downto 0);
phy_rx_enc_err_i : in std_logic; phy_tx_k_o : out std_logic;
phy_rx_bitslide_i : in std_logic_vector(3 downto 0); phy_tx_disparity_i : in std_logic;
phy_rst_o : out std_logic; phy_tx_enc_err_i : in std_logic;
phy_loopen_o : out std_logic; phy_rx_data_i : in std_logic_vector(7 downto 0);
gpio_o : out std_logic_vector(g_num_gpio-1 downto 0); phy_rx_rbclk_i : in std_logic;
gpio_i : in std_logic_vector(g_num_gpio-1 downto 0); phy_rx_k_i : in std_logic;
gpio_dir_o : out std_logic_vector(g_num_gpio-1 downto 0); phy_rx_enc_err_i : in std_logic;
uart_rxd_i : in std_logic; phy_rx_bitslide_i : in std_logic_vector(3 downto 0);
uart_txd_o : out std_logic; phy_rst_o : out std_logic;
wb_addr_i : in std_logic_vector(c_aw-1 downto 0); phy_loopen_o : out std_logic;
wb_data_i : in std_logic_vector(c_dw-1 downto 0);
wb_data_o : out std_logic_vector(c_dw-1 downto 0); led_red_o : out std_logic;
wb_sel_i : in std_logic_vector(c_sw-1 downto 0); led_green_o : out std_logic;
wb_we_i : in std_logic; scl_o : out std_logic;
wb_cyc_i : in std_logic; scl_i : in std_logic;
wb_stb_i : in std_logic; sda_o : out std_logic;
wb_ack_o : out std_logic; sda_i : in std_logic;
genrest_n : out std_logic; btn1_i : in std_logic;
dio_o : out std_logic_vector(3 downto 0)); btn2_i : in std_logic;
uart_rxd_i : in std_logic;
uart_txd_o : out std_logic;
owr_pwren_o : out std_logic_vector(g_owr_num_ports-1 downto 0);
owr_en_o : out std_logic_vector(g_owr_num_ports-1 downto 0);
owr_i : in std_logic_vector(g_owr_num_ports-1 downto 0);
slave_i : in t_wishbone_slave_in;
slave_o : out t_wishbone_slave_out;
ext_snk_adr_i : in std_logic_vector(1 downto 0) := "00";
ext_snk_dat_i : in std_logic_vector(15 downto 0) := x"0000";
ext_snk_sel_i : in std_logic_vector(1 downto 0) := "00";
ext_snk_cyc_i : in std_logic := '0';
ext_snk_we_i : in std_logic := '0';
ext_snk_stb_i : in std_logic := '0';
ext_snk_ack_o : out std_logic;
ext_snk_err_o : out std_logic;
ext_snk_stall_o : out std_logic;
ext_src_adr_o : out std_logic_vector(1 downto 0);
ext_src_dat_o : out std_logic_vector(15 downto 0);
ext_src_sel_o : out std_logic_vector(1 downto 0);
ext_src_cyc_o : out std_logic;
ext_src_stb_o : out std_logic;
ext_src_we_o : out std_logic;
ext_src_ack_i : in std_logic := '1';
ext_src_err_i : in std_logic := '0';
ext_src_stall_i : in std_logic := '0';
tm_dac_value_o : out std_logic_vector(23 downto 0);
tm_dac_wr_o : out std_logic;
tm_clk_aux_lock_en_i : in std_logic;
tm_clk_aux_locked_o : out std_logic;
tm_time_valid_o : out std_logic;
tm_utc_o : out std_logic_vector(39 downto 0);
tm_cycles_o : out std_logic_vector(27 downto 0);
pps_p_o : out std_logic;
genrest_n : out std_logic;
dio_o : out std_logic_vector(3 downto 0)
);
end component; end component;
component wr_gtp_phy_spartan6 component wr_gtp_phy_spartan6
generic ( generic (
g_simulation : integer; g_simulation : integer;
...@@ -330,27 +376,27 @@ architecture rtl of spec_top is ...@@ -330,27 +376,27 @@ architecture rtl of spec_top is
dac_din_o : out std_logic); dac_din_o : out std_logic);
end component; end component;
component chipscope_ila --component chipscope_ila
port ( -- port (
CONTROL : inout std_logic_vector(35 downto 0); -- CONTROL : inout std_logic_vector(35 downto 0);
CLK : in std_logic; -- CLK : in std_logic;
TRIG0 : in std_logic_vector(31 downto 0); -- TRIG0 : in std_logic_vector(31 downto 0);
TRIG1 : in std_logic_vector(31 downto 0); -- TRIG1 : in std_logic_vector(31 downto 0);
TRIG2 : in std_logic_vector(31 downto 0); -- TRIG2 : in std_logic_vector(31 downto 0);
TRIG3 : in std_logic_vector(31 downto 0)); -- TRIG3 : in std_logic_vector(31 downto 0));
end component; --end component;
signal CONTROL : std_logic_vector(35 downto 0); --signal CONTROL : std_logic_vector(35 downto 0);
signal CLK : std_logic; --signal CLK : std_logic;
signal TRIG0 : std_logic_vector(31 downto 0); --signal TRIG0 : std_logic_vector(31 downto 0);
signal TRIG1 : std_logic_vector(31 downto 0); --signal TRIG1 : std_logic_vector(31 downto 0);
signal TRIG2 : std_logic_vector(31 downto 0); --signal TRIG2 : std_logic_vector(31 downto 0);
signal TRIG3 : std_logic_vector(31 downto 0); --signal TRIG3 : std_logic_vector(31 downto 0);
component chipscope_icon --component chipscope_icon
port ( -- port (
CONTROL0 : inout std_logic_vector (35 downto 0)); -- CONTROL0 : inout std_logic_vector (35 downto 0));
end component; --end component;
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
-- Constants declaration -- Constants declaration
...@@ -375,15 +421,15 @@ architecture rtl of spec_top is ...@@ -375,15 +421,15 @@ architecture rtl of spec_top is
signal rst : std_logic; signal rst : std_logic;
-- CSR wishbone bus -- CSR wishbone bus
signal wb_adr : std_logic_vector(c_BAR0_APERTURE-priv_log2_ceil(c_CSR_WB_SLAVES_NB+1)-1 downto 0); --signal wb_adr : std_logic_vector(c_BAR0_APERTURE-priv_log2_ceil(c_CSR_WB_SLAVES_NB+1)-1 downto 0);
signal wb_dat_i : std_logic_vector((32*c_CSR_WB_SLAVES_NB)-1 downto 0); --signal wb_dat_i : std_logic_vector((32*c_CSR_WB_SLAVES_NB)-1 downto 0);
signal wb_dat_o : std_logic_vector(31 downto 0); --signal wb_dat_o : std_logic_vector(31 downto 0);
signal wb_sel : std_logic_vector(3 downto 0); --signal wb_sel : std_logic_vector(3 downto 0);
signal wb_cyc : std_logic_vector(c_CSR_WB_SLAVES_NB-1 downto 0); --signal wb_cyc : std_logic_vector(c_CSR_WB_SLAVES_NB-1 downto 0);
signal wb_stb : std_logic; --signal wb_stb : std_logic;
signal wb_we : std_logic; --signal wb_we : std_logic;
signal wb_ack : std_logic_vector(c_CSR_WB_SLAVES_NB-1 downto 0); --signal wb_ack : std_logic_vector(c_CSR_WB_SLAVES_NB-1 downto 0);
signal spi_wb_adr : std_logic_vector(4 downto 0); --signal spi_wb_adr : std_logic_vector(4 downto 0);
-- DMA wishbone bus -- DMA wishbone bus
signal dma_adr : std_logic_vector(31 downto 0); signal dma_adr : std_logic_vector(31 downto 0);
...@@ -416,11 +462,15 @@ architecture rtl of spec_top is ...@@ -416,11 +462,15 @@ architecture rtl of spec_top is
signal dac_rst_n : std_logic; signal dac_rst_n : std_logic;
signal led_divider : unsigned(23 downto 0); signal led_divider : unsigned(23 downto 0);
signal wrc_gpio_out : std_logic_vector(7 downto 0); signal wrc_scl_o : std_logic;
signal wrc_gpio_in : std_logic_vector(7 downto 0); signal wrc_scl_i : std_logic;
signal wrc_gpio_dir : std_logic_vector(7 downto 0); signal wrc_sda_o : std_logic;
signal wb_adr_wrc : std_logic_vector(17 downto 0); signal wrc_sda_i : std_logic;
signal dio : std_logic_vector(3 downto 0); --signal wrc_gpio_out : std_logic_vector(7 downto 0);
--signal wrc_gpio_in : std_logic_vector(7 downto 0);
--signal wrc_gpio_dir : std_logic_vector(7 downto 0);
--signal wb_adr_wrc : std_logic_vector(17 downto 0);
signal dio : std_logic_vector(3 downto 0);
signal dac_hpll_load_p1 : std_logic; signal dac_hpll_load_p1 : std_logic;
signal dac_dpll_load_p1 : std_logic; signal dac_dpll_load_p1 : std_logic;
...@@ -447,13 +497,11 @@ architecture rtl of spec_top is ...@@ -447,13 +497,11 @@ architecture rtl of spec_top is
signal local_reset_n : std_logic; signal local_reset_n : std_logic;
signal button1_synced : std_logic_vector(2 downto 0); signal button1_synced : std_logic_vector(2 downto 0);
begin signal wrc_slave_i : t_wishbone_slave_in;
signal wrc_slave_o : t_wishbone_slave_out;
begin
cmp_sys_clk_pll : PLL_BASE cmp_sys_clk_pll : PLL_BASE
generic map ( generic map (
...@@ -653,15 +701,15 @@ begin ...@@ -653,15 +701,15 @@ begin
--------------------------------------------------------- ---------------------------------------------------------
-- Target Interface (Wishbone master) -- Target Interface (Wishbone master)
wb_clk_i => clk_sys, wb_clk_i => clk_sys,
wb_adr_o => wb_adr, wb_adr_o => wrc_slave_i.adr(c_BAR0_APERTURE-priv_log2_ceil(c_CSR_WB_SLAVES_NB+1)-1 downto 0),
wb_dat_o => wb_dat_o, wb_dat_o => wrc_slave_i.dat,
wb_sel_o => wb_sel, wb_sel_o => wrc_slave_i.sel,
wb_stb_o => wb_stb, wb_stb_o => wrc_slave_i.stb,
wb_we_o => wb_we, wb_we_o => wrc_slave_i.we,
wb_cyc_o => wb_cyc, wb_cyc_o(0) => wrc_slave_i.cyc,
wb_dat_i => wb_dat_i, wb_dat_i => wrc_slave_o.dat,
wb_ack_i => wb_ack, wb_ack_i(0) => wrc_slave_o.ack,
--------------------------------------------------------- ---------------------------------------------------------
-- L2P DMA Interface (Pipelined Wishbone master) -- L2P DMA Interface (Pipelined Wishbone master)
...@@ -685,48 +733,36 @@ begin ...@@ -685,48 +733,36 @@ begin
end process; end process;
-- LED_RED <= std_logic(led_divider(led_divider'high)); -- LED_RED <= std_logic(led_divider(led_divider'high));
fpga_scl_b <= '0' when wrc_scl_o = '0' else 'Z';
fpga_sda_b <= '0' when wrc_sda_o = '0' else 'Z';
wrc_scl_i <= fpga_scl_b;
wrc_sda_i <= fpga_sda_b;
wb_adr_wrc <= '0' & wb_adr (16 downto 0); --wb_adr_wrc <= '0' & wb_adr (16 downto 0);
U_WR_CORE : wr_core U_WR_CORE : xwr_core
generic map ( generic map (
g_simulation => 0, g_simulation => 0,
g_virtual_uart => 0, g_phys_uart => true,
g_ep_rxbuf_size_log2 => 12, g_virtual_uart => false,
g_dpram_initf => "", g_owr_num_ports => 1,
g_dpram_size => 16384, g_ep_rxbuf_size_log2 => 12,
g_num_gpio => 8) g_dpram_initf => "",
g_dpram_size => 16384,
g_interface_mode => CLASSIC,
g_address_granularity => BYTE)
port map ( port map (
clk_sys_i => clk_sys, clk_sys_i => clk_sys,
clk_dmtd_i => clk_dmtd, clk_dmtd_i => clk_dmtd,
clk_ref_i => clk_125m_pllref, clk_ref_i => clk_125m_pllref,
clk_aux_i => '0',
rst_n_i => local_reset_n, rst_n_i => local_reset_n,
pps_p_o => pps,
dac_hpll_load_p1_o => dac_hpll_load_p1, dac_hpll_load_p1_o => dac_hpll_load_p1,
dac_hpll_data_o => dac_hpll_data, dac_hpll_data_o => dac_hpll_data,
dac_dpll_load_p1_o => dac_dpll_load_p1, dac_dpll_load_p1_o => dac_dpll_load_p1,
dac_dpll_data_o => dac_dpll_data, dac_dpll_data_o => dac_dpll_data,
gpio_o => wrc_gpio_out,
gpio_i => wrc_gpio_in,
gpio_dir_o => wrc_gpio_dir,
uart_rxd_i => uart_rxd_i,
uart_txd_o => uart_txd_o,
wb_addr_i => wb_adr_wrc,
wb_data_i => wb_dat_o,
wb_data_o => wb_dat_i(31 downto 0),
wb_sel_i => wb_sel,
wb_we_i => wb_we,
wb_cyc_i => wb_cyc(0),
wb_stb_i => wb_stb,
wb_ack_o => wb_ack(0),
genrest_n => open,
dio_o => dio_out(4 downto 1),
phy_ref_clk_i => clk_125m_pllref, phy_ref_clk_i => clk_125m_pllref,
phy_tx_data_o => phy_tx_data, phy_tx_data_o => phy_tx_data,
phy_tx_k_o => phy_tx_k, phy_tx_k_o => phy_tx_k,
...@@ -738,8 +774,59 @@ begin ...@@ -738,8 +774,59 @@ begin
phy_rx_enc_err_i => phy_rx_enc_err, phy_rx_enc_err_i => phy_rx_enc_err,
phy_rx_bitslide_i => phy_rx_bitslide, phy_rx_bitslide_i => phy_rx_bitslide,
phy_rst_o => phy_rst, phy_rst_o => phy_rst,
phy_loopen_o => phy_loopen phy_loopen_o => phy_loopen,
);
led_red_o => LED_RED,
led_green_o => LED_GREEN,
scl_o => wrc_scl_o, --fpga_scl_b,
scl_i => wrc_scl_i, --fpga_scl_b,
sda_o => wrc_sda_o, --fpga_sda_b,
sda_i => wrc_sda_i, --fpga_sda_b,
btn1_i => button1_i,
btn2_i => button2_i,
uart_rxd_i => uart_rxd_i,
uart_txd_o => uart_txd_o,
owr_pwren_o => open,
owr_en_o => open,
owr_i => (others => '0'),
slave_i => wrc_slave_i,
slave_o => wrc_slave_o,
ext_snk_adr_i => (others => '0'),
ext_snk_dat_i => (others => '0'),
ext_snk_sel_i => (others => '0'),
ext_snk_cyc_i => '0',
ext_snk_we_i => '0',
ext_snk_stb_i => '0',
ext_snk_ack_o => open,
ext_snk_err_o => open,
ext_snk_stall_o => open,
ext_src_adr_o => open,
ext_src_dat_o => open,
ext_src_sel_o => open,
ext_src_cyc_o => open,
ext_src_stb_o => open,
ext_src_we_o => open,
ext_src_ack_i => '0',
ext_src_err_i => '0',
ext_src_stall_i => '0',
tm_dac_value_o => open,
tm_dac_wr_o => open,
tm_clk_aux_lock_en_i => '0',
tm_clk_aux_locked_o => open,
tm_time_valid_o => open,
tm_utc_o => open,
tm_cycles_o => open,
pps_p_o => pps,
genrest_n => open,
dio_o => dio_out(4 downto 1)
);
U_GTP : wr_gtp_phy_spartan6 U_GTP : wr_gtp_phy_spartan6
...@@ -854,15 +941,15 @@ begin ...@@ -854,15 +941,15 @@ begin
dio_sdn_ck_n_o <= '0'; dio_sdn_ck_n_o <= '0';
dio_sdn_n_o <= '0'; dio_sdn_n_o <= '0';
LED_GREEN <= wrc_gpio_out(0); --LED_GREEN <= wrc_gpio_out(0);
LED_RED <= wrc_gpio_out(1); --LED_RED <= wrc_gpio_out(1);
fpga_scl_b <= '0' when wrc_gpio_out(2) = '0' else 'Z'; --fpga_scl_b <= '0' when wrc_gpio_out(2) = '0' else 'Z';
fpga_sda_b <= '0' when wrc_gpio_out(3) = '0' else 'Z'; --fpga_sda_b <= '0' when wrc_gpio_out(3) = '0' else 'Z';
wrc_gpio_in(4) <= fpga_sda_b; --wrc_gpio_in(4) <= fpga_sda_b;
wrc_gpio_in(5) <= '0'; --wrc_gpio_in(5) <= '0';
wrc_gpio_in(6) <= button2_i; --wrc_gpio_in(6) <= button2_i;
sfp_mod_def0_b <= '0'; sfp_mod_def0_b <= '0';
sfp_mod_def1_b <= '0'; sfp_mod_def1_b <= '0';
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment