-rvl_alias "clk_raw_internal" "clk_raw_internal";
+rvl_alias "reveal_ist_282" "the_sync_link/the_serdes/rx_full_clk_ch0";
BLOCK RESETPATHS ;
BLOCK ASYNCPATHS ;
BLOCK RD_DURING_WR_PATHS ;
<Option name="HDL type" value="VHDL"/>
</Options>
<Implementation title="soda_source" dir="soda_source" description="soda_source" default_strategy="Strategy1">
- <Options def_top="trb3_periph_sodasource" top="trb3_periph_sodasource"/>
+ <Options top="trb3_periph_sodasource"/>
<Source name="source/version.vhd" type="VHDL" type_short="VHDL">
<Options/>
</Source>
<Source name="source/soda_packet_builder.vhd" type="VHDL" type_short="VHDL">
<Options/>
</Source>
+ <Source name="source/soda_cmd_window_generator.vhd" type="VHDL" type_short="VHDL">
+ <Options/>
+ </Source>
<Source name="source/soda_d8crc8.vhd" type="VHDL" type_short="VHDL">
<Options/>
</Source>
<Source name="../trbnet/media_interfaces/ecp3_sfp/sfp_1_200_int.vhd" type="VHDL" type_short="VHDL">
<Options/>
</Source>
- <Source name="source/soda_cmd_window_generator.vhd" type="VHDL" type_short="VHDL">
- <Options/>
- </Source>
<Source name="soda_source.lpf" type="Logic Preference" type_short="LPF">
<Options/>
</Source>
-rvl_alias "reveal_ist_222" "the_sync_link/the_serdes/rx_full_clk_ch0";
+rvl_alias "reveal_ist_129" "the_sync_link/the_serdes/rx_full_clk_ch0";
BLOCK RESETPATHS ;
BLOCK ASYNCPATHS ;
BLOCK RD_DURING_WR_PATHS ;
START_POSITION_IN => request_retr_position_i, --TODO
\r
TX_DLM_INIT => TX_DLM_INIT,
- SEND_DLM => '0', --TX_DLM,
+ SEND_DLM => TX_DLM,
SEND_DLM_WORD => TX_DLM_WORD,
SEND_LINK_RESET_IN => CTRL_OP(15),
internal_make_link_reset_out <= make_link_reset_i when IS_SYNC_SLAVE = c_YES else '0';
sd_los_i <= SD_LOS_IN when rising_edge(SYSCLK); -- PL!
-STAT_OP(15) <= send_link_reset_i when rising_edge(SYSCLK);
-STAT_OP(14) <= '0';
-STAT_OP(13) <= internal_make_link_reset_out when rising_edge(SYSCLK); --make trbnet reset
-STAT_OP(12) <= '0';
-STAT_OP(11) <= '0';
-STAT_OP(10) <= rx_allow;
-STAT_OP(9) <= tx_allow;
-STAT_OP(8 downto 4) <= (others => '0');
+STAT_OP(15) <= send_link_reset_i when rising_edge(SYSCLK);
+STAT_OP(14) <= '0';
+STAT_OP(13) <= internal_make_link_reset_out when rising_edge(SYSCLK); --make trbnet reset
+STAT_OP(12) <= '0';
+STAT_OP(11) <= '0';
+STAT_OP(10) <= rx_allow;
+STAT_OP(9) <= tx_allow;
+--STAT_OP(8 downto 4) <= (others => '0');
+STAT_OP(8) <= got_link_ready_i;
+STAT_OP(7) <= send_link_reset_i;
+STAT_OP(6) <= make_link_reset_i;
+STAT_OP(5) <= request_retr_i;
+STAT_OP(4) <= start_retr_i;
STAT_OP(3 downto 0) <= x"0" when rx_allow_q = '1' and tx_allow_q = '1' else x"7";
end med_ecp3_sfp_sync_down_arch;
sd_los_i <= SD_LOS_IN when rising_edge(SYSCLK); -- PL!
-STAT_OP(15) <= send_link_reset_i when rising_edge(SYSCLK);
-STAT_OP(14) <= '0';
-STAT_OP(13) <= internal_make_link_reset_out when rising_edge(SYSCLK); --make trbnet reset
-STAT_OP(12) <= '0';
-STAT_OP(11) <= '0';
-STAT_OP(10) <= rx_allow;
-STAT_OP(9) <= tx_allow;
-STAT_OP(8 downto 4) <= (others => '0');
+STAT_OP(15) <= send_link_reset_i when rising_edge(SYSCLK);
+STAT_OP(14) <= '0';
+STAT_OP(13) <= internal_make_link_reset_out when rising_edge(SYSCLK); --make trbnet reset
+STAT_OP(12) <= '0';
+STAT_OP(11) <= '0';
+STAT_OP(10) <= rx_allow;
+STAT_OP(9) <= tx_allow;
+--STAT_OP(8 downto 4) <= (others => '0');
+STAT_OP(8) <= got_link_ready_i;
+STAT_OP(7) <= send_link_reset_i;
+STAT_OP(6) <= make_link_reset_i;
+STAT_OP(5) <= request_retr_i;
+STAT_OP(4) <= start_retr_i;
STAT_OP(3 downto 0) <= x"0" when rx_allow_q = '1' and tx_allow_q = '1' else x"7";
end med_ecp3_sfp_sync_up_arch;
use work.soda_components.all;
entity soda_cmd_window_generator is
- generic( CLOCK_PERIOD : natural range 1 to 20 := cSODA_CLOCK_PERIOD; -- clock-period in ns
- COMMAND_WINDOS_SIZE : natural range 1 to 256 := cSODA_COMMAND_WINDOS_SIZE -- command window size in ns \r
+ generic( CLOCK_PERIOD : natural range 1 to 20 := cSODA_CLOCK_PERIOD; -- clock-period in ns
+ COMMAND_WINDOS_SIZE : natural range 1 to 65335 := cSODA_COMMAND_WINDOS_SIZE -- command window size in ns \r
);
port(
SODACLK : in std_logic; -- fabric clock
port(
SODACLK : in std_logic; -- fabric clock
RESET : in std_logic; -- synchronous reset
- CLEAR : in std_logic; -- asynchronous reset
- CLK_EN : in std_logic;
--Internal Connection
SODA_BURST_PULSE_IN : in std_logic := '0'; --
START_OF_SUPERBURST_OUT : out std_logic := '0';
port(
SODACLK : in std_logic; -- fabric clock
RESET : in std_logic; -- synchronous reset
- CLEAR : in std_logic; -- asynchronous reset
- CLK_EN : in std_logic;
--Internal Connection
LINK_PHASE_IN : in std_logic := '0';
SODA_CMD_STROBE_IN : in std_logic := '0'; --
SYSCLK : in std_logic; -- fabric clock
SODACLK : in std_logic; -- clock for data to serdes
RESET : in std_logic; -- synchronous reset
- CLEAR : in std_logic; -- asynchronous reset
- CLK_EN : in std_logic;
--Internal Connection
SODA_BURST_PULSE_IN : in std_logic := '0'; --
port(\r
SODACLK : in std_logic; -- fabric clock\r
RESET : in std_logic; -- synchronous reset\r
- CLEAR : in std_logic; -- asynchronous reset\r
- CLK_EN : in std_logic; \r
--Internal Connection\r
LINK_PHASE_IN : in std_logic := '0'; --_vector(1 downto 0) := (others => '0');
SODA_CMD_STROBE_IN : in std_logic := '0'; -- \r
);\r
signal packet_state_S : packet_state_type := c_IDLE;\r
\r
+ signal soda_cmd_reg_full_S : std_logic;
+ signal soda_cmd_reg_S : std_logic_vector(31 downto 0) := (others => '0'); -- from super-burst-nr-generator
\r
begin\r
\r
end if;\r
end process;\r
\r
+ soda_cmd_reg_proc : process(SODACLK)\r
+ begin\r
+ if rising_edge(SODACLK) then\r
+ if (RESET='1') then\r
+ soda_cmd_reg_full_S <= '0';\r
+ soda_cmd_reg_S <= (others => '0');\r
+ elsif (soda_pkt_valid_S = '1') then\r
+ soda_cmd_reg_full_S <= '1';
+ soda_cmd_reg_S <= '0' & soda_cmd_word_S;
+
+ end if;\r
+ end if;
+ end process;\r
+\r
+\r
--soda_packet_fill_proc : process(SODACLK, packet_state_S)\r
--begin\r
--if rising_edge(SODACLK) then\r
SYSCLK : in std_logic; -- fabric clock
SODACLK : in std_logic; -- clock for data to serdes
RESET : in std_logic; -- synchronous reset
- CLEAR : in std_logic; -- asynchronous reset
- CLK_EN : in std_logic;
--Internal Connection
SODA_BURST_PULSE_IN : in std_logic := '0'; --
port map(
SODACLK => SODACLK,
RESET => RESET,
- CLEAR => '0',
- CLK_EN => CLK_EN,
--Internal Connection
SODA_BURST_PULSE_IN => SODA_BURST_PULSE_IN,
START_OF_SUPERBURST_OUT => start_of_superburst_S,
port map(
SODACLK => SODACLK,
RESET => RESET,
- CLEAR => '0',
- CLK_EN => CLK_EN,
--Internal Connection
LINK_PHASE_IN => LINK_PHASE_IN, --link_phase_S, PL!
SODA_CMD_STROBE_IN => soda_cmd_strobe_sodaclk_S,
begin\r
if( RESET = '1' ) then \r
TX_DLM_INIT_OUT <= '0';\r
- elsif ((start_of_superburst_S='1' or soda_cmd_strobe_S='1') and LINK_PHASE_IN=c_IN_SYNC) then\r
+ elsif ((start_of_superburst_S='1' or soda_cmd_strobe_sodaclk_S='1') and LINK_PHASE_IN=c_IN_SYNC) then\r
TX_DLM_INIT_OUT <= '1';\r
elsif rising_edge(SODACLK) then\r
- if (start_of_superburst_S='1' or soda_cmd_strobe_S='1') then
+ if (start_of_superburst_S='1' or soda_cmd_strobe_sodaclk_S='1') then
TX_DLM_INIT_OUT <= '1';\r
else\r
TX_DLM_INIT_OUT <= '0';
port(
SODACLK : in std_logic; -- fabric clock
RESET : in std_logic; -- synchronous reset
- CLEAR : in std_logic; -- asynchronous reset
- CLK_EN : in std_logic;
--Internal Connection
SODA_BURST_PULSE_IN : in std_logic := '0'; --
START_OF_SUPERBURST_OUT : out std_logic := '0';
---------------------------------------------------------------------------
-- LED
---------------------------------------------------------------------------
- LED_ORANGE <= not reset_i when rising_edge(clk_sys_internal);
- LED_YELLOW <= soda_leds(0); --'1';
- LED_GREEN <= not med_stat_op(9);
- LED_RED <= not (med_stat_op(10) or med_stat_op(11));
+ LED_ORANGE <= med_stat_op(8);
+ LED_YELLOW <= med_stat_op(10);
+ LED_GREEN <= med_stat_op(9);
+ LED_RED <= med_stat_op(6);
+-- LED_ORANGE <= not reset_i when rising_edge(clk_sys_internal);
+-- LED_YELLOW <= soda_leds(0); --'1';
+-- LED_GREEN <= not med_stat_op(9);
+-- LED_RED <= not (med_stat_op(10) or med_stat_op(11));
-- LED_ORANGE <= soda_leds(0);
-- LED_YELLOW <= soda_leds(1);
-- LED_GREEN <= soda_leds(2);
SYSCLK => clk_sys_i,
SODACLK => clk_raw_internal,
RESET => reset_i,
- CLEAR => clear_i,
- CLK_EN => '1',
--Internal Connection
SODA_BURST_PULSE_IN => SOB_S,
---------------------------------------------------------------------------
-- LED
---------------------------------------------------------------------------
- LED_ORANGE <= not reset_i when rising_edge(clk_sys_internal);
- LED_YELLOW <= soda_leds(0); --'1';
- LED_GREEN <= not med_stat_op(9);
- LED_RED <= not (med_stat_op(10) or med_stat_op(11));
+ LED_ORANGE <= med_stat_op(16+8);
+ LED_YELLOW <= med_stat_op(16+10);
+ LED_GREEN <= med_stat_op(16+9);
+ LED_RED <= med_stat_op(16+6);
+-- LED_ORANGE <= not reset_i when rising_edge(clk_sys_internal);
+-- LED_YELLOW <= soda_leds(0); --'1';
+-- LED_GREEN <= not med_stat_op(9);
+-- LED_RED <= not (med_stat_op(10) or med_stat_op(11));
-- LED_ORANGE <= soda_leds(0);
-- LED_YELLOW <= soda_leds(1);
-- LED_GREEN <= soda_leds(2);