Alcuni tipi di dati in Verilog, come reg
, sono 4-stato. Ciò significa che ogni bit può essere uno di 4 valori: 0,1, x, z.
Con l'operatore "caso uguaglianza", ===
, xe vengono confrontati, e il risultato è 1.
Con ==
, il risultato del confronto non è 0, come avete dichiarato; piuttosto, il risultato è x, secondo lo standard IEEE Std (1800-2009), sezione 11.4.5 "operatori uguaglianza": (! == e =)
Per l'uguaglianza logico e logici operatori disuguaglianza, se, a causa di bit sconosciuti o ad alta impedenza negli operandi, la relazione è ambigua, quindi il risultato deve essere un valore sconosciuto a 1 bit (x) .
Il risultato di 'dataoutput == 8'bx' non è realmente 0, è X. Tuttavia, sia 0 che X sono valori falsi, il che significa che il corpo di' if' non verrà eseguito. – Andy
'a == b' è 'a uguale a b'. '===' è 'a davvero uguale a b'. Ok, è un po 'irriverente, ma è come ricordarli. C'è anche '==?' (forse è uguale a) che usa 'x' come carattere jolly. –