[0:00]Si quieres utilizar un FPGA a su máximo nivel, debes aprender su lenguaje de programación, el cual no es sencillo y no se parece a los lenguajes normales.
[0:11]O mejor dicho, a los lenguajes de alto nivel. Para aquellos que no saben qué es un lenguaje de alto nivel y de bajo nivel, les explico. Un lenguaje de alto nivel es aquel que se puede expresar de una manera natural y entendible para una persona. Por ejemplo, C++, Java y Python, entre muchos más, son lenguajes de alto nivel. Mientras tanto, el lenguaje de bajo nivel es aquel que casi se escribe en binario, ejerce un control más directo sobre el hardware y está limitado a la estructura física del chip que quieres programar. Ejemplos de este lenguaje son ensamblador y lenguaje máquina. FPGA utiliza dos lenguajes: VHDL y Verilog. En el video pasado les dije que VHDL significa 'Very High Descriptive Language', pero esto es una mentira, a medias. Porque la verdad es que VHDL significa VHSIC-HDL, lo cual significa 'Very High Speed Integrated Circuit Hardware Descriptive Language', pero se resume en 'Very High Descriptive Language' para los amigos. Y Verilog es simplemente la estandarización de la IEEE. VHDL y Verilog no son considerados lenguajes de programación. Y yo sé que esto es impactante, pero tiene su razón. Los lenguajes de alto nivel y bajo nivel son lenguajes de programación que le dicen al hardware existente qué hacer. Mientras que con VHDL y Verilog, tú mismo diseñas el circuito del hardware que necesitas. En otras palabras, le dices al chip FPGA cómo se tiene que interconectar. Esto se debe a que VHDL y Verilog son lenguajes descriptivos de hardware, mejor conocidos como HDL por sus siglas en inglés. Estos se utilizan para describir la estructura y el comportamiento de los circuitos electrónicos, comúnmente circuitos lógicos digitales. Pero HDL no es un lenguaje sencillo de entender y no sigue las reglas que siguen los otros lenguajes de programación. Por ejemplo, no es secuencial y se puede ejecutar en paralelo varias instrucciones. El lenguaje que más o menos se le parece es ensamblador, pero solo en sintaxis. HDL tiene una gran diferencia a los lenguajes de programación normales y esto es que necesita una noción explícita del tiempo. Y esto es un atributo principal del hardware que se esté utilizando. A qué me refiero con esto? Normalmente, cuando uno está programando, no nos interesa en lo más mínimo a qué frecuencia va el reloj interno del chip. Sin embargo, en HDL sí nos debe de importar, porque necesitamos saber cuándo activar ciertas señales o cuándo se van a activar ciertos eventos en el hardware. Por ello, es importante decirle a nuestro hardware a qué frecuencia va a trabajar. Otra cosa que se tiene que ver es la estructura del circuito que se va a diseñar. Existen tres: Dataflow, conductual y estructural. Puedes utilizar solamente una estructura, pero la verdad es que eventualmente vas a hacer una mezcla de las tres. Por la razón de que en Dataflow describes cómo tus señales van a comunicarse entre sí, cómo se tienen que ir activando y cómo se van a utilizar entre varios módulos. En conductual, describes tu diseño de manera secuencial o en forma de algoritmo, pero no le dices cómo implementarlo a nivel hardware y dejas que el compilador haga sus propias interconexiones. En otras palabras, le dices qué hacer, pero no cómo conectarse. Y en estructural dices qué componente vas a utilizar y cómo se van a conectar. Como pueden ver, eventualmente vas a querer crear tus propios módulos o componentes en VHDL y vas a buscar la manera en que estos se comuniquen. Es ahí cuando vas a utilizar todas las estructuras. Una vez teniendo un diseño hecho en VHDL o Verilog, podrás sintetizarlo o simularlo. Esto es el equivalente de compilarse, dependiendo de qué compilador utilicen para estos lenguajes, se les va a generar un archivo que es un esquemático, mejor conocido como diseño RTL. En ese archivo podrán ver el circuito lógico de su hardware. Con ese diseño, ya pueden implementarlo en un circuito o imprimirlo en una placa. Para terminar el video les explico otra manera de ver la diferencia de lenguajes normales y HDL. En los lenguajes normales creas software y con HDL diseñas hardware. Y el hardware que diseñes está limitado a las entradas y salidas que tenga el chip FPGA, porque puedes crear un sinfín de circuitos, como CPUs, GPUs, microcontroladores y mi aplicación favorita: consolas de videojuegos retro. Ahora, esto tan solo es una introducción a VHDL y en un futuro quiero hacer una segunda parte, así que háganme saber sus dudas. Quiero agradecerle a mis Patreons como Ángel Méndez, Cuauhtémoc Vega, Daniel Nevot, Dani Álvarez, Eder Armando González, Esprtan113, Héctor Pulido, Jorge Lobo, Calcifer Vallarta, Maximiliano Camilo, Rodrigo Cabrera G, Shenka_007, Xuan González Fernández y Yago Galleta por ayudarme a compilar correctamente mis tacos. Ya sabes que si quieres apoyarme, solo tienes que ir a Patreon May Machine TV. Muchas gracias y hasta la próxima.



