verilog empaquetado v error de matriz desempaquetado

0

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:

Recibo este error en output LEDR[0];

  

declarar puertos de módulo o argumentos de función con tipos de matriz desempaquetados   requiere extensiones SystemVerilog

He buscado en Google las matrices desempaquetadas v empaquetadas pero no puedo entender cuál es el problema, solo quiero establecer este pin como salida.

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];

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

endmodule 
    
pregunta lucozade

2 respuestas

2

Si bien la respuesta de Alex es correcta acerca de la solución, el motivo del error específicamente es que está tratando de definir una matriz 2D (desempaquetada) como un puerto de entrada que solo es compatible con SystemVerilog.

Dos ejemplos. Desembalado:

input unpacked [5:0];

Embalado:

input [5:0] packed;

El ejemplo anterior es una matriz de seis señales de 1 bit. El último ejemplo es una matriz de una señal de 6 bits. Hay una diferencia muy clara.

Lo siguiente debería deshacerse del error desempaquetado / empaquetado:

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

Sin embargo, como puedes ver, es simplemente feo. Además, dependiendo de lo inteligente que sea el compilador, puede terminar con errores sobre la redefinición de la señal SW.

En su lugar, utilizarías el enfoque de Alex de:

input [2:0] SW;
    
respondido por el Tom Carpenter
2

Debe especificar las entradas y salidas como matrices completas, de este modo:

module ligths (SW, LEDR);
input wire [2:0] SW;
output wire LEDR;
    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas