0

我正在尝试使用 NOR 门模拟 EXOR。我为异或门编写了以下逻辑。现在,我的 nor2 定义为 4 ns 延迟。

ENTITY ex IS
    PORT (a, b : IN BIT; c : OUT BIT);
END ex;

ARCHITECTURE structure OF ex IS

    SIGNAL tmp1, tmp2, tmp3, tmp4: BIT;
    COMPONENT nor2 PORT (x, y : IN BIT; z : OUT BIT); END COMPONENT;
BEGIN

    u0: nor2 PORT MAP (a, a, tmp1);

    u1: nor2 PORT MAP (b, b ,tmp2);

    u2: nor2 PORT MAP (tmp1,tmp2,tmp3);

    u3: nor2 PORT MAP (b, a, tmp4);

    u4: nor2 PORT MAP (tmp3, tmp4, c);

END structure;

我知道tmp1tmp2并且tmp4会在 4 ns 后改变信号ab改变。我也注意到了这一点tmp3,因此c在 4 ns 后发生了变化(因为nor2有 4 ns 延迟[ c <= a nor b after 4ns])。但我想tmp3根据正确的逻辑和c12 ns 后反映 8 ns 后的变化。这将为我提供正确的输出EXOR。我的问题是如何在结构架构中引入延迟?有没有办法做到这一点?我试图搜索但没有找到任何东西并且等待不起作用,它一直给我语法错误(等待 8ns)。非常感谢您的帮助!

4

2 回答 2

1

模拟结果没有任何问题。这似乎是错误的,因为nor短路运算符。

假设

a = '0'
b = '1'

然后

tmp1 = '1' (a nor a)
tmp2 = '0' (b nor b)
tmp4 = '0' (b nor a)
tmp3 = '0' (tmp1 nor tmp2)
c    = '1' (tmp3 nor tmp4)

现在b更改为“0”,

tmp1 = '1' remains unchanged
tmp2 = '1' after 4 ns
tmp4 = '1' after 4 ns
tmp3 = '0' remains unchanged (regardless of b because of short-circuit evaluation)
c    = '0' after 8 ns (not 12 ns because it only waits for tmp4 in this case)
于 2013-09-22T02:36:34.817 回答
0

您可以将您的模型转换为符合 VITAL 标准的模型(IEEE Std 1076.4 VITAL(VHDL Inititative Towards ASIC 库),但这对于您的目的可能有点矫枉过正。该标准描述了各种类型的延迟,在这种情况下是组合的,其中输出取决于输入的转换。

对于您的顶级模型 ex,c 输出的延迟取决于从 A 到 C 或 B 到 C 的延迟中的较长者。请注意,VITAL 标准也可以单独跟踪 0->1 延迟和 1->0 延迟。

为 ex 应用抽象延迟模型需要通过各种非门跟踪延迟路径,以计算 A 到 C 或 B 到 C 的延迟。

VITAL 兼容延迟模型允许您将标准延迟格式 (SDF) 延迟文件应用到具有兼容工具的设计模型,就像泛型应用时序或其他模型表征一样。

出于您的目的,因为您已经通过各种非门表征了延迟,除了跟踪寄生,您可以使用中间值,其中 C 现在从最后一个非门输出,并在 A 或 B 控制的延迟后将其分配给 C。

为了表征延迟,您可以将 ex 视为黑匣子,在宏观层面提供延迟。

您似乎预计没有路由延迟和对称 0->1 和 1->0 延迟。

一些类似于有序列表的东西,从更长到更短的控制延迟

如果 A'event then C <= intermediary after AC_DELAY else intermediary after BC_DELAY; -- B'事件

您可以在比宏更精细的级别上应用它,但是当单个或门输出不用于确定其他输出时,则不需要它。

于 2013-09-21T21:44:28.750 回答