3 de febrero de 2024
Un multiplexor es un circuito combinacional utilizado para seleccionar una entradas entre muchas. La selección de una determinada línea de entrada se hace mediante las líneas de selección. Normalmente, un multiplexor tiene 2n líneas de entrada y n líneas de selección cuyas combinaciones de bits determinan qué entrada se selecciona.
Un multiplexor se puede modelar de diferentes maneras en Verilog.
A esta forma de describir un circuito, también se le denomina modelado a nivel de puerta porque describe el hardware en puertas lógicas y sus interconexiones.
Cuando el número de puertas aumenta en un circuito, el diseño estructural del mismo se complica. Por lo tanto, se requiere un nivel de abstracción más alto para la implementación del diseño.
El diseño basado en dataflow modeling, describe los circuitos en función de cómo fluyen y se procesan los datos en los registros.
En esta forma de describir circuitos se emplea la palabra clave assign. Vemos que el esquema generado por Vivado es igual al ejemplo 1.
El modelado de circuitos mediante el comportamiento describe lo que hace el circuito ignorando su estructura interna y su implementación física.
Para describir un circuito mediante su comportamiento se especifican las entradas y salidas y la relación entre ellas utilizando declaraciones initial y always.
Los siguientes ejemplos muestran un multiplexor 2-1 descrito con declaraciones if-else y case . El esquema generado por Vivado es igual en ambos casos.
El siguiente ejemplo describe dos multiplexores 4-1 empleando declaraciones if-else y case.
Esquema de los dos multiplexores que hemos sintetizado en la BASYS 3.
Las declaraciones if-else se evalúan en orden descendente generando lógica prioritaria, donde la entrada in0 tiene la prioridad más alta y la entrada in3 la más baja.
Las declaraciones case-endcase se evalúan en forma paralela; todas la entradas tiene la misma prioridad.
Puedes descargar el código Verilog aquí abajo.