cuál es el significado del símbolo de tubería "|" delante de una variable

9

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

wire z = |a & b;

mientras que a la vez, el código se comporta igual que

wire z = a & b;

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

    
pregunta Ulli

1 respuesta

16

Este es un operador de reducción de bits . |a & b significa que aplica un OR lógico a todos los bits de a (que produce un solo bit) y luego hace un AND lógico de ese bit y b . |a no tiene ningún efecto cuando a es un solo bit.

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

    
respondido por el Dmitry Grigoryev

Lea otras preguntas en las etiquetas