ganimede-rework #20
@ -20,7 +20,8 @@ entity fifo_buffer is
|
|||||||
valid_in : in std_logic;
|
valid_in : in std_logic;
|
||||||
valid_out : out std_logic;
|
valid_out : out std_logic;
|
||||||
data_in : in std_logic_vector(data_width - 1 downto 0);
|
data_in : in std_logic_vector(data_width - 1 downto 0);
|
||||||
data_out : out std_logic_vector(data_width - 1 downto 0)
|
data_out : out std_logic_vector(data_width - 1 downto 0);
|
||||||
|
used_slots : out integer range 0 to buffer_size
|
||||||
);
|
);
|
||||||
end entity fifo_buffer;
|
end entity fifo_buffer;
|
||||||
|
|
||||||
@ -73,6 +74,11 @@ begin
|
|||||||
comb_proc: process(write_pointer, read_pointer, buffer_full, valid_in, rst)
|
comb_proc: process(write_pointer, read_pointer, buffer_full, valid_in, rst)
|
||||||
variable write_pointer_inc : unsigned(address_bits - 1 downto 0);
|
variable write_pointer_inc : unsigned(address_bits - 1 downto 0);
|
||||||
begin
|
begin
|
||||||
|
if write_pointer >= read_pointer then
|
||||||
|
used_slots <= to_integer(unsigned(write_pointer) - unsigned(read_pointer));
|
||||||
|
else
|
||||||
|
used_slots <= buffer_size - to_integer(unsigned(read_pointer)) + to_integer(unsigned(write_pointer));
|
||||||
|
end if;
|
||||||
ready_out <= not buffer_full;
|
ready_out <= not buffer_full;
|
||||||
write_signal <= (valid_in and not buffer_full) or rst;
|
write_signal <= (valid_in and not buffer_full) or rst;
|
||||||
write_pointer_inc := unsigned(write_pointer) + 1;
|
write_pointer_inc := unsigned(write_pointer) + 1;
|
||||||
|
|||||||
@ -78,6 +78,7 @@ begin
|
|||||||
fifo_buffer_to_ip_inst : entity gan_buffer.fifo_buffer
|
fifo_buffer_to_ip_inst : entity gan_buffer.fifo_buffer
|
||||||
generic map (
|
generic map (
|
||||||
buffer_size => 1024
|
buffer_size => 1024
|
||||||
|
--tech => 60
|
||||||
)
|
)
|
||||||
port map(
|
port map(
|
||||||
in_clk => socbridge_clk,
|
in_clk => socbridge_clk,
|
||||||
@ -94,6 +95,7 @@ begin
|
|||||||
fifo_buffer_from_ip_inst : entity gan_buffer.fifo_buffer
|
fifo_buffer_from_ip_inst : entity gan_buffer.fifo_buffer
|
||||||
generic map (
|
generic map (
|
||||||
buffer_size => 1024
|
buffer_size => 1024
|
||||||
|
-- tech => 60
|
||||||
)
|
)
|
||||||
port map(
|
port map(
|
||||||
in_clk => clk,
|
in_clk => clk,
|
||||||
@ -104,7 +106,8 @@ begin
|
|||||||
valid_in => ip_to_ganimede.socbridge.valid,
|
valid_in => ip_to_ganimede.socbridge.valid,
|
||||||
valid_out => buffer_to_socbridge_driver.valid,
|
valid_out => buffer_to_socbridge_driver.valid,
|
||||||
data_in => ip_to_ganimede.socbridge.data,
|
data_in => ip_to_ganimede.socbridge.data,
|
||||||
data_out => buffer_to_socbridge_driver.data
|
data_out => buffer_to_socbridge_driver.data,
|
||||||
|
used_slots => buffer_to_socbridge_driver.used_slots
|
||||||
);
|
);
|
||||||
|
|
||||||
--- LATER WE ADD OPTIMIZATIONS HERE ---
|
--- LATER WE ADD OPTIMIZATIONS HERE ---
|
||||||
|
|||||||
@ -16,6 +16,7 @@ package io_types is
|
|||||||
type fifo_interface_t is record
|
type fifo_interface_t is record
|
||||||
ready, valid : std_logic;
|
ready, valid : std_logic;
|
||||||
data : std_logic_vector(fifo_width - 1 downto 0);
|
data : std_logic_vector(fifo_width - 1 downto 0);
|
||||||
|
used_slots : integer;
|
||||||
end record fifo_interface_t;
|
end record fifo_interface_t;
|
||||||
|
|
||||||
type ext_protocol_def_t is record
|
type ext_protocol_def_t is record
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user