Frecuencia máxima de FPGA: factor limitante

1

Me gustaría saber cuál puede limitar en general la frecuencia de reloj máxima de un circuito implementado en FPGA. En el caso específico, estoy creando algunos filtros FIR utilizando Quartus y simulándolos en un FPGA de la familia Cyclone II.

De mi simulación, resulta que un FIR de orden II que usa un sumador directo puede cronometrarse a una frecuencia más alta que un FIR de orden II que usa sumadores transpuestos (420Mhz vs 387Mhz). No esperaba esto dado que la ruta crítica del directo es más grande (2sum + 1mult) que la del transpuesto (1s + 1m).

¿Esto se debe al hecho de que el directo tiene una arquitectura más paralela que la transpuesta y, por lo tanto, al FPGA le gusta esto? img1) directo img2) transpuesto

    
pregunta AM93

2 respuestas

5

Sospecho que la diferencia se debe al coeficiente negativo en el segundo caso (según el orden de sus diagramas).

Debido a que sus coeficientes de multiplicación son todas las potencias de 2, sus multiplicaciones pueden realizarse mediante simples selecciones de bits. Por ejemplo, asumiendo que estás haciendo matemáticas de 16 bits, x*0.25 se puede calcular simplemente como {2'b0, x[15:2]} (usando la notación Verilog).

Esto significa que tus multiplicaciones con coeficientes positivos son esencialmente gratuitas y no requieren tiempo en absoluto.

Sin embargo, multiplicar por un coeficiente negativo significa hacer un cálculo de complemento a 2, lo que requiere invertir los bits y sumar 1. Ese paso "agregar 1" implica una cadena de acarreo con un retardo equivalente a un sumador del mismo ancho.

Así que ahora estás comparando efectivamente dos sistemas que tienen una ruta crítica equivalente a dos sumadores, y es una suerte que uno sintetice con menos retraso.

Si está usando SystemVerilog o alguna otra herramienta de síntesis de nivel superior, la herramienta podría incluso notar que una de las sumas en la primera versión puede ser canalizada (calculada con un ciclo de reloj por adelantado) y así reducir la ruta crítica a un solo sumador.

    
respondido por el The Photon
2

Hay muchos, muchos caminos en un FPGA, y por supuesto, el más lento limita la velocidad general.

Muchas de estas rutas son sensibles a su diseño particular. Desafortunadamente, muchos dependen de la ubicación que el placer / enrutador haya logrado alcanzar, por lo que es bastante común que un diseño que se ha estado ejecutando con cierta frecuencia repentinamente disminuya en frecuencia cuando se agrega alguna pieza adicional bastante insignificante (cree)

Cada proveedor de FPGA empleará embarcaciones para acelerar este o aquel diseño. Si su diseño coincide con uno de los diseños, se optimizan bien, si está montando el caballo en la dirección en la que va, obtendrá un diseño rápido. De lo contrario, será necesario emplear interruptores, fanouts y líneas adicionales, lo que reducirá la velocidad.

Debido a que los FPGA son tan complejos, la mayoría de las personas está más allá del ingenio para averiguar exactamente a qué velocidad va a estar por delante del diseño, solo tiene que ejecutarlo y ver, y ganar experiencia. En general, registrarse para registrarse con poco procesamiento intermedio será el más rápido, pero eso ya lo sabía.

    
respondido por el Neil_UK

Lea otras preguntas en las etiquetas