¿Se puede inferir un bloque aritmático de latencia de tubería específico al usar * u / operator en VHDL?

0

Al usar el * o / en VHDL, la herramienta de síntesis deducirá el bloque de IP apropiado para llevar a cabo esa operación. Si abrimos la GUI real para ese bloque de IP, podemos encontrar muchas opciones, por ejemplo, seleccionar si implementar la función utilizando bloques DSP de hardware o solo la lógica del dispositivo, latencia de la tubería e.t.c. ¿Hay alguna manera de especificar estas cosas en VHDL?

Los divisores son la más lenta de las 4 operaciones (+, -, *, /). Usar el operador / en VHDL significa que queremos un divisor que pueda completar su tarea en un solo ciclo. Esto generaría mucha lógica y reduciría el Fmax del diseño. ¿Cómo le digo a la herramienta de síntesis que deduzca un divisor que tenga una latencia de tubería de, por ejemplo, 5 ciclos en este caso, sin crear una instancia del divisor real del catálogo de IP?

    
pregunta quantum231

1 respuesta

0

Se adhiere a las herramientas Intel FPGA. Recientemente he tenido esta misma pregunta.

La respuesta corta es que no puedes hacer lo que quieres hacer. Quartus no le permite especificar la latencia de la tubería simplemente utilizando un operador de división. Es poco probable que alguna herramienta, como el operador de división, esté definida por el idioma y esté sobrecargada por el paquete más común en el idioma: Numeric_std.

La respuesta larga es; podría hacer esto si escribió su propia versión sobrecargada del operador de división que, en VHDL, es solo una función, después de todo. De alguna manera, puede vincular esto a una instanciación de un módulo divisor (cree un divisor en otro lugar para obtener el código HDL creado por el asistente. Esto coincide con el patrón que usan las herramientas para reconocer un divisor. O escriba el suyo por diversión) e inserte el número de etapas en el mapa genérico.

Luego podría analizar los visores de RTL y Mapa de Tecnología para asegurarse de que lo que ha especificado realmente haya deducido los módulos DSP (si el dispositivo lo admite) o la lógica más eficiente para una operación de división en este dispositivo.

Luego, puedes probar si cumples con todos los innumerables requisitos de tiempo.

Después de todo eso, puedes hacer lo que quieras hacer. Tal vez.

    
respondido por el Vance

Lea otras preguntas en las etiquetas