灵敏度列表中的哪个特定信号触发 VHDL 中的进程



我正在用VHDL做一个项目,我被困在这一点上。任何帮助,不胜感激。 该问题描述如下: 我有一个带有 N(数量)std_logic_vector信号的 2D 数组。数字 N 是在泛型中定义的,所以我们不知道数组的具体长度(我们改用 N)。 此数组用作进程的敏感度列表,以便触发它。像这样:process(arrayOfSignals)

我的问题是:有没有办法知道数组的哪个特定信号触发了该过程?(例如信号:arrayOfSignals(2))

我看过这篇文章:灵敏度列表中的哪个信号触发了该过程,但这里的情况并非如此。如果其灵敏度列表的所有信号都在数组内,并且该数组正在触发该过程,则

会出现这种情况。为了清楚起见,以下是我正在尝试做的VHDL代码。

process(arrayOfSignals)
begin
for i in 0 to N-1 loop
if arrayOfSignals(i)'transaction'event then --I want to determine which signal of arrayOfSignals (position in the array) triggerd the process.
case arrayOfSignals(i) is
when "01" =>
AD(i)(30 downto 23) <= AD(i)(7 downto 0);
exit;
when others => null; exit;
end case;
exit;
end if;
end loop;
end process;

我不知道如何完全按照你的要求去做。但是,让我提出一种方法来做我认为你正在努力做的事情。 通常,如果要检测信号的变化,则需要时钟过程并制作信号的注册副本。然后,您可以将输入信号的状态与注册副本(对于每个元素)进行比较,如果它们不相等,则输入已更改,您可以触发逻辑。

最新更新