A diferença entre Verilog lógico e (&&), bit a bit e (&), lógico ou (||), bit a bit ou (|), igual (==), congruente (===)

AND lógico (&&)

AND lógico é um operador binário que gera 1 quando ambos os lados do símbolo são 1 e gera 0 quando ambos os lados do símbolo são 0.

Tabela verdade:

&&

0

1

x

z

0

0

0

0

0

1

0

1

x

x

x

0

x

x

x

z

0

x

x

x

Dois números de 4 bits AND; A=4'b0x1z; B=4'b01xx; C=4'b00xz; Encontrar A&&B; A&&C; qual é o valor? Quando os números em ambos os lados do operador lógico AND && contiverem "1", 1 será gerado.

Então, como julgar se A, B e C contêm "1". Quando A é 0, A é igual a 4'b0, ou seja, todo bit é 0, ou seja, basta fazer uma operação "OU lógico" entre os vetores de 4 bits de A, A[3] || A[2] || A[1] || A[0] também pode ser escrito como (|A); quando apenas um bit no vetor de 4 bits é 1, então A contém "1". Ou seja, mesmo se houver um estado indeterminado x ou um estado de alta impedância z em A, A = 4'b0x1z será julgado como "1" sob o julgamento lógico AND.

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

C = 4'b00xz, onde nenhum bit é 1, então aos olhos da lógica e, C é "0", e então:

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


E (&) bit a bit

Existem duas formas de usar o AND bit a bit, uma é a operação binocular, ou seja, um operador corresponde a dois operandos A&B; a outra é a operação unária, ou seja, um operador corresponde a um operando &A.

operação binocular

O resultado do AND bit a bit de um número de 4 bits e um número de 4 bits ainda é um número de 4 bits, por exemplo, A[3:0] & B[3:0] = { A[3] && B[3] , A[ 2] && B[2], A[1] && B[1], A[0] && B[0] }

Suponha que A = 4'b10xz; B = 4'b0011; C = 4'bz011;

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

operação monocular

Um número de 4 bits executa um AND bit a bit com ele mesmo, e o resultado de saída é um número de 1 bit.

Suponha que A = 4'b10xz; B = 4'b0011;

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

& B = 0

Como há 0s no meio dos números de 4 bits A e B, os resultados AND bit a bit de A e B são ambos 0.

Se C = 4'b11xz; então & C = x


OU Lógico (||)

Operador lógico ou binocular que gera 1 quando um símbolo tem 1s em ambos os lados e gera 0 quando ambos os lados do símbolo são 0s.

||

0

1

x

z

0

0

1

x

x

1

1

1

1

1

x

x

1

x

x

z

x

1

x

x

Dois números de 4 bits AND; A=4'b0x1z; B=4'b01xx; C=4'b00xz; Encontrar A&&B; A&&C; qual é o valor? Quando os números em ambos os lados do operador lógico AND && contiverem "1", 1 será gerado.

Quando apenas um bit no vetor de 4 bits precisa ser 1, então A contém "1". Ou seja, mesmo se houver um estado indeterminado x ou um estado de alta impedância z em A, A = 4'b0x1z será julgado como "1" sob o julgamento lógico AND.

Então A||B = 1; A||C = 1


bit a bit ou (|)

Assim como o bit a bit e, existem duas formas de usar o bit a bit ou, uma é a operação binocular, ou seja, um operador corresponde a dois operandos A|B; a outra é a operação unária, ou seja, um operador corresponde a uma operação Number|A.

operação binocular

O resultado OR bit a bit de um número de 4 bits e um número de 4 bits ainda é um número de 4 bits, por exemplo, A[3:0] & B[3:0] = { A[3] || B[3] , A[2 ] || B[2], A[1] || B[1], A[0] || B[0] }

Suponha que A = 4'b10xz; B = 4'b0011; C = 4'bz011;

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

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

operação monocular

Um número de 4 bits executa OR bit a bit em si mesmo e o resultado de saída é um número de 1 bit.

Suponha que A = 4'b10xz; B = 4'b0011;

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

| B = 1

Como há 1 no meio dos números de 4 bits A e B, os resultados OR bit a bit de A e B são ambos 1.

Se C = 4'b00xz; então | C = x


Operador de igualdade (==)

Os dois operandos participantes da comparação devem ser iguais bit a bit, e o resultado da comparação de igualdade é 1. Se alguns bits forem indeterminados ou de alta impedância, o resultado da comparação de igualdade é um valor indeterminado.

Para a comparação de operadores de igualdade, desde que x ou estado de alta impedância z apareça em ambas as extremidades da equação , o resultado deve ser x , por exemplo:

(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 congruência (===)

A comparação congruente é comparar esses bits indeterminados ou de alta resistência. Os dois operandos devem ser exatamente iguais e o resultado é 1, caso contrário, o resultado é 0.

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

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

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

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

Tabelas verdade para operadores de igualdade e identidade

==

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

Acho que você gosta

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