Verilog标准定义了四种类型的位值: 0、1、x和z,其中0表示低,1表示高,x表示未知,z表示未驱动的网络。
以下是几个问题:
reg类型可以有z位吗?如果是的话,这是什么意思?发布于 2021-10-11 18:18:48
通常,x表示我们不知道这个值是0还是1,我想它也可能包括z,我认为它除了0/1/z以外没有任何其他的意思。
在模拟中,X通常意味着信号没有初始化为0或1。如果你是在没有重置的情况下对触发器建模的话,这是很常见的。
X的另一个常见原因是当一个网络由多个驱动程序驱动时(争用)。如果一个是0,另一个是1,结果是x。
是的,reg的值可以是z。对reg使用过程分配是很常见的。下面是一个三状态驱动程序的简单示例:
module tb;
reg en = 0;
reg out;
always @* out = en ? 1 : 'z;
initial begin
$monitor($time, " en=%b out=%b", en, out);
#5 en = 1;
#5 en = 0;
#5 $finish;
end
endmodule指纹:
0 en=0 out=x
5 en=1 out=1
10 en=0 out=z这也可以使用连续的分配来建模:
wire out = en ? 1 : 'z;在这两种情况下(reg和wire),z的含义是相同的。
发布于 2021-10-11 19:09:04
值X意味着许多事情,取决于您所指的信号类型以及它是如何得到该值的。
对于具有4状态数据类型的变量,X是默认的初始状态,这意味着它的值是未知的,并且有可能成为任何值。这是一种符号状态,因为实际硬件将在任何特定时间点处于特定状态0或1。您也可以将变量赋值给值X,因为有些操作您不关心它的值是什么,或者认为该操作是非法的。综合工具在优化您的逻辑时使用不关心信息的工具,它将产生确定性逻辑。
网状网的值是一个或多个驱动程序或连续分配的解析函数。内置的网络类型通过查看它们的驱动强度来解决多个驱动程序,最高的优势将获胜。当驱动0和1的等强之间发生冲突时,wire用X值解决冲突。任何强度的缺失称为Z状态。
变量可以被赋值为X或Z状态,并使该值通过连续赋值驱动网络。如果金属丝是以更强的强度驱动的,那么这种强力的价值就占主导地位。
https://stackoverflow.com/questions/69530556
复制相似问题