cuál es el significado del siguiente código verilog [cerrado]

-6

¿Puede alguien decirme el significado de este código verilog?

parameter data2 = 4;  
reg [data2-1:0] data1;
if(data1=={data2{1'b0}})
    
pregunta Ravi Tiwari

1 respuesta

2

Básicamente, querría significar "si data1 es igual a un valor de 0".

La razón por la que digo "sería" es que el código probablemente no sea sintetizable. Parece que estás intentando usar el operador de concatenación de una manera que no está permitida.

El código:

{x{y}}

significa "concatenar x copias de y". Así que si tuvieras que hacer:

{10{1'b0}}

Sería equivalente a 10'b0000000000 .

Del mismo modo:

{4{2'b10}}

Es equivalente a 8'b10101010 porque concatena 4 copias del valor 2'b10 .

Esta es una construcción útil si tiene una constante parametrizada. Por ejemplo:

localparam WIDTH = 4;
wire [WIDTH-1:0] someWire;
assign someWire = {WIDTH{1'b0}};

Eso asignaría un valor de 0 a todos los bits de someWire con una constante cuyo ancho cambia con el parámetro WIDTH .

Ahora en cuanto a su caso. A menos que data2 sea una constante (es decir, localparam , parameter o 'define ), entonces básicamente está solicitando un valor de 0 cuyo ancho cambia a medida que data2 cambia el valor. Claramente, esto no tiene ningún sentido ya que el hardware no puede reconfigurarse dinámicamente.

    
respondido por el Tom Carpenter

Lea otras preguntas en las etiquetas