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