FPGA no parece funcionar como me imaginaba [duplicar]

0

Hace un par de años leí un interesante artículo de Wikipedia sobre algo que se llama una "matriz de puertas programables en campo". El artículo hizo que pareciera que es una caja de lógica que puede conectar de forma arbitraria para implementar cualquier tipo de lógica que desee (pero sin necesidad de miles de componentes discretos).

Ahora, había asumido esto funciona como una PROM. Al igual que en, compras un dado que tiene todas las puertas, con todo conectado a todo, y luego hay una ventana de vidrio en el dado, y utilizas uno de esos escritores de rayos UV extremadamente caros para "quemar" a través de las conexiones. No quieres, lo que resulta en el circuito lógico que diseñaste. (Y tal vez hay una versión que también se puede borrar, como la forma en que se puede borrar un CD-RW). Una vez que haya "grabado" su programa en el chip, se comporta como si fuera la combinación real de puertas lógicas. (¡Porque ahora es esa combinación de puertas lógicas!)

Sin embargo, más recientemente he estado leyendo sobre esto, y parece que no es así como funciona la tecnología. Muchos artículos recientes hablan de la necesidad de enviar un "flujo de bits" al FPGA en el encendido del sistema (e incluso la posibilidad de cifrar este flujo de bits para evitar que los competidores lo lean). Esto hace que suene de manera alarmante, como que un FPGA no es una construcción de hardware ; hace que parezca que realmente es solo un microprocesador común que está simulando su diseño en software.

En particular, eso significa que un diseño programado en un FPGA nunca puede ejecutarse más rápido que el microprocesador subyacente que lo está simulando. Lo que hace que todo el esfuerzo suene ... algo inútil. Pensé que todo el punto de un FPGA era hacer lógica personalizada que haga las cosas más rápido de lo que puedes hacerlo con el software. Pero todo este "flujo de bits" hace que parezca que es todavía un software ...

Estoy un poco confundido aquí. ¿Cómo funciona un FPGA en realidad ?

    

4 respuestas

2

Los FPGA consisten en una serie de "Bloques lógicos", que pueden tener elementos como tablas de consulta, registros (flop-flops) y, por lo general, alguna otra lógica, que les permite configurarse fácilmente para los elementos de uso común, tales como sumadores. Los bloques lógicos tienen algunos interruptores dentro de ellos que pueden deshabilitar ciertos elementos (por ejemplo, el flip-flop). Esto y la tabla de consulta para la LUT se configuran mediante el flujo de bits. Puedes ver un bloque lógico simple aquí:

ElFPGAtambiénpuedeteneralgunosbloqueslógicosespeciales,comobloquesdemultiplicación,bloquesdesalida,bloquesdeadministracióndereloj,etc.

Lasentradasysalidasdelosbloqueslógicosestánconectadasatravésdeunaseriedeinterconexionesprogramables,ocomousteddice" una matriz gigante de conmutadores ", excepto que el tamaño de la matriz se ha minimizado, de modo que solo los bloques lógicos cercanos entre sí (en el mismo bus) se pueden conectar. Por lo general, habrá interconexiones donde los buses se pueden conectar directamente, pero es no es raro que el enrutamiento a través de un LB sea necesario.

Al poder reconfigurar los "conmutadores" en los LB y volver a configurar las interconexiones programables, el éter en el "arranque" o, en algunos casos, durante el tiempo de ejecución, es exactamente lo que hace que el campo de la matriz de la puerta programable .

Mientras buscaba imágenes me topé con esta buena descripción en la interna funcionamiento de un FPGA.

    
respondido por el Skrogh
4

Es una gran variedad de interruptores, sí.

Específicamente, una celda FPGA usualmente tendrá un elemento de estado (D-flop) con una tabla de búsqueda (LUT) en la entrada. La LUT está programada para dar una salida particular para cada combinación posible de entradas.

Los conmutadores adicionales conectan las células a una red de enrutamiento de cables. Por lo general, también hay una serie de bloques de propósito específico para realizar operaciones comunes como adiciones y multiplicaciones, pequeños bloques de memoria de (por ejemplo) 1 kb cada uno y transceptores de alta velocidad para hacer cosas como Ethernet o PCIe.

Realmente no es como un microprocesador y entrega grandes cantidades de lógica de ciclo único en paralelo. Sin embargo, para las tareas enteras no paralelizables, una CPU normal puede tener un rendimiento mayor, o para la carga de trabajo muy específica que están diseñadas para las GPU son más rápidas.

Los FPGA le brindan acceso de bajo nivel a señales con baja latencia fija. Ese es su verdadero valor.

    
respondido por el pjc50
3

El FPGA es de hecho una gran bolsa de puertas. Sin embargo (en muchas de las variedades populares, hay otras) las puertas están conectadas con multiplexores, cuyos datos de enrutamiento son proporcionados por el almacenamiento de RAM estático. Esto significa que las puertas tienen una ruta estática de una a otra, y ejecutarán la lógica paralela a la velocidad máxima que usted esperaría.

Cuando se enciende por primera vez, hay una fase de inicialización, donde alguna lógica dedicada adicional en el FPGA lee una memoria y envía todos los bits de programación a los multiplexores. Durante este tiempo, los bits de E / S pueden programarse para ser de alta impedancia.

    
respondido por el Neil_UK
0

Su comprensión anterior sobre la funcionalidad lógica es correcta. Pero tu comprensión de la programación es incorrecta. Una matriz de puerta programable de campo es, de hecho, una matriz gigante de elementos lógicos conectados por un grupo de conmutadores de enrutamiento. Los conmutadores de enrutamiento están configurados en el encendido, y debido a esto * La mayoría de los FPGA requieren un almacenamiento externo no volátil para contener el "flujo de bits" que se lee en el encendido.

Los elementos lógicos fundamentales que se ven en un FPGA son típicamente una tabla de consulta de 4 o 6 entradas, alimentados a un Flip Flops de 2 o 4 D, y algunos MUX'es para permitir el desvío de algunos o todos los anteriores. Estos "Bloques lógicos configurables" (CLB) se conectan luego en una clase gigante de matriz interconectada. Con una LUT de 6 entradas, puede implementar cualquier lógica combinatoria de 6 a 1, y con D Flops, puede implementar una memoria que, con la lógica combinatoria, permita implementar una lógica secuencial. Los FPGA más nuevos también contienen elementos de lógica rígida especializados adicionales, como unidades de acumulación múltiple de 48 bits (MAC), recursos especializados de E / S de alta velocidad.

Los interruptores de interconexión entre los CLB, así como las líneas de control que van dentro de cada CLB, son direccionados y controlados por una memoria de configuración interna no volátil a la que se accede mediante una lógica llamada Puerto de acceso a la configuración. en tiempo de depuración, utiliza JTAG para escribir el flujo de bits en el CAP. En el momento del despliegue, en el encendido, el almacenamiento externo no volátil se lee y escribe en el CAP. La mayoría de los FPGA son capaces de autoconfigurarse (es decir, en el inicio, registran y dirigen la memoria externa) o pueden ser configurados por un controlador externo (es decir, algo que no sea el FPGA realiza este proceso).

El flujo de diseño generalmente implica que especifique su diseño, luego 3 o 4 pasos de lo que podría llamarse compilación. Los pasos posteriores son un tanto amorfos y, a veces, poco preocupantes para el diseñador (pero eso puede ser muy importante dependiendo de su diseño). El primer paso toma su VHDL y lo convierte en RTL o en alguna otra lista de redes, es estrictamente hablando " la lógica que se puede implementar, "entonces el siguiente paso (Mapeo) asigna su lista de redes a un proveedor de FPGA / familia específico, pero genérico por dispositivo, una especie de cuadrícula infinita de CLB, luego el siguiente paso (Traducción) traduce eso en una cuadrícula de elementos lógicos reales, luego, en el siguiente paso (Colocación y enrutamiento), esa cuadrícula de elementos lógicos encaja en la cuadrícula del dispositivo de número de modelo real que está utilizando, que es el primer punto en el proceso que cualquier parte específica Su diseño está realmente correlacionado con una lógica física direccionable. La colocación y el enrutamiento también se aseguran de que se cumpla con el tiempo de su diseño.

Línea inferior, FPGA no es lógica simulada por un programa. FPGA es una lógica digital síncrona reconfigurable, sujeta a los límites físicos de tiempo de subida y bajada, y el retraso de propagación, se ejecutará tan rápido como lo marque.

    
respondido por el Jotorious

Lea otras preguntas en las etiquetas