2: 1 multiplexor en verilog en un fpga

-1

Soy nuevo en verilog.

Estoy intentando implementar un multiplexor 2: 1 en una placa de desarrollo FPGA (DE1-SOC altera) usando interruptores y LED integrados.

Las siguientes son las asignaciones que estoy usando para el multiplexor, estos pines están conectados desde el FPGA a los conmutadores y leds en la placa de desarrollo:

SW[0] - select
SW[1] - input 1
SW[2] - input 2
LEDR[0] - output

Este es el verilog

module ligths (SW[0], SW[1], SW[2], LEDR[0]);

input SW[0], SW[1], SW[2];

output LEDR[0];

LEDR[0] = ((SW[2] & SW[0]) | (SW[1] & ~SW[0]));  

endmodule 

Me está dando un error al decir que es

  

esperando "." o un identificador cerca de "= '.

¿Estoy haciendo algo estúpido? ¿Puedes incluso crear un multiplexor 2: 1 utilizando interruptores y leds?

Gracias

    
pregunta lucozade

2 respuestas

2

assign LEDR[0] = SW[0] ? SW[1] : SW[2];

Es más fácil de decir input [2:0] SW; también.

Lo que te falta en la sintaxis de lo que escribiste es el assign .

    
respondido por el Sean Houlihane
1

La otra respuesta con un operador ternario es la mejor respuesta a la pregunta. Sin embargo, pensé que daría algunas opciones más ya que dijiste que eres nuevo en Verilog.

Declaración If-Else (se muestra la forma larga del ternario)

always @ *
if (SW[0]) {
    LEDR[0] = SW[1];
}
else {
    LEDR[0] = SW[2];
}

Declaración de cambio (bueno para muchos casos).

always @ * 
case (SW[0]) 
    0 : LEDR[0] = SW[2];
    default : LEDR[0] = SW[1]; 
endcase

Las dos soluciones anteriores no son tan elegantes como las ternarias, pero también son formas válidas de crear un multiplexor.

    
respondido por el dukr

Lea otras preguntas en las etiquetas