我正在尝试使用NOR门模拟EXOR。我为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;
我知道tmp1
,tmp2
和tmp4
会在a
或b
更改后4 ns后更改信号。我还注意到tmp3
因此c
在4 ns后发生变化(因为nor2
有4 ns延迟[c <= a nor b after 4ns
])。但我希望tmp3
按照正确的逻辑在8 ns后反映变化,在12 ns后反映c
。这将为EXOR
提供正确的输出。我的问题是如何在结构架构中引入延迟?有办法吗?我试图搜索但没有找到任何等待不起作用,它一直给我语法错误(等待8ns)。非常感谢您的帮助!
答案 0 :(得分:1)
模拟结果没有错。这似乎是错误的,因为nor
是short-circuit运算符。
假设
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)
答案 1 :(得分:0)
您可以将您的型号转换为符合VITAL标准的型号(IEEE Std 1076.4 VITAL(VHDL Inititative Towards ASIC库),但这可能对您的用途有点过分。该标准描述了各种类型的延迟,在这种情况下是组合,其中输出取决于输入的转换。
对于您的顶级型号ex,c输出的延迟取决于从A到C或B到C的延迟的较长时间。注意,VITAL标准也可以与1->分开跟踪0-> 1延迟; 0延迟。
对ex应用抽象延迟模型需要跟踪通过各种门的延迟路径来计算A到C或B到C的延迟。
符合VITAL标准的延迟模型允许您将标准延迟格式(SDF)延迟文件应用于具有兼容工具的设计模型,就像泛型应用时序或其他模型特征一样。
出于您的目的,因为您已通过阻止跟踪寄生效应的各种门或门来表征延迟,您可以使用中间值,其中C现在从最后一个或门输出,并在由A控制的延迟之后将其分配给C或B.
为了表征延迟,您可以将ex视为黑盒子,在宏观层面提供延迟。
您似乎预计没有路由延迟和对称0-&gt; 1和1-> 0延迟。
有序列表中的某些内容更长或更短的控制延迟
如果A'event然后在AC_DELAY之后C&lt; =中介 BC_DELAY之后的中间人; - B'event
您可以在比宏更精细的水平上应用它,但是当不使用单个输出或门输出来确定其他输出时,不需要它。