首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Verilog中,x和z值究竟代表什么?

在Verilog中,x和z值究竟代表什么?
EN

Stack Overflow用户
提问于 2021-10-11 17:54:58
回答 2查看 2.2K关注 0票数 2

Verilog标准定义了四种类型的位值: 0、1、x和z,其中0表示低,1表示高,x表示未知,z表示未驱动的网络。

以下是几个问题:

  1. 是否意味着我们不知道这个值是0还是1? 0还是z?或者这个值是未知的,可以是0,1或z以外的东西?
  2. ,因为z代表一个非驱动的网络,reg类型可以有z位吗?如果是的话,这是什么意思?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-11 18:18:48

通常,x表示我们不知道这个值是0还是1,我想它也可能包括z,我认为它除了0/1/z以外没有任何其他的意思。

在模拟中,X通常意味着信号没有初始化为0或1。如果你是在没有重置的情况下对触发器建模的话,这是很常见的。

X的另一个常见原因是当一个网络由多个驱动程序驱动时(争用)。如果一个是0,另一个是1,结果是x。

是的,reg的值可以是z。对reg使用过程分配是很常见的。下面是一个三状态驱动程序的简单示例:

代码语言:javascript
复制
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

指纹:

代码语言:javascript
复制
               0 en=0 out=x
               5 en=1 out=1
              10 en=0 out=z

这也可以使用连续的分配来建模:

代码语言:javascript
复制
wire out = en ? 1 : 'z;

在这两种情况下(regwire),z的含义是相同的。

票数 1
EN

Stack Overflow用户

发布于 2021-10-11 19:09:04

X意味着许多事情,取决于您所指的信号类型以及它是如何得到该值的。

对于具有4状态数据类型的变量,X是默认的初始状态,这意味着它的值是未知的,并且有可能成为任何值。这是一种符号状态,因为实际硬件将在任何特定时间点处于特定状态0或1。您也可以将变量赋值给值X,因为有些操作您不关心它的值是什么,或者认为该操作是非法的。综合工具在优化您的逻辑时使用不关心信息的工具,它将产生确定性逻辑。

网状网的值是一个或多个驱动程序或连续分配的解析函数。内置的网络类型通过查看它们的驱动强度来解决多个驱动程序,最高的优势将获胜。当驱动0和1的等强之间发生冲突时,wire用X值解决冲突。任何强度的缺失称为Z状态。

变量可以被赋值为X或Z状态,并使该值通过连续赋值驱动网络。如果金属丝是以更强的强度驱动的,那么这种强力的价值就占主导地位。

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

https://stackoverflow.com/questions/69530556

复制
相关文章

相似问题

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