You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仿真时如何通过when语句输出变量的历史时间步数值?

输出仿真中变量的上一时间步数值

可行,核心思路是用额外变量缓存变量的历史值,具体实现分两种场景:

1. 带时钟的同步逻辑场景

声明一个与目标变量同类型的缓存变量,在每个时钟沿将当前变量值存入缓存,后续需要输出历史值时直接调用缓存变量即可:

-- 声明变量/信号
signal dummy : integer := 0;
signal dummy_prev : integer := 0;

-- 时钟进程中更新缓存
process(clk)
begin
  if rising_edge(clk) then
    dummy_prev <= dummy; -- 先缓存当前值,再执行dummy的更新逻辑
    -- 此处添加dummy的赋值或更新逻辑
  end if;
end process;

-- 在when语句中输出上一时间步的值
when time == 1000 then
  to_csv(dummy_prev, "dummy_prev.csv");
end when;

2. 无时钟的异步仿真场景

如果是基于事件触发的纯行为仿真(比如用wait语句触发逻辑),可以用专门的进程跟踪变量的历史值:

signal dummy : integer := 0;
signal dummy_prev : integer := 0;

-- 跟踪dummy的历史值
process
begin
  dummy_prev <= dummy; -- 先缓存当前值,再等待dummy变化
  wait on dummy;
end process;

-- 输出历史值
when time == 1000 then
  to_csv(dummy_prev, "dummy_prev.csv");
end when;

注意:外部C函数to_csv无需修改,只要传入缓存的历史变量即可完成需求。

内容的提问来源于stack exchange,提问作者burritotukituki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 03:10:02