Вы находитесь на странице: 1из 36

TECNOLÓGICO NACIONAL DE MÉXICO

INSTITUTO TECNOLÓGICO DE ACAPULCO


INGENIERÍA EN SISTEMAS COMPUTACIONALES
TÚ MATERIA SHADDEIS

“EL PROCESO DE PROGRAMACIÓN DEL


FPGA Spartan 6 con VHDL”

PROFESOR: ROLANDO PALACIOS ORTEGA


ENSAYO: HORA: 0:00 – 0:00

ALUMNO: HERNÁNDEZ PALMA ALBERTO

SHADDEIS TOSCANO CONTROL:


Índice

Temas:
1. Introducción
2. Presentación
3. Objetivos generales y específicos
4. Justificación
5. Antecedentes
6. Metodología
7. Marco teórico
7.1- electricidad
7.2- desarrollo sustentable
7.3- innovación
7.4- electrónica digita
7.5- Control eléctrico.
7.6- ¿Que es un relevador?
7.7- Ventilador centrífugo
8. Diseño del prototipo.
9. Lista de materiales y presupuesto.
10. Manual de usuario
11. Conclusión
¿Para qué se utiliza?
12. Referencias bibliográficas
1- Introducción

Con el presente ensayo se busca cubrir conocimientos de sistemas


computacionales; permitiendo conocer que es y para que se utiliza un FPGA y
como ha sido mejorado desde su creación en 1984 y en que está basada su
composición de circuitos y elementos (donde es que lo podemos enviar a
fabricar y como es que ese servicio no se responsabiliza del producto ya que
la garantía es total de nuestra elaboración y que el fabricante es él encargado
de hacer lo llegar a nuestra dirección y culmina su labor.

Los FPGAs se han vuelto más y más populares en los últimos tiempos. Incluso para
aplicaciones profesionales se suelen usar estos chips, pero también para DIY y makers
que quieren implementar un circuito discreto dentro de un chips con todas las ventajas que
esto implica. No es barato ni fácil encontrar una fabrica para enviar tus layouts o patrones y
que te fabriquen un chip a medida.

Es cierto que algunas foundries permiten fabricar wafers u obleas multiproyecto para


fabricar chips de particulares o universidades para realizar pruebas con ellos. Este tipo de
fábricas son, como digo, difíciles de encontrar, suelen estar en el extranjero y no resultan
baratas. Tras un tiempo se te envía a la dirección acordada unas muestras o samples de
tus chips, pero ellos no se hacen cargo de testar estos o comprobar que funcionen. Todo
depende de tu diseño…

Una solución alternativa a eso es adquirir un FPGA y programar lo que quiera que sea
lo que necesites implementar dentro del chip…

2- Presentación

El presente ensayo, se llevó a cabo a través de una investigación y cita de


fuentes informáticas, las cuales nos proporcionó la información para su
desarrollo y les presentaremos este ensayo <<El proceso de programación
del FPGA Spartan 6 con VHDL>> con el cual estoy feliz y satisfecho de
cimentar mis conocimientos en esta que viene siendo mi genial carrera de
ingeniería en sistemas computacionales.
En estos tiempos la programación como tantas actividades es esencial en la
vida cotidiana y muchas veces al no tener conocimientos sobre ellas suceden
accidentes a la hora de desconectar o conectar o elaborar un proyecto.
El desarrollo de este ensayo, me permitió cimentar/reforzar los conocimientos
adquiridos en base a mi carrera de ingeniería en sistemas computacionales;
experimentando la satisfacción de entender como están constituidos estos
elementos de que dependen diversidad de aparatos esenciales al día a día en
nuestra sociedad comúnmente utilizados en aparatos domésticos,
comerciales, industriales militares, satélites y la exploración aeroespacial “que
hoy día es un tema de realce por el exitoso lanzamiento del 30 de mayo del
2020” de la compañía SpaceX, y la NASA, Los astronautas de la NASA Bob Behnken y
Doug Hurley.
Cada uno de los procesos en los que se dividió la metodología utilizada y de
alguna u otra manera de ayudar a la sociedad mediante propuestas que
permitan tener conocimientos de la realización de un FPGA, como es que esta
contituido de compuertas lógicas programables ON, OR, AND, y como es que
es tan similar a la manipulación de un dispositivo Arduino ya sea con su
calcado de hardware y la facilidad de imprimir su código de programación a
través del uso de cables, puertos de acceso y su respectiva alimentación.
3- Objetivos generales y específicos
Objetivos generales Objetivos específicos
 Elaborar los siguientes pasos
 Portada
 Introducción
 Presentación
 Objetivos generales y específicos
 Antecedentes
 Elaborar un protocolo
 Metodología
de investigación
 Marco teórico
 Diseño del prototipo
 Lista de materiales y presupuesto
 Desarrollo (pasos a seguir)
 conclusión

 Comprar el material para desarrollar el


proyecto
 Obtener las herramientas que se ocuparán.
 Construir el circuito.
 Cortar la madera a la medida que será el
 Diseño y desarrollo tablero
del proyecto  Ensamblar los componentes en el tablero
 Armar y atornillar (sus componentes)
 Pintar el tablero
 Revisar que este todo en su lugar
correctamente
 Ponerle el logo de la carrera
 Aplicar los conocimientos necesarios para
utilizar los diferentes equipos de medición.
 Elaborar un manual de cómo funciona el
 Implementar un proyecto.
manual de pruebas.  Elaborar prácticas para los estudiantes o
para alguna materia en general
 Probar el proyecto que funcione
correctamente
 Organizar la información recabada.
 Hacer una presentación en PowerPoint
 Exponer el proyecto
adecuada para presentar el diseño del
y concursar en eneit
proyecto físicamente.
 Presentar las diapositivas realizadas.
4.- JUSTIFICACIÓN

La elaboración de este ensayo se derivó de la necesidad, de que los alumnos


de nivel superior que puedan aprender más sobre él proceso de
programación y constitución de las herramientas y equipos del día a día, y
control eléctrico por medio del interfaz humano máquina. Por lo que nos dimos
a la tarea de investigar sobre el sistema FPGA Spartan 6 de Xilinx en el
entorno del ISE Design Suite con el lenguaje VHDL, para así elaborar un
circuito combinacional o uno secuencial como ejemplo y así tener buen
aprendizaje por parte de mí.
La elaboración de este ensayo tendrá como finalidad darnos a conocer la
funcionalidad de los FPGA de cómo opera y se constituye en la actualidad
desde un panorama un tanto microscópico a través diagrama e imágenes de
los mismos con su respectiva simbología, así como su aprendizaje de seguir
las conexiones adecuadas para realizar la circuitería y diseños pertinentes
para el o los proyectos deseados.
Tenemos que elaborar este ensayo, para que yo tengan un buen aprendizaje
sobre el proceso de programación del FPGA Spartan 6 con VHDL, como se
conecta, según su, diagrama, para que sirve, etc.
El beneficio del FPGA,  es un chip en blanco donde tú puedes «escribir».
5.- ANTECEDENTES

El FPGA Son dispositivos digitales o chips que son capaces de configurarse


para permitir implementar prácticamente cualquier cosa. FPGA son las siglas de
Field Programmable Gate Array. Son dispositivos digitales o chips que son capaces de
configurarse para permitir implementar prácticamente cualquier cosa. Es decir, dicho con
otras palabras, es un chip en blanco donde tú puedes «escribir». Eso significa que podrás
implementar una CPU, una memoria, un controlador, cualquier lógica, etc., consiguiendo
un funcionamiento muy rápido y con todas las ventajas de tenerlo integrado en un chip y no
con elementos electrónicos.

Ross Freeman y Bernard Vonderschmitt, cofundadores de Xilinx, fueron los que inventaron
el FPGA en 1984. Lo hicieron como evolución a los chips CPLD de aquella época. Los
chips programables CPLD tenían unas carencias que resolvieron los nuevos diseños FPGA
y desde entonces han venido evolucionando hasta la fecha.

El mercado de FPGAs es tan fructífero que compañías como Intel, Xilinx, Altera, Quick
Logic, Lattice, etc., han invertido mucho para desarrollar mejores FPGAs y también
entornos de programación integrados o IDEs para ellos. Aportando así plataformas muy
buenas para facilitar la tarea de los desarrolladores o makers.

Actualmente esos fabricantes no solo aportan un chip programable, sino que también
incluyen numerosos elementos auxiliares para aportar más posibilidades a los
desarrolladores. Por ejemplo, incluyen celdas de memoria flash, celdas de memoria
SDRAM, etc.
6.- METODOLOGÍA

El siguiente ensayo que se presenta a continuación se realizó a base de


procesos, investigación y no de pruebas. Pero si utilizando como ejemplo un
circuito combinacional o uno secuencial.
[

]
7.- MARCO TEORICO
Para entender el proyecto que se acaba de explicar anteriormente, se
necesitan conocimientos previos sobre Electricidad, Desarrollo sustentable,
Innovación y Electrónica Digital. A continuación, se le explicara previamente
cada uno de los puntos ya mencionados para así entender y analizar un poco
más de este proyecto dicho a realizar.

7.1- ELECTRICIDAD
La electricidad es un conjunto de
fenómenos producidos por el
movimiento e interacción entre las
cargas eléctricas positivas y negativas
de los cuerpos físicos.
La palabra "electricidad" procede del
latín electrum, y a su vez del
griego élektron, o ámbar. La
referencia al ámbar proviene de un
descubrimiento registrado por el
científico francés Charles François de
Cisternay du Fay, que identificó la
existencia de dos tipos de cargas eléctricas (positiva y negativa). Las cargas
positivas se manifestaban al frotar el vidrio, y las negativas al frotar sustancias
resinosas como el ámbar.

Diagrama de un campo eléctrico con cargas positivas y negativas


La energía producida por las cargas eléctricas puede manifestarse dentro de
cuatro ámbitos: físico, luminoso, mecánico y térmico.

Si bien la electricidad es abstracta o "invisible" en la mayoría de sus


manifestaciones, como por ejemplo en el sistema nervioso del ser humano, es
posible "verla" en ocasiones, como los rayos cuando se desarrolla una fuerte
tormenta.

LA ELECTRICIDAD ES UNA FUENTE DE ENERGÍA SECUNDARIA


Se denominan energías primarias las que se obtienen directamente de la
naturaleza: solar, hidráulica, eólica, geotérmica, biomasa, petróleo, gas
natural o carbón.
Las energías secundarias provienen de la transformación de energía
primaria con destino al consumo directo, o a otros usos: gasolina, electricidad,
gasoil, fuel oíl...

¿CÓMO SE PRODUCE LA ELECTRICIDAD PARA EL CONSUMO?


La electricidad se produce mediante sistemas eléctricos que garantizan su
disponibilidad.
Un sistema eléctrico es el conjunto de elementos que operan de forma
coordinada en un determinado territorio para satisfacer la demanda de
energía eléctrica de los consumidores.
Los sistemas eléctricos se pueden clasificar básicamente de la siguiente
manera:

 Centros o plantas de generación donde se produce la electricidad


(centrales nucleares, hidroeléctricas, de ciclo combinado, parques
eólicos, etc.).
 Líneas de transporte de la energía eléctrica de alta tensión (AT).
 Estaciones transformadoras (subestaciones) que reducen la tensión o el
voltaje de la línea (alta tensión / media tensión, media tensión / baja
tensión).
 Líneas de distribución de media y baja tensión que llevan la electricidad
hasta los puntos de consumo.
 Centro de control eléctrico desde el que se gestiona y opera el sistema
de generación y transporte de energía.

USOS Y APLICACIONES DE LA ELECTRICIDAD


La electricidad es una fuente de energía imprescindible. En cualquier hogar
existen todo tipo de aparatos y electrodomésticos que funcionan con corriente
eléctrica, además del sistema de iluminación.
En la industria, casi la mitad de la energía que se consume es eléctrica. La
electricidad se utiliza tanto como fuente impulsora de los motores eléctricos de
las máquinas y aparatos de cada sector, como para calentar los contenidos de
tanques, depósitos y calderas. Al igual que en el sector doméstico, la
electricidad también es la principal fuente de iluminación, y permite obtener
calor y frío con equipos de climatización.
En el ámbito del transporte, el tranvía, metro o tren son los medios de
transporte eléctrico por excelencia. Actualmente se están diseñando vehículos
eléctricos dirigidos principalmente a usos urbanos, así como vehículos
denominados "híbridos" en los que el motor eléctrico se combina con un motor
de explosión, de manera que disfruta de las ventajas de ambas fuentes de
energía. Con un simple enchufe de corriente eléctrica puede recargarse la
batería.

7.2- DESARROLLO SUSTENTABLE


La idea de desarrollo refiere al
progreso, el avance o el crecimiento.
Sustentable, por su parte, es aquello
que se puede sostener con argumentos
propios. Con estas definiciones,
podemos centrarnos en el concepto de
desarrollo sustentable, que también se
conoce como desarrollo sostenible: se
trata del desarrollo que puede
mantenerse durante mucho tiempo sin
perjudicar al medio ambiente ni
extinguir los recursos. Esto quiere decir que el desarrollo se puede sostener o
sustentar por sí mismo sin afectar al entorno ni a terceros.
Por lo general el concepto de desarrollo sustentable se emplea en los terrenos
de la ecología y de la economía. El desarrollo sustentable es un proceso que
puede perdurar ya que no provoca el agotamiento de los recursos disponibles
y, por lo tanto, su permanencia no afecta a las generaciones venideras. Dicho
de otro modo, el desarrollo sustentable permite satisfacer necesidades
actuales sin poner en riesgo la satisfacción de necesidades futuras.
Tomemos el caso de una región cuya economía está basada en la tala
indiscriminada de árboles y en la sobreexplotación de los recursos forestales.
Este tipo de desarrollo no es sustentable, ya que la naturaleza no está en
condiciones de volver a generar rápidamente los recursos que se utilizan o
consumen. Por eso, de continuar con ese ritmo, en algún momento ya no
habrá árboles que talar ni terrenos disponibles para el cultivo.
En cambio, una actividad productiva que no genera contaminación ambiental
y que está basada en el aprovechamiento de la energía eólica puede brindar
un desarrollo sustentable. Esto se debe a que el viento no se agota y a que la
actividad en cuestión no daña el medio ambiente: por eso se podría seguir
realizando indefinidamente.
El desarrollo sustentable tiene como metas principales la reconciliación de los
aspectos social, económico y ambiental de nuestras actividades y la definición
de proyectos que resulten viables, de manera que podamos aprovechar los
recursos de la naturaleza para satisfacer nuestras necesidades sin causar
daños irreparables en al medio ambiente. Dentro de este concepto, existen
tres principios fundamentales que debería tener en cuenta cualquier persona,
comunidad o empresa: sostenibilidad económica, sostenibilidad social y
sostenibilidad ambiental.
En el ámbito del desarrollo sustentable, entendemos por sostenibilidad
económica todas esas actividades que se consideran rentables y posibles
desde un punto de vista financiero, y que apuntan a un crecimiento de la
economía de un individuo, de una comunidad o de una empresa.
Por otro lado se encuentra la sostenibilidad social, que se apoya en mantener
la cohesión social en la búsqueda de objetivos en común. Se trata
principalmente de los esfuerzos por reducir el impacto social negativo que
pueda causar la actividad desarrollada, al mismo tiempo que se potencie su
impacto positivo. También se encuentra vinculada a los beneficios que
pueden recibir las comunidades locales para que mejoren sus condiciones de
vida. Para hablar de sostenibilidad social, dichos beneficios deben alcanzar a
todos los integrantes del grupo humano que se encuentra involucrado directa
o indirectamente en la actividad de desarrollo sustentable; por ejemplo, en el
ámbito empresarial, debe incluir a los empleados, a los clientes, a los
proveedores y a la comunidad local, aportándole a cada uno algo que
necesite para mejorar su vida. El tercero de los pilares fundamentales del
desarrollo sustentable es la sostenibilidad ambiental, un concepto que gira en
torno a volver compatible la actividad y el cuidado de los ecosistemas y la
biodiversidad, para evitar que se destruyan y dejen de ofrecernos los recursos
necesarios. Alcanzar este punto de equilibrio no es fácil, sino que requiere un
análisis profundo del potencial impacto de la actividad, tomando en cuenta
aspectos como los residuos y las emisiones que se generan.

7.3- INNOVACIÓN
Innovación es un cambio que introduce novedades, y que se refiere a
modificar elementos ya existentes con el fin de mejorarlos o renovarlos. Este
término proviene del latín "innovatio" que significa "Crear algo nuevo", y está
formada por el prefijo "in-" (que significa "estar en") y por el concepto "novus"
(que significa "nuevo"). Además, en el uso coloquial y general, el concepto se
utiliza de manera específica en el sentido de nuevas propuestas,
nuevos inventos y sus implementaciones económico-sociales.
En el sentido estricto, en cambio, se dice que de las ideas solo pueden
resultar innovaciones luego de que ellas se implementan como nuevos
productos, servicios, o procedimientos, que realmente encuentran una
aplicación exitosa, imponiéndose en el mercado a través de la difusión.1
Hay una forma de innovación consistente en la mejora de la gestión
empresarial con nuevos procedimientos, utilización de una tecnología,
automatización, mejorando la calidad, definiendo nuevas formas de satisfacer
al cliente, son sólo algunas ideas de lo que puede ser y conseguir la
innovación y ayuda a las empresas a crecer y ser más competitivas. 2
En economía, Joseph Schumpeter fue quien introdujo este concepto en su
«teoría de las innovaciones»,3 en la que lo define como el establecimiento de
una nueva función de producción. La economía y la sociedad cambian cuando
los factores de producción se combinan de una manera novedosa. Sugiere
que invenciones e innovaciones son la clave del crecimiento económico, y
quienes implementan ese cambio de manera práctica en los emprendedores.
La innovación es un factor clave para el desarrollo empresarial y
el crecimiento económico de los países, siendo aquellos que más invierten en
investigación e innovación los que más riqueza alcanzan.
También se utiliza el concepto de innovación en las ciencias humanas y en
la cultura. La búsqueda a través de la investigación de nuevos conocimientos,
las soluciones o vías de solución, suponen curiosidad y placer por la
renovación. Los conceptos de vanguardia y creatividad se hacen relevantes
en este contexto.

7.4- ELECTRONICA DIGITAL


La electrónica digital es la rama de
la electrónica más moderna y que evoluciona
más rápidamente. Se encarga de sistemas
electrónicos en los que la información está
codificada en estados discretos, a diferencia de
los sistemas analógicos donde la información
toma un rango continuo de valores.
En la mayoría de sistemas digitales, el número
de estados discretos es tan solo de dos y se les
denomina niveles lógicos. Estos niveles se
representan por un par de valores de voltaje,
uno cercano al valor de referencia del circuito (normalmente 0 voltios, tierra o
"GND"), y otro cercano al valor dado por la fuente de alimentación del circuito.
Estos dos estados discretos reciben muchas parejas de nombres en libros de
electrónica y otros textos especializados, siendo los más comunes "0" y "1",
"false" y "true", "off" y "on" o "bajo" y "alto" entre otros. Tener solo estos dos
valores nos permite usar el álgebra booleana y códigos binarios, los que nos
proporciona herramientas muy potentes para realizar cálculo sobre las
señales de entrada.
Al hablar de electrónica digital estamos en presencia del mayor avance en
cuanto a ciencia electrónica se refiere. Al principio los mecanismos
interactuaban entre sí por movimientos y secuencia preconcebidas para
obtener un mismo resultado, la invención de las válvulas, luego los
transistores, los chips y por último los microprocesadores, así como los
microcontroladores han llevado a esta ciencia a posicionarse como una de las
más precisas en lo que a procesamiento de datos, imagen y vídeo podamos
hablar.
Los más complejos sistemas digitales, aplicados y útiles hoy en día son
posibles gracias a la integración de los componentes, herramientas, equipos y
subsistemas electrónicos, informáticos y mecánicos. En tiempos modernos es
tan fácil tocar una pantalla con nuestras manos (pantalla táctil), ejecutar un
comando de voz y cambiar un canal o abrir una ventana, apagar y encender
una bombilla; todo gracias a la electrónica digital. Como su nombre lo indica
ella se sustenta en su propio lenguaje, el lenguaje de código binario "1" y "0",
se crean ciclos de palabras, password, secuencias de bit y byte y se hace
realidad lo que nunca se pensó poder monitorear en tiempo real un proceso a
miles de kilómetros de distancia. Todas las demás ciencias hoy en día se
deben a la invención de los sistemas digitales, es difícil pensar en cocinar
algo, llamar a un pariente lejano o ir al cine sin dejar a un lado la electrónica
digital.
Por eso podemos decir que ella misma contempla los mejores avances y
conducen la vida al futuro, claro complementada por las telecomunicaciones y
por las ciencias exactas, la informática, la mecatrónica, la ciencia médica con
aplicaciones de prótesis, chips cerebrales, los mismos juegos de realidad
virtual y videojuegos infantiles y los no tan infantiles. En conclusión, los
desarrollos tecnológicos gestados en laboratorios, instalaciones militares, los
avances y ayudas humanitarias a países y personas en sitios aún hoy en día
remotos e inhóspitos, no fueran posible sin esta rama de la ingeniería la
electrónica pero principalmente la digital, la cual es hoy en día una de las más
importantes, versátil y sigue en avance y crecimiento en tiempos globalizados.
La electrónica digital ha alcanzado una gran importancia debido a que es
utilizada para realizar autómatas y por ser la piedra angular de los sistemas
micro programados como son los ordenadores o computadoras.

7.5- SIMULACIÓN.

Xilinx
La herramienta Xilinx-ISE (Integrated Software Environment) es una herramienta de diseño de
circuitos profesional que nos va a permitir, entre otras funciones, la realización de
esquemáticos y su posterior simulación
En este tutorial se va a utilizar concretamente:
 Entorno ISE: donde se realizará el diseño del circuito, bien mediante un esquemático
o utilizando un lenguaje específico de diseño

 ModelSim: donde podrá realizarse la simulación del funcionamiento del circuito y de


este modo comprobar si cumple con las especificaciones establecidas.
Se describirá a continuación el funcionamiento del programa, y para ello se
realizará el diseño de un circuito lógico que cumpla la siguiente tabla de
verdad:
Nu A B C D Z
m
0 0 0 0 0 1
1 0 0 0 1 0
2 0 0 1 0 1
3 0 0 1 1 0
4 0 1 0 0 0
5 0 1 0 1 0
6 0 1 1 0 0
7 0 1 1 1 1
8 1 0 0 0 1
9 1 0 0 1 0
10 1 0 1 0 1
11 1 0 1 1 0
12 1 1 0 0 0
13 1 1 0 1 0
14 1 1 1 0 1
15 1 1 1 1 0

Haciendo la tabla de Karnaugh y las simplificaciones habituales, se obtiene:

Z  BD  ABCD  ACD

Para implementar este circuito, por tanto, necesitaremos:

• 1 puerta OR de 3 entradas
• 1 puerta AND de 2 entradas
• 1 puerta AND de 3 entradas
• 1 puerta AND de 4 entradas
• 3 inversores para generar las líneas negadas de A, B y D.

Este programa de diseño de circuitos trabaja bajo entorno WINDOWS,


por lo que primero habrá que entrar en este sistema. Una vez iniciado
Windows buscamos el icono correspondiente al programa
Xilinx ISE (Figura 1) y lo ejecutamos pulsando dos
veces sobre él con el ratón usando el botón izquierdo

Fig. 1
1. Creación de un nuevo proyecto

Fig. 2

Un proyecto es un conjunto de ficheros de diseño, tales como


esquemáticos, líneas de código de programas (si se ha realizado el
diseño utilizando un lenguaje de programación específico de diseño
de circuitos HDL), listas de conexionado, bibliotecas de
componentes, vectores de test para la simulación, etc.,
seleccionados para un diseño específico
Nada más acceder al programa, aparecerá por pantalla una ventana
como la que se muestra en la figura 2, y que da acceso al programa
de diseño
Si hubiera ya algún proyecto cargado, se puede cerrar seleccionando la
opción de menú File  Close Project

1. Creación de un nuevo proyecto


Para crear un nuevo proyecto:
Tutorial Xilinx-ISE

1. Creación de un nuevo proyecto

Para crear un nuevo proyecto:


• Seleccionar File  New Project
• En la ventana de diálogo de New Project
indicar el directorio de ubicación del proyecto
en Project Location
• Añadir el nombre (p. ej. “tutorial”) en Project
Name
• En la opción Top-Level Module Type se elige
“Schematic” si el diseño se va a realizar con
esquemáticos o “HDL” si se va a utilizar un
lenguaje de descripción del hardware como
VHDL
• Automáticamente se crea un subdirectorio en la Fig. 3
ruta indicada en Project Location con el
nombre del proyecto (p. ej. “tutorial”), y donde
se almacenará todo lo relacionado con este
proyecto

Tutorial Xilinx-ISE

1. Creación de un nuevo proyecto

En la segunda pantalla hay que


seleccionar la FPGA sobre la que se va
a sintetizar el diseño. Para este caso
se seleccionará:
• Device Family: Spartan3 (familia)
• Device: xc3s200 (dispositivo dentro de
la familia)
• Package: ft256 (encapsulado)
• Speed grade: -4 (indica la velocidad
máxima del dispositivo)

Synthesis Tool: XST (VHDL/Verilog)

Simulator: Modelsim SE VHDL Fig. 4
(herramienta de simulación)

Generated Simulation Language: VHDL
(lenguaje asociado para los ficheros
que crea la herramienta)
1. Creación de un nuevo proyecto
Después se pasan las dos siguientes pantallas eligiendo Siguiente y al dar a
Finalizar, ISE crea y muestra el nuevo proyecto.
Se observarán cambios con respecto al aspecto inicial de la ventana en la
parte izquierda, en Sources in Project, donde aparece el proyecto creado,
como se ve en la figura 5

El paso siguiente será el diseño del


circuito que responda a la tabla de
verdad indicada al comienzo del tutorial.

Fig. 5

2. Realización del esquemático del circuito

Seleccionar Project  New Source


Seleccionar Schematic como tipo de
fuente
En File Name le damos el nombre al
diseño, por ejemplo “circuito”
Se presiona Siguiente
Se presiona Finalizar para concluir
(Figura 6)

Fig. 6
Tutorial Xilinx-ISE

2. Realización del esquemático del circuito

Se abre entonces la ventana


derecha correspondiente al editor
de esquemáticos (Figura 7), y los
menús izquierdos cambian.
En el superior aparece una nueva
pestaña llamada Symbols que
contiene la biblioteca de diseño de
Xilinx.
En el inferior aparecen las opciones
disponibles de la acción que
estemos realizando en cada
momento.

Fig. 7

11
1. Realización del esquemático del circuito
1.1. Componentes
Lo primero será fijar las puertas necesarias para la
realización del circuito. En el menú de la parte
izquierda superior de la herramienta (figura 8)
puede verse una parte llamada Categories, donde
se muestra una clasificación de las distintas
categorías de componentes.
Seleccionando cualquiera de ellas puede verse en
la ventana inmediatamente inferior, Symbols, las
puertas y componentes que forman la categoría
seleccionada. Si se selecciona <All Symbols> podrá
tenerse un listado de todos los componentes
pertenecientes a la biblioteca de componentes
Para poder obtener las puertas lógicas necesarias,
habrá que seleccionar <All Symbols> o Logic en la
ventana de Categories, y una vez en Symbols,
coger:
• and2: puerta AND de 2 entradas
• and3: puerta AND de 3 entradas
• and4: puerta AND de 4 entradas Fig. 8
• or3: puerta OR de 3 entradas
• inv: inversor (se necesitarán 3)
2. Realización del esquemático del circuito
2.1. Componentes
Si se desea rotar un componente puede hacerse empleando la opción
inferior del mismo menú, Orientation, y utilizando el menú desplegable
elegir la orientación deseada
Para eliminar un componente del editor de esquemáticos simplemente hay
que seleccionarlo y pulsar la tecla Supr. Asimismo, para mover un
componente bastará con seleccionarlo y arrastrarlo hasta el lugar
deseado mientras se mantiene pulsado el botón izquierdo del ratón
Tras la elección de las puertas necesarias, el editor de esquemáticos
muestra la apariencia de la figura 9
Se recomienda salvar el esquemático a menudo, para evitar posibles
problemas. Ello puede hacerse desde File Save As o pulsando el
icono

Realización del esquemático del circuito


Componentes

Fig. 9
2. Realización del esquemático del circuito
2.2. Conexionado
El siguiente paso será realizar las uniones entre las distintas puertas. Ello
puede hacerse desde el menú principal del editor de esquemáticos:
Add Wire, o pulsando el símbolo . El cursor se transformará en una
cruz. Tendremos que pulsar con el botón izquierdo del ratón los dos
extremos para que queden unidos por un cable
Si queremos unir una entrada o salida de un componente y dejar el otro
lado del cable “al aire” tendremos que hacer un doble click con el botón
izquierdo del ratón para indicar que el extremo final va suelto
El aspecto que ofrece el circuito en este momento, y tras hacer un zoom
para tener una mejor visión, es el mostrado en la figura 10. Se añade,
para mejor comprensión, y utilizando flechas auxiliares (que no forman
parte del diseño) a qué entrada o salida corresponde cada cable.

2. Realización del esquemático del circuito


2.2. Conexionado

D
C

B Fig. 10
A
2. Realización del esquemático del circuito

2.3. Añadir nombres a los cables


Llega el momento de indicar el nombre de cada
uno de los cables, para saber así qué señal
están llevando u obteniendo de las puertas
Esto puede realizarse desde el menú principal del
editor de esquemáticos: Add Net Name, o
pulsando el símbolo . El cursor
se transformará en una cruz
En el menú inferior izquierdo habrá que añadir el
nombre del cable en el hueco de Name.
Comenzaremos por “A” (ver figura 11a), y se
seguirá con “B”, “C”, “D” y “Z”
En el cursor, que se había transformado en una
cruz, se añade ahora la letra A. Habrá que
arrastrar el cursor hasta el punto final del
cable correspondiente a la señal A y que
habíamos dejado libre y pinchar con el botón Fig. 11 a
izquierdo en ese punto para añadir el nombre

2. Realización del esquemático del circuito


2.4. Terminales de entrada/salida
El siguiente paso será identificar la dirección de cada señal, esto
es, si corresponde a una entrada o a una salida
Para añadir terminales de entrada/salida: Add I/O Marker o
bien pulsar el icono
En el menú inferior izquierdo (fig 11b) hay que indicar si es un
terminal de entrada, de salida o bidireccional.
Comenzaremos con las entradas, con lo que
seleccionaremos input.
El cursor se transforma en un símbolo de terminal de entrada
que habrá que arrastrar hasta el punto final de alguna de
las entradas, que hemos nombrado previamente, y pinchar
con el botón izquierdo del
ratón. Veremos que el símbolo de entrada engloba a la Fig. 11 b
letra correspondiente, fijándola como terminal de entrada:
2. Realización del esquemático del circuito
2.4. Terminales de entrada/salida
Tras repetir la operación para el resto de entradas y para la salida
(seleccionando previamente Output en el mismo menú) el aspecto del
esquemático del circuito se muestra en la figura 12

Fig. 12

2. Realización del esquemático del circuito


2.5. Comprobación del circuito
Una vez terminado el diseño del circuito puede hacerse una simple comprobación sobre el
mismo, para asegurarnos de que todas las conexiones están hechas correctamente y que no
quedan cables sueltos o puertas sin conectar
Para ello, desde el menú principal: ToolsCheck Schem
, atic,o bien m ediante elicono
En la ventana
. inferiorse inform a sihay algún erroren elcircuito.
Si todo está correcto la ventana será la mostrada en la figura 13

Fig. 13
3. Creación de un
símbolo
Con el esquema realizado se puede hacer un nuevo componente o
símbolo consistente en una especie de “caja negra”, donde el usuario
sólo verá un bloque con el mismo número de entradas y de salidas
que el esquema original, que englobará a éste y realizará su misma
función
Este símbolo que se crea pasa a formar parte de la biblioteca de
componentes del proyecto, y podrá utilizarse como un componente
más
Para crearlo: ToolsSymbol Wizard desde el menú principal. Aparece
entonces la ventana de la figura 14, donde hay que indicar que el
símbolo se crea a partir del esquemático ya realizado (opción Using
Schematic con el esquemático “circuito”)

3. Creación de un símbolo

Pulsando Siguiente tres veces y


después Finalizar (aceptando las
opciones por defecto a menos que se
quiera variar el aspecto final del
símbolo) el programa genera el
símbolo y lo muestra (figura 15)

Fig. 14
3. Creación de un símbolo

Fig. 15

3. Creación de un
símbolo

Si nos fijamos en la parte inferior izquierda de la ventana del editor de


esquemáticos, podemos ver que hay dos pestañas, circuito.sch y
circuito.sym, correspondientes a las dos hojas que
tenemos abiertas en el editor de esquemáticos. Pulsando sobre
circuito.sch se accede al esquema original y sobre circuito.sym al
símbolo que hemos creado del circuito
En el esquema del circuito original, si ahora nos fijamos en la ventana de
la parte derecha, Categories, vemos que hay una nueva categoría,
<d:/xilinx/tut>, que se corresponde a la biblioteca del proyecto que
hemos abierto, y donde ha almacenado el componente creado. De
hecho, si seleccionamos esta categoría, podemos ver en la ventana
inferior, Symbols, que ahí está el componente circuito creado, y que
ahora puede utilizarse como un componente más a la hora de diseñar
24
4. Simulación
Una vez que se tiene el circuito listo, revisado y libre de errores, será
necesario comprobar su correcto funcionamiento, y para ello habrá
que realizar la simulación del circuito
4.1. Creación de un banco de pruebas
Lo primero será crear un “banco de pruebas”, donde introduciremos los
valores que se asignarán a las entradas del circuito y en función de los
cuales se obtendrá una salida que habrá que ver si coincide con la
esperada
Los pasos a seguir son los siguientes:
– Seleccionar ProjectNew Source
– En la ventana de diálogo que aparece (figura 16), seleccionar Test Bench
Waveform
– Asignarle un nombre, por ejemplo “circuito_tbw” (tbw son las iniciales de Test
Bench Waveform, para recordar qué es lo que se está haciendo)
– Presionar Siguiente
– Presionar Siguiente
– Presionar Finalizar

4. Simulación

Realizados los pasos siguientes, se inicia el banco de pruebas y el


programa queda listo para introducir los requisitos necesarios

Fig. 16
4. Simulación

En la ventana Initialize Timing hay que


especificar los parámetros de
tiempos que se usarán en la
simulación (figura 17),
especificando que no hay reloj,
sino que es un circuito
combinacional (opción
Combinatorial (or internal clock))

Fig. 17

4. Simulación
La opción Check Outputs define cuándo deberían estar ya en su valor
correcto las salidas tras un cambio en las entradas. La opción Assign
Inputs define el tiempo que pasa desde que se comprueban las salidas
hasta que se asigna un nuevo valor a las entradas
Para este tutorial no cambiaremos ninguna de las especificaciones por
defecto salvo la de Initial Length of Test Bench, que pondremos a
1600 ns (cada paso lleva 100 ns y así podremos probar las 16
opciones de la tabla de verdad inicial). Por tanto, las especificaciones
quedarán finalmente:
– Check Outputs: 50 ns
– Assign Inputs: 50 ns
– Initial Length of Test Bench: 1600 ns
En la ventana Initialize Timing presionaremos OK para aceptar las
especificaciones por defecto. Aparecerá entonces la ventana
correspondiente al banco de pruebas que se utilizará para la
simulación (figura 18)
4. Simulación

Fig. 18

4. Simulación
4.2. Inicialización de las entradas del circuito
En la nueva ventana del banco de pruebas (figura 18) aparece un
cronograma donde habrá que introducir los estímulos (ceros o unos)
correspondientes a las entradas para poder reproducir la tabla de la
verdad del circuito diseñado
Aparecen, en la parte izquierda, las señales de las cuatro entradas y la
salida. Inicialmente, todas las entradas se encuentran a cero
Es necesario inicializar las entradas con los valores adecuados para
poder comprobar el correcto funcionamiento del circuito. Los estímulos
(ceros o unos) se introducirán pinchando en la zona azul de cada
celda
Para reproducir la tabla de verdad en el mismo orden, la entrada A
permanece 8 ciclos a “0” y otros 8 a “1”. La entrada B cambia de 0 a 1
cada 4 ciclos de reloj, la entrada C realiza el cambio cada 2 ciclos de
reloj y, por último, la entrada D cambia continuamente de 0 a 1
Los cambios se irán reflejando según se vayan introduciendo
en el cronograma
4. Simulación

Los valores (0 o 1) se introducen en los rectángulos azules (pinchando con el


botón izquierdo del ratón) que aparecen para cada intervalo de tiempo y en cada
una de las variables
Señal A: 0 en 0 ns; 1 en 800 ns
Señal B: 0 en 0 ns; 1 en 400 ns; 0 en 800 ns; 1 en 1200 ns
Señal C: 0 en 0 ns; 1 en 200 ns; 0 en 400 ns; 1 en 600 ns; 0 en 800 ns ...
Señal D: 0 en 0 ns; 1 en 100 ns; 0 en 200 ns; 1 en 300 ns; 0 en 400 ns...
La salida se completará en 1600 ns
Pueden utilizarse los botones Zoom In, Zoom Out para ver más claramente los
valores introducidos
El resultado puede verse en la figura 19

4. Simulación

Fig. 19
4. Simulación
Simulación del comportamiento del circuito

Para realizar una simulación del comportamiento del circuito (behavioral), se


utiliza la herramienta ModelSim
Pasos a seguir:
En Sources, seleccionar primero Sources for: Behavioral Simulation desplegar el menú de
jerarquía con + y seleccionar el fichero circuito_tbw.tbw
En la ventana Processes, desplegar el menú de jerarquía con + y hacer doble click en
Simulate Behavioral Model (figura 20). En ese momento se carga el programa ModelSim

Fig. 20

4. Simulación
Al arrancar el programa ModelSim aparece la ventana ModelSim SE,
se ejecuta la simulación y aparecen una serie de ventanas
embebidas en la principal (ver figura 21)

Estructura
del diseño
simulado
(workspace) Formas de
onda
simuladas
(wave)

Señales en
el nivel

seleccionado
de la
estructura
(objects) Fig. 21
4. Simulación

Los resultados de la simulación del comportamiento del circuito se


mostrarán en la ventana de ondas (wave)
Nota: ISE automatiza el proceso de simulación creando y ejecutando un
fichero macro de simulación (fichero .fdo), que no es visible para el
usuario pero que realiza las siguientes funciones:
– Crea las bibliotecas de diseño
– Compila el diseño y los ficheros del banco de pruebas
– Llama al simulador
– Abre todas las ventanas relacionadas con la simulación
– Añade todas las señales a la ventana de ondas (wave window)
– Corre un tiempo igual a la duración del Test Bench Waveform generado
previamente

35

4. Simulación
En la ventana wave-default, habrá que hacer un zoom para poder visualizar la
salida del circuito. Presionar Zoom  Zoom Full y Zoom
 Zoom In. El resultado de la simulación debería ser como el mostrado en la
figura 22

Fig. 22

4. Simulación
Para una comprobación más fácil del correcto funcionamiento del
circuito y puesto que las entradas recorren todos los posibles
estados (0, 1, 2... 15) sería bueno poder reunir las entradas
individuales en una, bajo la forma de un vector, y que así nos
mostrara los estados por los que van pasando las combinaciones de
las señales a las que representa
Para ello, seleccionamos las entradas del circuito en la ventana wave-
default pulsando el botón izquierdo del ratón y las teclas shift o ctrl,
con lo que aparecerán en el interior de un recuadro blanco:

Fig. 23

4. Simulación
Con las señales que se vayan a combinar ya seleccionadas, se utiliza
la opción de menú Wave  Combine Signals…:

4. Simulación

Fig. 24
Fig. 25

En el cuadro de diálogo que aparece hay que dar un nombre


a la nueva señal combinada, por ejemplo “entradas”
4. Simulación
Pulsamos OK y vemos que en la ventana wave-default aparece una
Se sale de ModelSim
nueva cerrando la ventanaSi
señal /testbench/entradas. ModelSim SE en el símbolo +
pulsamos
podemos ver la jerarquía, esto es, las señales que tiene por debajo y
a las que representa 40

Para visualizar los valores de esta señal combinada como número en


vez de en binario, habrá que seleccionar la entrada combinada,
pulsar el botón derecho del ratón y en el menú de opciones elegir
RadixUnsigned. Para mayor facilidad, podemos desplazar la señal
de salida Z inmediatamente debajo de la señal de entrada
combinada, pinchando en la señal de salida y arrastrando hacia
arriba la señal con el botón izquierdo del ratón pulsado. El aspecto
de la simulación se muestra en la figura 25

39

10.- Conclusión

El ensayo tiene como finalidad permitir me adquirir conocimientos enfocados


hacia como se programa y diseña un FPGA en que consiste su estructura, y
conocer los principios básicos desde su creación y como ha ido
evolucionando y adquiriendo más uso en el ámbito cotidiano, sector salud,
militar y de investigación a corde el área que demanda algo tan industrial y
versátil como es este invento.
¿Para qué se utilizan?
Por tanto, un FPGA puede ser similar a un ASIC pero que nosotros podemos elegir lo
que va a ser. Por ejemplo, podríamos crear un código para programarlo y convertirlo en
una CPU, en una GPU, en un sumador, un controlador de memoria, o cualquier otro
circuito lógico implementado en un solo chip.

Las posibilidades son bastante infinitas. De hecho, te recomiendo visitar la página


web opencores.org, un sitio dedicado a ofrecer multitud de proyectos de hardware libre.
Encontrarás códigos en VHDL, Verligo, etc., para RAM, CPU, GPU, controladores, ALUs,
FPUs, decodificadores, y un largo etc.

¿Cómo se programa?

Para programar un FPGA lo podemos hacer desde nuestro sistema operativo favorito,
como GNU/Linux, Windows y MacOS, aunque ciertamente existen más entornos de
desarollo para Windows. Por lo general, las mismas compañías que fabrican el FPGA
ofrecen un IDE muy completo con el que trabajar y donde encontrar todas las
herramientas que necesitas en una misma suit de software.

También necesitarás el chip o placa FPGA y el cable o programador necesario con el


que podrás conectar el FPGA a tu PC para pasar el código escrito al FPGA y así que
quede programado. Eso es algo similar a lo que haces con la placa Arduino, grabando el
programa de Arduino IDE en la memoria programable del microcontrolador.

Solo que en el caso del FPGA lo que tenemos es una matriz o array de componentes
elementales como celdas de memoria, compuertas AND, OR, NOT, Flip-flops, y
otros elementos o bloques básicos de electrónica digital que podemos usar. Con el
programa escrito lo que vamos a hacer es imponer la forma en que esos bloques
esenciales se van a agrupar para formar el cirucito que queremos, como por ejemplo una
ALU.

Es decir, si programamos un sumador en nuestro IDE, los bloques necesarios para


implementar este sumador se van a enlazar de la forma correcta dentro del FPGA para
que el chip funcione como un sumador. Sencillo ¿verdad? Por lo general se usan varios
métodos para esta programación a nivel físico, como suelen ser memorias o fusibles para
hacer un enlazado permanente en ese caso.

La velocidad a la que operan va a depender de la frecuencia de reloj a la que trabaje el


FPGA que hemos comprado. Por ejempo, los más básicos suelen funcionar a 50 Mhz,
otros lo harán a frecuencias mucho superiores. En el caso del FPGA a 50 Mhz, eso quiere
decir que operará a un ritmo de 50.000.000 veces por segundos. Si seguimos con el
sumador que he puesto como ejemplo, podrá hacer esa cantidad de sumas en un
segundo…

Siguiendo con el tema de la programación, una vez que sabemos que se puede escribir
código como lo haríamos en Arduino IDE o para desarrollar cualquier otro programa, y de
ver cómo se hace a nivel de hardware, diré que realmente no se trata de una programación
como tal. Más bien es una descripción de hardware. De hecho se usan lenguajes de
descripción de hardware como es VHDL, Verilog, etc.

Con ese programa se describe a nivel lógico lo que hace el cirucito que queremos
implementar. Y luego se pasa al FPGA. Aunque es verdad que algunas plataformas
permiten programación en lenguajes de programación como C para poder implementar una
CPU en el FPGA y luego generar programas para cargar en una memoria y ser procesadas
por dicho procesador.

Integración con Arduino

Los FPGAs suelen usarse por separado, pero es cierto que existen multitud de
herramientas y kits en el mercado que te facilitarán la vida para poder integrar tu FPGA
con la plataforma Arduino. Un ejemplo de placa para llevar FPGA a tus proyectos con
Arduino es MKR Vidor 4000, aunque hay otras.

MKR Vidor 4000 es una placa con tres chips. Uno de ellos es un FPGA, concretamente un
Intel Cyclone 10. También hay otros chips para conectividad Bluetooth LE o de bajo
consumo y también compatibilidad WiFi. Un buen complemento para dotar a tu Arduino de
funcionalidades de conectividad y poder implementar lo que necesites en el FPGA.

Con ello tienes un hardware personalizable, configurado por ti mismo para el propósito
que quieras. Eso ofrece infinitas posibilidades.

Referencias bibliográficas:
https://www.hwlibre.com/fpga/

https://www.marca.com/claro-mx/trending/2020/05/30/5ed29185e2704e93a88b45e3.html

https://www.uv.es/rosado/courses/dcse/prac1_ISE_VHDL1.pdf

https://www.xilinx.com/video/hardware/ise-tools-for-spartan-6-fpga-on-windows-10.html

https://emagcas.webs.ull.es/index_archivos/apuntes_sed/mux2a1_tutorial.pdf

Вам также может понравиться