Menu Close

Verilog 中信号或数值’X’是如何使用的

在Verilog 设计中会经常用到”X”的值,在X的使用中会经常碰到三种情况,一种情况是X作为输入端使用。第二种情况是作为输出使用。第三种情况是作为逻辑变量或逻辑的中间项来使用。

第一种情况:

X作为输入端,那X 是什么含义呢?字面的意思就是未知,即不知道到底是高电平还是低电平。在数字电路设计中不会常见,认为数字电路的输入总是高、低两个电平。但在复杂系统设计中却会常见。例如PLL的时钟信号,在锁定之前是什么信号?可能是高电平,也可能是低电平。还有在级联电路中,如果前级电路的输出为X,则本级输入也就为X。

第二种情况:

X作为输出。一般在数字电路的使用中常规概念不是‘0’就是‘1’,怎么会有X呢?很简单,假设两个门电路的输出端接在一起,一个输出为高,另一个为低,那么输出结果会是什么?结论自然是为X。X不仅在输出端产生,还会逻辑电路中传递,如一个2输入端与门,一端输入为‘1’,另一端为‘X’, 与门输出也为’X’。因次在做逻辑仿真时会经常看到X的传递。如图1,2,

IMG_256

图1

IMG_257

图2

第三种情况: 作为逻辑变量或逻辑的中间项来使用。

  1.  X的运算: 在Verilog中X信号是较强信号在与、或、非的运算中如下列公式所示:

X | 1=1; //+表示或逻辑,沿用数字电路符号

X | 0=X; //+表示或逻辑,沿用数字电路符号

X | Z=X;  //此处Z为高阻;+表示或逻辑

X | X=X;//+或逻辑

X & 0=0;

X & 1=X;

X & Z=X;

X & X=X;

~X=X;

!X=X

    2.  X经常作为无关项处理,如Verilog 中的case 语句

case 3’b1X0:  Y<=M; 表示 在case条件中为,最左边的位为1,最右边的位为‘0’时,Y<=M执行,而不管中间位为‘0’或‘1’。在卡诺图化简时可以根据需要设定为0或1,这样可以最大限度优化逻辑.

在数据分配器中就会用到X作为无关项。

数据选择器Verilog的不同设计方法

Posted in FPGA, Verilog, 文章

发表评论

相关链接