Confusión sobre cable \ array notatin in verilog

0

¿Cuál es el significado de wire [a:b] c ? ¿Es diferente de wire [b:a] c ? ¿O verilog los considera iguales? ¿Hay alguna sintaxis para convertir diferentes matrices entre sí?

    
pregunta Bat

1 respuesta

0
  

cuál es el significado de cable [a: b] c ?? es diferente de cable [b: a] c

Verilog no asume la Endianness de los autobuses.

Por ejemplo

wire [7:0] C; //Little endian [7] [6] [5] [4] [3] [2] [1] [0]
wire [0:7] D; //Big endian    [0] [1] [2] [3] [4] [5] [6] [7]

Para seleccionar el bit más significativo de C, debe hacer referencia a C [7]. Mientras que para esto para D, necesita hacer referencia a D [0]

Si intenta conectar dos buses juntos en Verilog, están conectados MSB a MSB y LSB a LSB

En el ejemplo anterior, si intentamos conectar C y D, el LSB de C que es C [0] se conectará al LSB de D que es D [7]

Si C y D no tienen la misma longitud

wire [7:0] C;
wire [0:3] D;

Cuando intenta conectarlos juntos en Verilog, se conectan a partir del LSB

En este caso;

C: [7] [6] [5] [4] [3] [2] [1] [0]

........................... | .... | .... | .... |

D: .................... [0] [1] [2] [3]

C [0] = > D [3]

C [1] = > D [2]

C [2] = > D [1]

C [3] = > D [0]

  

¿Verilog los considera iguales?

Bueno, ambos son cables de múltiples bits, no hay diferencia entre ellos

  

¿Cómo usarlo?

Simplemente no conectes big-endian a little-endian a menos que realmente quieras hacer esto. De lo contrario, esto podría no darte los resultados que esperas

    
respondido por el Elbehery

Lea otras preguntas en las etiquetas