
En este video se encuentra la introducción al curso Zynq7000 Esencial. En él podrás descubrir el contenido del curso, lo que puedes esperar de él, y algunos conocimientos que deberías tener para poder sacar el máximo partido del curso. En cualquier caso, este no es un curso en el que se necesite un conocimiento profundo sobre FPGA o microprocesadores, ya que está diseñado para que sea accesible para todos los públicos.
En este video nos adentraremos en el entorno de desarrollo que utilizaremos durante el curso, Vitis Unified IDE 2023.2. Este entorno de desarrollo está compuesto por un conjunto de herramientas con las que podremos desarrollar tanto la parte hardware de los dispositivos Zynq7000, como desarrollar aplicaciones para ejecutar en el ARM Cortex A9 integrado en la misma pieza. Un punto importante que se ve en este video es el flujo de diseño con Vitis Unified IDE, ya que en él se integra tanto el desarrollo HW como SW.
Lo primero que necesitamos para empezar a trabajar es ¡un martillo!, aunque para trabajar con Zynq lo que necesitamos es Vitis Unified IDE. Aquí vemos como se instala, ¿parece fácil eh?, bueno, fácil es si tienes 5 petabytes de espacio disponible en tu disco duro, si no es así, mejor que estés atento a este video.
Este curso es un curso muy práctico, por lo que todos los laboratorios se realizan sobre una tarjeta de desarrollo. En mi caso utilizo la tarjeta Picozed, junto con la carrier FMC v2. En este video descubrirás esta tarje, sus características fundamentales y sus interfaces. ¿No tiene una tarjeta como la mía?, no te preocupes, para seguir el curso te valdrá cualquier tarjeta que tengas que esté basada en Zynq7000. En el video te muestro alternativas más económicas y también algunas más potentes.
¡Nos metemos en materia!, ¿qué es Zynq7000?, en este video descubrirás qué es Zynq7000, qué es el Processing System (PS), y también lo que hace tan potentes a estos dispositivos, la Programmable Logic (PL). Veremos es su arquitectura interna, diferencias entre las diferentes partes de la familia,... Aquí empieza lo bueno.
Empezamos con los laboratorios. Como ya seguro sabes, los dispositivos Zynq7000 disponen de un procesador y una FPGA. En este video nos centramos en la FPGA, veremos como crear un proyecto desde cero con Vitis, seleccionar el dispositivo, crear un diseño de bloques... Al terminar este video podrás, como mínimo, manejar un puerto de entrada/salida de la FPGA, y como máximo, implementar cualquier diseño lógico que se te ocurra.
Empezamos a hablar del procesador, y más concretamente, de sus puertos de entrada y salida. ¿Sabias que podemos conectar casi cualquier puerto de entrada salida a la Programmable Logic?, esto es posible gracias al EMIO. En este vide descubrirás el MIO, el EMIO, y qué podemos hacer con ellos.
Ahora ya conocemos un poco el procesador, o PS, ¿que tal si empezamos a utilizarlo? En este laboratorio vamos a crear el primer diseño HW en el que vamos a instanciar el procesador. Esto lo haremos desde Vivado, y es en este paso donde vamos a definir qué queremos que sea nuestro dispositivo, ¿quieres que tenga SPI?, ¿necesitas un I2C?, ¿Que tal una conexió Gigabit Ethernet (tengo dos)?
Este video es la continuación del anterior. Una vez que sabemos lo que queremos ser, y tenemos el HW listo, lo siguientes es empezar a desarrollar la aplicación que correrá en el procesador, y que utilizará los recirsos que hayamos definido en Vivado. Aquí ya puedes invitar a tus amigos de SW a que te echen una mano si tienes dudas.
En este punto, sabemos crear un diseño HW, y también una aplicación SW, ¿que tal si los unimos? En este video utilizaremos el EMIO para conectar un puerto del procesador a la FPGA internamente, si si, como lo lees.
En este video se muestra la estructura de las librerias que nos ofrece Vitis, y ¿qué mejor proyecto para mostrar las librerias que un led parpadeando?, si controlas esto, utilizar otras librerias no te resultará complicado.
Ahora sí que viene lo bueno de verdad. En este video descubrirás lo que son los interfaces AXI4 que tenemos disponibles en Zynq7000. Un resumen rápido. Estos interfaces permiten enviar información entre la PS y la PL como si de un periférico nativo se tratara. ¿necesitas un PWM extra?, hazlo tu mismo y conéctalo al procesador.
Hemos dicho PWM, en este video vemos como desarrollar un periférico con interfaz AXI4. ¿te parece algo complicado?, ya verás como siguiendo estos pasos es algo muy accesible. Si controlas este punto, la potencia que ofrecen estos dispositivos es enorme.
Ahora que ya tienes diseñado tu periférico AXI4, ¿qué tal si lo utilizamos desde el procesador? Para ello hace falta un driver que nos haga la vida más fácil. En este video se muestra como diseñar un driver para un periférico propio que está implementado en la FPGA.
Seguro que ya sabes que los dispositivos Zynq7000 llevan dentro un procesador ARM Cortex A9 de dos núcleos, por lo que tenemos el doble de diversión. ¿Te suena el Multi-Procesamiento asimétrico?, en este video descubrirás lo que es.
Dos siempre es mejor que uno, ¿verdad?, Ahora que ya sabes la teoria del AMP, en este video lo pondrás en práctica corriendo dos aplicaciones diferentes, al mismo tiempo, en el dispositivo Zynq7000.
Hasta ahora, en todos los laboratorios hemos tenido el depurador conectado a nuestro dispositivo, Este ha sido como el amigo que nos decia donde estaba nuestro programa almacenado, donde tenia que saltar el puntero de programa, pero es hora de volar solos. En este video aprenderás lo que es el FSBL, para qué vale, y como configurarlo.
Siguiendo en nuestra ruta hacia ser independientes, ¿que tal hacer funcionar el dispositivo desde una tarjeta SD?, la cosa no es tan sencilla como parece, pero después de hacer este laboratorio, te parecerá pan comido. Un consejo, es un proceso que es muy parecido para cualquier diseño, así que toma nota.
Esto sí que no te lo vas a creer, ¿sabias que podemos ejecutar Linux en nuestro Zynq7000?, ¿hay algo que no podamos hacer con estos dispositivos?, aquí descubrirás qué es Petalinux, como se configura, y lo que se necesita.
¿Eres fan de Linux? ¿Utilizas Linux como sistema operativo principal?, este laboratorio está chupado para ti. ¿Utilizas Windows? Bueno, ya dije que este curso era para todos, así que no te preocupes, iremos más despacio en tu caso, pero ve preparando una máquina virtual con Linux porque, en este laboratorio se verá como instalar las herramientas necesarias para poder compilar una distribución de Linux para nuestro dispositivo Zynq7000.
Ahora sí que nos metemos en materia con Petalinux, en este video vamos a compilar nuestra distribución de Petalinux y la haremos funcionar en nuestra tarjeta con Zynq7000, y esto no nos llevará más de 15 minutos! (sin contar la hora y pico que le cuesta compilar :) )
¿Recuerdas lo felices que fuimos con nuestro generador de señal PWM?, aquí lo recuperamos, pero esta vez, lo manejamos desde Linux. Solo tienes que aprender a escribir devmem.
El devmem se te queda corto verdad, necesitas más potencia, más libertad, mas.. C! En este video desarrollamos un driver en C para nuestro periférico PWM, de esta forma podremos controlar nuestro periférico AXI4 desde Petalinux.
Ahora, te toca volar solo, si has llegado hasta aquí, espero que hayas disfrutado del curso.
El curso Zynq Esencial está diseñado para que tanto desarrolladores de software que necesiten añadir aceleración hardware a tus desarrollos, o desarrolladores de FPGA que necesiten ejecutar funciones de alto nivel, al finalizar este curso puedan empezar a desarrollar tus proyectos con los SoC Zynq7000. La mayoría de los videos del curso son prácticos, y en ellos verás el desarrollo de un ejercicio de principio a fin.
Los primeros bloques del curso presentan la familia Zynq7000 de AMD-Xilinx, así como el entorno de desarrollo que se va a utilizar (Vitis Unified IDE + Vivado), y la tarjeta de desarrollo que se utiliza para los ejercicios. Estos ejercicios se pueden seguir con cualquier tarjeta de desarrollo de Zynq7000, por lo que si ya tienes una, seguro que podrás utilizarla, y en el caso de que tengas que comprar una, podrás comprar la que más te interese.
En el curso se empieza utilizando la Programmable Logic (PL) de Zynq7000 como una FPGA. En los siguientes bloques se explora el Processing System(PS), los interfaces que dispone, se realizan varios laboratorios desarrollando proyectos en bare-metal para el procesador ARM. Una vez que se conocen tanto la PL como la PS, se habla de los interfaces que existen entre ellos (AXI4), y se realizan laboratorios en los que se comparte información entre la PL y la PS desarrollando desde el diseño en FPGA, hasta el desarrollo del driver para nuestro hardware dedicado. Una vez se conoce más a fondo el dispositivo, pasaremos a explorar el First-Stage Bootloader analizándolo y explicando como podemos modificarlo para añadirle nuevas funcionalidades. Y de aquí, pasamos al desarrollo con Petalinux. Se crea una distribución de Linux específica para nuestro hardware, veremos como arrnacar esa distribuciñon de Linux, como añadirle diferentes paquetes, y por último se aborda la creación de drivers sencillos en Linux para los diseños hardware que están configurados en la PL.