miércoles, 8 de septiembre de 2010

Full Adder


Como ya vimos en la publicación anterior en VHDL las entradas y salidas nos sirven como indicadores para empezar o finalizar un proceso, sin embargo hay que aclarar que cada entrada y salida que declaremos es un bit, esto es que es únicamente puede ser “1” o “0”. 



El primer programa que relazamos  fue un encender un LED, el cual no requirió de operaciones aritméticas. La creación de un Full Adder requiere del uso de operaciones lógicas y aritméticas ya que se necesita sumar dos bits de entrada más un Carry también de entrada, además deben de existir dos salidas, una que será la Suma y la otra el Carry de salida. Por medio de tablas de la verdad se sabe que la creación de un sumador completo no tiene gran complicación.

Implementación en codigo:



OJO: Como se podran dar cuenta en las lineas 13,14 y 19, estamos haciendo referencia a algo llamado "process" que efectivamente es un proceso,VHDL es un lenguage concurrente esto quiere decir que implementa todas las lineas de codigo al mismo tiempo, este proceso nos permite programar secuencialmente para asi decirle al compilador que tiene que ejecutar primero, por este motivo estaremos usando muy seguido este proces.



Mi primer programa: Encender Un LED

Cuando uno empieza a utilizar algo nuevo, siempre surgen muchas interrogantes, en esta entrada vamos a dar unos consejos para familiarizarse con "ISE webpack" y con "Adept".

Lo primero que haremos sera mostrarles como crear un programa muy sencillo en "ISE webpack".
Al abrir el proyecto te tienes que dirijir a la barra de herramientas y darle click en  File/New Project...


Una vez que le diste click te va a aparecer una ventanta, en la cual tendras que ingresar el nombre del proyecto y la direccion en la cual se guardara la carpeta del proyecto, (ojo) identifica bien la carpeta ya que ahi se generara tu archivo ".bit" que mas adelante explicaremos para que funciona.
¨
Para poder empezar a programar es necesario crear una nueva hoja de programación, esto se hace seleccionando en la barra de herramientas Project/New Source. Una vez seleccionada esta opcion aparecera un cuadro de dialogo que nos muestra una serie de opciones de como queremos programar, ISE nos permite programar en lenguaje, graficamente o por compuertas entre otras cosas, durante todos nuestros proyectos se trabajara con el tipo VHDL Module que es el modo lenguaje, ademas por default se guardara la hoja dentro de la carpeta del proyecto, al final de la seleccion debemos dar en Next.


El siguiente cuadro que aparecera es en el cual podras añadir tus entradas o salidas; cuando se trabaja con FPGA'S se quiere interactuar con el medio fisico, y estas entradas y salidas nos lo permiten, ya que funcionan como indicadores para iniciar algun proceso, o para encender algo en el medio fisico. Las variables que se usan para procesos dentro del programa se definiran mas adelante.

Port Name: indica el nombre de la puerto que se usara.
Direction: indica si es un puerto de entrada o de salida.
Bus: esta opcion nos permite manejar un conjunto de bits, los cuales son en el rango entre MSB-LSB.


Finalmente es hora de programar, en este primer programa encenderemos un del de nuestro FPGA;


Antes de empezar a describir el codigo hay que mencionar que dentro de VHDL cuando se escribe "--" adelante de alguna palabra, esta sera ignorada por el programa, estos son comentarios, que en ocaciones sirven para describir el codigo.

Ahora analicemos el codigo:
  • Lineas 1-33: en estal lineas el fabricante escribe algunas especificaciones que se ignoran por el programa y aparecen en verde, sin embargo tambien en esta parte se encuentras las librearia(palabras en color rosa) gracias a las cuales es posible hacer operaciones entre muchas otras cosas."
  • Lineas 34-37: en estas lineas de codigo aparecen las entradas que anteriormente definimos, sin embargo en caso de que se requiera quitar alguna, o agregar alguna, se puede hacer sin ningun problema, siempre y cuando se siga el formato.
  • Lineas 39-49: aqui es en donde se escribe la parte logica de nuestro programa.
  • Linea 42: en esta linea se declara un procces, un procces es una herramienta que nos proporciona VHDL para poder programar de una forma secuencial.
  • Lineas 45 y 46: es aqui la parte logica que nos hara prender el led, ya que nos dice que cuando "X0" nuestra entrada, que puede ser un interruptor, un boton, una señal, etc., sea igual a '1', nuestra salida "Y0", la cual sera nuestro led, tambien sera '1', es decir se prendera.
Para lograr mandar y recibir las señales es necesario asignarle a cada una de estas un pin fisico de nuestro FPGA, para hacerlo es necesario ir a la Barra de Herrameintas/ Tools/PlanAhead/ I/0 Pin Planning(PlanAhead) Pre-Synthesis.

Tardara unos cuantos segundos o inclusive minutos, pero se abrira el programa "Xilinx PlanAhead 12.2"



¿Que se necesita para trabajar con una Spartan 3?

Como ya se menciono, el objetivo del blog es crear una especie de guia que les pueda ser de utilidad a todas aquellas personas que al igual que nosotros estan empezando a manejar este tipo de FPGA'S.

Para lograr utilizar este FPGA se necesitan basicamente 3 cosas, la primera es un software llamado "ISE web pack" este software pertenece a la compañia xilinx. Este software es el que te permite programar en lenguage VHDL, durante todas estas practicas estaremos utilzando la version 12.2Si aun no tienes este software,  puedes bajar la version gratuita en la siguiente liga: http: //www.xilinx.com/support/download/index.htm (Ojo!!! el archivo es bastante pesado, me refiero a mas de 2 Gb jaja, asi que no se espanten, tienen que tener mucha paciencia, les recomiendo dejar su computadora conectada a un cable de red e irse a jugar un rato con la 360º).




La segunda cosa que necesitas para trabajar con la Spartan 3, es un software que te permita tener una conexion entre tu codigo en VHDL y la parte física, el software que seleccionamos se llama "Adept" este software pertenece a la compañia Digililent. Mas adelante explicaremos con mas detalle para que nos sirve, por lo pronto denle click Aqui para ir a la pagina de digilent y poder descargarlo.

Por ultimo nos falta una sola cosa y que para mi es lo mas importante, la Spartan 3!!!. En este punto quiero aclarar algu super importante, a pesar de que nosotros usamos la Spartan 3, si cuentan con algun otro tipo de FPGA como una Spartan 2, 3E, etc. La unica diferencia seran el nombre de las entradas y salidas.

Como empezar a programar en VHDL…


El mundo de las FPGA´s es bastante extenso, y que a pesar de que es una tecnologia algo vieja, aun se pueden relizar muchas cosas con estas tarjetas.

Aquí podrán encontrar una gran gana de tarjetas programables con diferentes FPGA, ademas de contar con una gran gama de pogramas ya creados y probados para empezar a irnos familiarizando con programacion en VHDL.
http://digilentinc.com/

Ademas que encontraran todos los drivers necesarios para los cables.