14 votos

CPUs FPGA, ¿cómo encontrar la velocidad máxima?

Me estoy introduciendo en el mundo de las FPGAs, y si lo he entendido bien, estás conectando puertas lógicas mediante código. Así que si diseño una CPU en Verilog, debería conectar algunas puertas lógicas juntas y funcionar, pero ¿cómo sé lo rápido que puede funcionar mi CPU de bricolaje? ¿De qué depende?

12 votos

@KingDuken Tengo curiosidad por saber cuál es la alternativa a Verilog para diseñar algo como la CPU que tienes en mente (supongo que no es VHDL :) ).

1 votos

@KingDuken Ese no es el problema que tengo, ya hice mi CPU y su arquitectura en breadboard y quiero portarla a una FPGA. Mi pregunta es, ¿cómo puedo calcular cuál sería la frecuencia máxima de reloj para mi CPU, qué la limita?

4 votos

Puede que quieras buscar en Google "análisis de tiempo estático"

30voto

silverbolt Puntos 18

La velocidad de un diseño está limitada por varias cosas. El más importante será probablemente el retardo de propagación a través de la lógica combinatoria de tu diseño, llamado ruta crítica . Si utilizas una FPGA rápida y escribes tu HDL con mucho cuidado, probablemente podrías alcanzar los 700 MHz en algo como una Virtex UltraScale+. En una FPGA de gama baja, por ejemplo una Spartan 6, una cifra razonable es probablemente más de 250 MHz. Esto requiere un pipelining en todas partes para tener la cantidad mínima de lógica combinatoria entre los componentes con estado (minimizar los niveles de lógica), bajos fan-outs (minimizar la carga en los elementos lógicos), y sin rats-nests congestionados (rutas de enrutamiento eficientes).

La lógica del tejido de diferentes FPGAs tendrá diferentes parámetros de temporización. Las FPGAs más rápidas y caras tendrán retrasos más pequeños y, como resultado, podrán alcanzar frecuencias de reloj más altas con el mismo diseño, o ejecutar un diseño más complejo o con menos pipelining a la misma frecuencia. El rendimiento dentro de un proceso concreto puede ser similar; por ejemplo, Kintex UltraScale y Virtex UltraScale se fabrican en el mismo proceso y tienen retrasos similares en las celdas y el enrutamiento. Es imposible decir lo rápido que será un determinado diseño sin ejecutarlo a través de la cadena de herramientas y ver los informes de temporización del análisis de temporización estático.

Cuando se ejecuta la cadena de herramientas para determinar la velocidad de reloj máxima, hay que tener en cuenta que las herramientas están orientadas a la temporización: intentarán cumplir con las restricciones de temporización especificadas. Si no se especifican restricciones de temporización, el resultado puede ser muy pobre, ya que las herramientas no tratarán de optimizar el diseño para la velocidad. Por lo general, las herramientas tendrán que ejecutarse varias veces con diferentes restricciones de periodo de reloj para encontrar la máxima frecuencia de reloj alcanzable.

Si puedes optimizar tu diseño para que la ruta crítica no sea el límite, entonces te encontrarás con limitaciones en la generación y distribución del reloj (PLLs, DCMs, buffers de reloj y redes de reloj global). Estos límites se pueden encontrar en las hojas de datos de las piezas, pero acercarse a ellos con un diseño no trivial es difícil. He ejecutado cosas en un Virtex UltraScale a 500 MHz, pero esto era sólo un puñado de contadores para proporcionar señales de disparo a otros componentes.

22voto

GSerg Puntos 33571

Sintetizas tu diseño en la tecnología de destino (una FPGA concreta) y dejas que las herramientas de análisis de temporización estática te digan cuál es el periodo de reloj mínimo.

O bien, añades las restricciones al diseño en primer lugar, y luego las herramientas te permiten saber si se cumplen o no.

0 votos

¿Qué haría que no se cumplieran las limitaciones? ¿Qué limita el periodo de reloj? ¿Depende de la FPGA que utilice o es la misma para toda la familia de FPGA's?(¿O quizás para todas las FPGA's existentes?)

3 votos

Depende de la velocidad de la FPGA, y de la cantidad de lógica combinatoria que pongas entre los FF en tu diseño.

0 votos

¿Las FPGA tienen un índice de velocidad? ¿Dónde puedo encontrarlo? ¿Y en qué se mide?

13voto

hacktastical Puntos 560

La velocidad a la que funcionará la CPU se basará en el mayor retardo de flop a flop de tu diseño sintetizado. El retardo de flop a flop incluirá el tiempo de reloj a Q, el enrutamiento, la lógica/LUT y el tiempo de configuración del flop. Todo ello sumado forma el ruta crítica de su cronometraje, que puede inspeccionar en el informe de cronometraje emitido por la herramienta de colocación y encaminamiento.

Hay disciplinas de diseño enteras dedicadas a crear arquitecturas que minimicen este retraso para sacar el máximo partido a un proceso determinado: pipelining, ejecución paralela, ejecución especulativa, etc. Es una tarea fascinante, que implica exprimir hasta el último gramo de rendimiento de una FPGA (o, para el caso, de un ASIC).

Dicho esto, los proveedores de FPGAs darán diferentes grados de velocidad para sus piezas, que corresponden a una tasa máxima de MHz. Por ejemplo, una Xilinx Artix -2 es una pieza de 250 MHz, aunque puede alcanzar velocidades de reloj más altas para diseños con un gran número de líneas.

Al interactuar con las herramientas de síntesis y de colocación de rutas de la FPGA, tendrá que dar limitaciones para su diseño. Estos indican al flujo de la herramienta el retardo de flop a flop que está tratando de lograr. En Quartus (Altera) y Vivado (Xilinx) estas restricciones utilizan una sintaxis llamada SDC, que significa Synopsys Design Constraints. SDC vino inicialmente del mundo ASIC y ha sido adoptado por la industria FPGA también. Conozca SDC - le ayudará a obtener los resultados que desea.

Altera y Xilinx tienen comunidades en línea para ayudar a utilizar la sintaxis SDC y muchos otros temas.

Dicho todo esto, si te importa la velocidad deberías considerar una FPGA que tenga una macro dura de CPU en ella, como Zynq.

-2voto

laptop2d Puntos 331

La CPU no funcionará más rápido que los relojes globales, así que eso pondría un límite superior a la velocidad que podría alcanzar. Normalmente, la información sobre la velocidad máxima de reloj aparece en las hojas de datos del FGPA.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X