Algunos consejos sobre cómo comenzar a escribir VHDL

Actualmente estoy haciendo algunos tutoriales y leyendo algunos libros sobre cómo escribir VHDL. Como tengo curiosidad y aprendo mejor con tutoriales prácticos, voy a comenzar a implementar mis proyectos que me servirán bien en el futuro.

Para mi primer proyecto real, estoy tratando de implementar una arctgfunción seguida de una función de operador de agregación.

No quiero reinventar la rueda y no quiero que me confundan más, así que hago aquí las siguientes preguntas:

  1. El entero a flotar y viceversa con los bits de la mantisa, exponente y entero es necesario verdad? ¿No hay algún sitio web donde las personas ya hayan implementado este tipo de cosas y las compartan con la comunidad?
  2. He visto en alguna parte que el paquete math_realya tiene una ARCTANfunción que acepta una REALque supongo que es un flotador. Entonces:

    2.1. ¿Es esto sintetizable? Si no, ¿por qué está incluso codificado?

    2.2. Si todo debe convertirse de flotante a entero para poder pasar entre funciones, ¿por qué ARCTANacepta REALy no un entero?

Matemáticas/tipos reales no son sintetizables. A menos que tenga alguna herramienta de síntesis inteligente específica del proveedor que sea capaz de hacerlo. Fue codificado como muchas cosas no sintetizables, para simulación y prueba.
Entonces, estas funciones son solo parte de las pruebas para comparar la función que uno tiene que hacer con una versión no sintetizable de ella, solo para simulación y comparación, ¿es eso?
Si y no. La parte no: también es para simular las partes del sistema que aún no están implementadas, pero se supone que deben hacer algunas matemáticas reales.
"opencores" tiene una biblioteca que puede resultarle útil.
Ok, gracias por las respuestas chicos. @pjc50 Ya encontré ese sitio web, pero el proceso de registro lleva un tiempo (algunos días). Entonces, para que el número entero flote y viceversa, que es algo que literalmente todos hacen en sus proyectos, tendré que hacer todo desde cero.
Quizás una matemática de punto fijo sería suficiente para sus necesidades.
Si está comenzando a hacer algo nuevo y piensa 'Necesito proporcionar toda esta infraestructura desde cero', probablemente no esté utilizando la herramienta adecuada para el trabajo o haya elegido el primer proyecto incorrecto para la herramienta. Yo lo llamo '¿estás montando el caballo en la dirección en la que va?' pregunta, es mucho más fácil montarlo de esa manera que de lado o hacia atrás. Los FPGA sobresalen en lógica digital, comparaciones, almacenamiento y matemáticas enteras. Los circuitos integrados DPS tienden a usarse para matemáticas con reales. Para la función ARCTAN, busque CORDIC (wikipedia), esa es la implementación natural de FPGA y funciona con números enteros.
"literalmente todo el mundo lo hace": te sorprendería lo lejos que puedes llegar sin él.
Sí, ese es un muy buen consejo que no se me ocurrió. Dado que para hacer la arctgfunción aparentemente necesitaré CORDIC, verificaré si eso es posible con fixed_point
Oh, está bien... Tal vez tengo una idea equivocada acerca de hacer esto. Estaba pensando en convertir todo en flotantes, etc., pero tal vez logre hacer todo con números enteros. El problema será cuando necesite leer double floatsde un archivo, que es mi objetivo final en el proyecto VHDL.
FPGA no puede leer desde el archivo. Así que probablemente no entiendas completamente el objetivo final..
Lo sé, cuando digo que el archivo es para fines de simulación. Al final será para leer datos de sensores.
Entonces, para la simulación, puede escribir un traductor simulado. La pregunta es cuál es el formato de los datos del sensor.

Respuestas (1)

VHDL-2008 tiene bibliotecas de punto fijo y punto flotante sintetizables, además de ieee.math_realque es estrictamente para simulación. Puede crear una instancia del paquete flotante con cualquier ancho de mantisa y exponente, o usar los tipos flotantes predefinidos (aproximadamente IEEE P754). El paquete de punto fijo es una mejor opción para DSP y, por lo general, produce hardware más pequeño.

Estas bibliotecas deberían manejar la pregunta (1) por usted.

Para la pregunta 2)

  1. El math_realARCTAN se usa en simulación, no para síntesis.
  2. La pregunta no tiene sentido ya que puede pasar reales hacia y desde funciones.