, так что у меня, похоже, возникла проблема с утверждением сигнала сигнала флага. Поэтому в основном я реализую интерфейс i2c между двумя файлами fpga. Мой мастер отправит более 50 байт. На моей подчиненной стороне я хочу сохранить байт, входящий в массив. Поэтому я проверяю, когда все байты читаются и доступны, я помещаю их в массив. Теперь проблема в том, что после заполнения массива я хочу утверждать сигнал, который должен активировать процесс. Моя проблема заключается в том, что когда сигнал утверждается и процесс активируется, что я застрял в холостом цикле навсегда, что меня смущает, потому что я был в предположении, что когда я вхожу в процесс и проверяю условие утверждения сигнала флага, предположим быть высоким. Так что проблема в том, что мой сигнал не активирует процесс или не является моей проблемой, что к моменту проверки проверки флага, что флаг уже вернулся к 0? Я приложил код:Сигнал не активирует процесс?
signal i : integer range 0 to 49 := 0;
type field_array is array(0 to 49) of std_logic_vector(7 downto 0);
begin
process(clk,rst)
begin
if(rst = '1') then
i <= 0;
elsif (rising_edge(clk)) then
if(data_available = '1') then
array_of_data(i) <= Master_Data;
i <= i + 1;
end if;
if(i = 49) then
i <= 0; -- reset index back to zero
end if;
end if;
end process;
flag <= '1' when i = 49 else '0';
process(state,flag)
begin
next_state <= state;
case (state) is
when idle =>
if(flag = '1') then
next_state <= Send_data;
end if;
when Send_data =>...
Непонятно из вашего фрагмента кода, как 'next_state' (установленный при изменении вашего флага) должен изменить ваш сигнал' state' для запуска следующего состояния вашего конечного автомата. – mfro