在过去的几天里,我一直在寻找一种为项目编写一点 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
,你可以在这里看到:
有没有办法做到这一点,你可以向我解释或指出我的解释,或者我需要采取另一种方法吗?
谢谢