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

时间:2016-01-29 17:38:07

标签: vhdl

我有一个外部设备的电缆连接,可以将串行数据发送到我的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?

1 个答案:

答案 0 :(得分:2)

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

相关问题