You are on page 1of 23

PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus

1
DISEÑO DEL SISTEMA DIGITAL “ASCENSOR”


1. Especificaciones preliminares de diseño

Se debe diseñar un sistema digital que controle el funcionamiento de un ascensor que
transporta libros, con el fin de mejorar el desempeño de las actividades de una
biblioteca. El bibliotecario debe colocar los libros en el ascensor, programar los pisos en
los cuales el ascensor debe detenerse, y dar inicio a la secuencia. Si se requiere que el
ascensor retorne al primer piso, el usuario puede hacer la petición mediante un botón de
alarma. El usuario debe saber el estado del ascensor (subiendo, bajando, detenido,
alarma) y el piso en el que se encuentra. Las especificaciones del diseño son:

- El ascensor debe atender en 5 pisos.
- La selección de los 5 pisos se debe hacer por medio de un dipswitch. Se representa
por 5 bits, donde cada bit indica un piso determinado. La señal de salida del
dipswitch se llama PISOS y es activa en alto.
- Después de la selección de los pisos, una señal de entrada INICIO se encarga de
hacer que el ascensor comience a operar. La señal INICIO es activa en alto.
- El piso en el cual se encuentra el ascensor, debe ser mostrado en un display de 7
segmentos.
- El display debe encenderse y apagarse cuando el ascensor se detenga en uno de los
pisos programados.
- Una señal de entrada debe ser ALARMA, la cual en el momento de activarse, debe
encender una chicharra, y sin importar en el piso que se encuentra el ascensor, éste
debe regresar al 1
o
piso. Ejemplo: si el ascensor se encuentra en el 4º piso y la
alarma es activada, el ascensor debe pasar por el 3º, por el 2º y llegar al 1
o
.
- Por medio de 2 LEDS se debe mostrar el estado en el cual se encuentra el ascensor,
de la siguiente manera:
0 0  Está en alarma
1 0  Está subiendo
01  Está bajando
1 1  Está detenido


1.1 Funcionamiento del sistema

Al encenderse el sistema, el ascensor debe estar en el 1
o
piso. Luego el usuario
programa los pisos en los cuales el ascensor se detendrá. El ascensor se detendrá en
cada uno de los pisos programados en orden ascendente. A continuación, se debe activar
una señal INICIO, para que el ascensor comience a operar. Un display 7 segmentos
debe comenzar a mostrar la secuencia de pisos determinada por el usuario. Cuando el
ascensor se detiene en un piso, el número del piso indicado debe encenderse y apagarse
por un periodo de tiempo razonable que permita el uso del sistema. Luego de cumplida
la secuencia, el ascensor debe retornar en orden descendente, hasta llegar al 1º. Sólo
debe detenerse en los pisos en la secuencia ascendente.
PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
2

1.2 Describir entradas, salidas y sus características

PISOS(5): Entrada de cinco posiciones, representadas cada una por un bit activado
mediante un dipswitch. Esta entrada es manipulada por el usuario, e indica los pisos en
los cuales debe detenerse el ascensor. Es una señal activa en alto.

INICIO(1): Entrada de un bit que indica cuándo el ascensor debe comenzar su
secuencia. El usuario la manipula, y es una señal activa en alto.

DISPLAY(7): Salida que muestra el piso en el cual se encuentra el ascensor. Activa en
alto.

CLK: Reloj del sistema; se utiliza el borde de subida para actualizar los datos.
Dependiendo del dispositivo FPGA se elije el período del reloj. Para este diseño se
utilizará un reloj de un período de 125 ns (8 MHz).

LED(2): Salida que muestra mediante 2 LEDS el estado del ascensor así:
00-Alarma
01-Bajando
10-Subiendo
11-Quieto

ALARMA(1): Entrada de un bit mediante la cual el usuario indica al ascensor que debe
suspender su secuencia y descender hasta el primer piso. Activa en alto.

CHICHARRA (1): Salida que se activa en alto cuando se selecciona la señal
ALARMA, y se mantiene así hasta que el ascensor llega al primer piso.


2. Diagramas generales


2.1 Diagrama de bloques del sistema



PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
3


2.2 Descripción del funcionamiento de cada bloque

El sistema ha sido concebido de tal forma que los estados estén directamente
relacionados a los pisos que recorre el ascensor.

BLOQUE_ REG_ENTRADA: Este bloque representa un registro de 5 bits, el cual
almacena los pisos que el usuario puede seleccionar, con el fin de poderlos manipular y
generar la lógica de dirección del ascensor. En el momento en que el ascensor visite uno
de los pisos programados, su registro correspondiente se desactivará; y de esta forma
cuando el ascensor haya visitado todos los pisos programados, todos los bits de
BLOQUE_ REG_ENTRADA se desactivarán. La salida de este bloque es
reg_entrada(5).

BLOQUE_ DIR: La señal reg_entrada(5) es la entrada a BLOQUE_DIR. Allí se debe
realizar la lógica para encontrar la dirección del ascensor, teniendo en cuenta el estado
de los bits de la señal reg_entrada, la señal ALARMA y CHICHARRA. La salida de
este bloque es direccion(1).

BLOQUE_ DETENERSE: Determina si el ascensor debe detenerse o no dependiendo
de los pisos programados, y el piso en el cual se encuentra el ascensor. En caso de que
el bit correspondiente en la señal PISOS(5) al piso actual del ascensor esté activo, la
señal de salida detenerse(1) se activa en alto. El piso actual del ascensor se obtiene
mediante el estado del sistema.
PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
4

CONTROL: La salida que presenta este bloque es estado, obtenida a partir de la señal
INICIO(1), dirección (1), detenerse(1) y contador(1) (señales de control).

BLOQUE_ DISPLAY: Este bloque se encarga de mostrar el piso en el cual se
encuentra el ascensor mediante un display 7 segmentos. El piso actual del ascensor se
obtiene mediante el estado del sistema. Por lo tanto, este bloque depende de la señal
estado.

BLOQUE_ LED: Las señales estado, CHICHARRA (1) y dirección (1), determinan la
salida LED(2). Los posibles valores son 00 cuando esta en alarma, 10 cuando esta
subiendo, 01 cuando esta bajando y 11 cuando se encuentra detenido, las cuales son
representadas por medio de la activación en alto de los leds.

BLOQUE_CHICHARRA: Este bloque funciona con un registro el cual mantiene la
salida CHICHARRA en alto mientras la alarma esta activada; es necesario tener en
cuenta que en el primer piso la chicharra está desactivada, por esta razón es necesario
incluir la señal estado que representa los pisos que recorre el ascensor. También
depende de ALARMA(1) y CLK.

BLOQUE_CONTADOR: El reloj del sistema tiene un período de tiempo muy corto,
razón por la cual es necesario incluir un contador que controle el cambio de estado para
que el ascensor se detenga en los pisos durante un tiempo razonable y sea posible hacer
uso de él. Para que el sistema permanezca en cada estado durante 2 segundos, el
contador debe contar 16 000 000 pulsos de reloj y luego debe activar una señal
(contador) que autorice el cambio de estado. Después del cambio de estado, debe
iniciar el conteo nuevamente.


Señales intermedias

reg_entrada(5): Señal de 5 bits que representa los pisos del ascensor programados en el
dipswitch. Contiene la información de BLOQUE_REG_ENTRADA.

dirección (1): Señal que indica el sentido en que viaja el ascensor. Una vez que
reg_entrada(5) pasa por el BLOQUE_DIR, éste realiza una lógica encargada de
proporcionar la dirección del ascensor, por tal razón esta señal es de 1 bit, donde 0
indica que el ascensor se moverá hacia arriba y 1 hacia abajo.

detenerse(1): Señal que indica si el ascensor debe detenerse o no en el piso que visita,
se utiliza como señal de control. Su valor es 1 si debe detenerse, 0 si no debe detenerse.

estado: Señal que representa el estado del sistema, y está relacionada con los pisos que
visita el ascensor.

contador(1): Señal activa en alto que indica la finalización del conteo necesario para
cambiar de estado.
PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
5
2.3 Diagrama de tiempos

PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
6
3. Descripción AHPL







PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
7






PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
8

PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
9
4. Esquemáticos preliminares


Bloque Chicharra


Bloque Detener


Bloque Dir

PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
10
Bloque Display





Bloque Led


PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
11
Bloque Reg_entrada



Control

PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
12

PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
13

PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
14


5. Descripción VHDL (Proyecto en Quartus)

6. Jerarquía definitiva


PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
15
7. Análisis de recursos del dispositivo programable:



El dispositivo programable elegido es la familia ACEX 1K. Se utilizó un total de 111
elementos logicos, 19 pines, 0 bits de memoria y 0 PLL. En general se utilizó un 4 % de
los elementos logicos que posee el dispositivo, y 19% de los pines. Esta información
nos indica que el dispositivo logico elegido posee capacidad más que suficiente para
soportar el diseño, incluso se está desaprovechando gran parte él.

8. Análisis de tiempos a partir de los reportes entregados por la herramienta QUARTUS
II.



En el reporte se observan los peores tiempos obtenidos para los siguientes casos:

Set up time: 11.7 ns
Clock to output time: 20 ns
Input to output time: 14.7 ns
Hold time: 0.36 ns
PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
16
Debido al periodo de reloj escogido en el diseño (125 ns) se puede concluir que los
tiempos descritos no afectan el desempeño del sistema. Los retardos en cualquiera de
los casos no se superponen con el siguiente pulso de reloj.

9. Protocolo de pruebas para simulación

Para este diseño se ha realizado el siguiente protocolo de pruebas:

Operación normal: Se configuran entradas de pisos aleatorias, se oprime RESET y
luego INICIO.

Operación en estado de alarma: Se configuran entradas en operación normal y en algún
momento aleatorio se oprime ALARMA.

Operación con INICIO o RESET: Se configura una operación normal y en cualquier
momento se oprime INICIO y en condiciones similares se oprime RESET.

Operación sin entradas: Se configuran todas las entradas de piso en bajo y se oprime
INICIO.

10. Simulación en la herramienta QUARTUS II (Proyecto en Quartus)

11. Análisis de glitches y metaestabilidad

Los tiempos mas cortos son los periodos de reloj, ninguna entrada ha sido configurada
con un tiempo mas corto ya que solo hay 2 tipos de entrada: las entradas constantes
(pisos) y las entradas temporales (inicio y alarma). Las constantes se mantienen durante
todo el trayecto de ascensor, las temporales son ejecutadas por el usuario, y se ha
previsto con el periodo de reloj, que ninguna de estas entradas puede tener un tiempo en
alto mas grande que el reloj. Adicionalmente los estados del sistema deben contar hasta
5 pulsos para poder cambiar, así que durante la simulación no hay señales mas cortas
que el mismo reloj.

Para evitar la metaestabilidad, es necesario que un circuito biestable sea configurado
antes de las entradas de usuario (inicio y alarma), de esta forma se puede asegurar en
gran medida que el sistema tome valores lógicos validos.

12. Especificaciones del diseño finales

Para el sistema diseñado se tuvo en cuenta un cambio muy importante en la simulación.
En el uso real del sistema, el tiempo de estado determinado fue de 2 segundos que
corresponde a 16 000 000 pulsos de reloj que debe contar BLOQUE_CONTADOR
antes de cambiar de estado. Sin embargo Quartus demora la simulación demasiado
tiempo con este valor de conteo, lo cual no es óptimo en un proceso de diseño ya que
cada vez que se requiera simular, se debe esperar un tiempo considerable. Así es que
para efectos de simulación se configura un conteo de 5 pulsos solamente.

Una especificación de funcionamiento a considerar es que el botón RESET, solamente
debe utilizarse en el momento en que se enciende el sistema, para llevarlo a un estado
conocido. Como esta señal es la que tiene mayor jerarquía entre las señales de control,
PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
17
puede activarse en cualquier estado y responderá de la misma manera llevando al
sistema al estado 1. En funcionamiento normal del sistema, utilizar esta señal sería
caótico, así que externamente debe crearse un dispositivo para que el usuario no tenga
que manipular la señal en lo posible.

Las demás especificaciones son las mismas que se plantearon al principio.

13. Esquemático definitivo extractando el RTL con la herramienta QUARTUS II

PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
18
Diagrama de Bloques


PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
19
Bloque Chicharra


Bloque Detener



Bloque Dir



Compuerta NOT


Compuerta OR 3 IN



PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
20
Compuerta OR 5 IN




Bloque Display



Bloque Led

PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
21

PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
22
Control




PontificiaUniversidad J averiana Tutorial deun método para implementar sistemas digitales en Quartus
23


Bloque Contador