Commit 11cd4f6f authored by Jorge Machado's avatar Jorge Machado

Add leap second values to hdl cores

parent 61bdb074
......@@ -89,6 +89,20 @@ peripheral {
size = 16;
};
field {
name = "LeapSecond flag 59";
description = "LeapSecond flag 59";
prefix = "leap_second_flag_59";
type = BIT;
};
field {
name = "LeapSecond flag 61";
description = "LeapSecond flag 61";
prefix = "leap_second_flag_61";
type = BIT;
};
field {
name = "LeapSecond valid";
......@@ -155,6 +169,19 @@ peripheral {
size = 16;
};
field {
name = "LeapSecond flag 59";
description = "LeapSecond flag 59";
prefix = "leap_second_flag_59";
type = BIT;
};
field {
name = "LeapSecond flag 61";
description = "LeapSecond flag 61";
prefix = "leap_second_flag_61";
type = BIT;
};
field {
name = "LeapSecond valid";
......@@ -221,6 +248,20 @@ peripheral {
size = 16;
};
field {
name = "LeapSecond flag 59";
description = "LeapSecond flag 59";
prefix = "leap_second_flag_59";
type = BIT;
};
field {
name = "LeapSecond flag 61";
description = "LeapSecond flag 61";
prefix = "leap_second_flag_61";
type = BIT;
};
field {
name = "LeapSecond valid";
description = "LeapSecond valid";
......@@ -286,6 +327,20 @@ peripheral {
size = 16;
};
field {
name = "LeapSecond flag 59";
description = "LeapSecond flag 59";
prefix = "leap_second_flag_59";
type = BIT;
};
field {
name = "LeapSecond flag 61";
description = "LeapSecond flag 61";
prefix = "leap_second_flag_61";
type = BIT;
};
field {
name = "LeapSecond valid";
description = "LeapSecond valid";
......@@ -351,6 +406,20 @@ peripheral {
size = 16;
};
field {
name = "LeapSecond flag 59";
description = "LeapSecond flag 59";
prefix = "leap_second_flag_59";
type = BIT;
};
field {
name = "LeapSecond flag 61";
description = "LeapSecond flag 61";
prefix = "leap_second_flag_61";
type = BIT;
};
field {
name = "LeapSecond valid";
description = "LeapSecond valid";
......@@ -416,6 +485,20 @@ peripheral {
size = 16;
};
field {
name = "LeapSecond flag 59";
description = "LeapSecond flag 59";
prefix = "leap_second_flag_59";
type = BIT;
};
field {
name = "LeapSecond flag 61";
description = "LeapSecond flag 61";
prefix = "leap_second_flag_61";
type = BIT;
};
field {
name = "LeapSecond valid";
description = "LeapSecond valid";
......
This diff is collapsed.
......@@ -98,7 +98,13 @@ entity xwr_dio is
TRIG0 : out std_logic_vector(31 downto 0);
TRIG1 : out std_logic_vector(31 downto 0);
TRIG2 : out std_logic_vector(31 downto 0);
TRIG3 : out std_logic_vector(31 downto 0)
TRIG3 : out std_logic_vector(31 downto 0);
-- Leap second
leap_second_value_i : in std_logic_vector(15 downto 0);
leap_second_flag_59_i : in std_logic;
leap_second_flag_61_i : in std_logic;
leap_second_flag_valid_i : in std_logic
);
end xwr_dio;
......@@ -251,6 +257,8 @@ architecture rtl of xwr_dio is
dio_tsf0_tag_secondsh_i : in std_logic_vector(7 downto 0);
dio_tsf0_tag_cycles_i : in std_logic_vector(27 downto 0);
dio_tsf0_leap_second_value_i : in std_logic_vector(15 downto 0);
dio_tsf0_leap_second_flag_59_i : in std_logic;
dio_tsf0_leap_second_flag_61_i : in std_logic;
dio_tsf0_leap_second_valid_i : in std_logic;
irq_nempty_0_i : in std_logic;
-- FIFO write request
......@@ -263,6 +271,8 @@ architecture rtl of xwr_dio is
dio_tsf1_tag_secondsh_i : in std_logic_vector(7 downto 0);
dio_tsf1_tag_cycles_i : in std_logic_vector(27 downto 0);
dio_tsf1_leap_second_value_i : in std_logic_vector(15 downto 0);
dio_tsf1_leap_second_flag_59_i : in std_logic;
dio_tsf1_leap_second_flag_61_i : in std_logic;
dio_tsf1_leap_second_valid_i : in std_logic;
irq_nempty_1_i : in std_logic;
-- FIFO write request
......@@ -275,6 +285,8 @@ architecture rtl of xwr_dio is
dio_tsf2_tag_secondsh_i : in std_logic_vector(7 downto 0);
dio_tsf2_tag_cycles_i : in std_logic_vector(27 downto 0);
dio_tsf2_leap_second_value_i : in std_logic_vector(15 downto 0);
dio_tsf2_leap_second_flag_59_i : in std_logic;
dio_tsf2_leap_second_flag_61_i : in std_logic;
dio_tsf2_leap_second_valid_i : in std_logic;
irq_nempty_2_i : in std_logic;
-- FIFO write request
......@@ -287,6 +299,8 @@ architecture rtl of xwr_dio is
dio_tsf3_tag_secondsh_i : in std_logic_vector(7 downto 0);
dio_tsf3_tag_cycles_i : in std_logic_vector(27 downto 0);
dio_tsf3_leap_second_value_i : in std_logic_vector(15 downto 0);
dio_tsf3_leap_second_flag_59_i : in std_logic;
dio_tsf3_leap_second_flag_61_i : in std_logic;
dio_tsf3_leap_second_valid_i : in std_logic;
irq_nempty_3_i : in std_logic;
-- FIFO write request
......@@ -299,6 +313,8 @@ architecture rtl of xwr_dio is
dio_tsf4_tag_secondsh_i : in std_logic_vector(7 downto 0);
dio_tsf4_tag_cycles_i : in std_logic_vector(27 downto 0);
dio_tsf4_leap_second_value_i : in std_logic_vector(15 downto 0);
dio_tsf4_leap_second_flag_59_i : in std_logic;
dio_tsf4_leap_second_flag_61_i : in std_logic;
dio_tsf4_leap_second_valid_i : in std_logic;
irq_nempty_4_i : in std_logic;
-- FIFO write request
......@@ -311,6 +327,8 @@ architecture rtl of xwr_dio is
dio_tsf5_tag_secondsh_i : in std_logic_vector(7 downto 0);
dio_tsf5_tag_cycles_i : in std_logic_vector(27 downto 0);
dio_tsf5_leap_second_value_i : in std_logic_vector(15 downto 0);
dio_tsf5_leap_second_flag_59_i : in std_logic;
dio_tsf5_leap_second_flag_61_i : in std_logic;
dio_tsf5_leap_second_valid_i : in std_logic;
irq_nempty_5_i : in std_logic;
-- Port for std_logic_vector field: 'seconds field' in reg: 'fmc-dio 0 seconds-based trigger for pulse generation'
......@@ -478,6 +496,8 @@ architecture rtl of xwr_dio is
signal dio_tsf_tag_seconds : t_seconds_array;
signal dio_tsf_tag_cycles : t_cycles_array;
signal dio_tsf_leap_second : t_leap_seconds_array;
signal dio_tsf_leap_second_flag_59 : std_logic_vector(5 downto 0);
signal dio_tsf_leap_second_flag_61 : std_logic_vector(5 downto 0);
signal dio_tsf_leap_second_valid : std_logic_vector(5 downto 0);
-- Fifos no-empty interrupts
......@@ -858,7 +878,14 @@ begin
dio_sdn_ck_n_o <= gpio_out(30);
dio_sdn_n_o <= gpio_out(31);
-- Adapter of wbgen2 salve signals to top wb mode and granularity
leap_second_asig : for i in 0 to 5 generate
dio_tsf_leap_second(i) <= leap_second_value_i;
dio_tsf_leap_second_flag_59(i) <= leap_second_flag_59_i;
dio_tsf_leap_second_flag_61(i) <= leap_second_flag_61_i;
dio_tsf_leap_second_valid(i) <= leap_second_flag_valid_i;
end generate leap_second_asig;
-- Adapter of wbgen2 salve to top wb mode and granularity
U_Adapter : wb_slave_adapter
generic map (
g_master_use_struct => true,
......@@ -907,6 +934,8 @@ begin
dio_tsf0_tag_secondsh_i => dio_tsf_tag_seconds(0)(39 downto 32),
dio_tsf0_tag_cycles_i => dio_tsf_tag_cycles(0),
dio_tsf0_leap_second_value_i => dio_tsf_leap_second(0),
dio_tsf0_leap_second_flag_59_i => dio_tsf_leap_second_flag_59(0),
dio_tsf0_leap_second_flag_61_i => dio_tsf_leap_second_flag_61(0),
dio_tsf0_leap_second_valid_i => dio_tsf_leap_second_valid(0),
irq_nempty_0_i => irq_nempty(0),
......@@ -917,6 +946,8 @@ begin
dio_tsf1_tag_secondsh_i => dio_tsf_tag_seconds(1)(39 downto 32),
dio_tsf1_tag_cycles_i => dio_tsf_tag_cycles(1),
dio_tsf1_leap_second_value_i => dio_tsf_leap_second(1),
dio_tsf1_leap_second_flag_59_i => dio_tsf_leap_second_flag_59(1),
dio_tsf1_leap_second_flag_61_i => dio_tsf_leap_second_flag_61(1),
dio_tsf1_leap_second_valid_i => dio_tsf_leap_second_valid(1),
irq_nempty_1_i => irq_nempty(1),
......@@ -927,6 +958,8 @@ begin
dio_tsf2_tag_secondsh_i => dio_tsf_tag_seconds(2)(39 downto 32),
dio_tsf2_tag_cycles_i => dio_tsf_tag_cycles(2),
dio_tsf2_leap_second_value_i => dio_tsf_leap_second(2),
dio_tsf2_leap_second_flag_59_i => dio_tsf_leap_second_flag_59(2),
dio_tsf2_leap_second_flag_61_i => dio_tsf_leap_second_flag_61(2),
dio_tsf2_leap_second_valid_i => dio_tsf_leap_second_valid(2),
irq_nempty_2_i => irq_nempty(2),
......@@ -937,6 +970,8 @@ begin
dio_tsf3_tag_secondsh_i => dio_tsf_tag_seconds(3)(39 downto 32),
dio_tsf3_tag_cycles_i => dio_tsf_tag_cycles(3),
dio_tsf3_leap_second_value_i => dio_tsf_leap_second(3),
dio_tsf3_leap_second_flag_59_i => dio_tsf_leap_second_flag_59(3),
dio_tsf3_leap_second_flag_61_i => dio_tsf_leap_second_flag_61(3),
dio_tsf3_leap_second_valid_i => dio_tsf_leap_second_valid(3),
irq_nempty_3_i => irq_nempty(3),
......@@ -947,6 +982,8 @@ begin
dio_tsf4_tag_secondsh_i => dio_tsf_tag_seconds(4)(39 downto 32),
dio_tsf4_tag_cycles_i => dio_tsf_tag_cycles(4),
dio_tsf4_leap_second_value_i => dio_tsf_leap_second(4),
dio_tsf4_leap_second_flag_59_i => dio_tsf_leap_second_flag_59(4),
dio_tsf4_leap_second_flag_61_i => dio_tsf_leap_second_flag_61(4),
dio_tsf4_leap_second_valid_i => dio_tsf_leap_second_valid(4),
irq_nempty_4_i => irq_nempty(4),
......@@ -957,6 +994,8 @@ begin
dio_tsf5_tag_secondsh_i => dio_tsf_tag_seconds(5)(39 downto 32),
dio_tsf5_tag_cycles_i => dio_tsf_tag_cycles(5),
dio_tsf5_leap_second_value_i => dio_tsf_leap_second(5),
dio_tsf5_leap_second_flag_59_i => dio_tsf_leap_second_flag_59(5),
dio_tsf5_leap_second_flag_61_i => dio_tsf_leap_second_flag_61(5),
dio_tsf5_leap_second_valid_i => dio_tsf_leap_second_valid(5),
irq_nempty_5_i => irq_nempty(5),
......
......@@ -216,8 +216,13 @@ entity dio_common_top is
-- I2C interface for accessing FMC EEPROM. Deprecated, was used in
-- pre-v3.0 releases to store WRPC configuration. Now we use Flash for this.
dio_scl_b : inout std_logic;
dio_sda_b : inout std_logic
dio_sda_b : inout std_logic;
-- Leap second
leap_second_value_i : in std_logic_vector(15 downto 0);
leap_second_flag_59_i : in std_logic;
leap_second_flag_61_i : in std_logic;
leap_second_flag_valid_i : in std_logic
);
end entity dio_common_top;
......@@ -265,7 +270,13 @@ architecture top of dio_common_top is
slave_i : in t_wishbone_slave_in;
slave_o : out t_wishbone_slave_out;
dio_int : out std_logic
dio_int : out std_logic;
-- Leap second
leap_second_value_i : in std_logic_vector(15 downto 0);
leap_second_flag_59_i : in std_logic;
leap_second_flag_61_i : in std_logic;
leap_second_flag_valid_i : in std_logic
);
end component;
......@@ -679,7 +690,11 @@ begin -- architecture top
tm_cycles_i => tm_cycles,
slave_i => cnx_slave_in(c_WB_SLAVE_DIO),
slave_o => cnx_slave_out(c_WB_SLAVE_DIO),
dio_int => dio_int
dio_int => dio_int,
leap_second_value_i => leap_second_value_i,
leap_second_flag_59_i => leap_second_flag_59_i,
leap_second_flag_61_i => leap_second_flag_61_i,
leap_second_flag_valid_i => leap_second_flag_valid_i
);
dio_oe_n_o <= dio_oe_n_o_internal(4 downto 0);
......
......@@ -205,12 +205,16 @@ package dio_common_top_pkg is
dio_onewire_b : inout std_logic;
dio_sdn_n_o : out std_logic;
dio_sdn_ck_n_o : out std_logic;
-- I2C interface for accessing FMC EEPROM. Deprecated, was used in
-- pre-v3.0 releases to store WRPC configuration. Now we use Flash for this.
dio_scl_b : inout std_logic;
dio_sda_b : inout std_logic
dio_sda_b : inout std_logic;
-- Leap second
leap_second_value_i : in std_logic_vector(15 downto 0);
leap_second_flag_59_i : in std_logic;
leap_second_flag_61_i : in std_logic;
leap_second_flag_valid_i : in std_logic
);
end component;
......
......@@ -283,7 +283,11 @@ begin
dio_sdn_n_o => dio_sdn_n_o,
dio_sdn_ck_n_o => dio_sdn_ck_n_o,
dio_scl_b => dio_scl_b,
dio_sda_b => dio_sda_b
dio_sda_b => dio_sda_b,
leap_second_value_i => x"CAFE",
leap_second_flag_59_i => '1',
leap_second_flag_61_i => '0',
leap_second_flag_valid_i => '1'
);
end architecture top;
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