¿Cuál es el significado del símbolo de tubería "|" frente a una variable


10

Estoy analizando un código de verilog y encontré algo como

wire z = |a & b;

mientras que la simulación del código se comporta igual que

wire z = a & b;

así que me preguntaba cuál es el significado del |símbolo (tubería)? ¿Tiene algún impacto en la simulación / síntesis?

Respuestas:


17

Este es un operador de reducción de bits . |a & bsignifica que aplica un OR lógico a todos los bits de a(produciendo un solo bit) y luego realiza un AND lógico de ese bit y b. |ano tiene efecto cuando aes un solo bit.

Sin embargo, es bastante común ver una reducción en bits aplicada a valores de un solo bit. Un caso típico es el código generado automáticamente donde el ancho real apuede depender de la configuración. Otra posibilidad es que este sea un código heredado donde auna vez tuvo varios bits. Cuando se aconvirtió en un valor de un solo bit, esta línea seguía siendo técnicamente correcta, por lo que el operador de reducción ahora innecesario se quedó.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.