En VHDL, ¿cuál es la diferencia entre “downto” y “to”?

7

¿Hay diferencias entre

 (x downto y) and (y to x)?

¿Dónde deberíamos usar (x abajo a y)? La misma pregunta es para (y hasta x).

Notación: xey son enteros

    
pregunta stevenvh

2 respuestas

9

Aquí es donde se puede decir que el VHDL fue inventado por un comité del gobierno. Si VHDL fue diseñado para ser consistente, entonces lo que se refiere a "to" se llamaría "upto", como en el opuesto de "downto". En esta respuesta me referiré a "hasta". Simplemente entienda que estoy usando este término para mayor claridad, aún no es una palabra clave oficial de VHDL.

Los vectores, o matrices, pueden tener un rango que está declinando o ayudando. Por ejemplo:

signal foo :std_logic_vector (7 downto 0);
signal bar :std_logic_vector (0 to 7);

Esto es estrictamente una convención de numeración y tiene poco que ver con la eficiencia lógica resultante. Principalmente, el correcto para usar depende de lo que tenga más sentido para el escritor del código.

Dicho esto, nunca uses "hasta" a menos que tengas que hacerlo. Lo que sigue es mi opinión personal, pero se basa en 20 años de escritura de VHDL profesionalmente y 30 años de escritura de software:

Mezclar hacia abajo y hacia arriba en el mismo código siempre es problemático. Se puede hacer, pero requiere una planificación cuidadosa y una notación para hacerlo bien. Incluso entonces, el código termina siendo difícil de leer y modificar más adelante. Es muy fácil confundir qué señales están hacia abajo y cuáles hacia arriba.

La mayoría de los buses están numerados usando "N downto 0", donde el bit 0 es el menos significativo y el N es el más significativo. Debido a esto, el downto es el más importante de los dos. Y ya que no queremos mezclar hacia abajo y hacia arriba, hasta se le da el arranque. En todos los casos en los que he usado hasta ahora, lo he lamentado y, por lo general, terminé reescribiendo el código.

Comprenda que el uso / mal uso de hasta se convierte principalmente en un problema en grandes "programas". Hace que sea difícil compartir módulos (a.k.a. código de reutilización), y difícil de mantener y depurar código. Si solo estás escribiendo una página o dos de VHDL, puede que no importe. Pero si estás escribiendo FPGA con más de 30,000 líneas de VHDL, este será un gran problema.

Hay solo unos pocos inconvenientes al solo usar downto. Pero las desventajas son pequeñas en comparación con los problemas que he encontrado al mezclarse hacia abajo y hacia arriba.

Como nota al margen: el tipo que decidió invertir los buses PowerPC (con el bit 0 como el bit más significativo) debería estar saturado y con plumas. O al menos forzado a ver a Richard Simmons 24x7 mientras está en régimen de aislamiento. Sólo digo.

    
respondido por el user3624
1

Son equivalentes, y es solo una preferencia personal la que usted usa. downto se usa a menudo para direcciones o buses de datos, donde la lectura de izquierda a derecha comienza con el bit de orden más alto.

    
respondido por el stevenvh

Lea otras preguntas en las etiquetas