¿En qué medida se puede “configurar un FPGA para el uso deseado”?

0

Si el título está fuera de lugar, lo explicaré.

Algunos dicen que si quieres una CPU personalizada, puedes "personalizarla" con un campo programable IC, AKA, campo programable gate array.

¿Pero hasta qué punto? ¿Y es más y más bajo el cronometraje, el modding de la línea de dirección, las transferencias de nivel de registro y otras características que se pueden personalizar?

Por ejemplo, uno esperaría que un FPGA habilitara "modificable", pero modificable en el sentido de que pueda optimizarse para un propósito específico, velocidad y sistema.

Al igual que si quisiera personalizar un FPGA para replicar un sistema de videojuego antiguo, esperaría que tuviera un reloj más lento, menos ancho de bits y acceso a DRAM más lento.

¿Se pueden personalizar realmente los FPGA para una amplia variedad de usos, ya sea en función del cronometraje y la reducción del rendimiento, para cronometrar y extender al máximo la potencia de procesamiento y las líneas de E / S, etc.

    
pregunta Bit Girl

4 respuestas

4
  

¿Hasta qué punto se puede "configurar un FPGA para el uso deseado"?

Un FPGA contiene ciertos recursos, como flip-flops, tablas de consulta programables (que pueden configurarse para replicar la función de puertas lógicas), memoria de bloque y transceptores de alta velocidad de i / o. Estos recursos están conectados por una malla de cables de interconexión, que se pueden conectar mediante programación a los otros recursos.

Puede configurar el FPGA para su uso exactamente en la medida en que sea lo suficientemente inteligente como para descubrir cómo se pueden usar esos recursos para producir la función requerida para su uso.

Esto se simplifica en cierta medida por la capacidad de las herramientas síntesis para descubrir cómo asignar esos recursos cuando se proporciona una descripción de la función de nivel superior en un lenguaje de descripción de hardware (HDL). Sin embargo, incluso con la ayuda de las herramientas de síntesis, un buen diseñador de FPGA estructurará su código teniendo en cuenta los recursos subyacentes para maximizar la funcionalidad que pueden obtener de un FPGA determinado.

  

Por ejemplo, uno esperaría que un FPGA habilitara "modificable", pero modificable en el sentido de que pueda optimizarse para un propósito específico, velocidad y sistema.

Como han dicho otros, generalmente hay una frecuencia de reloj máxima que puede alcanzar un FPGA determinado. Y el FPGA generalmente puede operar desde 0 Hz hasta esa frecuencia máxima.

Lo que no se ha mencionado aún es que la frecuencia máxima solo se logra cuando la lógica combinatoria entre un flip-flop y el siguiente tiene una cierta complejidad limitada, y cuando el diseño en general deja suficientes recursos para proporcionar la herramienta de diseño. Libertad para optimizar las interconexiones con una cantidad razonable de esfuerzo computacional.

Si se usa una lógica demasiado compleja entre flip-flops, o si los recursos son altamente utilizados (por ejemplo, más del 70% de utilización), es probable que la frecuencia máxima para su diseño sea sustancialmente menor que la máxima ideal. Frecuencia para que FPGA.

    
respondido por el The Photon
3

Respuesta simplista: un FPGA es un tipo de dispositivo lógico programable que (dentro de ciertas restricciones) se puede usar para reemplazar un montón de lógica TTL / CMOS cableada. Debido a que puede reproducir bastante el circuito lógico original (si lo desea) puede ejecutarse a cualquier velocidad de reloj en que se ejecute el original.

No diría ...

  

Que si quieres una CPU personalizada puedes "personalizarla" con un campo   IC programable, AKA, matriz de puerta programable de campo.

Eso iría demasiado lejos. No confunda las CPU con las FPGA, ya que sirven para diferentes aplicaciones pero con algunas superposiciones.

Esta es una respuesta simplista.

    
respondido por el Andy aka
2

Las respuestas aquí están bien, pero hacen que parezca que es un montón de lógica.

Puedes replicar juegos con un FPGA. Solo obtenga una tarjeta que tenga VGA y algunos botones, interruptores y E / S. Actualmente estoy trabajando en un juego de Pong y estoy trabajando en la detección de colisiones en este momento. Como un FPGA puede ser súper paralelo, puedes conducir el VGA mientras agarras la entrada y cambias las posiciones de los personajes y haces toda la lógica del juego.

Apenas he usado la memoria RAM en mi tablero, pero los módulos se crean con suficiente facilidad para leer y escribir desde él. Una cosa que puede ser molesta es que no se puede conectar la memoria RAM a varias cosas como desearía. Debe agregar un árbitro (FIFO, round robin, etc.) que permita que cada módulo lea / escriba uno por uno.

Para responder a una pregunta específica. Con un FPGA puede desbloquear con precalificadores que está escrito en el código. Solo para mostrarle lo fácil que es reducir la velocidad, aquí hay un código VHDL para demostrar un bloqueo. Solo diga que el reloj FPGA funciona a 100Hz.

underclock: process(clk)
    variable prescaler_count: natural := 0;
    variable prescaler: natural := 10; -- 100 hz / prescaler = desired speed
begin
    if rising_edge(clk) then

        if count >= prescaler then
            -- Do what you want at 10hz here...
            -- main clk runs at 100hz. 100hz/10 = 10hz


            count := 0;
        end if;

        count := count + 1;
    end if;
end process;

El reloj máximo es básicamente lo que obtienes y no se puede hacer nada al respecto. A veces hay multiplicadores de reloj, pero podría considerar que eso es parte del máximo. Normalmente hay puentes para cambiar las velocidades.

Actualización:

Después de pensar en sus palabras "configuradas para el uso deseado", me di cuenta de que debía hablar sobre el archivo de restricciones. No tiene que usar todo o todos los pines en su tablero para cada aplicación. Usted define lo que quiere usar en el archivo de restricciones.

    
respondido por el MLM
0

Con un FPGA puede hacer (casi) CUALQUIER circuito digital sin tener muchos circuitos integrados con puertas, pestillos, registros, contadores, etc. Y tiene la libertad de cambiar la funcionalidad de ese "hardware programado" con solo cambiar el Configuración de FPGA. Estos son los grandes puntos acerca de los FPGA: la libertad de diseño y la libertad de reconfiguración.

Ahora, cuando se habla de CPU, ya que son una colección de elementos lógicos, se pueden replicar en un FPGA dado, se denominan procesadores de software o procesadores integrados. Xilinx ofrece uno llamado microblaze, Altera hace lo mismo con Nios. Algunas personas comienzan desde cero y diseñan sus propios procesadores / microcontroladores, mientras que otras intentan hacer clones de sus favoritos.

Yo diría que la razón principal para tener un procesador integrado es cuando el resto de la lógica ya está en un FPGA, ¿por qué tenerlo externo? Hace algún tiempo leí acerca de un chico que replica una de esas primeras computadoras (Cray-1 o Cray-2 o similar) en un FPGA.

    
respondido por el Joan

Lea otras preguntas en las etiquetas