Por mucho que IP tiende a facilitar las cosas, me gustaría aprender más sobre protocolos e interfaces haciéndolo todo yo mismo (entiendo la dificultad de la tarea y tengo recursos para ayudarme como en profesores y libros). Sin embargo, por lo que entiendo, es casi imposible (sin ingeniería inversa) usar cualquier característica de hardware en un FPGA sin IP. He investigado en línea y no he encontrado casi nada sobre el tema, ya que la gente parece complaciente con el uso de IP. Esencialmente, estoy tratando de encontrar más recursos HDL de código abierto, ya que faltan en este momento.
Editar: para ser más conciso, ¿es posible evitar la IP de los fabricantes para programar fpgas?
Puede haber un malentendido acerca de lo que significa 'IP'.
Es posible programar la estructura de un FPGA, es decir, las LUT programables y demás, desde cero. Sin embargo, los bits, las puertas y las tablas en Xilinx y Altera son diferentes, y son diferentes de una familia a otra, por lo que es como ensamblar la codificación de un micro, todos tienen un código de máquina de bajo nivel diferente. No creo que nadie haga eso, al menos no comercialmente.
Por lo general, es más fácil usar VHDL y escribir asignaciones AND y OR y vectoriales ADD, y dejar que el mapeador convierta eso en entradas LUT. Yo no llamaría a eso 'IP', lo llamaría compilación. Cuando su VDHL que implica puertas y pestillos 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 memorias RAM de doble puerto o el acumulador multiplicador de 48x24, debe utilizar 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 utilizar un FFT empaquetado, un filtro FIR de reducción de muestreo o un decodificador Viterbi, o el ARM integrado, proporcionado o autorizado por el proveedor para su arquitectura, ya sea una licencia gratuita (con las herramientas) o de pago, eso es PI
Ciertamente es posible programar (usando y HDL) y realizar tareas útiles en FPGA sin usar bloques de IP de terceros, si eso es lo que quiso decir. Sin embargo, aún tiene que usar las herramientas de síntesis de los proveedores.
Las máquinas de estado sincrónicas, etc. escritas en VHDL estructurado apropiadamente se sintetizan fácilmente en las LUT, flip flops y multiplexores en una celda FPGA y puede hacer que estos diseños se conecten con los pines IO usando un archivo de restricciones (que estará en un formato propietario).
Las herramientas de síntesis reconocerán ciertos modismos en VHDL y se mapearán en otros recursos en el chip automáticamente, por ejemplo, utilizando señales de reloj global cuando corresponda e incluso mapeando una construcción aritmética canalizada en un DSP cuando corresponda.
Por otro lado, hay algunos recursos en el chip para los que debe usar macros proporcionadas por el proveedor para que las herramientas de síntesis puedan mapearse en el hardware. Un ejemplo es si se usa un PLL para generar relojes de diferentes fases.
Ciertamente puede implementar cualquier protocolo de interfaz por sí mismo. ¿Cómo crees que se diseñaron estas IP 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 prueba que cubran todos los casos de esquina. Luego, debe colocar y enrutar 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 hacer este trabajo, pero con mucha frecuencia la ubicación de los bloques lógicos puede ser complicada para lograr una sincronización satisfactoria, y es posible que se requiera una gran sofisticación para formular las restricciones de sincronización 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 operativo físico, para validar la funcionalidad de su interfaz.
Por supuesto, puede hacerlo todo solo, y le llevará solo un par de años realizar todas estas tareas para cualquier interfaz serializada de paquetes moderna. 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 e incorporar la propiedad intelectual en su diseño. Pero la IP te costará. Ahora es tu elección.
Para los esfuerzos a lo largo del camino del diseño propio, puede comenzar con OpenCores.org .
Depende de a qué tipo de IP te refieras. Algunas IP son IP blandas y realmente no son diferentes de un diseño en HDL, ya que viven en las LUT de la FPGA. Esto lo puedes implementar por tu cuenta, pero puede ser muy complejo. Hard IP, por otro lado, existe como silicio dedicado fuera de las LUT de FPGA. Por lo general, esto involucrará componentes de señal mixta, 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 una MAC Ethernet. Si la IP dura tiene componentes de señal mixtos, entonces es imposible reemplazarla solo con HDL. Si el núcleo es puramente digital, entonces puede ser más complejo de lo que sería factible reemplazar.
Ahora, hay primitivas FPGA comunes, como multiplicadores, LUT y RAM de bloque que en realidad se pueden inferir con un poco de hdl puro en lugar de requerir una instanciación explícita. Para cosas como bloques de RAM y segmentos de DSP, este puede ser un enfoque muy razonable.
Si quieres hacer algo como un FIFO, entonces sí, puedes hacer el tuyo propio.
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.
Eugenio Sh.
bit0fun
Eugenio Sh.
Ale..chenski
bit0fun
Ale..chenski
Ale..chenski
Pico de voltaje