logo

Operadores Verilog

Os operadores executam uma operação em um ou mais operandos dentro de uma expressão. Uma expressão combina operandos com operadores apropriados para produzir a expressão funcional desejada.

1. Operadores Aritméticos

Para o FPGA, a divisão e a multiplicação são muito caras e às vezes não conseguimos sintetizar a divisão. Se usarmos Z ou X para valores, o resultado é desconhecido. As operações tratam os valores como não assinados.

Personagem Operação realizada Exemplo
+ Adicionar b + c = 11
- Subtrair b - c = 9, -b=-10
/ Dividir b / a = 2
* Multiplicar uma * b = 50
% Módulo b % a = 0

2. Operadores bit a bit

Cada bit é operado, o resultado é o tamanho do operando maior, e o operando menor é deixado estendido com zeros até o tamanho do operando maior.

Personagem Operação realizada Exemplo
~ Inverta cada bit ~a = 3'b010
& E cada pedaço b e c = 3'b010
| Ou cada pedaço um | b = 3'b111
^ Xor cada bit uma ^ b = 3'b011
^~ ou ~^ Xnor cada bit a ^~ b = 3'b100

3. Operadores de Redução

Esses operadores reduzem os vetores a apenas um bit. Se houver os caracteres z e x, o resultado pode ser um valor conhecido.

Personagem Operação realizada Exemplo
& E todos os pedaços &a = 1'b0, &d = 1'b0
~& N e todos os bits ~&a = 1'b1
| Ou todos os bits |a = 1'b1, |c = 1'bX
~| Nem todos os bits ~|a= 1'b0
^ Xou todos os bits ^a = 1'b1
^~ ou ~^ Xnor todos os bits ~^a = 1'b0

4. Operadores Relacionais

Esses operadores comparam operandos e resultados em um valor booleano escalar de 1 bit. Os operadores de igualdade e desigualdade de caso podem ser usados ​​para valores de impedância desconhecidos ou altos (z ou x), e se os dois operandos forem desconhecidos, o resultado é 1.

Personagem Operação realizada Exemplo
> Maior que uma > b = 1'b0
< Menor que a
>= Maior ou igual uma >= d = 1'bX
<=< td> Menor ou igual a<= e='1'bX</td'>
== Igualdade uma == b = 1'b0
!= Desigualdade uma! = b = 1'b1
=== Igualdade de casos e === e = 1'b1
!=== Desigualdade de caso e! == d = 1'b1

5. Operadores Lógicos

Esses operadores comparam operandos e resultados em um valor booleano escalar de 1 bit.

Personagem Operação realizada Exemplo
! Não é verdade !(a && b) = 1'b1
&& Ambas as expressões são verdadeiras a && b = 1'b0
|| Um minério ambas as expressões são verdadeiras e || b = 1'b1

6. Operadores de turno

Esses operadores deslocam os operandos para a direita ou para a esquerda, o tamanho é mantido constante, os bits deslocados são perdidos e o vetor é preenchido com zeros.

como determinar o tamanho do monitor
Personagem Operação realizada Exemplo
>> Deslocar para a direita b >> 1 resultado 4?b010X
<< Deslocar para a esquerda a << 2 resultados 4?b1000

7. Operadores de Atribuição

Existem três operadores de atribuição, cada um dos quais executa tarefas diferentes e são usados ​​com diferentes tipos de dados:

  • atribuir (atribuição contínua)
  • <= (non-blocking assignment)< li>
  • = (bloqueio de atribuição)

8. Outros Operadores

Estes são operadores usados ​​para testes de condições e para criar vetores.

Personagem Operação realizada Exemplo
?: Teste de condições teste cond. ? se for verdade faça isso ou se não faça isso
{} Concatenar c = {a,b} = 8'101010x0
{{}} Replicar {3{2'b10}}= 6'b101010

9. Precedência dos Operadores

A ordem da tabela indica qual operação será realizada primeiro. O primeiro tem a maior prioridade. O () pode ser usado para substituir o padrão.

Precedência de operadores
+, -,!, ~ (unário)
+,- (binário)
<>
,=
==,!=
&
^, ^~ ou ~^
|
&&
||
?: