Я работаю над проектом FPGA на VHDL.
Мне нужно копировать 16-битный регистр сдвига в FIFO каждый раз, когда он заполняется (например, после того, как 16 новых бит данных были введены в сдвиговый регистр, я хочу взять вновь сформированное 16-битное слово и отправить его в FIFO)
Мой вопрос: нужно ли мне настраивать данные на входе в FIFO one clock перед тем, как утверждать линию синхронизации в FIFO? На самом деле это общий вопрос VHDL, а не только для FIFO.
В принципе, можно ли установить данные и переключить часы в одной операции, или мне нужен какой-то базовый конечный автомат, чтобы настроить данные на одном фронте тактового сигнала и переключить часы FIFO на следующем?
например:
fifo_d_in( 7 downto 0 ) <= shift_register;
fifo_clk <= '1';
or
if( state = one ) then
fifo_d_in( 7 downto 0 ) <= shift_register;
state <= two;
elsif( state = two ) then
fifo_clk <= '1';
end if;
Моя интуиция подсказывает мне, что я должен сначала настроить данные, чтобы удовлетворить требованиям настройки и удержания входных регистров.
Спасибо!