Estoy trabajando en un diseño de bloques para calcular la coordenada en el conjunto complejo representado por un píxel. Dado un valor de píxel x e y, el tamaño del paso, y comenzando x y comenzando y, necesito calcular una coordenada en el plano complejo. Por ejemplox' = start_x + step * x
Dado que x es un número entero, primero lo paso a través de un módulo de conversión de coma flotante y luego a través de una suma de multiplicación fusionada de coma flotante. Esto tiene una latencia total de 24 ciclos. El problema es que también necesito proporcionar una dirección de memoria al principio y sacarla 24 ciclos más tarde antes de pasarla al módulo que obtiene x' y' y la dirección. Estoy buscando una IP que pueda ayudar con esto. Lo más parecido que he encontrado es un registro de desplazamiento, pero necesitaría 24 de ellos. Estaba pensando en tal vez usar un FIFO. ¿Hay algo que simplemente actúe como un retraso de latencia para los datos mientras se realizan otros cálculos?
PD: No estoy seguro de por qué llamé a mi Fused-Mul-Add fmax
Solo escribe uno. Son solo unas pocas líneas de VHDL. La profundidad puede ser natural genérica y puede tomar su ancho de los puertos. Sintetice de forma independiente y verifique que ISE/Vivado use el modo de registro de desplazamiento esperado en las LUT.
Si no puede envolverlo fácilmente como un bloque, eso pone en duda la utilidad del enfoque del diagrama de bloques completo. La mayoría de estas cosas se remontan a la herramienta "Renoir" de Mentor Graphics, en la que era fácil envolver VHDL como un bloque.
Parece que necesita un registro de desplazamiento.
Afortunadamente, los registros de desplazamiento se pueden implementar de manera bastante eficiente en los FPGA de Xilinx.
De la documentación de Kintex-7.
Un generador de funciones SLICEM también se puede configurar como un registro de desplazamiento de 32 bits sin usar los flip-flops disponibles en un segmento. Utilizado de esta manera, cada LUT puede retrasar los datos en serie de 1 a 32 ciclos de reloj.
Por lo tanto, se podría implementar un retraso de 24 ciclos para una dirección de 24 bits en solo 6 CLB (porque hay 4 LUT en cada SLICEM CLB). Los dispositivos Spartan también deberían tener capacidades similares.
En familias más antiguas, SRL
era la macro utilizada para instanciar esta funcionalidad. No estoy seguro de si eso sigue siendo cierto para los productos actuales (generación Artix/Kintex/Virtex-7 o Spartan-6).
el fotón
persecucion255
persecucion255
el fotón
el fotón
persecucion255
johnnymopo
uint128_t