Line 94... |
Line 94... |
architecture fsm of GECKO3COM_simple_fsm is
|
architecture fsm of GECKO3COM_simple_fsm is
|
|
|
-- XST specific synthesize attributes
|
-- XST specific synthesize attributes
|
attribute safe_implementation : string;
|
attribute safe_implementation : string;
|
attribute safe_recovery_state : string;
|
attribute safe_recovery_state : string;
|
|
attribute fsm_encoding : string;
|
|
|
type state_type is (st1_idle, st2_abort, st3_read_msg_id, st4_check_msg_id,
|
type state_type is (st1_idle, st2_abort, st3_read_msg_id, st4_check_msg_id,
|
st5_read_nbtag, st6_read_transfer_size_low,
|
st5_read_nbtag, st6_read_transfer_size_low,
|
st7_read_transfer_size_high, st8_check_attributes,
|
st7_read_transfer_size_high, st8_check_attributes,
|
st9_signal_data_request, st10_signal_receive_new_data,
|
st9_signal_data_request, st10_signal_receive_new_data,
|
Line 111... |
Line 112... |
signal state, next_state : state_type;
|
signal state, next_state : state_type;
|
|
|
-- XST specific synthesize attributes
|
-- XST specific synthesize attributes
|
attribute safe_recovery_state of state : signal is "st1_idle";
|
attribute safe_recovery_state of state : signal is "st1_idle";
|
attribute safe_implementation of state : signal is "yes";
|
attribute safe_implementation of state : signal is "yes";
|
|
attribute fsm_encoding of state : signal is "johnson";
|
|
|
|
|
--Declare internal signals for all outputs of the state-machine
|
--Declare internal signals for all outputs of the state-machine
|
signal s_receive_fifo_wr_en : std_logic;
|
signal s_receive_fifo_wr_en : std_logic;
|
signal s_receive_fifo_reset : std_logic;
|
signal s_receive_fifo_reset : std_logic;
|
signal s_receive_transfersize_en : std_logic_vector((32/SIZE_DBUS_GPIF)-1 downto 0);
|
signal s_receive_transfersize_en : std_logic_vector((32/SIZE_DBUS_GPIF)-1 downto 0);
|
Line 348... |
Line 351... |
state = st17_send_nbtag or
|
state = st17_send_nbtag or
|
state = st18_send_transfer_size_low or
|
state = st18_send_transfer_size_low or
|
state = st19_send_transfer_size_high or
|
state = st19_send_transfer_size_high or
|
state = st20_send_attributes or
|
state = st20_send_attributes or
|
state = st21_send_reserved))
|
state = st21_send_reserved))
|
or state = st22_send_data
|
or (state = st22_send_data and
|
|
i_gpif_tx_full = '0' and
|
|
i_send_fifo_empty = '0')
|
|
or (state = st23_send_wait and
|
|
i_gpif_tx_full = '0' and
|
|
i_send_fifo_empty = '0')
|
then
|
then
|
s_gpif_tx_wr_en <= '1';
|
s_gpif_tx_wr_en <= '1';
|
end if;
|
end if;
|
end process;
|
end process;
|
|
|
Line 374... |
Line 382... |
elsif i_gpif_rx_empty = '0' then
|
elsif i_gpif_rx_empty = '0' then
|
next_state <= st3_read_msg_id;
|
next_state <= st3_read_msg_id;
|
end if;
|
end if;
|
|
|
when st2_abort =>
|
when st2_abort =>
|
|
if i_gpif_abort = '0' then
|
next_state <= st1_idle;
|
next_state <= st1_idle;
|
|
end if;
|
|
|
when st3_read_msg_id =>
|
when st3_read_msg_id =>
|
next_state <= st4_check_msg_id;
|
next_state <= st4_check_msg_id;
|
|
|
when st4_check_msg_id =>
|
when st4_check_msg_id =>
|