lunes, 30 de abril de 2012

Lenguajes de descripción de hardware. VHDL

Hola a todos! bueno como os comenté en entradas anteriores, hace poco me llegó mi placa con una FPGA Cyclone 2.
Como ya dije, en este tipo de dispositivos, lo que estamos programando es el hardware, es por esto por lo que a partir de ahora no diremos programas, sino diseños. Estos diseños hardware se pueden hacer de diferentes maneras. La primera y más básica es, crear un esquema compuesto por diferentes elementos digitales como puertas, biestables, multiplicadores…, que se comuniquen con las entradas y salidas de nuestra FPGA.
Esta manera, a pesar de que pueda parecer muy visual y sencilla, para diseños que requieran una dificultad mayor es casi que imposible poder realizarlos. Para ello se recurre a los lenguajes de descripción de hardware (Hardware Description Languages, HDL).
Los HDL más utilizados hoy en día son Verilog, y VHDL. Dicen que si sabes VHDL, es muy fácil aprender Verilog, y la verdad es que tienen razón, ya que personalmente empecé a diseñar en VHDL, y si luego ves un programa escrito en verilog lo entiendes perfectamente. Además del lenguaje, necesitas también lo que en microcontroladores llamamos compiladores, que se encargan de pasar nuestro código a código máquina. En este caso, lo que necesitamos son sintetizadores, que lo que harán será transformar nuestro código en HDL, a un esquema hardware.

Este proceso es mucho más complicado que el de los compiladores, es por esto que una sintetización de un código en HDL mediano puede llevarnos varios minutos.
Como ocurre en microcontroladores, cada fabricante tiene su entorno de desarrollo de diseños, los cuales nos permiten diseñar en forma de esquemático, o cualquier HDL. El entorno que provee ALTERA para crear diseños para las FPGAs propias, tales como Cyclone I,II,III,IV,V se llama QUARTUS, y actualmente va por la versión 11.1.
La estructura de los lenguajes HDL no difiere mucho de cualquier lenguaje de programación, en concreto en VHDL podemos encontrar una primera área en donde declaramos las librerías que le van a hacer falta al sintetizador para poder entender nuestro código. A continuación, en una zona que llamaremos entidad (entity) , en la que declararemos las entradas y salidas de nuestro circuito. hay que recordar que se trata de un hardware lo que estamos diseñando, por lo que esta zona será muy importante. Seguido de la entidad, tenemos la arquitectura(architecture), en donde estará el cuerpo del diseño, y que pertenece a una entidad. Una vez dentro de la arquitectura, ya podemos declararnos variables (signals), que nos servirán de apoyo a nuestro diseño.
Poco a poco os iré adentrando un poco más en este mundo de las FPGA, ya que ahora no tengo tiempo de otra cosa debido a que estoy realizando un proyecto, cuyo cerebro principal es una FPGA. Por hoy es suficiente.

No hay comentarios:

Publicar un comentario