如何解决敏感度列表中的哪个特定信号触发了 VHDL 中的进程
我正在用 VHDL 做一个项目,但我被困在了这一点上。任何帮助表示赞赏。
问题描述如下:
我有一个带有 N 个(数量)std_logic_vector 信号的二维数组。数字 N 是在泛型中定义的,所以我们不知道数组的具体长度(我们使用 N 代替)。
该数组用作进程的敏感列表以触发它。像这样:process(arrayOfSignals)
我的问题是:有没有办法知道阵列的哪个特定信号触发了该过程? (例如信号:arrayOfSignals(2))
我看过这篇文章:Which signal in the sensitivity list triggers the process 但这里不是这样。如果他们敏感列表中的所有信号都在一个数组中,并且这个数组正在触发这个过程,就会出现这种情况。
为了清楚起见,下面是我正在尝试做的 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;
解决方法
我不知道如何准确地执行您的要求。但是让我建议一种方法来做我认为你正在尝试做的事情。 通常,如果您想检测信号的变化,您将有一个计时过程并制作信号的注册副本。然后,您可以将输入信号的状态与您注册的副本(对于每个元素)进行比较,如果它们不相等,则输入已更改,您可以触发逻辑。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。