¿Extraer una matriz secundaria de una matriz de switches con Verilog?

0

Estoy trabajando con una tabla Cyclone. Un código básico para asignar cada interruptor a los leds rojos es:

module part2 (SW, LEDR, LEDG);

    input [17:0] SW;    
    output [17:0] LEDR;

    assign LEDR = SW;

endmodule

Pero necesito el valor de SW [17] para realizar algunas operaciones de salida, no entiendo cómo almacenarlo en un subarreglo ... (También necesito las entradas de SW [7: 0] y SW [ 15: 8]). ¿Cómo puedo conseguir esto?

Acabo de comenzar con Verilog hoy y estoy confundido.

    
pregunta JOX

1 respuesta

1

Usted está buscando el operador de corte. Puede leer en verilog en muchos lugares para obtener más detalles. Aquí hay uno decente.

Aquí hay solo una idea de algunas de las cosas que puedes hacer. Lea el tutorial en el enlace para más información.

module part2 (SW, LEDR, LEDG, SINGLE_BIT_OUT, ANOTHER_ARRAY_OUT, REGISTERED_OUT);

  input [17:0] SW;    
  output [17:0] LEDR;
  output SINGLE_BIT_OUT;           // This is one bit.
  output [2:0] ANOTHER_ARRAY_OUT;  // This is 3 bits.
  output reg [3:0] REGISTERED_OUT; // A 4 bit registered output.

  assign LEDR = SW; 
  assign SINGLE_BIT_OUT = SW[17];       // Continuous 1 bit assignment.
  assign ANOTHER_ARRAY_OUT = SW[11:9];  // Continuous 3 bit assignment.

  // Or you can use an always block to do more fancy stuff
  always @(SW) begin
      if (SW[2:0] == 2'b000)
         REGISTERED_OUT = 4'b0010;  // Just put a constant to it in this case.
      else
         REGISTERED_OUT = {1'b0, SW[2:0]};  // Or you can build assignments with slices like this.
  end

endmodule
    
respondido por el caveman

Lea otras preguntas en las etiquetas