2 use ieee.std_logic_1164.all;
3 use ieee.std_logic_unsigned.all;
4 use ieee.numeric_std.all;
6 use work.lx_rocon_pkg.all;
8 -- IRC bus interconnect
13 reset_i : in std_logic;
15 address_i : in std_logic_vector(4 downto 0);
16 next_ce_i : in std_logic;
17 data_i : in std_logic_vector(31 downto 0);
18 data_o : out std_logic_vector(31 downto 0);
20 bls_i : in std_logic_vector(3 downto 0)
24 architecture Behavioral of lx_fncapprox is
35 ack_o : out std_logic;
36 addr_i : in std_logic_vector (addr_width-1 downto 0);
38 data_o : out std_logic_vector (data_width-1 downto 0);
43 signal ce_s : std_logic;
45 signal reci_tab_idx_s : std_logic_vector(7 downto 0);
46 signal reci_tab_idx_r : std_logic_vector(7 downto 0);
47 signal reci_tab_a_data_s : std_logic_vector(35 downto 0);
48 signal reci_tab_a_data_r : std_logic_vector(35 downto 0);
50 signal reci_tab_a_ack_s : std_logic;
51 signal reci_tab_a_stb_s : std_logic;
54 reci_tab_a : rom_table
58 init_file => "reci_tab_a.lut"
63 stb_i => reci_tab_a_stb_s,
64 addr_i => reci_tab_idx_s,
65 data_o => reci_tab_a_data_s,
66 ack_o => reci_tab_a_ack_s
71 process(next_ce_i, ce_s, bls_i, address_i, data_i, reci_tab_idx_r)
74 reci_tab_a_stb_s <= '0';
75 reci_tab_idx_s <= reci_tab_idx_r;
77 -- Incoming bus request
78 if next_ce_i = '1' then
79 if bls_i(0) = '1' then
80 reci_tab_a_stb_s <= '1';
81 reci_tab_idx_s <= data_i(7 downto 0);
87 process(ce_s, reci_tab_a_data_r)
90 data_o <= (others => '0');
93 data_o <= reci_tab_a_data_r(35 downto 4);
100 wait until clk_i'event and clk_i= '1';
102 if reci_tab_a_ack_s = '1' then
103 reci_tab_a_data_r <= reci_tab_a_data_s;
106 reci_tab_idx_r <= reci_tab_idx_s;