首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >inout信号在仿真中没有变化

inout信号在仿真中没有变化
EN

Stack Overflow用户
提问于 2013-11-02 09:12:28
回答 1查看 586关注 0票数 1

假设我有一个名为"HostToDevice“的实体,它有一个"ps2c”inout信号(VHDL)。在这个实体中,我只将这个信号设置为'Z‘(高阻抗),因为我希望另一个实体来控制它。

我创建了一个测试平台来检查这种行为,然后发生了一些奇怪的事情(对我来说)。在测试平台中,我有以下代码:

代码语言:javascript
复制
ps2ctemp_process :process
begin
    ps2ctemp <= '0';
    wait for ps2c_period/2;
    ps2ctemp <= '1';
    wait for ps2c_period/2;
end process;

及之后:

代码语言:javascript
复制
stim_proc: process
begin
    ps2c <= ps2ctemp;

    wait;
end process;

当我运行模拟(行为)时,"ps2c“inout信号很低,不像ps2ctemp信号那样改变。

相反,如果我在不使用其他信号的情况下手动驱动ps2c信号,它就能正常工作;如下所示:

代码语言:javascript
复制
ps2c <= '1';
wait for 10 ns;
ps2c <= '0';
wait for 10 ns;
ps2c <= '1';

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-02 12:14:50

您的"stim_proc“没有敏感列表,只有一个没有事件或超时的”等待“,因此它打算运行一次,然后永远等待。这似乎就是sim正在做的事,所以,很好。

现在,我将在这里作一个粗略的猜测,您实际上希望每次ps2ctemp更改时都会唤醒它,并将新值传递给ps2c

有两种方法可以做到这一点:

(1)具有敏感性列表

代码语言:javascript
复制
stim_proc: process(psc2temp)
begin
    ps2c <= ps2ctemp;

    --wait;
    -- no, we want the process to complete, so it can be woken up 
    -- and run from the start again
end process;

(2)等待某一特定事件.

代码语言:javascript
复制
stim_proc: process
begin
    ps2c <= ps2ctemp;

    wait until ps2ctemp'event;
    -- any activity at all on ps2ctemp should wake this process, 
    -- in case there is something it ought to be doing...
end process;

在这个简单的例子中,这两种形式本质上是等价的。所以更简单的(敏感列表)是首选.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19740474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档