¿Cuál es la forma estándar de representar números de punto fijo en VHDL?

2

¿Existe un tipo nativo en el lenguaje VHDL similar a std_logic_vector que permite crear un número de punto fijo con o sin signo para una longitud dada de partes fraccionarias y completas? Si es así, ¿se puede sintetizar?

¿Cómo se ven cantidades de puntos fijos en la ventana de onda en el banco de pruebas? ¿Es necesario crear una variable de tipo real y luego usarla para representar la cantidad de puntos fijos después de la conversión manual?

¿Existen funciones en VHDL 2008 para la conversión hacia y desde el punto real y el tipo real VHDL?

    
pregunta quantum231

2 respuestas

4

Si desea implementar aritmética de punto fijo en sintetizable VHDL, tiene dos formas:

  1. Hazlo tú mismo. Es un método bastante difícil, pero puede depender de la cantidad y complejidad de las ecuaciones que desee implementar. En general, cada "variable" debe tener dos partes (integrales y fraccionarias) compuestas de std_logic_vector s. Por supuesto, tiene que implementar operaciones matemáticas básicas (suma, resta, etc.).
  2. Simplemente descargue y use el paquete fixed_pkg , implementa tipos de puntos fijos firmados y sin firmar y todas las matemáticas básicas - más here .

Pero antes que nada, ¿realmente necesita tipos de puntos fijos (o flotantes)? La mayoría de las matemáticas se podrían realizar en std_logic_vector , al igual que hacemos en microcontroladores que utilizan los tipos int .

EDITAR:

Lamentablemente, el enlace a las bibliotecas dentro de la guía pdf del enlace anterior está muerto. Alguien borra los archivos. Pero no debería ser un problema: actualmente todas las bibliotecas ieee_proposed se mueven a VHDL2008 estándar, así que solo cambie el estándar usado en las propiedades de Su proyecto.

    
respondido por el Jakub Rakus
1
  

¿Cuál es la forma estándar de representar números de punto fijo en VHDL?

No hay ninguno.

"Punto fijo" es una interpretación de un número. La visualización de la forma de onda interpreta el vector binario de cierta manera. No sé si puede cambiar esa interpretación (en Xilinx Vivado, puede, en una extensión, con un clic del botón derecho del mouse ...), pero básicamente no vale mucho: para todos los fines y propósitos, use números de punto fijo para poder tratar cantidades fraccionarias como enteros.

    
respondido por el Marcus Müller

Lea otras preguntas en las etiquetas