Ingeniería inversa de la secuencia de programación del fabricante de un FPGA

3

A pesar de que la IP tiende a facilitar las cosas, me gustaría encontrar información sobre los protocolos e interfaces haciendo todo por mí mismo (entiendo la dificultad de la tarea y tengo recursos para ayudarme como profesores y libros). Por lo que entiendo, sin embargo, es casi imposible (sin ingeniería inversa) usar cualquier característica de hardware en un FPGA sin IP. He hurgado en línea y no he encontrado casi nada sobre el tema, ya que las personas parecen complacientes con el uso de la propiedad intelectual. Esencialmente estoy tratando de encontrar más recursos HDL de código abierto, ya que hay una falta en este momento.

Edit: para ser más conciso, ¿es posible evitar la IP de los fabricantes para programar fpgas?

    
pregunta bit0fun

5 respuestas

9

Puede haber un malentendido sobre el significado de 'IP'.

Es posible programar la estructura de un FPGA, es decir, las LUT programables y todo, desde el principio. Sin embargo, los bits y las puertas y las tablas en un Xilinx y un Altera son diferentes, y son diferentes de una familia a otra, por lo que es como un código de ensamblaje de un micro, todos tienen diferentes códigos de máquina de bajo nivel. No creo que nadie haga eso, al menos, no comercialmente.

En general, es más fácil usar VHDL y escribir AND, OR y vector AGREGAR asignaciones, y dejar que el asignador las convierta en entradas de LUT. No llamaría a eso 'IP', llamaría a eso compilación. Cuando su VDHL que implica puertas y cierres NAND golpea un compilador Altera o un compilador Xilinx, ya que la estructura es diferente, las tablas LUT se programarán de manera diferente, pero la función de bajo nivel que ha descrito en el VHDL se implementa de la misma manera .

Si desea utilizar el hardware específico que proporcionan Xilinx y Altera, como las RAM de doble puerto o el acumulador multiplicador de 48x24, debe usar primitivas específicas del proveedor. Pero tienes control total sobre cómo te conectas a ellos. Todavía no llamaría a esta IP.

Si desea usar un FFT empaquetado, un filtro FIR de muestreo descendente o un decodificador Viterbi, o el ARM incorporado proporcionado o licenciado por el proveedor para su arquitectura, ya sea gratis (con las herramientas) o pagado para la licencia, eso es IP.

    
respondido por el Neil_UK
9

Es ciertamente posible programar (usando y HDL) y hacer tareas útiles en los FPGA sin utilizar bloques de IP de terceros, si eso es lo que quería decir. Sin embargo, todavía tiene que utilizar las herramientas de síntesis de los proveedores.

Las máquinas de estado síncronas, etc., escritas en VHDL estructuradas apropiadamente, se sintetizan fácilmente en las LUT y los flip flops y multiplexores en una celda FPGA, y puede hacer que estos diseños se conecten con los pines IO mediante un archivo de restricciones (que estará en un formato propietario) .

Las herramientas de síntesis reconocerán ciertos modismos en VHDL y se asignarán a otros recursos en el chip automáticamente, por ejemplo. usando señales de reloj globales cuando sea apropiado e incluso mapeando una construcción aritmética canalizada en un DSP cuando sea apropiado.

Por otro lado, hay algunos recursos en el chip para los que tiene que usar macros proporcionadas por el proveedor para que las herramientas de síntesis puedan asignarse al hardware. Un ejemplo es si utiliza un PLL para generar relojes de diferentes fases.

    
respondido por el John
4

Ciertamente puedes implementar cualquier protocolo de interfaz por ti mismo. ¿Cómo crees que estas IPs fueron diseñadas en primer lugar?

Todo lo que necesita es estudiar cuidadosamente las especificaciones particulares e implementar todas las máquinas de estado de acuerdo con la documentación. Luego debe verificar todas sus construcciones HDL con bancos de pruebas que cubran todos los casos de esquina. Luego, debe colocar y encaminar su lógica de tal manera que cumpla con el tiempo necesario para los relojes requeridos. El proveedor de FPGA proporcionará herramientas automáticas para realizar este trabajo, pero con mucha frecuencia la ubicación de los bloques lógicos puede ser difícil para lograr un tiempo satisfactorio, y podría requerirse una gran sofisticación para formular las restricciones de tiempo adecuadas para la herramienta.

También deberá diseñar un entorno externo para operar su interfaz en condiciones realistas, ya sea virtualmente (nuevamente, modelos de sistema / bus) o tener un entorno físico operativo, para validar la funcionalidad de su interfaz.

Por supuesto, puede hacerlo solo, y le llevará solo un par de años realizar todas estas tareas para cualquier interfaz moderna serializada en paquetes. O puede utilizar los frutos del trabajo de varios años de ingenieros experimentados que ya hicieron este diseño y envolvieron su trabajo en una forma de IP configurable. Solo necesitará un par de semanas para comprender el funcionamiento externo de la misma e incrustar la IP en su diseño. Pero la IP te costará. Ahora es tu elección.

Para los esfuerzos a lo largo de la ruta de diseño propio, puede comenzar con OpenCores.org .

    
respondido por el Ale..chenski
4

Depende de qué tipo de IP quieres decir. Cierta IP es una IP suave y realmente no es diferente de un diseño en HDL, ya que vive en las LUT del FPGA. Esto puede implementarlo por su cuenta, pero puede ser muy complejo. Hard IP, por otro lado, existe como un silicio dedicado fuera de las LUT de FPGA. Por lo general, esto implicará componentes de señal mixtos, como en un PLL o un serializador o deserializador de alta velocidad. A veces, la IP dura es puramente digital, como en el caso de un núcleo de CPU duro, una interfaz PCIe o Ethernet MAC. Si la IP dura tiene componentes de señal mixtos, es imposible reemplazarlos solo con HDL. Si el núcleo es puramente digital, puede ser más complejo de lo que sería posible reemplazar.

Ahora, hay primitivas FPGA comunes como multiplicadores, LUT y RAM de bloque que pueden inferirse con un poco de hdl puro en lugar de requerir una instanciación explícita. Para cosas como bloque RAM y segmentos DSP, este puede ser un enfoque muy razonable.

    
respondido por el alex.forencich
2

Si quieres hacer algo como un FIFO, entonces sí, puedes hacer tu propio rollo.

Ahora, si desea usar primitivas de hardware específicas como BRAM, Multiplicadores, PLL, etc., deberá usar las herramientas, bibliotecas, IP e interfaces proporcionadas por el fabricante.

    
respondido por el peufeu

Lea otras preguntas en las etiquetas