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.
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"
0 votos
Para una simple CPU de bricolaje probablemente tendrás más dolores de cabeza por cosas como las interfaces de memoria. Deberías ser capaz de conseguir decenas de MHz fácilmente, si necesitas ir más rápido puedes canalizar el diseño o mover las operaciones clave del software al tejido de la FPGA.
14 votos
@KingDuken Como alguien que ha diseñado dos CPUs, en realidad no se necesita tanto tiempo. Puedes tener un procesador que funcione en 1-2 meses, si sabes lo que estás haciendo.
2 votos
@KingDuken Dato curioso: Sun/Oracle ha publicado el código fuente de Verilog de sus procesadores UltraSPARC T1 y T2. Resulta que he visto varios en persona, y todos funcionaban. Para tu información, ¡incluso llegaron a ganar el SPECint_rate2006! :D Eso demuestra claramente lo imposible que es diseñar CPUs en Verilog u otras HDLs. Yo mismo lo he hecho un par de veces como hobby, y realmente no es nada imposible (una vez que lo entiendes, como siempre)
0 votos
Sin embargo, llegar a más de 100MHz es definitivamente posible y realista incluso en FPGAs Spartan 3E más antiguas; como he hecho con ZPU, algunos núcleos FOSS AVR e incluso mis propios diseños (lejos de ser óptimos). Es probable que las FPGAs más nuevas sean más rápidas.
0 votos
@KingDuken en la Universidad un par de personas del año anterior diseñaron una CPU MIPS en Verilog para su proyecto de grupo. Todos los de mi año lo utilizaron como base de un SOC para nuestros proyectos de grupo.
0 votos
@OrangeDog Construir una cpu como proyecto suena divertido, ¿qué estás/están estudiando?
0 votos
@appmaker1358 era Informática, hace más de 10 años
0 votos
@OrangeDog ¡Genial! ¡Yo también tengo intención de seguir Informática!