在过去的几天里,我一直在寻找一种为项目编写一些VHDL的方法,该方法允许我触发一组数据的处理并传输结果。我正在使用的设备可以开始收集第二组数据,同时为我的FPGA传输完整的第一组数据,我希望通过流水线来利用这一点,但我还没有成功。
要触发收集,我需要按特定顺序发送一组特定信号。在几个时钟周期和来自FPGA的信号之后,然后在设备的几个端口上输出完整的集合。我的目标是通过简单的输入脉冲启动整个过程,并且可以在第一个脉冲的分配仍然发生时发生第二个脉冲。有没有办法让我发送第一组信号,然后输出数据信号,同时发送第二组信号,如果有意义的话?
这是我的意思的图片。
如您所见,集成1中的数据在第二个甚至第三个集成阶段发送。 load_pulse是请求在DATA
上输出数据的信号,并且可以在稍后发送第二组信号集合2时发生。
这是我编写的一些测试VHDL,看看是否可以通过一个简单的过程:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity test is
port(
x : in STD_LOGIC;
y : out STD_LOGIC := '0';
z : out STD_LOGIC := '0'
);
end test;
architecture test_behav of test is
begin
process(x) is
begin
y <= '0', '1' after 10 NS, '0' after 20 ns;
z <= '0', '1' after 30 NS, '0' after 40 ns;
end process;
end test_behav;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity testbench is
end testbench;
architecture testbench_behav of testbench is
component test is
port(
x : in STD_LOGIC;
y : out STD_LOGIC;
z : out STD_LOGIC
);
end component test;
signal x : STD_LOGIC := '0';
signal y : STD_LOGIC := '0';
signal z : STD_LOGIC := '0';
begin
testo: component test
port map(
x => x,
y => y,
z => z
);
x <= '1' after 25 ns;
end testbench_behav;
在此示例中,我在其信号分配仍在执行时触发该过程。结果是原始信号分配被中断,新信号分配在x <= '1' after 25 ns
之后完成,如您所见:
有没有办法实现这一点,你可以向我解释或指出我的解释,或者我需要采取另一种方法?
由于