logo

Operadores Verilog

Los operadores realizan una operación en uno o más operandos dentro de una expresión. Una expresión combina operandos con operadores apropiados para producir la expresión funcional deseada.

1. Operadores aritméticos

Para FPGA, la división y la multiplicación son muy costosas y, a veces, no podemos sintetizar la división. Si usamos Z o X para los valores, el resultado es desconocido. Las operaciones tratan los valores como sin signo.

Personaje Operación realizada Ejemplo
+ Agregar segundo + c = 11
- Restar b - c = 9, -b=-10
/ Dividir b / a = 2
* Multiplicar a * b = 50
% Módulo b % a = 0

2. Operadores bit a bit

Se opera cada bit, el resultado es el tamaño del operando más grande y el operando más pequeño se deja extendido con ceros hasta el tamaño del operando más grande.

Personaje Operación realizada Ejemplo
~ Invertir cada bit ~a = 3'b010
& Y cada bit b y c = 3'b010
| O cada bit un | b = 3'b111
^ Xor cada bit a^b = 3'b011
^~ o ~^ Xni cada bit a ^~ b = 3'b100

3. Operadores de reducción

Estos operadores reducen los vectores a un solo bit. Si existen los caracteres z y x, el resultado puede ser un valor conocido.

Personaje Operación realizada Ejemplo
& Y todos los bits &a = 1'b0, &d = 1'b0
~& Y todos los bits ~&a = 1'b1
| O todos los bits |a = 1'b1, |c = 1'bX
~| Ni todos los bits ~|a= 1'b0
^ Xo todos los bits ^a = 1'b1
^~ o ~^ Xni todos los bits ~^a = 1'b0

4. Operadores relacionales

Estos operadores comparan operandos y dan como resultado un valor booleano escalar de 1 bit. Los operadores de igualdad y desigualdad de casos se pueden usar para valores de impedancia altos o desconocidos (zo x), y si los dos operandos son desconocidos, el resultado es 1.

Personaje Operación realizada Ejemplo
> Mas grande que a > b = 1'b0
< Menor que a
>= Mayor que o igual a >= d = 1'bX
<=< td> Menor o igual a<= e='1'bX</td'>
== Igualdad a == b = 1'b0
!= Desigualdad a != b = 1'b1
=== Igualdad de casos mi === mi = 1'b1
!=== Desigualdad de casos y !== d = 1'b1

5. Operadores lógicos

Estos operadores comparan operandos y dan como resultado un valor booleano escalar de 1 bit.

Personaje Operación realizada Ejemplo
! No es verdad !(a && b) = 1'b1
&& Ambas expresiones son verdaderas. a && b = 1'b0
|| Una o ambas expresiones son verdaderas. y || b = 1'b1

6. Operadores de turno

Estos operadores desplazan los operandos hacia la derecha o hacia la izquierda, el tamaño se mantiene constante, los bits desplazados se pierden y el vector se llena con ceros.

java obteniendo la fecha actual
Personaje Operación realizada Ejemplo
>> Desplazamiento a la derecha b >> 1 resultados 4?b010X
<< Desplazamiento a la izquierda a << 2 resultados 4?b1000

7. Operadores de asignación

Hay tres operadores de asignación, cada uno de los cuales realiza diferentes tareas y se utilizan con diferentes tipos de datos:

  • asignar (asignación continua)
  • <= (non-blocking assignment)< li>
  • = (asignación de bloqueo)

8. Otros operadores

Estos son operadores utilizados para pruebas de condiciones y para crear vectores.

Personaje Operación realizada Ejemplo
?: Pruebas de condiciones condiciones de prueba ? si es cierto haz esto o si no haz esto
{} Concatenar c = {a,b} = 8'101010x0
{{}} Reproducir exactamente {3{2'b10}}= 6'b101010

9. Precedencia de los operadores

El orden de la tabla indica qué operación se realiza primero. El primero tiene la máxima prioridad. El () se puede utilizar para anular el valor predeterminado.

Prioridad de operadores
+, -, !, ~ (Unario)
+,- (binario)
<>
,=
==, !=
&
^, ^~ o ~^
|
&&
||
?: