我正在使用 VHDL 开发一个 FPGA 项目。
每次填充时,我都需要将 16 位移位寄存器复制到 FIFO 中(例如,在将 16 个新数据位输入移位寄存器后,我想获取新形成的 16 位字并将其发送到 fifo)
我的问题是,在断言fifo上的时钟线之前,我是否需要在fifo一个时钟的输入处设置数据?这实际上是一个通用的 VHDL 问题,而不是特定于 fifos。
基本上,是否可以在同一操作中设置数据和切换时钟,或者我是否需要一些基本状态机来在一个时钟沿设置数据并在下一个时钟沿切换 fifo 时钟?
例如:
fifo_d_in( 7 downto 0 ) <= shift_register;
fifo_clk <= '1';
或者
if( state = one ) then
fifo_d_in( 7 downto 0 ) <= shift_register;
state <= two;
elsif( state = two ) then
fifo_clk <= '1';
end if;
我的直觉告诉我,我必须先设置数据,以满足输入寄存器的设置和保持要求。
谢谢!