La diferencia entre Verilog lógico y (&&), bit a bit y (&), lógico o (||), bit a bit o (|), igual (==), congruente (===)

AND lógico (&&)

AND lógico es un operador binario que genera 1 cuando ambos lados del símbolo son 1 y genera 0 cuando ambos lados del símbolo son 0.

Mesa de la verdad:

&&

0

1

X

z

0

0

0

0

0

1

0

1

X

X

X

0

X

X

X

z

0

X

X

X

Dos números de 4 bits Y; A=4'b0x1z; B=4'b01xx; C=4'b00xz; Encuentra A&&B; A&&C; ¿cuál es el valor? Cuando los números a ambos lados del operador lógico AND && contienen "1", se emite 1.

Entonces, ¿cómo juzgar si A, B y C contienen "1"? Cuando A es 0, A es igual a 4'b0, es decir, cada bit es 0, es decir, solo necesita hacer una operación de "OR lógico" entre los vectores de 4 bits de A, A[3] || A[2] || A[1] || A[0] también se puede escribir como (|A); cuando solo un bit en el vector de 4 bits es 1, entonces A contiene "1". Es decir, incluso si hay un estado indeterminado x o un estado z de alta impedancia en A, A = 4'b0x1z se juzgará como "1" según el juicio lógico AND.

故 A && B = 4'b0x1z && 4'b01xx =

C = 4'b00xz, donde ningún bit es 1, entonces a los ojos de la lógica y, C es "0", y luego:

A && C = 4'b0x1z && 4'b00xz =


Bit a bit Y (&)

Hay dos formas de usar AND bit a bit, una es la operación binocular, es decir, un operador corresponde a dos operandos A y B; la otra es una operación unaria, es decir, un operador corresponde a un operando &A.

operación binocular

El resultado del AND bit a bit de un número de 4 bits y un número de 4 bits sigue siendo un número de 4 bits, por ejemplo, A[3:0] & B[3:0] = { A[3] && B[3] , A[ 2] && B[2], A[1] && B[1], A[0] && B[0] }

Supongamos que A = 4'b10xz, B = 4'b0011, C = 4'bz011;

A y B = 4'b00xx;A y C =4'bx0xx;

operación monocular

Un número de 4 bits realiza un AND bit a bit consigo mismo, y el resultado de salida es un número de 1 bit.

Supongamos que A = 4'b10xz, B = 4'b0011;

&A = A[3] && A[2] && A[1] && A[0] = 0

& segundo = 0

Debido a que hay 0 en medio de los números de 4 bits A y B, los resultados AND bit a bit de A y B son ambos 0.

Si C = 4'b11xz, entonces & C = x


O lógico (||)

Lógico o un operador binocular que genera 1 cuando un símbolo tiene 1 en ambos lados y genera 0 cuando ambos lados del símbolo son 0.

||

0

1

X

z

0

0

1

X

X

1

1

1

1

1

X

X

1

X

X

z

X

1

X

X

Dos números de 4 bits Y; A=4'b0x1z; B=4'b01xx; C=4'b00xz; Encuentra A&&B; A&&C; ¿cuál es el valor? Cuando los números a ambos lados del operador lógico AND && contienen "1", se emite 1.

Cuando solo un bit en el vector de 4 bits necesita ser 1, entonces A contiene "1". Es decir, incluso si hay un estado indeterminado x o un estado z de alta impedancia en A, A = 4'b0x1z se juzgará como "1" según el juicio lógico AND.

Entonces A||B = 1; A||C = 1


bit a bit o (|)

Al igual que bit a bit y, hay dos formas de usar bit a bit o, una es la operación binocular, es decir, un operador corresponde a dos operandos A|B; la otra es una operación unaria, es decir, un operador corresponde a una operación Número|A.

operación binocular

El resultado OR bit a bit de un número de 4 bits y un número de 4 bits sigue siendo un número de 4 bits, por ejemplo, A[3:0] & B[3:0] = { A[3] || B[3] , A[2 ] || B[2], A[1] || B[1], A[0] || B[0] }

Supongamos que A = 4'b10xz, B = 4'b0011, C = 4'bz011;

un | B = 4'b10xz | 4'b0011 = 4'b1011;

un | C = 4'b10xz | 4'bz011 = 4'b1011;

operación monocular

Un número de 4 bits realiza OR bit a bit sobre sí mismo, y el resultado de salida es un número de 1 bit.

Supongamos que A = 4'b10xz, B = 4'b0011;

| UNA = UNA[3] || A[2] || UN[1] || A[0] = 1

| B = 1

Debido a que hay 1 en medio de los números de 4 bits A y B, los resultados OR bit a bit de A y B son ambos 1.

Si C = 4'b00xz, entonces | C = x


Operador de igualdad (==)

Los dos operandos que participan en la comparación deben ser iguales bit a bit, y el resultado de la comparación de igualdad es 1. Si algunos bits son indeterminados o de alta impedancia, el resultado de la comparación de igualdad es un valor indeterminado.

Para la comparación de operadores de igualdad, siempre que x o estado de alta impedancia z aparezca en ambos extremos de la ecuación , el resultado debe ser x , por ejemplo:

(4'b1010 == 4'b101x)= x

(4'b101z == 4'b1010)= x

(4'b10x1 == 4'b10x1)= x

(4'b1011 == 4'b1011)= 1

(4'b1010 == 4'b1011)= 0


Operador de congruencia (===)

La comparación congruente consiste en comparar estos bits indeterminados o de alta resistencia, los dos operandos deben ser exactamente iguales y el resultado es 1, de lo contrario el resultado es 0.

(4'b1010 === 4'b101x)= 0

(4'b101z === 4'b1010)= 0

(4'b101z === 4'b101z)= 1

(4'b101x === 4'b101x)= 1

Tablas de verdad para operadores de igualdad e identidad

==

0

1

X

z

===

0

1

X

z

0

1

0

X

X

0

1

0

0

0

1

0

1

X

X

1

0

1

0

0

X

X

X

X

X

X

0

0

1

0

z

X

X

X

X

z

0

0

0

1

Supongo que te gusta

Origin blog.csdn.net/qq_57502075/article/details/129204363
Recomendado
Clasificación