如何处理流程语句中的信号

How to deal with signals in process statements

我用电缆连接了一个外部设备,将串行数据发送到我的 FPGA。我沿着电缆内的一根电线传递时钟信号。在每个时钟信号上,设备都会向我的 FPGA 发送一位。

每次我收到 16 位时,我必须告诉设备它必须再发送 16 位。我通过在电缆中设置另一根电线(名为 LOAD)来做到这一点。

architecture Connection of main is
begin
    process (OnboardClock)
       variable bitIndex : Integer := 0;
  begin
       if rising_edge(OnboardClock) then

            -- Do something with DATA
            -- Loop till bit index is 16
            -- At index 16, set LOAD to 1
            -- At index 0, unset LOAD to 0 again

            bitIndex := bitIndex + 1;
       end if;
    end process;
end architecture Connection;

现在要注意的是 LOAD 是一种信号类型,所以如果我使用语句

LOAD <= '1'

LOAD 将安排在稍后处理,即它不会像进程中的其他语句那样按顺序执行。显然,如果 LOAD 是变量类型,我的程序逻辑将是一个简单的循环,但它不是...

我怎样才能体面地处理这个问题?我是否必须浪费额外的 迭代 才能将 LOAD 设置回 0?

LOAD提前一个周期设置为高电平,即当bitIndex为15时。然后当bitIndex为16时再次将LOAD重置为低电平。