ganimede-rework #20

Closed
kryddan wants to merge 25 commits from ganimede-rework into ganimede-single-issue
3 changed files with 12 additions and 2 deletions
Showing only changes of commit 507c310b81 - Show all commits

View File

@ -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;

View File

@ -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 ---

View File

@ -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