我有一个外部设备的电缆连接,可以将串行数据发送到我的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?
答案 0 :(得分:2)
将LOAD
提前一个周期设置为高,即bitIndex
为15.当LOAD
为16时,再次将bitIndex
重置为低。