Sunteți pe pagina 1din 17

UNIVERSIDAD ESTATAL PENÍNSULA DE SANTA ELENA

FACULTAD DE SISTEMAS Y TELECOMUNICACIONES

CARRERA:

ELECTRÓNICA Y TELECOMUNICACIONES

ASIGNATURA:

LABORATORIO DE SISTEMAS DIGITALES

TEMA DE PROYECTO:

Control de nivel de un Deposito

IMPLEMENTACION EN LA TARJETA FPGA.

NOMBRES:

JENIFFER JAIME CRUZ

LEONARDO GUILLEN CHILAN

DOCENTE:

ING. ELSY VILLAMAR, MSC

1
OBJETIVOS

OBJETIVO GENERAL
Diseñar, analizar e implementar un circuito lógico que satisfaga las necesidades del
ejercicio planteado

Controlar el sistema de nivel de deposito de agua ,efectuar las respectivas ecuaciones que
nos permitan efectuar adecuadamente el sistema para lograr un buen funcionamiento de
este, optimizando recursos y mostrando resultados en la tarjeta altera fpga .

OBJETIVOS ESPECIFICOS
 Reforzar y aplicar los conocimientos adquiridos en clases de la materia de
Laboratorio de Digitales y materias previas como Sistemas Digitales I y II.
 Diseñar, analizar y poder plasmar de una manera óptima las ecuaciciones
requeridas para el sistema que permitan el llenado de los tanques utilizando bollas
para que cada bomba trabaje en tiempos correctos.
 Elegir de forma adecuada las señales de entrada y las señales de salida para
nuestro diseño del llenado de tanques.
 Identificar los tipos de datos apropiados para las variables , señales y las demas
entradas que requeramos conveniente utilizar en nuestro diseño.
 Realizar el control de cada una de las señales de salida para el correcto
funcionamiento de nuestro sistema.
FUNDAMENTO TEORICO

Lógica programada
La expresión «lógica programada» (o «lógica programable») hace referencia a la
posibilidad de establecer la operativa lógica de un circuito integrado definiéndola por
medio de un lenguaje que permite describirla a un nivel más o menos alto y que puede
posteriormente ser traducida para implementarla en el dispositivo lógico, bien durante su
fabricación o bien posteriormente. Si bien la utilización de lógica programable en
laboratorios de diseño digital posee grandes ventajas frente a la lógica discreta: se evitan
problemas de cableado, introduce mayor confiabilidad, etc., se introduce un efecto “caja
negra” en el proceso de diseño que involucra la utilización

FPGA (Field Programmable Gate Array)


Las FPGA’s (Field Programmable Gate Array) son circuitos de aplicación específica
(ASIC) de alta densidad programables por el usuario en un tiempo reducido y sin la
necesidad de verificación de sus componentes, se las considera como un derivado de los
Gate Array, aunque es menos usado, también se les conoce como LCAs (Logic Cell
Array). Además los FPGAs presentan líneas de interconexión, agrupadas en canales
verticales y horizontales. Finalmente, disponen de células de memoria de configuración
(CMC, Configuration Memory Cell) distribuidas a lo largo de todo el chip, las cuales
almacenan toda la información necesaria para programar los elementos programables
mencionados anteriormente. Estas células de configuración suelen consistir en memoria
RAM y son inicializadas en el proceso de carga del programa de configuración.

Arquitectura de una FPGA


Las FPGA se caracterizan principalmente por su organización lógica (ver figura 4)
tamaño, recursos especiales de procesamiento, almacenamiento y control y por su
velocidad y consumo de energía. Las FPGA están basadas en una matriz de bloques
lógicos programables (también llamados bloques lógicos configurables CLBs o bloques
matriciales lógicos LABs) acoplados por líneas de interconexión y cajas de conmutadores

Las funciones digitales que el usuario define son mapeadas a uno o más de los bloques
lógicos. Las líneas de interconexión configurables forman parte de los recursos de rutado
del dispositivo, los cuales son la clave de la flexibilidad de la FPGA, pero que también
representan un compromiso entre flexibilidad de programación y eficiencia de área. El
rutado incluye típicamente una jerarquía de canales que van desde las líneas de alta
velocidad, hasta las dedicadas para la difusión de la señal de reloj y reset. Los
conmutadores programables, que pueden ser basados en RAM, borrables eléctricamente
o programables una sola vez, habilitan la conexión de las líneas de rutado y de los recursos
internos y elementos externos, reduciendo al mínimo el retardo de red. El proceso de
diseño de un circuito digital utilizando una matriz lógica programable puede
descomponerse en dos etapas básicas:
a. Dividir el circuito en bloques básicos, asignándolos a los bloque configurables del
dispositivo.
b. Conectar los bloques de lógica mediante los conmutadores necesarios.

Para ello el fabricante proporciona las herramientas de diseño adecuadas.

Entre las numerosas ventajas que proporciona el uso de FPGAs dos destacan
principalmente: el bajo coste de prototipado y el corto tiempo de producción. No todo son
ventajas. Entre los inconvenientes de su utilización están su baja velocidad de operación
y baja densidad lógica (poca lógica implementable en un solo chip). Su baja velocidad se
debe a los retardos introducidos por los conmutadores y las largas pistas de conexión. Por
supuesto, no todas las FPGA son iguales. Dependiendo del fabricante nos podemos
encontrar con diferentes soluciones. Las FPGAs que existen en la actualidad en el
mercado se pueden clasificar como pertenecientes a cuatro grandes familias, dependiendo
de la estructura que adoptan los bloques lógicos que tengan definidos.
QUARTUS II de Altera
El software QUARTUS II proporciona una completa multiplataforma en torno de diseño,
es compatible con la mayoría de los dispositivos que maneja el software MAX PLUS II,
pero no es compatible con los dispositivos obsoletos o paquetes. El sistema de desarrollo
QUARTUS II es una plataforma de herramientas para el diseño de circuitos digitales
sobre dispositivos FPGA y CPLD. QUARTUS II provee aplicaciones para la entrada de
diseño, síntesis lógica, simulación lógica, ubicación y conexionado, análisis temporal,
administración de potencia y programación de dispositivos, junto con una variedad de
utilitarios y aplicaciones adicionales para el diseño lógico programable. El software
QUARTUS II, ahora cuenta con ventajas únicas en la metodología de flujo de diseño
(figura 27) de FPGAs, diseño de sistemas, metodología de tiempo - cierre, tecnología de
verificación en sistema y el apoyo de EDA a terceros.

Procedimiento de diseño en QUARTUS II de Altera


Usando la herramienta QUARTUS, estas son las etapas que deben seguirse para diseñar
un sistema lógico: a. Definición del sistema lógico, que en función de su complejidad se
subdividirá en subsistemas formando una estructura jerárquica. Cada uno de estos
subsistemas se definirá de alguna de las siguientes maneras:
Editando gráficamente su esquema, esto es, dibujando su esquema a partir de
bibliotecas de elementos básicos y símbolos que representan otros subdiseños.
Editando en forma de texto o escribiendo su descripción en un lenguaje de descripción
de hardware como VHDL.
Compilación: Después de definir el circuito, éste debe compilarse. Se detectan errores
introducidos en la definición. Tras corregirlos se crea un fichero que contiene la lógica
del sistema y que permitirá simular su funcionamiento. Este es el momento de elegir una
PLD concreta en la que programar el sistema completo. El compilador necesitará esta
información para realizar simplificaciones y minimizar la lógica del sistema adecuándola
de la mejor manera a la PLD. c. Definición de entradas Todo sistema lógico procesa
señales externas y genera resultados. Por ello, antes de simular el funcionamiento del
mismo, hay que definir sus entradas, es decir los valores aplicados a todas las entradas
del sistema durante el tiempo que dure la simulación. Para definir las entradas se utiliza
un editor de formas de onda

IMPLEMENTACIÓN DE SISTEMAS COMBINACIONALES CON LOGICA


PROGRAMABLE
Son varias las tecnologías disponibles para el diseño de sistemas digitales, cada una con
sus ventajas e inconvenientes. Una de las posibilidades es usar matrices de puertas
digitales programables por el diseñador (FPGA, Field Programmable Gate Array). Las
FPGA constan de bloques de circuitos lógicos, líneas de conexión, matrices de
interruptores y pines de entrada salida.
Los bloques de circuitos lógicos reciben diferentes nombres según el fabricante, en ellos
se concentra la capacidad de computación de la FPGA. La arquitectura interna de los
bloques lógicos depende del fabricante y del dispositivo. Las líneas de conexión son las
encargadas de conectar los diferentes bloques y los pines; son largos conductores que
atraviesan el integrado. Puede haber líneas específicas dedicadas, por ejemplo para
señales de reloj o reinicio del sistema, que se extiende por toda la FPGA. La mayor parte
de los pines son de entrada-salida de señal, pero también los hay exclusivos para
alimentación, relojes, reinicio y programación de la FPGA.
Metodologías de diseño con FPGA
Existen diferentes métodos de descripción de un circuito en una FPGA, en todos ellos se
diseña de forma independiente de la tecnología. Es decir, el diseñador no tiene que
conocer la arquitectura interna de la FPGA, ni las características de los circuitos
semiconductores. En este apartado se describen los diferentes métodos disponibles para
este tipo de dispositivos. Edición de esquemáticos El método más intuitivo y usado desde
hace decenios es la edición de esquemáticos. De esta forma el diseñador dibuja y describe
los sistemas digitales usando puertas lógicas, registros, biestables, etc.; básicamente
colocándolos y conectándolos. Esto se llama “captura de esquemáticos” y en el proceso
se describe el sistema completo, pudiendo usarse niveles de jerarquía o sistemas ya
creados. Obviamente, para evitar el dibujo manual de los sistemas, pronto se hizo
necesario entornos de diseño gráfico sobre computador. Los lenguajes de descripción
hardware En la década de los años ochenta, aparecen los lenguajes de descripción
hardware (HDL, Hardware Description Language). Estos lenguajes permiten describir
sistemas digitales usando texto, facilitando su diseño y modificación. Por medio de una
compilación se genera la arquitectura del circuito. Lenguajes de alto nivel Con la
aparición de VHDL y Verilog aparece un curioso fenómeno, que se describe a
continuación. Los programadores siguen usando los lenguajes de programación de alto
nivel (C, Java, etc.) para ejecutar programas secuenciales. Estos programas se ejecutan
sobre computadoras, normalmente en punto flotante.

Secuencia de programación en QUARTUS II


Para poder entender como es la secuencia de programación de un sistema combinacional
en QUARTUS II, se elige implementar una compuerta and mediante lógica programable.
El estudiante primeramente ejecuta el QUARTUS II, al igual que cualquier otro
programa, cuando se ejecuta, este muestra su menú principal. A continuación la figura
nos muestra la ventana principal cuando se inicia el software QUARTUS II, en donde
comenzaremos a realizar los diseños lógicos.

Descripción Estructural
Esta descripción utiliza para la creación de la arquitectura de la entidad entidades descritas
y compiladas previamente, de esta manera en VHDL podemos aprovechar diseños ya
realizados, o realizar diseños sabiendo que se utilizarán en otros más complicados. Así se
ahorra trabajo al diseñador-programador. Se declaran los componentes que se van a
utilizar y después, mediante los nombres de los nodos, se realizan las conexiones entre
los puertos

Sintaxis de la Arquitectura
en VHDL
Adaptación a la tarjeta
Asignación de pines
Consiste en la asignación de las patillas físicas del dispositivo de lógica programable
(FPGA) a los componentes de la tarjeta DE2 (ver DE2_UserManual).

 Elegir Pin Planner del menú Assignments.


 Para asignar las patillas de la FPGA a los terminales del esquema, hacer doble clic
en la columna Location y en la fila del terminal que se quiere asignar, y a
continuación elegir el pin correspondiente al terminal de la lista desplegada.
 Configurar de acuerdo a la tabla.2.

Señal Tipo Componente Pin FPGA


A entrada SW0 PIN_N25
B entrada SW1 PIN_N26
C salida LEDR1 PIN_AF23
A1 entrada SW2 PIN_P25
B1 entrada SW3 PIN_AE14
C1 salida LEDR3 PIN_AC22
A2 entrada SW4 PIN_AF14
B2 entrada SW5 PIN_AD13
C2 salida LEDR5 PIN_AD23
Asignación de pines de la FPGA con la tarjeta DE2.

Una vez que se ha terminado con la asignación de pines para este diseño, guardar la
operación y volver a compilar para que el dispositivo se quede con su nueva
configuración.

Además, el usuario puede usar esta misma asignación de pines para posteriores diseños
en la que sea requerida. Acudiendo al menú File situado en la barra de herramientas
principal mediante la opción Export se crea un archivo con extensión .csv capaz de ser
leído por el Software Microsoft Excel. A continuación, en un nuevo proyecto, es posible
importar esta asignación escogiendo el menú Assignments seguido de la opción Import
Assignments seleccionando el archivo con extensión .csv que se desea importar.

Programación de la FPGA
Use la Figura.12. para hacer los siguientes pasos:

 Conecte el adaptador de 9V DC
 Conecte el USB Blaster a la tarjeta y al computador
 Verifique el interruptor este RUN
 Presione el Power Switch para encender la tarjeta
 Luego vaya al menú principal, escoja herramientas y escoja programador.
 Configure como muestra en pantalla (previamente debió haberse instalado el
driver USB-BLASTER).
 Presione Start para pogramar.
 Verifique el funcionamiento.

Tarjeta DE2
CONTROL DE NIVEL DE UN DEPOSITO

Mediante dos bombas (m1, m2) se controla el nivel de un depósito. El depósito tiene dos
bombas (b1, b2). Cuando el nivel está por debajo de la boya el contacto correspondiente
está abierto. Las bombas sacan agua de dos pozos, si no hay agua en el pozo la bomba no
funciona. Para controlar esto, cada pozo lleva un sensor (n1, n2).

El sistema funciona de la siguiente manera:

 Si el nivel de depósito supera la boya b1, las bombas están paradas.


 Si el nivel de depósito está entre la boya b1 y b2 funciona la bomba m1, si no hay
agua en el pozo 1 pero la hay en el 2 funciona m2.
 Si el nivel del depósito está debajo de la boya b2, se activa la bomba m2, además
de la m1.

a) Determinar las funciones lógicas de m1 y m2.

b1 b2 n1 n2 f1=m1 f2=m2

0 0 0 0 0 0

0 0 0 1 0 1

0 0 1 0 1 0

0 0 1 1 1 1

0 1 0 0 0 0

0 1 0 1 0 1

0 1 1 0 1 0

0 1 1 1 1 0

1 0 0 0 0 0

1 0 0 1 0 0

1 0 1 0 0 0

1 0 1 1 0 0

1 1 0 0 0 0

1 1 0 1 0 0

1 1 1 0 0 0

1 1 1 1 0 0
b1 b2 b1 b2
n1 n2 00 01 11 10 n1 n2 00 01 11 10

00 0 0 0 0 00 0 0 0 0

01 0 0 0 0 01 1 1 0 0

11 1 1 0 0 11 1 0 0 0
m2= b1’ n2(b2’+ n1’)
10 1 1 0 0 10 0 0 0 0

m1= b1’ n1

b) Dibujar el circuito en puertas lógicas para su control


c)Programa que cumple todas las condiciones necesarias para el desarrollo del
Proyecto
PROGRAMACION VHDL
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all; --libreria necesaria para tipos de datos
unsigned, signed, integer, etc

entity proyecto_primer_parcial is port(


b1,b2,n1,n2: in std_logic;
h1,h2,h3,h4,h5,h6,h7,h8: out std_logic;
m1,m2,m1a,m2a: out std_logic
);
end proyecto_primer_parcial ;

architecture arc_proyecto of proyecto_primer_parcial is


begin
process(b1,b2,n1,n2)
variable m1a,m2a: std_logic;
begin

m1<=not(b1)and n1;
m2<=not(b1) and (n2) and(not(b2)or not(n1));
m1a:=not(b1)and n1;
m2a:=not(b1) and (n2) and(not(b2)or not(n1));

if m1a='0' and m2a='0' then


h1<='0';
h2<='0';
h3<='0';
h4<='0';
h5<='0';
h6<='0';
h7<='1';
h8<='0';
elsif m1a='1' and m2a='0' then
h1<='1';
h2<='0';
h3<='0';
h4<='1';
h5<='1';
h6<='1';
h7<='1';
h8<='1';
elsif m1a='0' and m2a='1' then
h1<='0';
h2<='0';
h3<='1';
h4<='0';
h5<='0';
h6<='1';
h7<='0';
h8<='1';
end if;

end process;

end arc_proyecto;

SIMULACION, LINEAS DE TIEMPO


IMPLEMENTACION EN LA TARJETA FPGA

Implementación del ejercicio en la tarjeta FPGA


Implementación del ejercicio en la tarjeta FPGA

Implementación del ejercicio en la tarjeta FPGA

CONCLUSIONES

 Al momento de hacer la programación en VHDL que se debe tener en cuenta no


cometer errores lógicos que podrían alterar el funcionamiento de nuestro
programa habiendo salidas no deseas y el no correcto funcionamiento del
programa.
 Los sistemas basados en la implementación de procesos digitales cada día toman
mayor fuerza en el mercado de desarrollo de aplicaciones; dejando a un lado las
señales analógicas y siendo esta como una opción sólo para algunas aplicaciones.
 Mediante la tabla de verdad se realiza las comprobaciones debido a que al activar
las entradas con las distintas configuraciones según el enunciado la salida debe
activar la bomba o en este caso el led que demuestra el funcionamiento del
sistema.
 Se observó que funcionaba correctamente al accionar la entrada b1 debido a que
según las condiciones del sistema al activarse el sensor b1 existiría un paro general
de las bombas y se observa en la tabla de vedad que todas las combinaciones en
las que b1 se encuentra con un “1” lógico las salidas tienen un “0” lógico.

RECOMENDACIONES

 Tener en cuenta que existen algunas restricciones en el lenguaje VHDL, ya que


las variables solo pueden ser utilizadas dentro de un solo proceso y se ejecutaran
siempre y cuando esten dentro del proceso en el que fue declarado dicha variable,
si queremos usar una u otra variable de manera global tendremos que hacer el uso
de señales auxiliares, dicha señal auxiliar ya nos permite el uso de ese dato y poder
usar ese dato en el proceso que requiramos.
 Cabe recalcar que al diseño propuesto se le puede agregar unas mejoras como
agregar el diseño de la salida de los vehiculos y asi ir obteniendo cupos libres, se
le puede agregar mejores al código realizado para que funcione de una manera
más óptima y cumpla con más requerimientos.
 El contador que permite en nuestro diseño poder controlar si que el parqueadero
estaba lleno o no ,funciona con ciclos de reloj y agregando la sintaxis rising_edge,
de tal manera que esta sintaxis evalua cada vez que haya un ciclo de reloj y la
variable contador incrementa en uno su valor.
 Estar muy atentos en la respectiva conversion entre los datos utilizados en este
caso fueron de tipo integer y std_logic_vector, ya que no se puede convertir
directamente una variable de tipo integer a std_logic_vector, tendriamos que
obligatoriamente primero convertirla a tipo unsigned y luego a std_logic_vector,
y asi de viceversa para la conversion de tipo std_logic_vector a integer,
recordando claramente la sintaxis en VHDL de la respectiva conversión.
 Los Displays de la tarjeta FPGA trabajan con lógica negativa y no confundirnos
cuando estamos haciendo la programación en el lenguaje VHDL.
Bibliografía
(s.f.). Obtenido de COMPUERTAS DIGITALES:
https://sites.google.com/site/ovaselectronica/CONTENIDOS/compuerta-XOR

Floyd, T. L. (2006). Fundamentos de Sistemas Digitales. Madrid: PEARSON EDUCACIÓN S.A.

Pérez López, S., Soto Campos , E., & Fernandez Gómez , S. (2015). Diseño de Sistemas Digitales
con VHDL. Bogotá: Paraninfo.

Sánchez, M. (2016). Introducción a la Programación en VHDL. Madrid: Universidad


Complutense de Madrid.

Tocci, R. J. (2007). Sistemas Digitales, Principios y Aplicaciones. Mexico: PEARSON EDUCACIÓN


S.A.

S-ar putea să vă placă și