fundamentals - ¿Cuál es la diferencia entre== y=== en Verilog?
verilog software (3)
Cuál es la diferencia entre:
if (dataoutput[7:0] == 8''bx) begin
y
if (dataoutput[7:0] === 8''bx) begin
Después de ejecutar dataoutput = 52''bx
, el segundo da 1, pero el primero da 0. ¿Por qué? (0 o 1 es el resultado de comparación.)
== Para comparar bits (0 o 1) === Para comparar los 4 estados (0, 1, x, z)
== se puede sintetizar en un hardware (x-ni gate), pero === no se puede sintetizar ya que x no es un nivel lógico válido en digital, de hecho tiene voltajes entre 0 y 1. Y z no es En si cualquier lógica, muestra desconexión del circuito.
Algunos tipos de datos en Verilog, como reg
, son 4 estados. Esto significa que cada bit puede ser uno de 4 valores: 0,1, x, z.
Con el operador de "igualdad de casos", ===
, se comparan las x y el resultado es 1.
Con ==
, el resultado de la comparación no es 0, como dijiste; más bien, el resultado es x, según IEEE Std (1800-2009), sección 11.4.5 "Operadores de igualdad":
Para los operadores de igualdad lógica y desigualdad lógica (== y! =), Si, debido a bits desconocidos o de alta impedancia en los operandos, la relación es ambigua, entonces el resultado será un valor desconocido de 1 bit (x).
En Verilog:
- == prueba la igualdad lógica (pruebas para 1 y 0, todo lo demás resultará en x)
- === prueba la igualdad lógica de 4 estados (prueba para 1, 0, z y x)