tested, fixed and verified multimessage packet reads
This commit is contained in:
parent
c96300f6fc
commit
9979b7b6dd
@ -137,7 +137,6 @@ begin
|
||||
ext_control_input.cmd <= "00";
|
||||
wait until int_control_input.active_driver(0) = '0';
|
||||
wait for CLK_PERIOD;
|
||||
ext_control_input.seq_mem_access_count <= 2;
|
||||
report "Task completed in driver, sending next task...";
|
||||
ext_control_input.address <= x"FA0FA0FA";
|
||||
ext_control_input.cmd <= "10";
|
||||
@ -149,6 +148,10 @@ begin
|
||||
wait until int_control_input.active_driver(0) = '0';
|
||||
wait for CLK_PERIOD;
|
||||
report "Task completed in driver, ending simulation stimulus";
|
||||
ext_control_input.address <= (others => '0');
|
||||
ext_control_input.cmd <= "00";
|
||||
ext_control_input.driver_id <= "0";
|
||||
ext_control_input.seq_mem_access_count <= 0;
|
||||
|
||||
wait;
|
||||
end process stimulus_proc;
|
||||
@ -160,6 +163,7 @@ begin
|
||||
end process external_stimulus_signal;
|
||||
|
||||
external_stimulus: process
|
||||
variable input : positive := 1;
|
||||
begin
|
||||
wait for CLK_PERIOD / 1000;
|
||||
curr_word <= "00000000";
|
||||
@ -176,15 +180,26 @@ begin
|
||||
curr_word <= "00000000";
|
||||
wait for CLK_PERIOD * 140;
|
||||
curr_word <= "00101001";
|
||||
wait for CLK_PERIOD*20;
|
||||
curr_word <= "01100001";
|
||||
wait for CLK_PERIOD;
|
||||
curr_word <= "00100000";
|
||||
wait for CLK_PERIOD;
|
||||
curr_word <= "00010000";
|
||||
wait for CLK_PERIOD;
|
||||
curr_word <= "00000000";
|
||||
|
||||
wait for CLK_PERIOD * 20;
|
||||
curr_word <= "01100111";
|
||||
wait for CLK_PERIOD;
|
||||
for x in 0 to 127 loop
|
||||
curr_word <= std_logic_vector(to_unsigned(input, 8));
|
||||
input := input + 1 mod 256;
|
||||
wait for CLK_PERIOD;
|
||||
end loop;
|
||||
curr_word <= "00000000";
|
||||
wait for CLK_PERIOD * 140;
|
||||
wait for CLK_PERIOD * 20;
|
||||
curr_word <= "01100111";
|
||||
wait for CLK_PERIOD;
|
||||
for x in 0 to 127 loop
|
||||
curr_word <= std_logic_vector(to_unsigned(input, 8));
|
||||
input := input + 1 mod 256;
|
||||
wait for CLK_PERIOD;
|
||||
end loop;
|
||||
|
||||
wait;
|
||||
end process external_stimulus;
|
||||
|
||||
@ -170,8 +170,6 @@ begin
|
||||
else
|
||||
next_state <= RX_RESPONSE;
|
||||
end if;
|
||||
when RX_BODY_NO_OUT =>
|
||||
next_state <= RX_BODY;
|
||||
when RX_BODY =>
|
||||
-- Here we want to stay in RX_BODY for the duration of a packet.
|
||||
if st.read_stage = 0 then
|
||||
@ -227,7 +225,6 @@ begin
|
||||
ext_out_data_cmd := st.curr_addr(7 downto 0);
|
||||
end if;
|
||||
when RX_RESPONSE =>
|
||||
when RX_BODY_NO_OUT =>
|
||||
when RX_BODY =>
|
||||
int_out.payload <= st.ext_in_reg.data;
|
||||
int_out.write_enable_in <= '1';
|
||||
|
||||
@ -189,9 +189,6 @@ begin
|
||||
expected_out <= "00000000";
|
||||
check_next_state(RX_RESPONSE);
|
||||
wait for CLK_PERIOD;
|
||||
wait for CLK_PERIOD / 4;
|
||||
check_next_state(RX_BODY_NO_OUT);
|
||||
wait for CLK_PERIOD * 3 /4;
|
||||
check_next_state(RX_BODY);
|
||||
wait for CLK_PERIOD;
|
||||
check_next_state(RX_BODY);
|
||||
@ -219,9 +216,6 @@ begin
|
||||
expected_out <= "00000000";
|
||||
check_next_state(RX_RESPONSE);
|
||||
wait for CLK_PERIOD;
|
||||
wait for CLK_PERIOD / 4;
|
||||
check_next_state(RX_BODY_NO_OUT);
|
||||
wait for CLK_PERIOD * 3 /4;
|
||||
check_next_state(RX_BODY);
|
||||
wait for CLK_PERIOD;
|
||||
check_next_state(RX_BODY);
|
||||
|
||||
@ -18,7 +18,7 @@ package socbridge_driver_tb_pkg is
|
||||
type state_t is
|
||||
(IDLE, ADDR1, ADDR2, ADDR3, ADDR4,
|
||||
TX_HEADER, TX_BODY, TX_ACK,
|
||||
RX_HEADER, RX_RESPONSE, RX_BODY_NO_OUT, RX_BODY);
|
||||
RX_HEADER, RX_RESPONSE, RX_BODY);
|
||||
|
||||
--- TRANSLATOR ---
|
||||
type translator_state_t is (IDLE, SEND, SEND_ACCEPTED, AWAIT);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user