--Internal Connection
SODA_BURST_PULSE_IN : in std_logic := '0'; --
SODA_CMD_STROBE_IN : in std_logic := '0'; --
- SODA_CMD_WORD_IN : in std_logic_vector(31 downto 0) := (others : '0'); --REGIO_CTRL_REG in trbnet handler is 32 bit
+ SODA_CMD_WORD_IN : in std_logic_vector(31 downto 0) := (others => '0'); --REGIO_CTRL_REG in trbnet handler is 32 bit
RX_DLM_WORD_IN : in std_logic_vector(7 downto 0) := (others => '0');
RX_DLM_IN : in std_logic;
- TX_DLM_OUT : out std_logic := '0'; --
- TX_DLM_WORD_OUT : out std_logic_vector(7 downto 0) := (others => '0')
+ TX_DLM_OUT : out std_logic;
+ TX_DLM_WORD_OUT : out std_logic_vector(7 downto 0) := (others => '0');
- SODA_DATA_IN : in std_logic_vector(30 downto 0) := (others : '0');
- SODA_DATA_OUT : in std_logic_vector(30 downto 0) := (others : '0');
- SODA_ADDR : in std_logic_vector(30 downto 0) := (others : '0');
- SODA_READ : in std_logic := '0';
- SODA_WRITE : in std_logic := '0';
- SODA_ACK : in std_logic := '0'
- );
+ SODA_DATA_IN : in std_logic_vector(31 downto 0) := (others => '0');
+ SODA_DATA_OUT : out std_logic_vector(31 downto 0) := (others => '0');
+ SODA_ADDR_IN : in std_logic_vector(3 downto 0) := (others => '0');
+ SODA_READ_IN : in std_logic := '0';
+ SODA_WRITE_IN : in std_logic := '0';
+ SODA_ACK_OUT : out std_logic := '0';
+ LEDS_ACT_OUT : out std_logic;
+ LEDS_OUT : out std_logic_vector(3 downto 0);
+ SPARE_LINE : in std_logic_vector(5 downto 0);
+ TEST_LINE : out std_logic_vector(15 downto 0);
+ -- Status lines
+ STAT : out std_logic_vector(31 downto 0) -- DEBUG
+ );
end component;\r
\r
component spi_flash_and_fpga_reload
signal sci2_data_out : std_logic_vector(7 downto 0);
signal sci2_addr : std_logic_vector(8 downto 0);
- --SODA\r
+ --SODA
signal soda_ack : std_logic;
signal soda_nack : std_logic;
signal soda_write : std_logic;
signal soda_read : std_logic;
- signal soda_data_in : std_logic_vector(7 downto 0);
- signal soda_data_out : std_logic_vector(7 downto 0);
- signal soda_addr : std_logic_vector(8 downto 0);
-\r
+ signal soda_data_in : std_logic_vector(31 downto 0);
+ signal soda_data_out : std_logic_vector(31 downto 0);
+ signal soda_addr : std_logic_vector(3 downto 0);
+ signal soda_leds : std_logic_vector(3 downto 0);
+
--TDC
signal hit_in_i : std_logic_vector(63 downto 0);
signal rx_dlm_i : std_logic;
signal tx_dlm_word : std_logic_vector(7 downto 0);
signal rx_dlm_word : std_logic_vector(7 downto 0);
-\r
+
--SODA
signal rst_S : std_logic;
signal clk_S : std_logic;
signal SOB_S : std_logic := '0';
signal dlm_word_S : std_logic_vector(7 downto 0) := (others => '0');
signal dlm_valid_S : std_logic;
+
begin
---------------------------------------------------------------------------
-- Reset Generation
THE_BUS_HANDLER : trb_net16_regio_bus_handler
generic map(
PORT_NUMBER => 4,
- PORT_ADDRESSES => (0 => x"d000", 1 => x"b000", 2 => x"b800", others => x"0000"),
- PORT_ADDR_MASK => (0 => 9, 1 => 9, 2 => 9, others => 0)
+ PORT_ADDRESSES => (0 => x"d000", 1 => x"b000", 2 => x"b800", 3 => x"be00", others => x"0000"),
+ PORT_ADDR_MASK => (0 => 9, 1 => 9, 2 => 9, 3 => 4, others => 0)
)
port map(
CLK => clk_sys_i,
BUS_DATAREADY_IN(1) => sci1_ack,
BUS_WRITE_ACK_IN(1) => sci1_ack,
BUS_NO_MORE_DATA_IN(1) => '0',
- BUS_UNKNOWN_ADDR_IN(1) => '0',\r
+ BUS_UNKNOWN_ADDR_IN(1) => '0',
--SCI soda test Media Interface
BUS_READ_ENABLE_OUT(2) => sci2_read,
BUS_DATAREADY_IN(2) => sci2_ack,
BUS_WRITE_ACK_IN(2) => sci2_ack,
BUS_NO_MORE_DATA_IN(2) => '0',
- BUS_UNKNOWN_ADDR_IN(2) => sci2_nack,\r
+ BUS_UNKNOWN_ADDR_IN(2) => sci2_nack,
--soda Slow-control Interface
BUS_READ_ENABLE_OUT(3) => soda_read,
BUS_WRITE_ENABLE_OUT(3) => soda_write,
- BUS_DATA_OUT(3*32+7 downto 3*32) => soda_data_in,
- BUS_DATA_OUT(3*32+31 downto 3*32+8) => open,
- BUS_ADDR_OUT(3*16+8 downto 3*16) => soda_addr,
- BUS_ADDR_OUT(3*16+15 downto 3*16+9) => open,
+ BUS_DATA_OUT(3*32+31 downto 3*32) => soda_data_in,
+ BUS_ADDR_OUT(3*16+3 downto 3*16) => soda_addr,
+ BUS_ADDR_OUT(3*16+15 downto 3*16+4) => open,
BUS_TIMEOUT_OUT(3) => open,
- BUS_DATA_IN(3*32+7 downto 3*32) => soda_data_out,
+ BUS_DATA_IN(3*32+31 downto 3*32) => soda_data_out,
BUS_DATAREADY_IN(3) => soda_ack,
BUS_WRITE_ACK_IN(3) => soda_ack,
BUS_NO_MORE_DATA_IN(3) => '0',
BUS_UNKNOWN_ADDR_IN(3) => soda_nack,
-\r
+
STAT_DEBUG => open
);
---------------------------------------------------------------------------
--- The Soda Source
+-- The Soda Central
---------------------------------------------------------------------------
- tx_dlm_i <= '0';
- tx_dlm_word <= x"00";\r
+-- tx_dlm_i <= '0';
+-- tx_dlm_word <= x"00";
- \r
- superburst_gen : super_burst_generator
- generic map(BURST_COUNT => 16)
- port map(
- SYSCLK => clk_sys_i, --clk_S,
- RESET => reset_i, --rst_S,
- CLEAR => '0',
- CLK_EN => '0',
- --Internal Connection
- SODA_BURST_PULSE_IN => SOB_S,
- START_OF_SUPERBURST => SOS_S,
- SUPER_BURST_NR_OUT => super_burst_nr_S
- );
-
- packet_builder : soda_packet_builder
- port map(
- SYSCLK => clk_sys_i, --clk_S,
- RESET => reset_i, --rst_S,
- CLEAR => '0',
- CLK_EN => '0',
- --Internal Connection
- SODA_CMD_STROBE_IN => soda_cmd_strobe_S,
- START_OF_SUPERBURST => SOS_S,
- SUPER_BURST_NR_IN => super_burst_nr_S,
- SODA_CMD_WORD_IN => soda_cmd_word_S,
- TX_DLM_OUT => dlm_valid_S,
- TX_DLM_WORD_OUT => dlm_word_S
-
- );
+THE_SODA_SOURCE : soda_source
+ port map(
+ SYSCLK => clk_sys_i,
+ RESET => reset_i,
+ CLEAR => clear_i,
+ CLK_EN => '1',
+ --Internal Connection
+ SODA_BURST_PULSE_IN => SOB_S,
+ SODA_CMD_STROBE_IN => soda_cmd_strobe_S,
+ SODA_CMD_WORD_IN => soda_cmd_word_S,
+
+ RX_DLM_WORD_IN => rx_dlm_word,
+ RX_DLM_IN => rx_dlm_i,
+ TX_DLM_OUT => tx_dlm_i,
+ TX_DLM_WORD_OUT => tx_dlm_word,
+
+ SODA_DATA_IN => soda_data_in,
+ SODA_DATA_OUT => soda_data_out,
+ SODA_ADDR_IN => soda_addr,
+ SODA_READ_IN => soda_read,
+ SODA_WRITE_IN => soda_write,
+ SODA_ACK_OUT => soda_ack,\r
+ LEDS_ACT_OUT => open,\r
+ LEDS_OUT => soda_leds,
+ SPARE_LINE => open,\r
+ TEST_LINE => open,\r
+ STAT => open
+ );
+--end soda_source;
+
---------------------------------------------------------------------------
-- LED
---------------------------------------------------------------------------
- LED_ORANGE <= not reset_i when rising_edge(clk_sys_internal);
- LED_YELLOW <= '1';
- LED_GREEN <= not med_stat_op(9);
- LED_RED <= not (med_stat_op(10) or med_stat_op(11));
+-- LED_ORANGE <= not reset_i when rising_edge(clk_sys_internal);
+-- LED_YELLOW <= '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);
+ LED_RED <= soda_leds(3);
---------------------------------------------------------------------------
-- Test Connector
-end trb3_periph_sodasource_arch;
+end trb3_periph_sodasource_arch;
\ No newline at end of file