qual é o significado do símbolo de barra vertical "|" na frente de uma variável


10

Estou analisando algum código verilog e encontrei algo como

wire z = |a & b;

enquanto a simultaneidade o código se comporta exatamente como

wire z = a & b;

então eu queria saber qual é o significado do |símbolo (pipe)? Isso tem algum impacto na simulação / síntese?

Respostas:


17

Este é um operador de redução pouco a pouco . |a & bsignifica que você aplica um OR lógico a todos os bits de a(produzindo um único bit) e, em seguida, executa um AND lógico desse bit e b. |anão tem efeito quando aé um único bit.

No entanto, é bastante comum ver a redução bit a bit aplicada a valores de bit único. Um caso típico é o código gerado automaticamente, em que a largura real apode depender da configuração. Outra possibilidade é que este seja um código legado, que ajá teve vários bits. Quando ase tornou um valor de bit único, essa linha ainda estava tecnicamente correta, então o operador de redução agora desnecessário foi deixado em.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.