component trb_net16_iobuf is
generic (
IBUF_DEPTH : integer range 0 to 6 := c_FIFO_BRAM;--std_FIFO_DEPTH;
- IBUF_SECURE_MODE : integer range 0 to 1 := c_NO;--std_IBUF_SECURE_MODE;
+ IBUF_SECURE_MODE : integer range 0 to 1 := c_YES;--std_IBUF_SECURE_MODE;
SBUF_VERSION : integer range 0 to 1 := std_SBUF_VERSION;
OBUF_DATA_COUNT_WIDTH : integer range 2 to 7 := std_DATA_COUNT_WIDTH;
USE_ACKNOWLEDGE : integer range 0 to 1 := std_USE_ACKNOWLEDGE;
-- reghigh <= x"DEAD";
-- reglow <= x"AFFE";
reg_F0 <= x"5e1d"; --x"0001";
- reg_F1 <= x"0000";
- reg_F2 <= x"0000";--xor_all(APL_DATA_IN) & "000000000000011";
- reg_F3 <= x"0000";
+ reg_F1 <= x"1111";
+ reg_F2 <= x"2222";--xor_all(APL_DATA_IN) & "000000000000011";
+ reg_F3 <= x"3333";
APL_DTYPE_OUT <= x"F";
APL_TARGET_ADDRESS_OUT <= x"ffff"; --TARGET_ADDRESS;
end case;
end process;
- APL_READ_OUT <= '0', '1' after 4ns; --just read, do not check
+ APL_READ_OUT <= '0', '1' after 30000 ns; --just read, do not check
APL_ERROR_PATTERN_OUT <= x"12345678";
--APL_DATA_OUT <= reg_counter;
begin
APL_READ_OUT <= '1'; --just read, do not check
APL_DTYPE_OUT <= x"0";
- APL_ERROR_PATTERN_OUT <= x"12345678";
+ APL_ERROR_PATTERN_OUT <= x"00000000";
APL_TARGET_ADDRESS_OUT <= TARGET_ADDRESS;
--APL_DATA_OUT <= reg_counter;
-------------------------------------------------------------------------
elsif current_state = WRITING then
next_state <= WRITING;
- if packet_counter = c_F0 then
- next_APL_WRITE_OUT <= '1';
- next_APL_DATA_OUT <= (0 => '1', others => '0');
- next_packet_counter <= c_F1;
- elsif packet_counter = c_F1 then
- next_APL_WRITE_OUT <= '1';
- next_APL_DATA_OUT <= xor_all(APL_DATA_IN) & reg_counter(14 downto 0);
- next_packet_counter <= c_F2;
- elsif packet_counter = c_F2 then
- next_APL_WRITE_OUT <= '1';
- next_APL_DATA_OUT <= xor_all(APL_DATA_IN) & reg_counter(14 downto 0);
- next_packet_counter <= c_F3;
- elsif packet_counter <=c_F3 then
- next_state <= IDLE;
- next_packet_counter <= c_F0;
- next_counter <= reg_counter +1;
+ if APL_READ_IN = '1' then
+ if packet_counter = c_F0 then
+ next_APL_WRITE_OUT <= '1';
+ next_APL_DATA_OUT <= x"1111";
+ next_packet_counter <= c_F1;
+ elsif packet_counter = c_F1 then
+ next_APL_WRITE_OUT <= '1';
+ next_APL_DATA_OUT <= reg_counter(15 downto 0);
+ next_packet_counter <= c_F2;
+ elsif packet_counter = c_F2 then
+ next_APL_WRITE_OUT <= '1';
+ next_APL_DATA_OUT <= x"0000" - reg_counter(15 downto 0);
+ next_packet_counter <= c_F3;
+ elsif packet_counter <=c_F3 then
+ next_state <= IDLE;
+ next_packet_counter <= c_F0;
+ next_counter <= reg_counter +1;
+ end if;
end if;
-----------------------------------------------------------------------
-- RUNNING
end if;
end process;
end generate;
+
gen_int_nonsbuf : if SECURE_MODE_TO_INT = 0 generate
buf_INT_MASTER_DATAREADY_OUT <= next_INT_MASTER_DATAREADY_OUT;
INT_MASTER_DATA_OUT <= next_INT_MASTER_DATA_OUT;
buf_INT_MASTER_PACKET_NUM_OUT <= next_INT_MASTER_PACKET_NUM_OUT;
sbuf_free <= INT_MASTER_READ_IN;
end generate;
+
INT_MASTER_PACKET_NUM_OUT <= buf_INT_MASTER_PACKET_NUM_OUT;
INT_MASTER_DATAREADY_OUT <= buf_INT_MASTER_DATAREADY_OUT;
+
+
---------------------------------------
-- a sbuf (to_apl direction)
---------------------------------------
SYN_READ_IN => APL_READ_IN,
STAT_BUFFER => sbuf_status(1)
);
+
+
SBUF_TO_APL2: trb_net_sbuf
generic map (
VERSION => SBUF_VERSION,
if rising_edge(CLK) then
if RESET = '1' or (INT_PACKET_NUM_IN = c_F3 and INT_DATAREADY_IN = '1') then --or
saved_packet_type <= "111";
- elsif INT_PACKET_NUM_IN = c_H0 then
+ elsif INT_PACKET_NUM_IN = c_H0 and INT_DATAREADY_IN = '1' then
saved_packet_type <= INT_DATA_IN(2 downto 0);
end if;
end if;
constant std_USE_ACKNOWLEDGE : integer := c_YES;
constant std_USE_REPLY_CHANNEL: integer := c_YES;
constant std_FIFO_DEPTH : integer := c_FIFO_BRAM;
- constant std_DATA_COUNT_WIDTH : integer := 5; --max 7
+ constant std_DATA_COUNT_WIDTH : integer := 7; --max 7
constant std_TERM_SECURE_MODE : integer := c_NO;
constant std_MUX_SECURE_MODE : integer := c_NO;
constant std_FORCE_REPLY : integer := c_YES;