¿Cómo dominar rápidamente FPGA?
Cualquier ingeniero de hardware está familiarizado con FPGA. Así como el lenguaje C es un curso obligatorio para los ingenieros de software, los estudiantes que se especializan en electrónica deben aprender el curso de lógica programable. El nombre completo en inglés de FPGA es Field Programmable Gate Array, que es un conjunto de puertas programables en campo. Es un producto de desarrollo adicional basado en dispositivos programables como PAL, GAL y EPLD.
Desde la superficie, la palabra programable puede describir muy bien las características de FPGA, pero esto también hace que muchos principiantes tomen muchos desvíos. Cuando se trata de programación, todos no pueden evitar pensar en la codificación, porque la idea de la programación de software ya está profundamente arraigada entre los ingenieros. Por lo tanto, muchos principiantes se harán la misma pregunta: ¿cuál de los dos lenguajes de programación de hardware, VHDL y Verilog, deberían aprender? Incluso si sabes qué lenguaje de diseño quieres aprender, te sumergirás en la vasta gramática y te extraviarás. Algunos principiantes han escrito mucho código y han realizado n pruebas en la placa de demostración, pero todavía sienten que no entienden FPGA y ni siquiera pueden descubrir la diferencia entre este y un microcontrolador. ¿porqué es eso? De hecho, todo esto se reduce a una razón: me confundieron las tres palabras "programable", es decir, no entendí la esencia de FPGA. Por lo tanto, no existe ningún método para aprender FPGA, la mitad del resultado es el doble y se pierde mucho tiempo, pero el efecto aún no se logra.
FPGA surgió como un circuito semipersonalizado en el campo de los circuitos integrados de aplicaciones específicas (ASIC). No solo resolvió las deficiencias de los circuitos personalizados, sino que también superó las deficiencias del número limitado de circuitos de puerta. de los dispositivos programables originales. Por lo tanto, desde una perspectiva de nivel inferior, FPGA todavía pertenece a la categoría de circuitos integrados. En lo que respecta a la tecnología actual, los proyectos de desarrollo que utilizan FPGA todavía se basan en el diseño de circuitos digitales. Por lo tanto, la "programabilidad" de FPGA significa realizar una lógica de circuito digital diferente. ¡Esto es esencialmente diferente de la llamada programación de software! En última instancia, el diseño de FPGA es diseño de circuito. Por lo tanto, es muy importante que cada ingeniero de FPGA tenga en cuenta el circuito al diseñar. Entonces, ¿cómo aprender FPGA de forma eficaz? De hecho, es muy simple. Siempre que comience con los siguientes 7 puntos, paso a paso y con el tiempo, podrá diseñar FPGA con facilidad.
1. Primero, debe comprender la estructura y el rendimiento de FPGA. Diferentes fabricantes y diferentes series de chips FPGA tienen diferentes estructuras y rendimientos, pero siguen siendo los mismos. Para empezar, empiece por dominar algunos chips típicos de alta gama, como el Stratix III de Altera y el Virtex 5 de Xilinx. Después de eso, será fácil aprender sobre otras series de chips. En cuanto a los chips de Lattice y Actel, nunca es demasiado tarde para aprender sobre ellos cuando los usa, ¡porque aprender cosas convencionales será más efectivo! Muchos libros de texto sobre FPGA utilizarán varios chips de uso común como ejemplos para describir la estructura básica y los principios de FPGA. Después de leerlo, los principiantes siempre sienten que es demasiado abstracto y un poco confuso. Por lo tanto, para comprender profundamente FPGA, debe tener una base sólida en circuitos digitales. En los circuitos digitales, las cosas más básicas son la lógica y la sincronización. Los ingenieros deben comprender la relación entre la estructura lógica interna de FPGA y la estructura básica del circuito de los circuitos digitales. Por ejemplo, cualquier lógica combinacional de 4 señales de entrada se puede implementar a través de la LUT de 4 entradas proporcionada por la FPGA. Si se utiliza un chip Xilinx, el registro de desplazamiento se puede implementar mediante una cascada de múltiples flip-flops o mediante una LUT. A menudo, los principiantes pueden diseñar una lógica correcta, pero es fácil pasar por alto el tiempo. En el diseño de puertos de E/S, los defectos relacionados con la sincronización son fatales para el producto y afectarán su confiabilidad. Por lo tanto, después de dominar la estructura, también debe prestar atención a algunos parámetros de sincronización importantes del chip, como el tiempo de establecimiento, el tiempo de espera y el tiempo de retardo desde el flip-flop hasta la salida del reloj del puerto de E/S. como la frecuencia máxima del reloj de trabajo interno del chip, etc.
Solo dominando completamente la estructura y el rendimiento del chip utilizado podemos diseñar un sistema razonable y garantizar que el diseño FPGA sea confiable y estable. La gran cantidad de documentos proporcionados por los fabricantes de FPGA es un buen material de aprendizaje.
2. Dado que FPGA es "programable", es naturalmente inseparable de los lenguajes de programación. De hecho, la mayoría de los primeros ingenieros utilizaron el método de entrada esquemática para el diseño lógico, que es un método de diseño más cercano al diseño de circuitos. Este método de diseño tiene requisitos más altos para los diseñadores y no es propicio para el trasplante y el mantenimiento. Por lo tanto, VHDL y Verilog se han vuelto populares gradualmente. No hay diferencia entre estos dos lenguajes, pero Verilog está mejor desarrollado que VHDL y está más en línea con SystemVerilog, que puede dominar el mundo en el futuro. Ambos son lenguajes de descripción de hardware. Dado que se llama lenguaje de descripción de hardware, es naturalmente diferente de la programación en el mundo del software. Por lo tanto, los principiantes no pueden aprenderlo como lenguaje de programación de software, de lo contrario descuidarán los conceptos básicos. Si solo se dedica al diseño lógico FPGA y a la simulación funcional simple, solo necesita aprender la sintaxis más simple. No es necesario aprender la sintaxis utilizada para escribir scripts de verificación y es básicamente inútil. El lenguaje es solo una herramienta, especialmente en el diseño de hardware. No importa si el código es hermoso o no. Lo más importante es la idea de diseño. Recuerde, los ingenieros de FPGA están diseñando circuitos, no "programándolos".
3. Muchos ingenieros hablarán de la importancia de los algoritmos y creerán que deben conocer muchos algoritmos. Sí, los buenos algoritmos son como herramientas afiladas para el diseño. Sin embargo, investigar algoritmos y cómo implementarlos son dos conceptos diferentes. Investigar algoritmos es resolver problemas matemáticos y implementar algoritmos es responsabilidad de los ingenieros. Esto no significa que los ingenieros de FPGA no necesiten estudiar algoritmos, pero enfatiza sus responsabilidades. Los diferentes algoritmos tienen diferentes requisitos para la investigación y la comprensión de sus principios. Por ejemplo, codificación 8B/10B, siempre que sepa dónde usarla, puede llamar directamente al IP Core ya preparado. Sin embargo, para algoritmos como la codificación y decodificación FEC, es posible comprender cómo implementarlos solo después de comprender los principios básicos. Para los algoritmos, el enfoque de los ingenieros de FPGA es "cómo implementarlos". . Además, además de los algoritmos, debe comprender los métodos de diseño comúnmente utilizados en el diseño lógico, como la operación de ping-pong, el diseño de tuberías, la multiplexación de tiempo compartido, etc. También existen módulos lógicos de uso común, como FIFO asíncrono y máquinas de estado. Estos son en realidad los elementos más básicos en los circuitos digitales, pero es posible que los principiantes no se utilicen correctamente al diseñar FPGA.
4. El diseño de FPGA debe estar respaldado por un buen proceso de diseño. Una vez escrito el código, es necesario dedicar mucho tiempo a la simulación y verificación funcional completa. Sin embargo, algunos ingenieros no prestan atención a la simulación y verificación, pero no pueden esperar para comenzar a depurar. Después de encontrar un ERROR, lo corregirá en el código. Si tiene suerte, el ERROR se resolverá en la superficie, pero es posible que no se descubra la causa subyacente real, lo que dejará peligros ocultos para el producto. Un buen proceso de diseño requiere que la mayoría de los errores se resuelvan en el trabajo preliminar, y la simulación y verificación funcional son un paso muy efectivo e importante. Además de la verificación de la simulación, también se debe prestar atención a la síntesis y el cableado, lo que requiere que examinemos cuidadosamente el informe de compilación y el informe de sincronización, porque muchos problemas de sincronización se pueden reflejar a través del informe. A veces, algunos ingenieros encuentran problemas de sincronización y simplemente invierten el reloj para ajustar la relación de fase entre los datos y el reloj, o modifican los parámetros de síntesis y cableado, pero el problema aún no se puede resolver. Especialmente en diseños que utilizan relojes de alta velocidad, en la mayoría de los casos, solo podemos cumplir con los requisitos de sincronización del diseño modificando la lógica en el código. Sólo después de analizar cuidadosamente el informe podremos prescribir el medicamento adecuado. Además, para la mayoría de los diseños de lógica síncrona, la simulación de temporización no es necesaria y este paso puede omitirse por completo.
5. En esta etapa, las tres direcciones principales del desarrollo de FPGA son SOC, E/S de alta velocidad y DSP. En el tiempo limitado, es necesario elegir un área en la que concentrarte. Sólo cuando el objetivo esté claro estarás más dedicado.
El diseño SOC requiere que los diseñadores tengan una buena comprensión de la programación de software, los principios de la CPU e incluso los sistemas operativos, porque SOC es un sistema que combina software y hardware. El diseño de E/S de alta velocidad requiere que los diseñadores dominen muchos conocimientos básicos de circuitos analógicos y algunos protocolos de comunicación comunes, como SDH, GbE, PCI-E, etc. El uso de FPGA en el campo DSP es una dirección de desarrollo que ha surgido en los últimos años. Debido a sus características paralelas inherentes, FPGA puede implementar grandes módulos de cálculo en algoritmos DSP con alta eficiencia. Es muy adecuado para aplicaciones emergentes como el procesamiento de video e imágenes que requieren un rendimiento DSP cada vez mayor para dominar los algoritmos comunes. . ¡Estas tres direcciones son completamente diferentes! "Las habilidades requieren especialización" y es difícil para los ingenieros superiores experimentados lograr el éxito en múltiples direcciones. Por supuesto, sería mejor si pudiera realizar una investigación en profundidad en un campo y tener cierta comprensión de los otros dos campos.
6. Un excelente ingeniero de FPGA debe ser “multifuncional”. La llamada "especialidad única" ciertamente se refiere a la profundidad de la experiencia en el campo del diseño de FPGA, mientras que las "habilidades múltiples" requieren que los ingenieros comprendan y dominen otros campos profesionales. Por ejemplo, para diseñar un sistema SOC, se debe aprender el lenguaje C; de lo contrario, la arquitectura del sistema en un chip puede resultar irrazonable. Además, los ingenieros que diseñan puertos de E/S de alta velocidad deben comprender el diseño de principios de la placa de circuito y el diseño de PCB. Sólo si domina conceptos relacionados con los circuitos analógicos, como el preénfasis, la ecualización y la adaptación de impedancia, podrá sentirse cómodo en el diseño y la depuración.
7. El último punto, y el punto más difícil, que también es la clave para convertirse en ingeniero senior, es que el diseño de FPGA requiere una buena solución de arquitectura del sistema y una modularización razonable. Esto es útil para la depuración y el mantenimiento de FPGA y también facilita el desarrollo simultáneo de varias personas, especialmente cuando se utiliza FPGA a gran escala, que a menudo se denomina método de diseño de arriba hacia abajo. Dividir un diseño grande y complejo en varios módulos pequeños, y los niveles deben ser claros y no planos, requiere que el diseñador tenga una comprensión integral y profunda del diseño. Un diseño desordenado y desordenado será desastroso para el mantenimiento posterior, especialmente para el sucesor, se puede decir que es miserable si se quiere modificar cierta lógica. Desde este punto de vista, aquí se pueden responder todas las preguntas de los principiantes. ¿Qué aprender sobre FPGA? Se trata de aprender el diseño de circuitos a nivel de sistema. Por lo tanto, la dirección de desarrollo de los ingenieros de FPGA son los ingenieros de sistemas.
Si puede tener una comprensión profunda de los 7 puntos anteriores, podrá ver claramente la esencia de FPGA. Los rápidos cambios en el mercado requieren que los productos electrónicos sean muy sensibles al mercado. El tiempo desde el diseño del producto hasta el lanzamiento al mercado es cada vez más corto, y la FPGA juega un papel importante en esto. Además, la FPGA también juega un papel indispensable a la hora de afrontar la reducción de costes. En la era actual, FPGA se ha utilizado ampliamente en muchos campos, como comunicaciones, procesamiento de datos, redes, instrumentos, control industrial, militar y aeroespacial. Con una mayor reducción del consumo de energía y los costos, FPGA ingresará a más campos de aplicación. Creo que los ingenieros de FPGA también tendrán un espacio más amplio para la visualización.
Recomiende un libro "Inicio rápido del desarrollo de FPGA basado en ejemplos de técnicas VHDL"
¡Vamos!