LCD Driver(PSP Screen) Using Nios II

for more visit: www.fpgalover.com

If you like my FREE FPGA tutorials, buy me a coffee, or a biscuit or whatever you like.

Written by Holguer A Becerra

Materiales:

Parte HW:

    1. Descargue la siguiente plantilla y descomprimala en una ruta sin espacios y corta.

  1. Ahora abra el proyecto Quartus y abra Qsys(Seleccione system.qsys).

  2. Una vez en Qsys, agregue el modulo llamado "Frame Reader" y configure de la siguiente manera:

    1. El Frame Reader, leerá directamente de la RAM una sección de memoria con las características que están en el recuadro

    1. Ahora conecte el Frame reader de la siguiente manera:

    1. Esto se hace para que el procesador se limite a trabajar desde este punto de partida, y no existan problemas de tener Video donde no debemos tenerlo.

    2. Ahora guarde los cambios y oprima en "Generate".

    3. En el Modulo Top de Quartus usted tiene instanciado en el Nios lo siguiente(Donde TFT_DCLK, proviene de un PLL y transporta un reloj de 9 MHz segun las paginas 63 y pagina 65 del datasheet):

    1. Ahora agregue el modulo "Clocked Video Output" y configure de la siguiente forma: La razon por la cual se configura el "Clocked Video Output" de esta manera usted la puede encontrar en las paginas 63 y pagina 65 del datasheet.

      1. Ahora conecte el modulo "Clocked Video Output" de la siguiente forma:

    2. Ahora se debe hacer un pequeño calculo matemático para seleccionar desde antes donde queremos guardar nuestro Frame de video, si queremos que no vaya a ver problemas con la memoria de heap o stack del sistema. El calculo es el siguiente, si queremos un frame de 480x272 que es la resolución que se quiere alcanzar en la pantalla, necesitamos saber ¿Cuanto espacio gasta esto en bytes?, lo cual se puede encontrar multplicando 480x272x4, donde el 4 significa que por cada pixel se gastaran 4 Bytes por color(un int).

    3. 480x272x4=522240 Bytes=0x7f800 Bytes ==> si se quiere 1 Frame.

    4. 480x272x4x2=1044480 Bytes=0xff000 Bytes==> si se quiere 2 Frame.

    5. En nuestro diseño dejaremos 2 Frames entonces necesitamos dejar un espacio destinado a Video del tamaño de 480x272x4x2=1044480 Bytes=0xff000 Bytes

    6. Ahora en el Qsys abra las opciones de la CPU y modifique "Exception Vector Offset" con el valor de 0xff000 + 0x20, los 32 Bytes de mas es por estandar que

    7. deben ser agregados al Exception Vector.

Parte SW:

    1. Abra el Nios II Software Build y cree un nuevo proyecto(Nios II Application and BSP from Template) llamado "video_test".

    2. Descargue el siguiente archivo.zip y copie en el proyecto "video_test" los archivos que hay en el.

    3. Ahora haga "Clean Project" tanto de la carpeta de aplicación como de la de BSP.

    4. Genere el BSP.

    5. Build Project.

    6. Luego corra el proyecto con "Run As->Nios II Hardware"

    7. Una vez programe deberá tener sobre su pantalla la siguiente figura.

    1. Usted puede quitar el comentario de la linea 15 para tener Double Frame(Mientras dibuja en un frame muestra el otro).

    2. Si se da cuenta en la lineas 11 y 12 puede ver la ubicación en memoria de los Frames de 480x272 en la SDRAM.

    3. Para aumentar la velocidad de dibujo puede cambiar el Nios II a Fast o podría hacer acceleración por HW.for more visit: www.fpgalover.com

      1. If you like my FREE FPGA tutorials, buy me a coffee, or a biscuit or whatever you like.