ganimede-multipacket #19

Merged
Adam merged 13 commits from ganimede-multipacket into ganimede-rework 2025-05-27 15:18:08 +02:00
2 changed files with 14 additions and 7 deletions
Showing only changes of commit 5f9783f3b3 - Show all commits

View File

@ -604,13 +604,11 @@ begin
trans_st.read.curr_inst.request <= '0';
trans_st.read.curr_inst.address <= (others => '0');
trans_st.read.curr_inst.seq_mem_access_count <= 0;
trans_st.read.curr_inst.instruction <= NO_OP;
trans_st.read.is_first_word <= '1';
trans_st.write.curr_state <= IDLE;
trans_st.write.curr_inst.request <= '0';
trans_st.write.curr_inst.address <= (others => '0');
trans_st.write.curr_inst.seq_mem_access_count <= 0;
trans_st.write.curr_inst.instruction <= NO_OP;
trans_st.write.is_first_word <= '1';
elsif(rising_edge(ext_to_socbridge_driver_rec.clk)) then
trans_st.read.curr_state <= trans_read_next_state;
@ -619,7 +617,9 @@ begin
when IDLE =>
if controller_to_socbridge_driver.request = '1' and controller_to_socbridge_driver.instruction = WRITE
and trans_st.write.curr_inst.request = '0' then
trans_st.write.curr_inst <= controller_to_socbridge_driver;
trans_st.write.curr_inst.request <= controller_to_socbridge_driver.request;
trans_st.write.curr_inst.address <= controller_to_socbridge_driver.address;
trans_st.write.curr_inst.seq_mem_access_count <= controller_to_socbridge_driver.seq_mem_access_count;
else
end if;
trans_st.write.is_first_word <= '1';
@ -642,7 +642,6 @@ begin
trans_st.write.curr_inst.request <= '0';
trans_st.write.curr_inst.address <= (others => '0');
trans_st.write.curr_inst.seq_mem_access_count <= 0;
trans_st.write.curr_inst.instruction <= NO_OP;
end if;
if trans_st.write.curr_inst.seq_mem_access_count mod 256 = 0 then
trans_st.write.is_first_word <= '1';
@ -657,7 +656,9 @@ begin
case trans_st.read.curr_state is
when IDLE =>
if controller_to_socbridge_driver.request = '1' and controller_to_socbridge_driver.instruction = READ then
trans_st.read.curr_inst <= controller_to_socbridge_driver;
trans_st.read.curr_inst.request <= controller_to_socbridge_driver.request;
trans_st.read.curr_inst.address <= controller_to_socbridge_driver.address;
trans_st.read.curr_inst.seq_mem_access_count <= controller_to_socbridge_driver.seq_mem_access_count;
else
end if;
trans_st.read.is_first_word <= '1';
@ -678,7 +679,6 @@ begin
trans_st.read.curr_inst.request <= '0';
trans_st.read.curr_inst.address <= (others => '0');
trans_st.read.curr_inst.seq_mem_access_count <= 0;
trans_st.read.curr_inst.instruction <= NO_OP;
end if;
if trans_st.read.curr_inst.seq_mem_access_count mod 256 = 0 then
trans_st.read.is_first_word <= '1';

View File

@ -23,8 +23,15 @@ package socbridge_driver_pkg is
--- TRANSLATOR ---
type ctrl_inst_state_t is (IDLE, SEND, SEND_ACCEPTED, AWAIT);
type ctrl_inst_t is record
request : std_logic;
address : std_logic_vector(address_width - 1 downto 0);
seq_mem_access_count : integer;
instruction : instruction_command_t;
end record ctrl_inst_t;
type ctrl_inst_state_rec_t is record
curr_inst : controller_to_socbridge_driver_t;
curr_inst : ctrl_inst_t;
curr_state : ctrl_inst_state_t;
is_first_word : std_logic;
end record ctrl_inst_state_rec_t;