Spartan 3
Spartan 3
2018
Alum
nos: Daniel
Daroch
DEDICATORIA
El presente trabajo tiene el propósito de realizar un estudio sobre las FPGAs reconociendo
sus aspectos más importantes a tener en cuenta si una persona quiere empezar a trabajar
con esta tecnología.
INTRODUCCIÓN ...................................................................................................................... 1
OBJETIVO GENERAL................................................................................................................ 2
OBJETIVOS ESPECÍFICOS......................................................................................................... 2
ALCANCE ................................................................................................................................ 2
METODOLOGÍA DE TRABAJO ................................................................................................. 3
CAPÍTULO 1: ESTUDIO DE LAS FPGAS .................................................................................... 4
1. HISTORIA DE LAS FPGA .......................................................................................................... 5
1.1. RESUMEN ........................................................................................................... 5
1.2. ERA DE LA INVENCIÓN (1984 – 1991) ................................................................ 6
1.3. ERA DE LA EXPANSIÓN (1992 - 1999)................................................................. 7
1.3.1. Marketing de Xilinx para el futuro ........................................................ 9
1.4. ERA DE LA ACUMULACIÓN (2000 - 2007) ........................................................ 10
1.5. EL DESPUÉS DE LAS ERAS ................................................................................. 12
1.6. ACTUALIDAD .................................................................................................... 13
1.7. PROYECTO ICESTORM ...................................................................................... 13
CAPÍTULO 2: DESCRIPCION DE LA FPGA............................................................................... 14
2. ¿QUÉ ES UNA FPGA? Y SU UTILIDAD.................................................................................... 15
2.1. DESCRIPCIÓN.................................................................................................... 15
2.2. EL BISTREAM .................................................................................................... 15
2.2.1. Generación del bitstream ................................................................... 16
2.3. ARQUITECTURA DE UNA FPGA......................................................................... 16
2.4. BENEFICIOS Y APLICACIONES DE LA FPGA ....................................................... 22
CAPÍTULO 3: COMPARATIVAS .............................................................................................. 25
3. FABRICANTES DE FPGA Y COMPARATIVAS .......................................................................... 26
3.1. FABRICANTES DE FPGA .................................................................................... 26
3.2. VISTA AL GIGANTE DE LAS FPGA ...................................................................... 26
3.2.1. Comparativa de capacidades .............................................................. 27
3.2.2. Comparativa de precios ...................................................................... 29
3.3. LA IMPORTANCIA DE LA TECNOLOGÍA DE DISEÑO .......................................... 32
3.4. COMPARANDO LOS FABRICANTES ................................................................... 34
CAPÍTULO 4: MICROCONTROLADOR VS FPGA ..................................................................... 38
4. COMPARATIVA CON MICROCONTROLADOR ....................................................................... 39
CAPÍTULO 5: HDL .................................................................................................................. 41
5. LENGUAJE DE DESCRIPCIÓN DE HARDWARE ....................................................................... 42
5.1. INTRODUCCIÓN A HDL ..................................................................................... 42
5.2. VENTAJAS DE HDL SOBRE UN LENGUAJE DE PROGRAMACIÓN ....................... 42
5.3. TIPOS DE HDL ................................................................................................... 42
5.4. VERILOG ........................................................................................................... 43
5.4.1. Introducción a Verilog ......................................................................... 44
5.4.2. Números en Verilog ............................................................................ 45
5.4.3. Tipos de datos ..................................................................................... 45
5.4.4. Operadores ......................................................................................... 46
5.4.5. Procesos .............................................................................................. 48
5.4.6. Módulos .............................................................................................. 49
5.4.7. Estructura de control .......................................................................... 50
5.4.8. Asignaciones ....................................................................................... 51
5.4.9. Temporizaciones ................................................................................. 52
5.4.10. Eventos.............................................................................................. 52
5.4.11. Parámetros........................................................................................ 53
5.4.12. Ejemplos de programación en Verilog .............................................. 53
CAPÍTULO 6: PLACA FPGA .................................................................................................... 56
6. PLACA FPGA ......................................................................................................................... 57
6.1. CARACTERISTICAS GENERALES......................................................................... 57
6.2. CARACTERISTICAS DE LA FPGA XC3S500E........................................................ 57
6.2.1. Tipos de pines ..................................................................................... 58
6.3. COMPONENTES DE LA PLACA .......................................................................... 60
6.3.1. XCF04 Platform Flash .......................................................................... 61
6.3.2. Administrador de energía TPS75003 .................................................. 61
6.3.3. SPI Flash .............................................................................................. 61
6.3.4. DDR SDRAM ........................................................................................ 61
6.3.5. Fuentes de reloj .................................................................................. 62
6.3.6. Programación de la FPGA.................................................................... 62
CAPÍTULO 7: DESARROLLO DEL PROYECTO ......................................................................... 63
7. DESARROLLO DE PROYECTO ................................................................................................ 64
7.1. INTRODUCCIÓN ................................................................................................ 64
7.2. PRENDIENDO UN LED ....................................................................................... 65
7.2.1. Paso a paso ......................................................................................... 65
7.3. UTILIZANDO EL LCD .......................................................................................... 71
7.4. PROYECTO DE ESTACIONAMIENTO.................................................................. 78
7.4.1. Pre desarrollo ...................................................................................... 78
7.4.2. Concepto General ............................................................................... 79
7.4.3. Contador ............................................................................................. 81
7.4.4. Conversión .......................................................................................... 84
7.4.5. LCD ...................................................................................................... 85
7.5. PRUEBAS Y ANÁLISIS ........................................................................................ 87
CONCLUSIONES Y RECOMENDACIONES............................................................................... 88
CUMPLIMIENTO DE LOS OBJETIVOS ........................................................................ 89
RECOMENDACIONES ................................................................................................ 90
CONCLUSIONES ........................................................................................................ 90
BIBLIOGRAFIA ....................................................................................................................... 92
ANEXOS ................................................................................................................................ 94
ANEXO 1: GLOSARIO ................................................................................................ 95
ANEXO 2: CARACTERÍSTICAS TÉCNICAS FAMILIA SPARTAN-3 ................................. 96
ANEXO 3: ARCHIVO UCF DE PROYECTO ESTACIONAMIENTO .................................. 97
ANEXO 4: ESQUEMÁTICO RTL DE PROYECTO ESTACIONAMIENTO ......................... 98
ANEXO 5: ESQUEMÁTICO TECNOLÓGICO DE PROYECTO ESTACIONAMIENTO ....... 99
INDICE DE GRAFICOS
INDICE DE FIGURAS
INDICE DE TABLAS
SIGLA
Aplicación Específica).
Hardware).
Electrica y Electrónica).
Lectura).
Borrable).
VHSIC : Very High Speed Integrated Circuit (Circuito Integrado de Muy Alta
Velocidad).
Hz : Hertz
V : Volts
s : Segundos
INTRODUCCIÓN
Hace unos años atrás todo se centraba en usar los microcontroladores para realizar las tareas
de automatización ya que presentaban grandes ventajas como ser reprogramables, aunque
son más lentos que un ASIC ofrecen una versatilidad al momento de trabajar con ellos.
Pero últimamente hay una tecnología que está cobrando fuerza pese a no ser reciente diversos
factores están provocando que se comiencen a popularizar.
Estamos hablando de las FPGA o matriz de puertas programables (en inglés “Field
Programmable Gate Array”) es un dispositivo programable que en su interior contiene celdas
de lógica cuya interconexión y funcionalidad puede ser configurada mediante un lenguaje de
descripción de hardware (HDL).
Para ello se realizará un estudio de su historia y aspectos más importantes tanto de hardware
como software, además del estudio se realizará una inducción al trabajo con las FPGA, para
concluir al final con un proyecto donde demostrar su efectividad y su versatilidad con
respecto a otras tecnologías.
1
OBJETIVO GENERAL
Efectuar un estudio y montaje con los cuales inducir al lector en el mundo de las
FPGA, además de dar una visión de la utilidad de esta tecnología.
OBJETIVOS ESPECÍFICOS
ALCANCE
2
METODOLOGÍA DE TRABAJO
Para ello se realizará un estudio donde contenga los aspectos más relevantes tanto de software
como de hardware incluyendo por supuesto el desarrollo de su historia, además del estudio
se realizará una inducción al trabajo con las FPGA, para terminar con un proyecto donde
demostrar su efectividad y su versatilidad con respecto a otras tecnologías.
Con el escrito que vamos a generar va a resultar sumamente fácil poder meterse de lleno en
el mundo de las FPGA y para que en un futuro cualquier estudiante pueda tomar el tema y
desarrollarlo en mayor profundidad.
Si comparas dos cosas desconocidas es realmente difícil tener una clara apreciación de las
ventajas de una cosa u otra.
Se establecerá este tipo de comparativa debido a que los microcontroladores ya son conocidos
para cualquier persona dentro del área de la tecnología, y esto hace mucho más fácil tener
una visión de sus ventajas y desventajas, pero no va a bastar solo con una idea teórica de sus
ventajas por eso surge lo del montaje
Vamos a crear un documento con la información necesaria sobre las FPGA para que un
técnico de la carrera sea capaz de usarla.
3
CAPÍTULO 1: ESTUDIO DE LAS FPGAS
4
1. HISTORIA DE LAS FPGA
1.1. RESUMEN
La FPGA desde sus comienzos ha pasado por diversas modificaciones que han dado paso al
producto que conocemos hoy en día, en este capítulo se revisará el desarrollo de las FPGA
desde su creación hasta la situación de las mismas en este 2018.
Se considera que las FPGA han pasado por 3 etapas o “eras” las cuales consideran un gran
cambio que ha ocurrido en ese periodo para las fabricantes de estas tarjetas, las eras
consideradas abarcan desde 1984 hasta 2007 cuyo periodo fue continuamente cambiante para
el sector.
En la imagen se puede ver los atributos de las FPGA relativos a 1988 publicados por Xilinx
donde se consigue apreciar la evolución de la tecnología de FPGA. La capacidad es el número
de céldas lógicas, la velocidad es el rendimiento, el precio está considerado por cada celda
lógica y la energía también por celda lógica. La evolución que han tenido estas tarjetas en
más de 30 años vamos a verla lo más detalladamente en éste capítulo.
La continua modificación a la que se vio sometido el sector se vieron impulsados por el alza
de la tecnología de proceso, también la Ley de Moore y sus efectos han impulsado cambios
cualitativos en la FPGA.
5
Toda la información de software de las FPGA es privada, los fabricantes tienen control total
de ellas por eso en este capítulo también se incluye un hito importante que abrió estas
tecnologías al uso libre de la humanidad, este fue el llamado proyecto IceStorm.
Las FPGAs fueron creadas en 1984 por Ross Freeman y Bernard Vonderschmidt,
cofundadores de Xilinx. Las FPGA son resultado de la unión de los PLDs y los ASIC.
La primera FPGA creada fue el Xilinx XC2064 cuyas características eran: 64 bloques lógicos
complejos (CLB), en una cuadrícula de 8x8, 18MHz, 58 I/O pins, tenía 1200 puertas y un
circuito integrado muy grande. La tecnología de proceso de 2,5 micrones apenas pudo
producirse. La contención de costos (procedimiento que consiste en mantener los costes de
una organización dentro de un presupuesto establecido restringiendo los gastos para tratar de
conseguir los objetivos financieros previamente fijados) fue indispensable para el éxito de
las FPGA.
El tamaño de matriz y costo por función fue algo vital. El XC2064 era realmente algo
insignificante comparado con los chips de FPGA que hay en la actualidad, pero en ese
entonces tenía un valor de cientos de dólares.
Las FPGA basados en memoria estáticas eran reprogramables y requerían una PROM externa
para almacenar la programación cuando la alimentación estaba apagada. La reprogramación
no se consideraba un activo y Xilinx lo minimizó para evitar las preocupaciones de los
clientes sobre lo que sucedió con su lógica luego de desalimentar.
El antifusible desarrollado por Actel era una estructura de transistor único. El ahorro de área
de los antifusibles sobre las celdas de memoria era ineludible. Actel lo llevó al mercado y en
1990 el FPGA de mayor capacidad fue el Actel 1280. Quicklogic y Crosspoint siguieron a
Actel y también desarrollaron dispositivos basados en las ventajas de la tecnología
antifusibles.
A finales de la era de la invención los cables largos y lentos se reemplazaron por conexiones
cortas entre bloques adyacentes que se podían unir según las necesidades mediante la
programación para formar rutas de enrutamiento más largas.
6
La Era de la Invención terminó con un desgaste brutal en el negocio de las FPGA. Muchas
de las compañías simplemente desaparecieron, otros vendieron sus activos al salir del
negocio de las FPGA. Hubo cambios importantes en la tecnología y las compañías que no
aprovecharon estos cambios no pudieron competir. Los cambios cuantitativos debido a la
Ley de Moore dieron como resultado cambios cualitativos en los FPGA construidos con
tecnología de los semiconductores.
La era de la expansión podemos resumirla como el periodo donde las fabricantes de FPGA
comenzaron a abordar el problema del tamaño, como resultado la complejidad del diseño se
volvió clave. Esto significó un gran cambio para las FPGA que había hasta aquel momento
ya que provocó el nacimiento del Lenguaje de Descripción de Hardware (HDL), el método
utilizado anteriormente eran herramientas en las cuales se designaban lugar y ruta.
Eso es, en resumen, pero viendo con más detalle lo que sucedió comenzamos con señalar el
desarrollo rápido que tuvo la Ley de Moore a lo largo de la década del 1990 duplicando la
cantidad de transistores cada dos años. Las compañías de FPGA pioneras del modelo de
negocio fabbles (fabricante de semiconductores que carece de fábrica para las obleas de
silicio) por lo cual las compañías no podían conseguir tecnología de silicio de vanguardia
para esos años. Cada nueva generación de silicio duplicó el número de transistores
disponibles, lo que duplico el tamaño del FPGA más grande posible y redujo a la mitad el
costo por función. En la imagen se refleja el crecimiento de las LUT y los cables de
interconexión.
7
máximo 10000 puertas. En 1999 el Virtex XCV1000 fue calificado en un millón. A principios
de la década de 1990 se prefería la ubicación y el enrutamiento automáticos, pero a finales
de la década la síntesis automatizada, la colocación y el enrutamiento eran pasos necesarios
en el proceso de diseño.
Los bloques lógicos en la era de la invención eran pequeños y simples, esto resultaba
atractivo porque su retraso lógico era corto. Las LUTs eran poco eficiente ya que no se
utilizaban todas las celdas de memorias en ellas. Para funciones más grandes, la necesidad
de conectar varios bloques pequeños genera una mayor demanda en la interconexión. En la
Era de la Expansión, no solo había más bloques lógicos, sino que los bloques mismos se
volvieron más complejos.
De estas tecnologías sólo el antifusible fue considerado como una opción válida, aunque para
cuando se consiguió adaptar tenían que ser el doble de eficientes que las SRAM solo para
mantener la paridad del producto. Además, la falta de reprogramación se volvió una
necesidad al momento de que los clientes utilizaban las FPGA SRAM comenzaron a valorar
las ventajas de la programabilidad en el sistema y la actualización del hardware.
Las arquitecturas basadas en LUT eran objetivos fáciles para las herramientas de síntesis. En
un principio los proveedores de síntesis señalaban que una FPGA era incompatible con la
síntesis. Esto ocurrió en un principio porque las herramientas de síntesis eran desarrolladas
inicialmente para apuntar a los ASIC que tenían una arquitectura diferente a las FPGA. Esto
cambió a mediados de 1990 cuando los mapeadores LUT específicos explotaron la
simplicidad de mapear funciones arbitrarias en LUTs.
La Ley de Moore aumentó rápidamente la capacidad de los FPGA, lo que generó una
demanda de automatización del diseño y permitió una segmentación de interconexión más
8
prolongada. Las arquitecturas demasiado eficientes que no podían ser automatizadas
efectivamente simplemente desaparecieron.
Podemos observar en la imagen el Virtex 1000, el FPGA más grande disponible en ese
momento, es representado como el pequeño rectángulo negro en la parte inferior
izquierda. La imagen muestra la expectativa de que la era de la expansión continuara sin
disminuir, aumentando el número de puertas a 50 millones en los siguientes cinco años. Esto
no sucedió, a pesar del progreso inquebrantable de la Ley de Moore. En la era de la
acumulación veremos la razón.
9
1.4. ERA DE LA ACUMULACIÓN (2000 - 2007)
Al comienzo del nuevo milenio los FPGA eran componentes comunes de los sistemas
digitales. La capacidad y el tamaño del diseño estaban creciendo y las FPGA habían
encontrado un gran mercado en la industria de las comunicaciones de datos. La caída de las
punto-com a principios de la década de 2000 creó una necesidad de un menor costo.
Al igual que en la era de la expansión, el ritmo inexorable de la Ley de Moore hizo que los
FPGA fueran cada vez más grandes. Ahora eran más grandes que el tamaño del problema
típico. No hay nada malo en tener una capacidad superior a la que se necesita, pero tampoco
hay nada particularmente virtuoso en ella. Como resultado, los clientes no estaban dispuestos
a pagar una gran prima por el mayor FPGA.
El aumento de la capacidad por sí solo tampoco fue suficiente para garantizar el crecimiento
del mercado. El hecho que había generado un producto exitoso en la era de la expansión
atrajo menos clientes en los años siguientes.
Los proveedores de FPGA tomaron decisiones diferentes para la gama baja y alta del
mercado. En el caso de la gama baja se centraron en la eficiencia y produjeron familias de
“bajo costo” de menor capacidad y rendimiento donde podemos encontrar: Spartan de Xilinx,
Cyclone de Altera y EC/ECP de Lattice.
En el caso de la gama alta la decisión fue facilitar que los clientes llenen las espaciosas
FPGAs. Produjeron bibliotecas de soft logic para funciones importantes. Las funciones
lógicas más notables fueron los microprocesadores (Xilinx MicroBlaze y Altera Nios)
controladores de memorias y varios protocolos de comunicaciones.
Las características de los diseños cambiaron en los años 2000. Los grandes FPGA admitían
grandes diseños que eran subsistemas completos. A medida que el FPGA creció como una
fracción de la lógica general del sistema del cliente, su costo y potencia aumentaron en
consecuencia. Estos problemas se volvieron mucho más importantes de lo que eran en la Era
de la Expansión.
La presión para adherirse a los estándares, disminuir el costo y la potencia llevó a un cambio
en la estrategia de arquitectura de simplemente agregar lógica programable y montar la Ley
de Moore, como se hizo en la Era de la Expansión, a agregar bloques lógicos dedicados. Estos
bloques contenían memorias grandes, microprocesadores, multiplicadores, e/s flexibles y
transceptores sincrónicos de origen. Para las aplicaciones que los usaron, redujeron la
sobrecarga de programación en área, rendimiento, potencia y esfuerzo de diseño.
10
expansión se observa que ya no existe la referencia a los millones de puertas, esto cambia su
enfoque hacia los bloques dedicados de alto rendimiento.
Pero con esto volvemos al mismo problema que había anteriormente ¿Qué sucede con los
clientes que no necesita todas las herramientas que se les ofrecen? Al principio los
proveedores de FPGA intentaron asegurarse de que esas funciones pudieran usarse para la
lógica si no se necesitaban para su propósito principal. Pero estas medidas fueron
consideradas como poco importantes. Con esto se aceptó el hecho de que habría funciones
desperdiciadas, un vicepresidente de Xilinx comentó que proporcionaría cuatro procesadores
Power-PC en una FPGA y no le importaba si los clientes no utilizaban ninguno de ellos. "Les
damos los procesadores de forma gratuita”.
11
1.5. EL DESPUÉS DE LAS ERAS
Al final de la Era de la Acumulación, los FPGA no eran matrices de puertas, sino colecciones
de bloques acumulados integrados con la lógica programable. Todavía eran programables,
pero no estaban restringidos a la lógica programable. Las dimensiones adicionales de la
capacidad de programación adquiridas en la era de la acumulación agregaron una carga de
diseño. El esfuerzo de diseño, una ventaja para los FPGA en su competencia con ASIC, fue
una desventaja en la competencia con los procesadores de múltiples núcleos recién llegados
y las GPU.
Los nuevos FPGA tenían nuevos requisitos de diseño, era programables por hardware y por
software. El microprocesador ahora incluye un entorno con cachés, buses, Network-on-Chip
y periféricos. El software incluye sistemas operativos, compiladores y middleware. Era un
ecosistema completo a diferencia de un bloque de funciones integrados que contenía
antiguamente.
Los sistemas completos requieren interfaces de señal mixta para la interfaz en el mundo
real. Estos también monitorean el voltaje y la temperatura. Todo esto es necesario para que
el FPGA sea un sistema completo en un chip. Como resultado, los FPGA han crecido hasta
el punto en que la matriz de la puerta lógica suele ser menos de la mitad del área. En el
camino, las herramientas de diseño FPGA han crecido para abarcar el amplio espectro de
problemas de diseño.
Costo, la capacidad y la velocidad eran precisamente aquellos atributos en los cuales los
FPGA estaban en desventaja con respecto al ASIC en los años 80 y 90. Sin embargo,
prosperaron. Un enfoque limitado en esos atributos sería erróneo, al igual que el enfoque
limitado de las compañías ASIC en los años 90 los llevó a subestimar los FPGA. La
programabilidad le dio a los FPGA una ventaja a pesar de sus inconvenientes.
12
1.6. ACTUALIDAD
Después de ver toda la historia de las FPGA la pregunta es ¿Cómo están actualmente?
Observando que grandes empresas han puesto sus ojos sobre estos chips siendo la mayor
noticia la compra de Altera por parte de Intel en 16700 millones de dólares demuestra la
importancia que se espera tomen las FPGA en un futuro no muy lejano.
Microsoft ha presentado este año el primer modelo de hardware acelerado donde presentan
como una de las características su capacidad de actuar como un acelerador de cómputo local,
un procesador en línea o un acelerador remoto para computación distribuida. Si las cosas
salen tan bien como se prevea en el futuro las FPGA pueden convertirse en un elemente
esencial en cada equipo de procesamiento.
Las FPGA son una tecnología privada donde existen pocos fabricantes y el software es de su
total pertenencia, las empresas de FPGA buscaban tener el control total sobre ellas. Hasta
hace poco se desconocía totalmente el formato del bitstream y del software en general, pero
esto cambió en marzo del 2015 cuando Clifford Wolf un profesor universitario austriaco
realizó ingeniería inversa a la familia ICE40 de Lattice y liberó la primera toolchain de
herramientas para a través de Verilog conseguir el bitstream y su posterior carga para la
configuración de la FPGA. Ahora las empresas de FPGA ya no poseían el poder total sobre
las aplicaciones para los chips cada usuario sólo necesitaba comprar la tarjeta y conseguía
control total para usar todas sus posibilidades.
Aunque esto es solo el primer paso ya que las tarjetas que se encuentran liberadas son
pequeñas y su uso se limita a experimentos domésticos o de laboratorio.
13
CAPÍTULO 2: DESCRIPCION DE LA FPGA
14
2. ¿QUÉ ES UNA FPGA? Y SU UTILIDAD
2.1. DESCRIPCIÓN
La FPGA tiene una arquitectura que se basa en CLBs, donde se realizan las funciones lógicas.
Las FPGA tienen interconexiones programables que son las que construyen los circuitos que
hemos desarrollado esas interconexiones son activadas a través del bitstream que le designa
el estado on/off al cable.
2.2. EL BISTREAM
Es la información para los bits de configuración se transmite por un bus serial que contiene
toda la información para cada punto de configuración, esta tira de bits se llama bitstream
cuyo origen viene desde el software.
15
2.2.1. Generación del bitstream
Vimos anteriormente que el bitstream es un tramo de datos que se transportan por un bus
serial a cada punto de configuración dentro del chip. Pero la pregunta es ¿Cómo se generan
estos bitstream de qué manera nosotros definimos la conexión de cientos de miles puntos
configurables? La respuesta es simple, esto se realiza a través de las siguientes etapas:
Es complicado referirse a este tema como un concepto general, ya que cada compañía
presenta sus propias arquitecturas y se encuentran en constante desarrollo.
Básicamente en una FPGA la lógica se divide en un gran número de bloques lógicos, estos
bloques se encuentran distribuidos a través de todo el chip en una infinidad de
interconexiones programables, en los márgenes del chip se forma una fila de IOBs. En esta
sección se describirá la arquitectura de la familia Spartan 3E de Xilinx, debido a que será la
FPGA a utilizar para la implementación.
16
Figura 2-3. Arquitectura Spartan-3E.
Fuente: Xilinx. Spartan-3E FPGA Family Data Sheet. [PDF]. Estados
Unidos, 19 de Julio de 2013. [Consulta: 14 de Noviembre de 2018].
Se puede identificar cuatro elementos que son a grandes rasgos los componentes más
importantes y ahora veremos más en profundidad que es cada uno.
En el caso de la familia Spartan-3E cada CLB contiene cuatro slices, y cada slice contiene
dos tablas de consulta (LUT) para implementar la lógica y dos elementos de almacenamiento
dedicados que se pueden usar como flip-flops o latches. Los LUT se pueden usar como una
memoria 16x1 o como un registro de desplazamiento de 16 bits, y los multiplexores
adicionales y la lógica de transporte simplifican las funciones de lógica amplia y aritmética.
La lógica de propósito más general en un diseño se asigna automáticamente a los recursos de
la porción en los CLB.
Slices: Cada CLB comprende cuatro slices interconectados. Estos slices se agrupan en pares.
Cada par está organizado como una columna con una cadena de acarreo independiente. El
par izquierdo admite funciones lógicas y de memoria y sus slices se denominan SLICEM. El
par derecho admite solo la lógica y sus slices se denominan SLICEL. Por lo tanto, la mitad
de las LUT admiten tanto la lógica como la memoria mientras que la mitad solo admite la
lógica, y los dos tipos se alternan en las columnas de la matriz.
17
Tanto SLICEM como SLICEL tienen los siguientes elementos en común para proporcionar
funciones de lógica, aritmética y ROM:
18
Esta tabla de verdad define efectivamente cómo se comporta su lógica combinatoria, que son
celdas de memoria SRAM volátiles y multiplexores para seleccionar la salida.
En otras palabras, cualquier LUT puede implementar cualquier comportamiento que se
obtenga al interconectar cualquier cantidad de puertas (como AND, NOR, etc.).
Hay bloques específicos dedicados al control de reloj, estos son los DLL (Delay Locked
Loop). Estos bloques se ocupan de sincronizar el reloj interno al reloj externo del sistema,
además controlan el desplazamiento de fase entre los relojes, sincronizan los diferentes
dominios de reloj y aseguran un retardo de distribución del reloj pareja para la lógica interna
de la FPGA.
-Eliminación del desalineamiento de la fase cero (skew). Esto se refiere a en qué grado las
señales de reloj pueden desviarse del alineamiento de la fase cero. Esto ocurre cuando
pequeñas diferencias en los retardos de las rutas causan que la señal de reloj llegue a
diferentes puntos del circuito en tiempos diferentes. Este desalineamiento de reloj puede
incrementar los requerimientos del tiempo de establecimiento y de retención, lo que puede
perjudicar al desempeño de aplicaciones de alta frecuencia. El DCM se encarga de alinear la
19
salida de la señal de reloj que genera con otra versión de la misma señal que es
retroalimentada. Así se establece una relación de cero desfases entre ambas señales.
-Síntesis de frecuencia: Con una señal de reloj de entrada, el DCM puede generar diferentes
frecuencias de salida. Ello se logra multiplicando y/o dividiendo la frecuencia del reloj de
entrada.
Interconexiones: Para que una FPGA pueda implementar los circuitos lógicos programados
por el usuario, los bloques lógicos y de entrada/salida no solo deben configurarse
adecuadamente, sino que también deben conectarse entre sí. La estructura de interconexión
interna de una FPGA consiste en un conjunto de conexiones o trazas que pueden conectarse
mediante elementos de paso programables. Las herramientas de “particionado, localización
e interconexión” son las encargadas de decidir en qué elementos lógico se implementará la
lógica diseñada por el usuario y como deben programarse las interconexiones para que el
diseño funcione según las especificaciones de tiempo y retardo que se han definido.
La interconexión es la red programable de vías de señal entre las entradas y salidas de los
elementos funcionales dentro del FPGA, como IOB, CLB, DCM y bloque de RAM. Las
conexiones a los CLB adyacentes permiten optimizar los diseños al evitar los retardos y la
utilización de recursos de la matriz general de interconexionado.
20
verticales y hacia los CLB. A través de ellos se configuran las conexiones entre CLBs no
adyacentes y hacia los bloques de entrada/salida.
IOB (Input output blocks): El bloque de entrada/salida (IOB) proporciona una interfaz
programable, unidireccional o bidireccional entre un pin del paquete y la lógica interna del
FPGA.
Cada uno tiene sus elementos de almacenamiento que pueden actuar como registros, los
cuales permiten controlar mejor la entrada y salida.
La tarea principal de este bloque es el de conducir las señales al nivel apropiado de tensión
para que cada pin pueda ser configurado como entrada, salida o bidireccional. Cada bloque
de entrada/salida tiene una resistencia de pull-up y pull-down.
Los pines I/O tienen un buffer de salida tri-estado que puede ser controlado por señales
internas. La señal de entrada del IOB se dirige al módulo de enrutamiento con el fin de que
se encamine al bloque lógico apropiado.
21
Figura 2-9. Bloques de entrada y salida Spartan-3E.
Fuente: Xilinx. Spartan-3E FPGA Family Data Sheet. [PDF]. Estados
Unidos, 19 de Julio de 2013. [Consulta: 14 de Noviembre de 2018].
En esta sección el objetivo es ver algunos de los beneficios de estos chips y sus principales
aplicaciones a nivel mundial. A nivel local esta tecnología es bastante desconocida, incluso
entre profesionales del área en gran parte sólo habrán escuchado el nombre FPGA sin mayor
conocimiento sobre esta tecnología, al ser un país con retraso tecnológico seguramente
tardará un par de años más conseguir popularizar estos chips.
A continuación, veremos algunos de los motivos por los cuales se han popularizado:
-El primer punto es el rendimiento, las FPGA se aprovechan del paralelismo del hardware,
los FPGAs sobrepasan la potencia de cómputo de los procesadores digitales de señales la
ventaja resulta aplastante en este caso, la ejecución secuencial que caracteriza a los
dispositivos procesadores no pueden hacer nada contra la velocidad que puede proporcionar
una FPGA. El controlar entradas y salidas (E/S) a nivel de hardware ofrece tiempos de
22
respuesta más veloces y funcionalidad especializada que coincide con los requerimientos de
una aplicación.
-Como segundo punto tenemos el tiempo que demora en llegar al mercado, este punto se
refiere a que el desarrollo de prototipos tiene una gran flexibilidad y con una velocidad que
permite llegar a tiempo al mercado. Se puede probar conceptos o ideas en hardware si tener
la necesidad de hacer el largo proceso de fabricación que realiza un ASIC. El aumento en
disponibilidad de herramientas de software de alto nivel disminuye la curva de aprendizaje
con niveles de abstracción. Estas herramientas frecuentemente incluyen importantes núcleos
IP (funciones pre-construidas) para control avanzado y procesamiento de señales.
-Como tercer punto más importante aparece el precio, quizá este punto sea el que genere más
dudas debido a los costos de compra que se conocen sobre las FPGA donde el software es
bastante caro, pero en comparación con otras tecnologías esto no es realmente cierto, ya que
te ofrece un trabajo más eficiente para la labor que se requiere a un precio menor (obviamente
hablando a niveles más avanzados). También es importante considerar que la naturaleza
programable del silicio implica que no haya precio de fabricación o largos tiempos de
ensamblado. Los requerimientos de un sistema van cambiando con el tiempo, y el precio de
cambiar incrementalmente lo diseños FPGA es insignificante al compararlo con el precio de
implementar cambios en un sistema no reprogramable.
-La fiabilidad de funcionamiento, esto implica que las herramientas de software ofrecen un
entorno de programación, mientras los circuitos de un FPGA son una implementación segura
de la ejecución de un programa. Los sistemas basados en procesadores suelen implicar varios
niveles de separación para ayudar a programar las tareas y compartir los recursos entre varios
procesos. El núcleo de un procesador ejecuta una instrucción a la vez y existe el riesgo que
en esos sistemas las tareas se obstruyan entre sí. En cambio, un FPGA que no necesita sistema
operativo, ejecutan tareas de forma paralela sin riesgo de obstrucción, además de tener el
hardware preciso para realizar cada tarea.
-El último punto que se le destaca a la FPGA al ser reprogramables, pueden mantenerse al
tanto con modificaciones a futuro que pudieran ser necesarias. Mientras el producto o sistema
se va desarrollando, se le puede implementar mejoras funcionales sin la necesidad de invertir
tiempo rediseñando el hardware o modificando el diseño de la placa.
Aplicaciones de la FPGA: Hay múltiples áreas en las que actualmente se usan las FPGA
desde dispositivos electrónicos hasta aplicaciones en ámbito aeroespacial.
-Automotor -Bioinformática
23
-Centro de datos -Computación de alto rendimiento
Es llamativo que las FPGA después del declive que tuvieron en el año 2000 actualmente
tenga presencia en todas las áreas mencionadas. Flexibilidad, velocidad, integración y
reducción en costos totales son el lema para el uso de las FPGA.
24
CAPÍTULO 3: COMPARATIVAS
25
3. FABRICANTES DE FPGA Y COMPARATIVAS
3.1. FABRICANTES DE FPGA
El número de empresas que se dedica al negocio de las FPGA son limitadas, son pocas las
que quedan desde su creación hasta hoy, muchas han caído por no poder adaptarse al mercado
y sólo las más consistentes conseguirán ver el crecimiento final de esta tecnología.
Los dos gigantes del sector Xilinx y Altera, también tenemos la compañía de la cual se liberó
los primeros programas de software gratuito para FPGA Lattice Seminconductors y otras
como Microsemi, Quicklogic, Cypress PSoC, entre otros.
En esta sección se verá el resultado de la evolución de las FPGA en la compañía formada por
los creadores, observar características técnicas de los modelos más importantes y comparar
precios entre ellos.
Pueden surgir varias preguntas ¿Por qué Xilinx? ¿No sería mejor ver un poco de todas las
empresas para saber cómo están en general las FPGA?
Bueno la verdad es que Xilinx es la compañía más grande del negocio incluso aún se
mantiene por sobre Altera después de que Intel lo haya adquirido. Xilinx es la mejor
representación de las FPGA y cómo se han desarrollado desde sus inicios; tienen una
variedad de productos muy interesantes que vale la pena ver ya que abarca todo tipo de
clientes y esto no es una exageración, la gran variedad de desarrollo que presentan es algo
que realmente llama la atención y al revisarlo se puede tener una visión clara de la diferencia
en las capacidades de las familias de gama baja con las de media y alta. Y también
obviamente la diferencia de precios que conlleva la diferencia en las capacidades de cada
chip. Después de todo, como estudiantes nos interesa principalmente la tecnología más barata
que está más orientada a ese tipo de cliente, pero siempre es importante saber cómo va el
desarrollo actual de la mejor tecnología.
Xilinx es la compañía fundada por Ross Freeman, Bernie Vonderschmitt y Jim Barnett
creadores de la FPGA en 1984 mismo año que fundarían la compañía. Tienen sede en San
José, California.
Trabajan con cuatro líneas familiares que se separan para suplir una porción del negocio
siendo la familia Virtex de gama alta, los dispositivos de esta serie están destinados a ocupar
las labores que requieran un mayor rendimiento, esta familia es la que va orientada a
aplicaciones de nivel más avanzado.
La familia Kintex de gama media con un rendimiento menor al de la Virtex, pero con precios
menores y consumo menor.
26
Y luego se encuentran las familias de gama baja Spartan y Artix. La familia Artix está
diseñada para atender las necesidades de factor pequeño y de rendimiento de bajo consumo
de energía de los equipos de baterías portátiles de ultrasonido, control de lente de la cámara
digital comercial, aviónica militar y equipo de comunicaciones. La serie Spartan está dirigida
a aplicaciones con una huella de baja potencia, sensibilidad extrema y de alto volumen; por
ejemplo pantallas, decodificadores, routers inalámbricos y otras aplicaciones.
Es un poco complicado hacer este tipo de sección ya que como veremos en la imagen cada
familia posee diferentes categorías. Esta sección va a ir orientada a comparar las categorías
de una “generación”, en este caso se usará como referencia las series 7 de cada familia.
Ahora compararemos las características técnicas de las 4 familias, para poder clarificar y
tener una mirada más subjetiva sobre las diferencias entre las familias. Se verá que cada
versión trae varios chips de diferentes capacidades.
27
Tabla 3-2. Artix-7 características técnicas.
Fuente: Xilinx. Programmable 7 series product selection guide.
[PDF]. Estados Unidos. [Consulta: 15 de Noviembre de 2018].
Cada familia de FPGAs de Xilinx tiene diversos chips, ya que van orientado a satisfacer
diferentes clientes, las familias de gama baja Spartan y Artix no difieren mucho en sus
características técnicas ni al sector de público que va dirigido, ya que después de todo son
limitadas como para realizar trabajos más complejos.
28
Tabla 3-4. Virtex-7 características técnicas.
Fuente: Xilinx. Programmable 7 series product selection guide.
[PDF]. Estados Unidos. [Consulta: 15 de Noviembre de 2018].
La diferencia entre cada familia es notoria. Virtex es la familia insignia de Xilinx, es el que
se busca conseguir lo más capacitado posible. En las familias de gama baja y media se regula
la arquitectura para conseguir un producto que no supere ciertos estándares, el objetivo es
conseguir que cualquier usuario pueda conseguir una FPGA.
Es difícil comparar precios en estos casos, ya que cuando se requiere una FPGA para motivos
universitarios o ensayos domésticos lo que importa realmente es comprar una placa con todo
el circuito integrado alrededor del chip y eso afecta en gran parte el precio de adquisición,
los precios de estas placas no son lineales. Xilinx trabaja en conjunto con una empresa
llamada Digilent Inc. La cual construye casi todas las placas que presentan a la venta, son
empresas socias. Digilent presenta una diversa cantidad de diseños para las placas, donde sin
ir más allá se encuentran las familias Basys, Nexys, Arty entre otras. Por ello la comparativa
de precios se establecerá de acuerdo a los chips únicamente proveídos por una de las
empresas distribuidoras socias de Xilinx, Digi-Key Electronics.
Incluso el chip se puede dividir por categorías, Xilinx utiliza el siguiente modelo para la
numeración de los chips, es igual para cada uno hasta las celdas lógicas después el precio
comienza a variar dependiendo del grado de temperatura, grado de velocidad, etc.
29
Figura 3-2. Información de pedido del dispositivo.
Fuente: Xilinx. Programmable 7 series product selection guide. [PDF].
Estados Unidos. [Consulta: 15 de Noviembre de 2018].
Spartan 7
Número de Pieza XC7S6 XC7S15 XC7S50 XC7S75 XC7S100
Artix 7
Kintex 7
30
Virtex 7
¿Se nota la diferencia? Para las FPGA de gama baja hay modelos que son sumamente
accesibles para cualquier usuario, cada modelo tiene chips para cada uno de los ambientes y
con las diferentes construcciones.
Es bastante marcado la diferencia de precios para cada una de las gamas, se observa
claramente la orientación para cada familia, lo cual es el objetivo de Xilinx para poder
competir en el mercado. Proporcionar para cada tipo de cliente la FPGA con las cualidades
necesitadas.
Ahora veremos la diferencia de precio de algunos modelos con placa o sin ella:
La Basys 3 una de los modelos de placa de Digilent tiene montado un chip Artyx-7
XC7A35T-1CPG236C. El valor del conjunto es de $149, mientras que únicamente el chip
tiene un valor de $40. En este caso la placa tiene un valor añadido claramente superior al de
la propia FPGA.
31
Un segundo caso es el del modelo Nexys Video de Digilent que utiliza un chip Artix-7 al
igual que el anterior de numeración XC7A200T-1SBG484C donde el valor del chip es de
$227 y el de la placa en conjunto $490.
La técnica actualmente permite crear transistores imposibles de ver para el ojo humano, se
necesita utilizar un microscopio para poder observarlos.
¿Qué tipo de ventajas trae reducir el tamaño de los transistores? Son varias, aunque ya se
puede deducir de cuales se trata. El tamaño para la fabricación esto permite diseñar equipos
electrónicos con mayor eficiencia y un tamaño físico más reducido. El rendimiento y
consumo de energía son menores, aunque las estadísticas no mejoran de forma lineal al
tamaño de los transistores.
Esto se repite cada vez que evoluciona el tamaño de los transistores utilizados en los chips,
se muestra en la siguiente gráfica un ejemplo de la evolución del nanómetro en Intel, una de
las empresas tecnológicas más importantes a nivel mundial.
32
claramente la evolución que se espera para los próximos años proyectos en los que ya se ha
comenzado a trabajar.
33
3.4. COMPARANDO LOS FABRICANTES
Vamos a realizar una comparación de los aspectos más importantes a tener en consideración
cuando se quiera “afiliar” a alguna de las 3 compañías que van a estar en debate.
¿Por qué solo estas 3? Altera y Xilinx son por gran margen las empresas más importantes del
sector, por lo cual lo más común es buscar la adquisición de un producto producido por una
marca que de confianza. Y Lattice es la compañía que produce la familia ICE-40, de la cual
se consiguió la creación de los primeros softwares libres.
En este punto se utiliza la comparación de HDL pero cada compañía tiene otro tipo de formas
para el diseño de sus circuito, por ejemplo la opción esquemática siempre está. Al principio
puede ser lo más fácil, pero se considera una mala costumbre el aprender con ese tipo de
diseño. Lo que realmente importa cuando se quiere trabajar con las FPGA son los lenguajes
de descripción de hardware que tenga disponible.
Los softwares mencionados son los necesarios para operar una FPGA de base; Xilinx y
Altera presentan otras versiones que pueden irse complementando con la de base mientras
más avanzado necesiten que sea el software. Para el caso de Lattice el Diamond Design Suite
es el principal, pero atiende unas familias en específico y así para los otros softwares.
Como se mencionaba anteriormente en el caso de Xilinx y Altera estos son los softwares de
base (obviamente considerando que son de pago por ende son más completos que la versión
gratuita), ambos tienen una versión gratuita que sirve para probar la placa y en caso de
FPGAs de bajo costo su funcionalidad debería ser suficiente.
34
Lattice presenta un software gratuito temporalmente que es el Radiant, uno gratuito
permanente el iCEcube2 y un software de pago el Diamond. Puede resultar raro que haya
un software de pago y como se mencionaba anteriormente sólo atiende unas familias, pues
claro obviamente esas son las familias principales, los otros dos atienden básicamente a la
familia ICE40.
Esto también afecta a las FPGA, es un problema para el cliente que haya comprado una FPGA
hace un tiempo y ahora el software ya no le de soporte o quiera comprar una del mismo
modelo de la que tenía, pero el producto ha sido descontinuado.
Comenzando por Lattice, esta empresa presenta una página con todos sus productos
descontinuados y la información de donde puede ser adquirido en caso de querer adquirirlo.
Y señala que todos los modelos en la lista presentan soporte con la versión gratuita de Lattice
Diamond Design Software, es por ello que se evalúa como excelente su trabajo en este
ámbito.
Xilinx presenta a los clientes un listado con todos los modelos para los cuales el software
actual no presenta soporte y a que versión anterior deben recurrir para usarla. Si bien están
todas las versiones anteriores disponibles para su descarga el hecho de que las últimas
versiones de Vivado vayan dejando de lado el soporte a las versiones anteriores representa
un problema sobre todo para la gente que quiera adquirir la versión de pago. Sin mencionar
que incluso para las familias principales (Virtex y Kintex) esto también sucede y tener una
tarjeta del precio que valen no resulta conveniente utilizarlas con una versión gratuita.
35
Altera Xilinx Lattice Semiconductors
Facilidad de Posible en tiendas Posible en tiendas Adquisición local
Adquisición limitadas con opciones limitadas con imposible -
muy limitadas en el opciones muy Internacional
área local - limitadas en el área costeando gastos de
Internacionalmente local - envío y con espera
costeando gastos de Internacionalmente considerable
envío y con espera costeando gastos de
considerable envío y con espera
considerable
Vamos a ver uno por uno la compañía con sus distribuidores y que tienda nos encontramos
en Chile que nos pueda proveer de esos productos. No se considera el tiempo, ya que cuando
se realiza la cotización es una información que te entregan una vez cancelado el producto.
El costo de envío más el tiempo de espera que va desde las 2 semanas aproximadamente
hacen complicado la adquisición de una tarjeta. En Chile hay algunas empresas de productos
electrónicos que tienen FPGAs en stock como MCI Electronics y Rs Components pero son
en cantidades mínimas y obligan a elegir entre una cantidad de productos limitados, además
solo poseen algunos productos de Xilinx y Altera.
Obviamente las distribuidoras no son las únicas empresas donde podemos encontrar FPGAs,
solamente son las oficiales de cada fabricante de estos chips.
Siempre hay empresas alternativas donde se pueden encontrar ofertas, pero hacer referencias
a ellas es algo complicado ya que son poco estables y no representan tampoco una
confiabilidad absoluta en caso de falla o de cualquier otro problema.
Tabla 3-14. Comparativa de la variedad de diseños que ofrece cada fabricante de FPGA.
Las compañías Xilinx y Altera compiten en las mismas áreas, esta competencia hace crecer
el negocio de las FPGA, ambas orientan sus productos de la misma forma generando una
familia mínima para cada tipo de gama.
Resulta un poco injusto meter a Lattice en este tipo de comparativa ya que su orientación
como fabricante de FPGAs no es la misma que los otros dos. Lattice tiene un enfoque de
36
diseños móviles de bajo costo y bajo consumo. Lattice encontró un hueco en el mercado de
las FPGA con destinos de consumo ultra bajo y bajo precio como dispositivos móviles.
¿Cuál es mejor? Pues de momento resulta difícil dar una opinión así ya que se requeriría una
investigación muy a fondo e incluso conseguir probarlos, lo que sí es seguro es que toda la
competencia en gama alta y media se la llevan Xilinx y Altera, pero de gama baja y ultra baja
se recomendaría Lattice sobre todo por la especialización en ese sector.
37
CAPÍTULO 4: MICROCONTROLADOR VS FPGA
38
4. COMPARATIVA CON MICROCONTROLADOR
Como se señala al principio de este documento en esta carrera las FPGAs son mencionadas
como una tecnología a la que prestarle atención para el futuro, aunque no se enseñan como
tal, por lo cual ante el desconocimiento lo mejor para tener una visión clara de sus virtudes
es compararla con un similar en cuanto al área de programación; en este caso los
microcontroladores.
Normalmente a las FPGA se les compara con los ASIC o los CPLD, pero el tema es que las
FPGA se hicieron a partir de ambas tecnologías por lo que podría considerarse una evolución
de ellas.
Sabemos que un FPGA es básicamente un circuito integrado que se construye con una gran
cantidad de componentes de procesamiento lógico además de multiplexores, flip-flips, tablas
de búsqueda y sumadores. Pero estos componentes no son únicamente utilizados para la
construcción de FPGAs, ya que son piezas básicas en un IC para que se pueda adquirir una
señal de entrada y procesarla en una salida significativa. Lo que hace único a una FPGA es
que las interconexiones en su interior son programables, o sea pueden ser reconfiguradas por
el usuario cuando desee. Ya vimos anteriormente que esto se realiza mediante un lenguaje de
descripción de hardware, esto hace a la FPGA tan especial.
39
N° FPGA Microcontrolador
1 La FPGA puede realizar varias Sólo puede realizar una instrucción a
instrucciones a la vez, esto es una la vez, ya que su ejecución es
ejecución en paralelo de las tareas secuencial
2 Son peores en la comunicación en Son mejores comparado con la FPGA
serie en la comunicación en serie
3 Se puede hacer un microcontrolador No se puede hacer una FPGA con el
con una FPGA microcontrolador
4 Se puede considerar como un circuito Ejecuta piezas de código a través de la
electrónico que diseñamos memoria de instrucciones
configurando interconexiones y
bloques lógicos
5 Consumen mayor cantidad de energía Tienen un menor consumo de energía
6 Tiene una curva de aprendizaje más La curva de aprendizaje es más
pronunciada sencilla
7 Se utiliza punto fijo, el flotante Están ampliamente disponibles tanto
presenta complicaciones de uso puntos fijos como flotantes
8 No hay método universal para el Es fácil portar diseños entre
diseño en FPGA microcontroladores ya que los
lenguajes de programación son
universales
9 Es superior en cuanto a flexibilidad Tiene software para reprogramación
para reprogramar el hardware solamente
10 El cambio en el código toma más Se pueden implementar cambios de
tiempo hacerlo y un mayor trabajo código después de la compilación
para el software realizar el cambio ya
que debe hacer una reubicación y re
encaminamiento del circuito
implementado
11 Difícil adquisición En cualquier tienda electrónica se
encuentra algún microcontrolador
En resumen, si bien es cierto que tienen bastantes puntos en común cada una es mejor en
cierto aspecto y realmente vale la pena aprender a usar ambos.
40
CAPÍTULO 5: HDL
41
5. LENGUAJE DE DESCRIPCIÓN DE HARDWARE
Comparado con un lenguaje de programación los HDLs presentan varias ventajas donde
podemos encontrar:
-Las herramientas de síntesis permiten convertir una descripción en compuertas lógicas que
te ejemplifican lo que entendió el software que se planeaba hacer.
Hay varios tipos de HDL, pero podemos encontrar 2 que van a estar presentes en cada FPGA
los demás son creados a veces para las de una compañía o alguna familia en específico, Pero
Verilog y VHDL se encuentran presentes en todas y son reconocidos en como los lenguajes
más importantes y por lo tanto si alguien quiere comenzar a aprender cómo utilizar una FPGA
debe hacerlo aprendiendo uno de estos HDLs.
42
Si se va a elegir un lenguaje del cual aprender hay que tener en cuenta una pequeña
descripción de ellos:
El lenguaje Verilog al igual que VHDL, es un estándar de dominio público que soporta el
diseño, la prueba y la implementación de circuitos analógicos, digitales y de señales mixtas
a diferentes niveles de abstracción. Este lenguaje se diseñó basándose en el lenguaje de
programación C, con el fin de que resultara familiar para los diseñadores y así fuese
rápidamente aceptado. Por ello, Verilog tiene un preprocesador como C y la mayoría de sus
palabras reservadas son similares a las de C.
5.4. VERILOG
Para este trabajo se eligió el lenguaje de descripción de hardware Verilog, ya que debido a
su semejanza con el lenguaje de programación C resulta mucho más fácil de aprender a usar.
Verilog es uno de los lenguajes de descripción hardware más utilizados. Como se señaló
anteriormente con este lenguaje puede utilizarse para describir cualquier hardware a
cualquier nivel. Este lenguaje es de dominio público, al igual que VHDL, porque es un
estándar IEEE.
Un diseño en Verilog consiste en una jerarquía de módulos. Estos módulos son definidos con
conjuntos de puertos de entrada, salida y, de entrada-salida. Se utilizan sentencias
concurrentes y secuenciales las cuales definen el comportamiento del módulo, definiendo las
conexiones entre los puertos, los calves y los registros. Las sentencias secuenciales son
puestas dentro de un bloque y ejecutadas en orden secuencial. Por otro lado, todas las
sentencias concurrentes y los bloques donde se ponen las sentencias secuenciales se ejecutan
en paralelo en el diseño.
43
5.4.1. Introducción a Verilog
En esta sección se enseñarán los comandos básicos para comenzar a trabajar en Verilog.
En ese párrafo hemos definido un bloque que cuenta con 5 entradas y 1 salida.
Hay algunos puntos importantes que se deben tener en cuenta para el trabajo en Verilog:
44
5.4.2. Números en Verilog
Los números negativos se especifican con el signo “-“ delante del tamaño de la constante
como se verá a continuación:
- reg: Este tipo de dato representa variables con la capacidad de almacenar información en
ellas.
- wire: Este tipo de dato representa conexiones estructurales entre componentes, no tiene
capacidad de almacenamiento.
- real: Registro con la capacidad de almacenar números en coma flotante.
- time: Registro con capacidad de almacenar hasta 64 bits sin signo.
- integer: También es un registro, pero este presenta la capacidad de almacenar 32 bits.
45
5.4.4. Operadores
Afortunadamente, los operadores son las mismas cosas aquí que en algún lenguaje de
programación. Para hacernos la vida más fácil, casi todos los operadores (al menos los de la
lista a continuación) son exactamente iguales a sus equivalentes en el lenguaje de
programación C.
Operadores aritméticos:
El único operador que puede resultar desconocido es el del resto; pero este comando es
exactamente la obtención del resto de la división de dos números.
Operadores relacionales:
Operadores lógicos:
El ! en este caso, se coloca delante de un operando, y tiene como función cambiar el valor
lógico del mismo.
Cuando se utiliza && el resultado de esta operación es la combinación de los dos operandos.
Es decir, para que sea verdadero, ambos operandos tienen que serlo, en otro caso el resultado
es falso.
El || al igual que and es el resultado de la combinación de dos operandos. En este caso para
que sea verdadero sólo es necesario que uno de ellos cumpla esa condición.
46
Operadores de igualdad:
El comando == es una pregunta, se utiliza para comparar si dos comandos son iguales entrega
verdadero.
El comando != es lo contrario que el anterior en este caso si son diferentes entrega verdadero.
Estos permiten efectuar operaciones lógicas con los bits de los operandos.
El comando nand tiene el resultado contrario de and por ejemplo si tiene 1&1=0, si tiene
0&0=1.
El comando xor es el resultado de la combinación de los operandos será verdadero (1) solo
si los operandos son diferentes, en otro caso (los operandos son iguales) el resultado es 0.
El comando xnor con el cual obtienes el resultado contrario al que obtendrías con el operador
xor.
47
El comando << desplaza bits a la izquierda. Es necesario indicar el número de
desplazamientos y los bits que se quedan vacíos se rellenan con 0.
Por ejemplo:
El comando >> desplaza a la derecha, es básicamente lo mismo, pero hacia el otro lado.
5.4.5. Procesos
- Initial: Este tipo de proceso se ejecuta una sola vez comenzando su ejecución en tiempo
cero. Este proceso no es sintetizable. Su uso está íntimamente ligado a la realización del
testbench (testbench o banco de pruebas se utilizan para probar el circuito dándole valores
y viendo la respuesta).
- Always: Este tipo de proceso se ejecuta continuamente a modo de bucle. Tal y como su
nombre indica, se ejecuta siempre. Este proceso es totalmente sintetizable. La ejecución
de este proceso está controlada por una temporización (es decir, se ejecuta cada
determinado tiempo) o por eventos. En este último caso, si el bloque se ejecuta por más
de un evento, al conjunto de eventos se denomina lista sensible.
Ejemplos de su utilización:
48
Si el proceso engloba más de una asignación (=) o más de un comando de control (if-
else,case,etc) estas deben estar delimitadas por begin y end.
El comando initial se ejecuta a partir del instante cero y, en el ejemplo, en tiempo 0, si bien
las asignaciones contenidas entre begin y end se ejecutan de forma secuencial comenzando
por la primera. En caso de existir varios bloques initial todos ellos se ejecutan de forma
concurrente a partir del instante inicial.
En el ejemplo, el comando always se ejecuta cada vez que se produzcan los eventos variación
de la variable a o variación de b o sel (estos tres eventos conforman su lista de sensibilidad)
y en tiempo 0. En el ejemplo, el proceso always sólo contiene una estructura de control por
lo que los delimitadores begin y end pueden suprimirse.
5.4.6. Módulos
Cada módulo dispone de entradas y salidas, por las cuales se puede interconectar con otros
módulos, aunque existe el caso de los testbench que no cuentan con ningún tipo de entrada o
salida. Se puede describir cada módulo de diferente forma estructural o de comportamiento.
49
5.4.7. Estructura de control
If-else: Esta estructura de control es del tipo condicional y tiene la capacidad de controlar la
ejecución de otras sentencias y/o asignaciones. En el caso de haber más de una sentencia o
asignación, es necesario usar el bloque begin/end. La forma de este bloque es la siguiente:
For: El bloque for es igual al utilizado en lenguaje C. Se rige por la misma idea de las
anteriores donde si hay varias sentencias se debe incluir el begin/end. Su estructura es la
siguiente:
While: Este bucle se ejecuta de forma continuada mientras se cumpla la condición que evalúa.
Al igual que en los casos anteriores, si existe más de una sentencia es necesario agruparlas
en un bloque begin-end. Su estructura es la siguiente:
50
Repeat: Es del tipo bucle y se ejecuta un número determinado de veces, siendo este número
la condición de salida del bucle. Si es necesario se usa el begin/end.
Su estructura es la siguiente:
Wait: Esta sentencia utiliza la palabra reservada wait y de una expresión que iniciará la
condición para parar. Esta sentencia puede estar incluida dentro de las sentencias
anteriormente mencionadas. Su sintaxis es:
5.4.8. Asignaciones
- Asignación continua: Este tipo de asignación se utiliza únicamente para modelar lógica
combinacional, sin la necesidad de usar una lista de sensibilidad para la asignación. La
sintaxis es la siguiente:
La variable solo puede ser declarada de tipo wire. Y la asignación solo puede ser declarada
fuera de cualquier proceso o bloque initial o always.
variable = asignación
51
5.4.9. Temporizaciones
En la imagen anterior se ve que las dos primeras asignaciones se ejecutan en tiempo 0. Cinco
unidades de tiempo más tarde se realiza la tercera asignación y cuatro unidades más tarde de
esta última se ejecutan la cuarta y quinta asignación. La siguiente figura muestra un ejemplo
de control de asignación en un proceso always:
5.4.10. Eventos
Las asignaciones procedurales pueden ser controladas por el cambio de una variable en un
proceso always, esto se denomina control por evento. Para realizar este control se utiliza el
carácter @ seguido del evento que permitirá la ejecución de la asignación.
Ejemplo:
-Evento de flanco: Cuando sucede un flanco de subida (de 0 a 1) o de bajada (de 1 a 0). Para
determinar que se están usando la combinación de flancos de subida se usa la palabra
52
“posedge”, y para el caso de los flancos de bajada se usa la palabra “negedge”. Un ejemplo
de este tipo de eventos es el siguiente:
5.4.11. Parámetros
Se define así:
Al sintetizar este diseño el software interpreta el multiplexor y nos entrega este esquema
RTL:
53
Figura 5-5. Esquema RTL de multiplexor.
54
Figura 5-7. Esquema RTL de contador.
55
CAPÍTULO 6: PLACA FPGA
56
6. PLACA FPGA
6.1. CARACTERISTICAS GENERALES
Al utilizar la placa como un conjunto no es necesario saber mucho sobre el chip, pero al
momento de utilizar el software se necesita saber este tipo de información para ingresar al
programa.
La mayoría de los pines de la tarjeta son de usos generales esto quiere decir que pueden ser
entradas o salidas definido por quien programe. Hay, sin embargo, hasta 11 tipos de pines
diferentes. Los tipos de funciones están resumidas en el siguiente párrafo y son codificados
por color según el pin.
58
Tabla 6-2. Traducción de tabla original de Xilinx.
59
6.3. COMPONENTES DE LA PLACA
Todo el circuito integrado alrededor de la FPGA tiene como objetivo permitirnos un uso más
fácil del chip en sí, tal como se vio en capítulos anteriores la compañía fabricante produce el
chip y eso es lo que ofrece generalmente al público, aunque hay pocas que fabrican sus placas
para el uso de ellas a veces resulta más fácil encargar a otra empresa que diseñe estas placas
realizando así un trabajo conjunto factible para ambos. En el caso de Xilinx su compañero
para la fabricación de placas es Digilent.
La placa nos permite distintos tipos de puertos, pines, interruptores, etc. Para la práctica con
FPGA cada uno tiene su pin definido y señalado al costado.
Características:
60
• SMSC LAN83C185 Ethernet PHY
• PS/2 keyboard
• RJ-45 Ethernet
• Cabezal de 16 pines para módulos LCD opcionales
• Dos conectores DB9 RS-232
• Conector Hirose FX2 de 100 pines
• Tres puertos Pmod de 6 pines
• DB15HD VGA
61
6.3.5. Fuentes de reloj
La placa Spartan-3E Starter Kit admite tres relojes primarios fuentes de entrada, todas ellas
ubicadas debajo del logotipo de Xilinx, cerca del logotipo de Spartan-3E.
• La placa incluye un oscilador de reloj de 50 MHz incorporado.
• Los relojes pueden suministrarse fuera de la placa a través de un conector de estilo SMA.
Alternativamente, el FPGA puede generar señales de reloj u otras señales de alta
velocidad en el conector de estilo SMA.
62
CAPÍTULO 7: DESARROLLO DEL PROYECTO
63
7. DESARROLLO DE PROYECTO
7.1. INTRODUCCIÓN
Con este proyecto podremos contemplar la forma en la que trabaja la FPGA con señales de
tipo digital, la comunicación basada en reloj y una forma de diseño de hardware con Verilog
relativamente compleja.
Como el objetivo de este trabajo es introducir al lector al mundo de las FPGA esto se hará
paso a paso tratando de dejar claro el porqué de cada acción tomada y enseñar brevemente a
utilizar el ISE Design Suite 14.5.
Al principio del trabajo se enfrentaron varios problemas que vienen de la mano con lo que
sucede hoy en día con las FPGA, los problemas principales podemos resumirlos en que
cuando empiezas a aprender de FPGA se debe hacer absolutamente por cuenta propia hay
muy pocas personas al menos en este país que tengan conocimiento del uso de esta
tecnología, por ende cada duda o consulta hay que investigar por cuenta propia a ver si hay
suerte y aparece la respuesta a la duda que se tiene, esto retrasa considerablemente la
velocidad de aprendizaje, además dentro de este sector es conocido que la curva de
aprendizaje para el uso de FPGA tiene una curva más empinada que otras tecnologías.
El avance tecnológico siempre invita a renovar estos dispositivos que en un principio estaban
destinados para otros protocolos, tecnologías, etc. La placa Spartan 3E Starter Kit se
comunica por puerto usb 2.0 al computador para recibir el bitstream a la FPGA y esta placa
no se comunica correctamente con puertos usb 3.0 por lo cual condiciona aún más el equipo
con el que quiera trabajar.
64
7.2.PRENDIENDO UN LED
Para comenzar a utilizar la FPGA lo más típico es comenzar con un encendido/ apagado de
un led, a continuación, la imagen de la ubicación y el número de pin:
En la imagen se puede observar los interruptores que trae la placa para hacer pruebas y los
leds con el mismo objetivo. Debajo se encuentra el pin al cual se le debe asignar si se quiere
utilizar ese elemento.
Para comenzar con esto se debe abrir el ISE Design Suite 14.5 y presionar en New Project,
luego de eso aparece unas pestañas donde la importante es como se mencionaba
anteriormente la cual le indica al software cual es la placa que estamos utilizando, esto es
sumamente importante al momento de utilizar la placa ya que al estar trabajando en
descripción de hardware se necesita conocer perfectamente cuál es la placa y los elementos
que se puede utilizar. Al momento de sintetizar no es necesario ya que sólo asigna los
elementos necesarios para implementar el programa. Pero al momento de generar el archivo
65
de programación es vital conocer donde implementar el programa, sino el programa no
funcionará.
Luego de completar la tabla con los datos se puede proceder al crear una fuente en New
Source y aparecerán varias opciones donde las opciones para programar son Schematic,
VHDL y Verilog, Schematic es más sencillo y puede utilizar módulos hechos con
anterioridad como compuertas and, nor, xor, etc. Aunque se considera una mala costumbre
ya que sus limitaciones son muchas y no es más que una alternativa para circuitos más
sencillos. Aunque si quiere combinar módulos de Verilog se puede hacer. Lo que se hará en
este caso es seleccionar Verilog module.
66
Figura 7-3 . Creando un módulo Verilog.
Para hacer la prueba de encendido de un led se hará un programa con una compuerta and
donde la salida será el led.
67
Una vez desarrollado el programa necesitamos verificar si está correctamente diseñado, para
ello hay que sintetizarlo.
Si no salta ningún problema es porque no tiene fallas y ha podido interpretar sin falla alguna
el diseño que se ha realizado. También se puede observar el archivo sintetizado y en este caso
el software interpreto lo siguiente:
68
El software ha interpretado correctamente lo que le estábamos indicando e interpretó la
compuerta and que se requería.
Luego se debe ejecutar el PlanAhead cuyo programa sirve para la asignación de pines.
Luego hay que asignar pines, como se mencionaba anteriormente y L13, L14 son dos switchs
(SW0 y SW1), F12 será el pin del led elegido (LD0).
69
Una vez asignados los pines se puede generar el archivo de programa, donde el software
realiza enrutamiento.
Luego hay que abrir el programa iMPACT, el cual sirve para cargar el archivo al FPGA.
70
Y ahora a comprobar en la placa, según lo definido en la lógica si SW0 y SW1 están en high
el LD0 prenderá.
La placa cuenta con un LCD que se conecta a través de una interfaz de 4 bits, esto no beneficia
al momento de utilizar la placa, ya que se debe enviar los datos para un carácter en dos partes,
la inferfaz es de 4 bits ya que se comparte con el dispositivo de almacenamiento StrataFlash
y así reducir la cantidad de pines. Para trabajar con el LCD debemos tener en cuenta todas
las señales a utilizar.
71
Figura 7-12. Interfaz caracteres de LCD.
Fuente: Xilinx. Spartan-3E FPGA Starter Kit Board User
Guide. [PDF]. Estados Unidos. [Consulta: 24 de Diciembre de
2018].
Vamos a trabajar con tres tipos de memoria los cuales son importantes de tener en
consideración especialmente al momento de enviar datos para configurar el LCD.
DD RAM RAM de visualización de datos, hace referencia a los datos que se mostrarán en
pantalla.
CG RAM RAM del generador de caracteres, almacena patrones definidos por el usuario.
CG ROM ROM del generador de caracteres, incluye una serie de patrones predefinidos que
corresponden a los símbolos ASCII.
72
Se envían caracteres en ASCII por lo cual se utilizan 8 bits por carácter. Como se señalaba
anteriormente los datos se envían en paquetes de 4 bits por ello se realiza el envío de datos
primero enviando los bits superiores en el orden señalado y luego el paquete inferior.
Se debe realizar cada uno sin excepción o la transmisión podría no resultar como
esperamos.
Se comienza inicializando enviándole estamos en un orden predefinido según lo que se
señala en el manual. Este proceso es para inicializar el display.
Luego se debe configurar el display para indicarle donde debe partir, el parpadeo del
cursor, etc.
Y por último viene el envío de caracteres.
Primero que nada, es necesario saber que el fabricante da las indicaciones de los datos a
enviar al momento de la inicialización y configuración, además de una tabla con las
funciones disponibles para enviar.
73
El programa va a contar con:
- Una entrada (clk) la señal de reloj en el cual se va a basar el control del tiempo para
el envío de señales.
- 8 salidas definidas como output reg para el envío de los datos hacia el LCD. Las
señales tipo reg permite almacenar valores, esto sirve para asignar valores
secuenciales a la salida dentro de un always.
- Una variable tipo reg, que será el contador de 27 bits para las señales de reloj, cuya
función es servir de referencia al momento de administrar el tiempo.
- Variable tipo reg de 6 bits el cual nos permitirá almacenar los datos a enviar en
(rs,rw,d,c,b,a).
- Variable tipo reg para almacenar la información a enviar al LCD para el control de
activación. (El fabricante indica que esta señal se debe activar mientras se envían los
paquetes de bits).
74
Read
Data from
CG RAM 1 1 D7 D6 D5 D4 D3 D2 D1 D0
or DD
RAM
Luego se inicializa el case, este case va a tomar referencia de los valores del contador, pero
solo cuando se registre cambios desde el bit 22 al 27, Esto permite tener periodos de case
más largos lo cual es necesario para la inicialización, posteriormente para el envío de datos
esto no tiene mayor relevancia.
A la variable código se le asignan valores de 6 bits, esto es debido a que al final del código
se concatena con las variables: rs, rw, d, c, b, a. A cada bit respectivamente por lo cual los
dos primeros bits (los más significativos) se asignarán a rs y rw, luego los 4 bits restantes a
d,c,b y a.
La inicialización del LCD se realiza en las líneas 20 al 23 donde se envían valores señalados
por el fabricante.
Luego algo importante es definir el valor default del case donde se designará un código para
permitir la visualización del código en el LCD.
A e se le define un tiempo menor al del envío de los datos (esto es definido por el fabricante).
Y por último se procede a realizar la concatenación de código con las variables de salida.
75
Figura 7-14. Diseño en Verilog código LCD parte 1.
76
Figura 7-16. Diseño en Verilog código LCD parte 2.
77
7.4. PROYECTO DE ESTACIONAMIENTO
7.4.1. Pre desarrollo
Uno de los objetivos planteados inicialmente con este trabajo es realizar un montaje con el
cual apreciar el funcionamiento de una FPGA.
Con este proyecto podremos contemplar la forma en la que trabaja la FPGA con señales de
tipo digital, la comunicación basada en reloj y una forma de diseño de hardware con Verilog
relativamente compleja.
Al plantear este trabajo como una fuente de introducción al mundo de las FPGA el proyecto
se plantea de forma diferente, esto consiste en comenzar por mostrar el proceso completo
para la implementación de una compuerta and en la placa.
Estas señales serán adquiridas por los pines de entrada digital de la FPGA, en este caso serán
B4 y A4.
78
Figura 7-19. Esquema de estacionamiento.
El objetivo es conseguir con un cambio en cualquiera de los sensores genere una variación
en el mensaje mostrado en el LCD.
El diseño esquemático proporciona una facilidad para conectar diferentes módulos mientras
las entradas y salidas tengan el mismo formato de datos, cada módulo puede generar un
archivo de este tipo.
El diseño para este estacionamiento se basa en 4 módulos principales donde cada uno cumple
una función específica y un quinto módulo que es simplemente un punto común para obtener
más de una señal de reloj.
La creación de tantos módulos tiene como objetivo facilitar el flujo de datos y evitar cualquier
interferencia entre ellos, con eso se consigue que cada módulo cumpla su labor y pase los
datos a la siguiente. El diseño en ISE Design Suite es bastante complejo debido a que el más
mínimo error produce una falla completa en el diseño, así como también una estructura de
diseño inadecuada donde se mezclen tipos de variables que puedan toparse o que
simplemente no sean compatibles.
79
medir el estado del sensor. En la FPGA se realizó un circuito de tipo PULL-DOWN para
recibir un 0 normalmente y cundo detecte cambie a 1.
80
Figura 7-22 Diseño final de proyecto en esquemático
7.4.3. Contador
El contador es un esquemático compuesto por cinco módulos principales que realizan la tarea
principal y dos que sirven como punto de derivación, para conseguir un poco de orden con
las señales de entrada y evitar el acumulamiento de cables, ya que a veces cuando se cruzan
el programa los toma como un nodo.
El contador recibe una señal de reloj, la señal del sensor y entrega una contabilización de 4
bits.
Como se señalaba anteriormente el esquemático está conformado por cinco módulos y dos
puntos de derivación donde la única función que cumplen es entregar en cada una de las
salidas el mismo valor que se tiene en la entrada.
81
Figura 7-24. Esquemático de contador.
82
a la entrada esto resulta en que la salida del latch almacena el valor HIGH en su salida y cinco
ciclos después se desactiva la lectura de valores.
El latch LDC es un símbolo proporcionado por el programa que cuenta con una señal de
entrada, una de salida un habilitador y un reset. El propósito de este latch en el contador es
almacenar el valor de estado HIGH para el conteo del módulo de contador previo y le emita
la señal de reset que terminará por resetear el circuito y volver todas las señales a su punto
de inicio.
Los módulos de contabilización podrían estar contenidos en uno perfectamente, pero con el
objetivo de tener un orden en el diseño se optó por separarlos. Primero el contador previo
realiza un conteo mientras la señal de entrada (la que entrega el latch) se encuentra en estado
HIGH, también entrega una señal HIGH en la salida y el conteo sea inferior a 40000000
ciclos de reloj lo que son 0,8 s y al momento de cumplirse los 40000000 envía una señal de
reset al latch, baja a LOW la señal de salida, resetea su propio contador y desactiva el bloqueo
que realiza en el módulo de inicio.
83
Figura 7-28. Código módulo contador previo.
El contador final inicia el conteo al momento que el contador previo por lo cual van
sincronizados y realiza un conteo hasta que la señal de entrada sea HIGH y su conteo sea
inferior a 40000000 pero al momento que cumple ese valor al contador de 4 bits que tiene
definido como salida le suma uno y resetea el contador. En el momento que ocurre ello se
resetea todo el contador menos el módulo de inicio que necesita un reset a 0 de la señal del
sensor.
7.4.4. Conversión
84
Esta sección engloba los módulos resta y carácter, el módulo resta adquiere la señal de 4 bits
de ambos sensores y realiza una resta que entrega un resultado el cual se asigna como salida.
Luego el resultado llega al módulo carácter allí dependiendo de cuál valor tenga la señal (0
a 15 en binario) asignará a la salida de 16 bits su valor correspondiente codificado en ASCII.
Un carácter en ASCII está compuesto por 8 bits, la idea es enviarle dos caracteres (desde 00
a 15). Los valores en ASCII ya están asignados previamente.
7.4.5. LCD
85
Figura 7-32. Código módulo lcd final parte1.
86
Figura 7-34. Código módulo lcd final parte3.
Las pruebas se realizaron en un orden que permitiera ir detectando paso por paso los errores,
con las FPGA ocurre un problema y es que al diseñar un circuito en el software y simularlo
realmente no asegura que vaya a funcionar de la forma en que se espera, hay que recordar
que con las FPGA se crean circuitos físicos y se sabe que en la práctica los resultados no son
perfectos. Por ello el primer punto fue tener el cuidado con la señal de reloj de sincronizarla
para todos, enviándoles la señal a partir del mismo punto.
Uno de los problemas a enfrentar fue que el contador se debe implementar con una
sincronización de reloj y esto es un gran problema ya que el reloj de la FPGA trabaja a 50
MHz y si simplemente se cuenta mientras esta activo el sensor puede resultar en un valor de
millones en menos de un segundo. Por ello se tuvo que recurrir a otros métodos alternativos
que no hacen el conteo directamente, pero si hacen un reflejo proporcional del valor.
Se eligió un ciclo de 0,8 s entre cada medición del sensor, para la aplicación que se está
utilizando esto no presenta una dificultad es más por ello se solucionó todo el problema de
los rebotes en el circuito.
La velocidad de ciclo del módulo del LCD debe ser consecuente a la velocidad del ciclo del
contador para evitar que entre cada visualización haya más de un conteo, por esto se utiliza
un contador de 27 bits, el cual permite un solo ciclo de reloj entre cada visualización del
LCD.
87
CONCLUSIONES Y RECOMENDACIONES
88
CUMPLIMIENTO DE LOS OBJETIVOS
A continuación, se citarán los objetivos planteados al principio del trabajo para evaluar el
cumplimiento de ellos.
El objetivo más general de los que se plantearon es el de conseguir desarrollar este trabajo
de tal manera que pueda servir de introducción a esta tecnología tan poco conocida que
promete y se está desarrollando de una forma que promete tomar un rol protagónico en un
futuro no muy lejano, este punto es un poco difícil de evaluar, a este trabajo se le dio un
formato y una orientación con el propósito de ser un material para el aprendizaje.
Si se va a crear un material para el aprendizaje la información recopilada debe ser precisa por
ello se buscó información de diferentes fuentes contrastando la información para asegurar su
veracidad.
Plantear comparativas de las FPGA para tener una visión más clara
Una de las formas más fáciles y mejores para generar una visión clara sobre algo es
comparándolo con alguna tecnología para este caso que sea conocida como son los
microcontroladores los cuales son conocidos por cualquier estudiante del área eléctrica, por
ello se compararon en aspectos generales. Como esta tecnología tiene una gran variedad de
fabricantes y niveles para cada modelo también se mencionó a las más importantes y la
información más importante tratando de no extender demasiado la información para respetar
los puntos anteriores.
Por diversos motivos el trabajo se tuvo que realizar con una placa relativamente antigua que
utiliza un software ya obsoleto que actualmente está abandonado por la empresa fabricante y
no resulta conveniente desarrollar un manual para ello. Lo que se hizo fue enseñar el
desarrollo de un código básico como es prender un led, luego el código para el uso del LCD
que tiene una complejidad mayor donde se puede observar y aprender formas de diseño de
un código en Verilog y al final uno más completo que mezcla la adquisición de señales y su
manipulación para generar cambios en otros elementos, en este caso el LCD.
89
de realizar varias tareas en paralelo fueron un tema presente en el proyecto final desarrollado
pese a que la velocidad no era algo necesaria para este proyecto con el código deja en
evidencia la gran capacidad que poseen las FPGA donde hubo que reducir su capacidad para
evitar otro tipo de problemas.
RECOMENDACIONES
Si se desea aprender a trabajar con las FPGA lo mejor es dedicarse a aprender un lenguaje de
descripción de hardware que sea VHDL o Verilog ya que son los que van a estar disponibles
en la FPGA que sea de la compañía que sea, el lenguaje Verilog tiene bastantes similitudes
al C por lo cual es en general más sencillo, aunque no permite un desarrollo tan específico
como podría conseguirse con VHDL. Si se va a invertir en comprar una placa para el
desarrollo de circuitos a nivel de estudiante, las FPGA de gama baja son orientada a ese tipo
de propósito y el software en general no presenta un problema ya que las versiones gratuitas
proporcionan lo necesario para su uso.
CONCLUSIONES
El negocio de las FPGA desde el principio ha tenido un camino de buenos y malos momentos,
en un principio surgió como la combinación de los ASICs y los PLD, en un principio no
podían compararse con los ASICs en términos de velocidad bajo costo alta capacidad y alta
velocidad. El avance de la tecnología ha jugado un papel muy importante a su favor
principalmente la Ley de Moore, el que tiene un papel protagónico en el desarrollo de estos
chips y ha permitido su crecimiento acelerado, que en momentos fue demasiado rápido y esto
provocó la crisis de la era de la acumulación que enfrentaron de gran manera.
Actualmente las FPGA se han desarrollado de tal manera que su costo es incluso bajo
comparado con otras tecnologías, obviamente esto referido a aplicaciones de nivel avanzado.
No es sólo el precio, la velocidad y flexibilidad que proporcionan es superior en relación a
otras tecnologías, por ello el auge que están teniendo, siendo reconocidas como la mejor
alternativa para aplicaciones que necesiten de estos beneficios.
Las FPGA pueden utilizarse en una gran cantidad de aplicaciones, son capaces desarrollar
desde un circuito tan simple como una compuerta and hasta sistemas complejos.
En un principio resulta difícil entender por qué recién ahora están teniendo un crecimiento y
quizás si antes se pudo haber aprovechado estas placas para un desarrollo tecnológico más
apresurado, para ello está la redacción de su historia que busca explicar este tema.
En algunos puntos el trabajo tomó una orientación hacia una compañía, pero la intención es
tomar de ejemplo para ver cómo funciona una empresa de FPGA. Obviamente si se va a
tomar una empresa de referencia lo mejor es utilizar la compañía más grande y que además
90
es más familiar ya que se utilizó una placa creada por ellos para el desarrollo de la
implementación.
A nivel estudiante es difícil y quizá poco rentable enseñar FPGA ya que las aplicaciones que
se le pueden dar en un nivel donde se pueda marcar claramente sus ventajas es a nivel
avanzado y aún la velocidad de aprendizaje es más pronunciada que otras tecnologías por lo
que requiere prácticamente una asignatura dedicada únicamente a estos chips.
En Chile son realmente un tema desconocido y esto se ve reflejado en las tiendas del país,
donde las que ofrecen este producto son muy pocas y con una variedad de productos muy
limitada, aunque ya vivimos en un mundo globalizado y comprar en el exterior está al alcance
de cualquier persona, claro que teniendo que pagar costos adicionales. Estos problemas no
ayudan a su desarrollo en el país y además las universidades que enseñan FPGA son muy
pocas y tampoco motiva a alguien a estudiar ya que no tienen relevancia y su curva de
aprendizaje es muy pronunciada, con este trabajo se busca marcar un precedente del cual se
espera que sea el primer paso hacia la popularización de las FPGA al menos en la carrera.
91
BIBLIOGRAFIA
92
ASIC-WORLD.COM. Verilog Tutorial [En línea]< http://asic-
world.com/verilog/veritut.html> [Consulta Noviembre 2018].
Stephen M. Trimberger. Tres edades de los FPGA: una retrospectiva de los primeros
treinta años de la tecnología FPGA. Proceedings of the IEEE, Volumen 103 (3): 2015.
ISSN 0018-9219.
XILINX. ISE In-Depth Tutorial [PDF]. Estados Unidos [Consulta Septiembre 2018].
XILINX. Spartan-3E FPGA Starter Kit Board User Guide [PDF] Estados Unidos
[Consulta Diciembre 2018].
93
ANEXOS
94
ANEXO 1: GLOSARIO
Ley de Moore: Ley creada en 1965 por Gordon Earl Moore (cofundador de Intel), que previó
que el número de total de transistores integrados en un circuito se duplicaría cada dos años.
Esquemático tecnológico: Este esquema muestra una representación del diseño en términos
de elementos lógicos optimizados; por ejemplo, en términos de LUT, lógica de transporte,
buffers de E/S y otros componentes específicos de la tecnología. La visualización de este
esquema le permite ver una representación a nivel tecnológico del HDL optimizada para una
arquitectura Xilinx específica.
Enrutar: Es la función de buscar un camino entre todos los posibles en una red de paquetes
cuyas topologías poseen una gran conectividad. Dado que se trata de encontrar la mejor ruta
posible, lo primero será definir qué se entiende por “mejor ruta” y en consecuencia cuál es la
métrica que se debe usar para medirla.
95
ANEXO 2: CARACTERÍSTICAS TÉCNICAS FAMILIA SPARTAN-3
96
ANEXO 3: ARCHIVO UCF DE PROYECTO ESTACIONAMIENTO
97
ANEXO 4: ESQUEMÁTICO RTL DE PROYECTO
ESTACIONAMIENTO
98
ANEXO 5: ESQUEMÁTICO TECNOLÓGICO DE PROYECTO
ESTACIONAMIENTO
99