6
Profesor: Ing. Wilson Javier Pérez H - Primer Semestre de 2014 UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO ESCUELA DE INGENIERÍA ELECTRÓNICA ELECTRONICA DIGITAL II GUIA Nº 3 CIRCUITOS COMBINATORIOS Y SECUENCIALES (APLICACIONES) I. OBJETIVOS Esta guía de laboratorio está orientada a desarrollar habilidades en la descripción de circuitos digitales combinatorios y secuenciales en VHDL. Se busca comprender el proceso de diseño de sistemas digitales mediante el empleo de herramientas CAD tales como el Quartus II de Altera y sus herramientas de verificación y simulación. II. INTRODUCCIÓN Uno de los potenciales de desarrollo de los lenguajes de descripción de hardware digital, está en la capacidad de los compiladores de construir de forma sistemática, múltiples bloques lógicos sin la necesidad de describir cada uno de ellos. VHDL cuenta con directivas que permiten realizar la descripción y configuración de componentes de forma automatizada. La configuración de componentes puede ser establecida de tres formas: Construcción por defecto, especificación de la configuración y declaración de la configuración. La declaración de la configuración brinda el más alto grado de flexibilidad. La configuración del componente es establecida en una unidad separada. Las unidades que instancian los componentes no tienen que ser recompiladas para cambiar el proceso de unión. La declaración Generate es usada comúnmente para modelar diseños que presentan una estructura general idéntica, ya que permite de forma paramétrica, la construcción de bloques lógicos que de otra forma resultaría tedioso y para nada práctico. Esta brinda un mecanismo de compilación condicional. A continuación se presenta la estructura general para usar la directiva Generate por medio de un for y un if. Declaracion Generate: Hace copias de declaraciones concurrentes. Para For: Etiqueta: for variable in rango generate --La etiqueta es requerida Elementos declarativos -- Opcional Begin Declaraciones concurrentes -- Usando variables end generate Etiqueta; Para If: Etiqueta: if condición generate -- La etiqueta es requerida. Elementos declarativos -- Optional Begin Declaraciones concurrentes end generate Etiqueta; A continuación se muestra un ejemplo para construir de forma sistemática múltiples elementos lógicos definidos como foo. Banda: for I in 1 to 10 generate b2: for J in 1 to 11 generate b3: if abs(I-J)<2 generate Partes: foo port map ( a(I), b(2*J-1), c(I, J) ); end generate b3; end generate b2; end generate Banda; Observe que en anterior ejemplo se hace uso de los índices I y J para construir múltiples bloques de lógica foo, el componente foo debe ser declarado antes de usar la directiva Generate. En VHDL, la descripción de circuitos secuenciales es desarrollada principalmente mediante las directivas (if… then… else), (case… is… when) y (if… then… elsif… then).

Guia 3 - Circuitos Combinatorios y Secuenciales

Embed Size (px)

DESCRIPTION

fgfg

Citation preview

Page 1: Guia 3 - Circuitos Combinatorios y Secuenciales

Profesor: Ing. Wilson Javier Pérez H - Primer Semestre de 2014

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO

ESCUELA DE INGENIERÍA ELECTRÓNICA ELECTRONICA DIGITAL II

GUIA Nº 3

CIRCUITOS COMBINATORIOS Y SECUENCIALES (APLICACIONES)

I. OBJETIVOS

Esta guía de laboratorio está orientada a desarrollar habilidades en la descripción de circuitos digitales combinatorios y secuenciales en VHDL.

Se busca comprender el proceso de diseño de sistemas digitales mediante el empleo de herramientas CAD tales como el Quartus II de Altera y sus herramientas de verificación y simulación.

II. INTRODUCCIÓN

Uno de los potenciales de desarrollo de los lenguajes de descripción de hardware digital, está en la capacidad de los compiladores de construir de forma sistemática, múltiples bloques lógicos sin la necesidad de describir cada uno de ellos. VHDL cuenta con directivas que permiten realizar la descripción y configuración de componentes de forma automatizada.

La configuración de componentes puede ser establecida de tres formas:

Construcción por defecto, especificación de la configuración y declaración de la configuración.

La declaración de la configuración brinda el más alto grado de flexibilidad. La configuración del componente es establecida en una unidad separada. Las unidades que instancian los componentes no tienen que ser recompiladas para cambiar el proceso de unión.

La declaración Generate es usada comúnmente para modelar diseños que presentan una estructura general idéntica, ya que permite de forma paramétrica, la construcción de bloques lógicos que de otra forma resultaría tedioso y para nada práctico. Esta brinda un mecanismo de

compilación condicional. A continuación se presenta la estructura general para usar la directiva Generate por medio de un for y un if.

Declaracion Generate: Hace copias de declaraciones

concurrentes.

Para For:

Etiqueta: for variable in rango generate --La etiqueta es

requerida

Elementos declarativos -- Opcional

Begin Declaraciones concurrentes -- Usando variables

end generate Etiqueta;

Para If:

Etiqueta: if condición generate -- La etiqueta es requerida.

Elementos declarativos -- Optional

Begin Declaraciones concurrentes

end generate Etiqueta;

A continuación se muestra un ejemplo para construir de forma sistemática múltiples elementos lógicos definidos como foo.

Banda: for I in 1 to 10 generate

b2: for J in 1 to 11 generate

b3: if abs(I-J)<2 generate

Partes: foo port map ( a(I), b(2*J-1), c(I, J) );

end generate b3;

end generate b2;

end generate Banda;

Observe que en anterior ejemplo se hace uso de los índices I y J para construir múltiples bloques de lógica foo, el componente foo debe ser declarado antes de usar la directiva Generate.

En VHDL, la descripción de circuitos secuenciales es desarrollada principalmente mediante las directivas (if… then… else), (case… is… when) y (if… then… elsif… then).

Page 2: Guia 3 - Circuitos Combinatorios y Secuenciales

Profesor: Ing. Wilson Javier Pérez H - Primer Semestre de 2014

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO

ESCUELA DE INGENIERÍA ELECTRÓNICA ELECTRONICA DIGITAL II

Dependiendo de la directiva usada, existen diferencias en la forma de describir un circuito, la directiva (if… then… else) impone prioridades en el proceso de selección, mientras que la directiva (case… is… when) ubica el mismo nivel de prioridad a cada elemento en un proceso de selección.

Se debe recordar que una buena práctica de descripción de circuitos secuenciales en VHDL, es la de diseñarlos de forma sincrónica, de tal forma que se evite al máximo los bloques lógicos asíncronos, siempre y cuando sea posible. A continuación se presentan algunas reglas para el diseño de circuitos secuenciales síncronos.

Deben describirse mediante procesos.

Debe existir una condición de detección de flanco de reloj como:

o IF clk’EVENT AND clk = ‘1’ THEN

o IF rising_edge(CLK) THEN

Detrás de dicha condición no puede haber ELSE.

Si se asigna una señal, no es necesario cubrir todos los casos: en los casos no cubiertos, la señal mantiene su valor.

Lista de sensibilidad: reloj + entradas asíncronas (reset)

Las entradas de datos y las entradas síncronas no aparecen en la lista de sensibilidad del proceso.

“Plantilla” para el diseño de circuitos secuenciales síncronos:

PROCESS (reloj + entradas asíncronas) BEGIN IF <condición de inicialización asíncrona> THEN

<Inicialización asíncrona> ELSIF <flanco activo de reloj> THEN

-- Comportamiento síncrono END IF;

END PROCESS;

III. ELEMENTOS Y EQUIPOS NECESARIOS

Software Quartus II versión 9.0 de Altera

Computador Personal

Tarjeta de desarrollo DE1 o DE2 de Terasic.

IV. DESCRIPCIÓN DEL LABORATORIO

En esta guía se propone el diseño de aplicaciones secuenciales elaboradas a partir de máquinas de estados.

Ejercicio 1. Ascensor de 5 pisos.

Describa el sistema de control digital para un ascensor de 5 pisos, incluya los pulsadores para cada piso, las señalizaciones lumínicas de piso, las guias de cada planta para el ascensor, además incluya los pulsadores electrónicos de la cabina, la parada de emergencia y el indicador de piso. Destine uno o dos señales para indicar la dirección de los actuadores (motor del ascensor y motor de puertas).Se recomienda establecer el diagrama de estados del sistema.

Figura 01. Esquema general de un ascensor de 3 pisos.

Para la sustentación, use un cable IDE 40 conectores para usar los pines de propósito general

Page 3: Guia 3 - Circuitos Combinatorios y Secuenciales

Profesor: Ing. Wilson Javier Pérez H - Primer Semestre de 2014

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO

ESCUELA DE INGENIERÍA ELECTRÓNICA ELECTRONICA DIGITAL II

de alguna de las tarjetas de desarrollo y sobre una protoboard, represente el control de la cabina y los pulsadores para cada piso con su respectiva señalización. Puede hacer uso de los siete segmentos presentes en la tarjeta de desarrollo para representar el indicador de cada piso. Establezca el retardo en tiempo del diseño y el consumo de potencia, además realice las simulaciones correspondientes.

Ejercicio 2. Proceso industrial (1).

Un proceso industrial de limpieza de botellas y empaque de productos, está compuesto por una línea de producción en la que múltiples actuadores y sensores intervienen. Para este caso el proceso se ha dividido en 6 etapas o estaciones como se muestra en la Figura 02.

Figura 02. Esquema general del Proceso industrial de limpieza de botellas y empaque de productos.

Los elementos M1 a M9 representan los actuadores ON-OFF dentro de la línea de producción, los elementos S1 a S7 representan

sensores ON-OFF de detección de botellas para activar cada una de las etapas. Los elementos L1 y L2 representan sensores de nivel ON-OFF. Por último el elemento O1, representa un sensor óptico ON-OFF.

Antes de empezar con la descripción de cada una de las etapas, cabe resaltar que el elemento M1 siempre está activo, esperando por la entrada de una nueva botella. De la misma forma el elemento M6 solo se activa si el actuador M5 se ha activado. M6 se mantiene activo hasta que finaliza la etapa 6.

En la etapa 1 que constituye el proceso de limpieza, se agrega soda caustica a la botella una vez es detectada por el sensor S1, por medio del actuador M2 se activa el paso del líquido de limpieza y detiene el paso cuando el sensor L1 indica un nivel adecuado en la botella. Puede considerar actuadores normalmente abiertos o cerrados.

En la etapa 2, continua el proceso de limpieza con agua, en este caso, se agrega agua a la botella una vez es detectada por el sensor S2 por medio del actuador M3. La etapa 2 finaliza luego de 10 segundos de la activación de M3.

En la etapa 3, se hace el proceso de verificación de la botella, el procedimiento se activa con el sensor S3 y dependiendo del estado del sensor O1, el cual indica si la botella está limpia o sucia, se activa el actuador M4. Si el sensor O1 está activo quiere decir que la botella está sucia y el actuador M4 debe expulsarla de la línea de producción por lo que se debe reiniciar el proceso, pero, si el sensor O1 no está activo, no se activa M4 y continúa la línea de producción.

Una vez la botella sale de la etapa 3, es expulsada a otra banda transportadora por el actuador M5 que solo se activa si hay detección en S4.

Page 4: Guia 3 - Circuitos Combinatorios y Secuenciales

Profesor: Ing. Wilson Javier Pérez H - Primer Semestre de 2014

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO

ESCUELA DE INGENIERÍA ELECTRÓNICA ELECTRONICA DIGITAL II

En la etapa 4, se agrega el producto a las botellas. Si S5 se activa, el actuador M7 se activa hasta que el sensor L2 indica el nivel adecuado de llenado.

En la etapa 5, se hace el procedimiento de tapado de la botella. Si el sensor S6 se activa, se debe activar el actuador M8 durante un segundo, luego finaliza la etapa 5.

En la etapa 6, se hace el etiquetado de la botella. Si el sensor S7 es activado, se debe activar el actuador M9 durante 5 segundos. Una vez finaliza el procedimiento se debe reiniciar la línea de producción a la espera de una nueva botella.

Por último, se debe agregar un pulsador de parada de emergencia, el cual, debe detener la línea de producción en cualquiera de sus etapas y garantizar que ningún actuador quede abierto (por ejemplo que el actuador M3 que controla agua, quede abierto y se desperdicie).

Ejercicio 3. Tráfico de una ciudad (Ola Verde).

Una ola verde u onda verde es un fenómeno inducido intencionalmente, en el cual una serie de semáforos se coordinan para permitir el flujo continuo del tráfico sobre varias intersecciones en una misma dirección.

Cualquier vehículo que se mueva a lo largo de la ola verde, aproximadamente a una velocidad establecida por los controladores de tráfico, verá una cascada progresiva de luces verdes, y no tendrá que detenerse en las intersecciones. Como se observa en la Figura 05. La coordinación de las señales se puede hacer dinámicamente (automáticamente), usando sensores para monitorear los flujos de tráfico. De otra manera, se puede hacer estadísticamente mediante el uso de temporizadores. Para el presente ejercicio, se opta por desarrollar una coordinación a partir de estadísticas con temporizadores. En la Figura 03 se presenta el esquema general de los caminos a controlar.

Figura 03. Esquema de distribución de caminos a prueba para ejercicio 3.

Como se observa en la Figura 03, la idea es hacer el control de 16 intersecciones, mediante la filosofía de la ola verde. Asuma que la distancia entre cada intersección es de 80 metros. Con este valor proceda a seleccionar una velocidad de desplazamiento de ola verde C(m/s) y un periodo de repetición de onda T(s), con esto datos

establezca la longitud de onda (m), con la siguiente relación:

Se debe garantizar que en las intersecciones no haya dos olas verdes activas en diferentes direcciones (por ejemplo, una ola verde en el camino B y una ola verde en el camino 2 y que ambas se encuentren en la intersección B2). Se recomienda diseñar unidades de control de cambio en cada semáforo y un controlador central basado en una máquina de estados.

Page 5: Guia 3 - Circuitos Combinatorios y Secuenciales

Profesor: Ing. Wilson Javier Pérez H - Primer Semestre de 2014

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO

ESCUELA DE INGENIERÍA ELECTRÓNICA ELECTRONICA DIGITAL II

Figura 04. Esquema general de banda verde como relación entre tiempo y distancia.

Figura 05. Esquema de uso de una ola verde en 7 intersecciones en una misma dirección (observe que la longitud de onda verde es de 4 intersecciones, que se puede expresar en metros).

Ejercicio 4. Proceso industrial (2).

Un proceso industrial químico, está compuesto por una línea de producción en la que múltiples actuadores y sensores intervienen. La

representación del proceso es el que muestra la Figura 05.

Los elementos B1 a B3 representan bombas On-OFf para transportar los materiales por las tuberías y son activadas por un nivel bajo. Los elementos L1 a L5 representan sensores de nivel On-Off, de la misma forma los elementos P1 y P2 son sensores de presión On-Off. Los elementos V1 a V5 son válvulas On-Off normalmente abiertas por lo que son activadas por un nivel bajo, los elementos M1 a M3 son actuadores On-Off, por ultimo S1 es un sensor.

Figura 06. Esquema del proceso para el ejercicio 4.

Como se muestra en la Figura 06, el proceso inicia con la activación de las bombas B1 y B2 que inyectan químicos al tanque principal, una vez se

Page 6: Guia 3 - Circuitos Combinatorios y Secuenciales

Profesor: Ing. Wilson Javier Pérez H - Primer Semestre de 2014

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO

ESCUELA DE INGENIERÍA ELECTRÓNICA ELECTRONICA DIGITAL II

ha activado el sensor L1 de nivel alto, se deben desactivar las bombas B1 y B2.

Luego de 10 segundos se debe activar el actuador V1. Una vez el sensor de nivel alto L2 este activo, se deben activar los motores M1 y M2. Luego de 10 segundos, se activa el actuador V2 hasta que el sensor de nivel bajo L3 este inactivo.

Una vez en el horno que se encuentra siempre activo, se procede a espera a que uno de los sensores de presión se active. Si se activa el sensor P1 que corresponde a alta presión, se activa el actuador V4, sin embargo, si se desactiva el sensor P2 correspondiente a baja presión se debe activar el actuador V3 para expulsar el material y reiniciar el proceso desde cero.

Si se activa el actuador V4, también se debe activar el actuador V5 de la torre de enfriamiento. Luego de 10 segundos, se debe activar la bomba B3 solo hasta que se active el sensor L4 de nivel alto. Por último, una vez activo el sensor L4 y si el sensor S1 es activado, se debe accionar el motor M3 hasta que el elemento L5 se desactive. Posteriormente se debe reiniciar el proceso de carga del tanque principal.

Como cada aplicación es diferente, se debe realizar una presentación de máximo 10 minutos con diapositivas para socializar el desarrollo del laboratorio a todo el grupo.

Según la aplicación correspondiente se debe presentar el espacio de estados usado en la implementación, así como la simulación en Quartus II y la verificación de su correcto funcionamiento sobre la Tarjeta DE1 o DE2.

El informe de laboratorio debe ser original, por lo que cualquier copia será calificada con 0,0. De igual forma el código VHDL debe ser original para cada grupo de trabajo, si se presentan copias éstas serán calificadas con 0,0. El informe se debe

presentar en formato IEEE, en grupos de máximo 2 personas.

BIBLIOGRAFÍA

[1] J. F. Wakerly. Digital Design. Principles and Practices. 4ª Edition. Ed. Prentice Hall, 2005.

[2] T.L. Floyd, Digital Fundamentals, 9th Edition, Prentice Hall, 2006.

[3] James O. Hamblen, Tyson S. Hall, Michael D. Furman. Rapid prototyping of digital systems. Springer 2005.

[4] Peter J. Ashenden. The VHDL Cookbook. First Edition. Department of Computer Science. University of Adelaide. South Australia. 1990.

[5] Douglas L. Perry. Programming by Example. Fourth Edition. Mc Graw Hill 2002.

[6] Altera’s web page. www.altera.com

[7] Altera’s FPGA development boards DE1 and DE2, User manuals. Available at www.altera.com and www.terasic.co