Cómo resolver este error de sintaxis

0

Estoy tratando de codificar un módulo de nivel superior que conectaría diferentes módulos para hacer un contador ascendente / descendente que mostraría un carácter hexadecimal en un LED de 7 segmentos en posiciones; pero cada vez que intento ejecutar el siguiente módulo de nivel superior, aparece un error que dice

'Línea 25: error de sintaxis cerca de "<=".'

No hay nadie más para preguntar esto y estoy siguiendo el mismo esquema del ejemplo en mi libro de referencia. ¿Qué estoy haciendo mal?

module Main_Module(a, b, c, d, e, f, g, U, R, P, Clk);
   input U, R, P, Clk;
   output a, b, c, d, e, f, g;
   reg [3:0] Data;
   wire In3 <= Data[3], In2 <= Data[2], In1 <= Data[1], In0 <= Data[0];  //This is Line 25

  Counter Counter_1(Clk_1Hz, R, P, U, Data);
  Segment_Display Segment_Display_1(a, b, c, d, e, f, g, In3, In2, In1, In0);
  ClkDiv1Hz ClkDiv1Hz_1(Clk, R, Clk_1Hz);

endmodule

¡Gracias Eugene Sh.and Greg por tu tiempo!

    
pregunta user3465945

2 respuestas

4

Los cables necesitan asignaciones de bloqueo ( = ), no bloqueantes ( <= ). Puedes definirlo de esta manera:

wire In3 = Data[3], In2 = Data[2], In1 = Data[1], In0 = Data[0];

Ejemplo aquí

Más comúnmente verá la declaración y las asignaciones como declaraciones separadas. Los dos son funcionalmente equivalentes

wire In3, In2, In1, In0;
assign {In3, In2, In1, In0} = Data;
    
respondido por el Greg
2

Está intentando declarar y usar la asignación de no bloqueo a un cable en la misma línea. Verilog no permite usar asignaciones no bloqueantes de esta manera. Utilice la asignación de bloqueo = o declare primero los cables:

wire In3;
wire In2;
wire In1;
wire In0;

y luego asignarlos a algún lugar:

In3 <= Data[3];
In2 <= Data[2];
..............

o incluso mejor:

wire [3:0] In;
......
In <= Data; // Assuming your data is 4 bit
    
respondido por el Eugene Sh.

Lea otras preguntas en las etiquetas