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 ~^ |
| |
&& |
|| |
?: |