Cómo invertir los elementos en un tipo de matriz

1

Tengo una función que funciona con una cadena pasada a ella. La cadena debe definirse como "a to b" en lugar de "a downto b". Tengo las siguientes preguntas:

  1. ¿Cómo saber si la cadena pasada se define en orden ascendente o descendente?
  2. ¿Por qué las cadenas no tienen índice 0? El índice mínimo es 1.
  3. Tengo una cadena p de 1 a 10, mientras que la cadena q es de 10 a 1, asignando una a la otra genera un error:

    Fatal: (vsim-3607) La dirección del rango de división (hacia abajo) no coincide con la dirección del prefijo de división (a).

    ¿Por qué?

  4. ¿Cómo asigno p a q o q to p en este caso?

pregunta quantum231

1 respuesta

0
  1. Hay algunos atributos que se pueden usar para determinar los límites de los rangos:

    • T'right y T'left
    • T'low y T'high
    • T'ascending: boolean: indica un TO = true o DOWNTO = false range.
  2. No tengo idea de por qué las cadenas VHDL generalmente comienzan en 1

  3. El problema es ¿qué significa una cadena definida como (10 abajo a 1)? ¿Es un texto en un idioma de derecha a izquierda como el árabe? ¡No tendría sentido revertir el orden de las letras!

  4. Si desea invertir el orden, puede usar un bucle:

    FOR i in p'range LOOP
         q(i):=p(i);
    END LOOP;
    

Si es solo porque el vector está mal definido, puedes escribir

    q:=p;
    
respondido por el TEMLIB

Lea otras preguntas en las etiquetas