You are on page 1of 34

Diseo Digital

<-> Viernes 5:00-7:30 pm

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


UNIVERSIDAD DEL PER, DECANA DE AMRICA
Ttulo:
Proyecto final de curso
(Temporizador programable de 2 canales)
Curso:
Diseo Digital
Profesor:
Daro Utrilla
Ciclo:
2016-0

2016

PROYECTO DE DISEO DIGITAL


TEMA
1

Diseo Digital

<-> Viernes 5:00-7:30 pm

Temporizador programable de 2 canales

INTEGRANTES

Altamirano Antaurco, Junior


Ros Morillo, Marco

10190263
10190237

PROBLEMA

Los actuales sistemas temporizadores son muy complejos, de alto costo y se no permiten
aadir conexiones para futuras mejoras, por lo que necesitamos de un sistema sencillo de
comprender y que sea verstil respecto a la inclusin de hardware para su mejora.

JUSTIFICACIN

Realizar un temporizador a base de electrnica digital discreta, puede resultar costoso, sobre
todo cuando el diseo amerita el uso de una gran cantidad de componentes digitales. En este
punto se podra pensar que la solucin ms econmica sera un microcontrolador; bien quizs
uno de esos que cueste menos de 55$ USD, pudiera servir, pero que sucedera si al pasar el
tiempo se tiene la necesidad de implementar ms hardware al mismo temporizador para otras
aplicaciones, lo primero que se piensa es que no hay problema en el software, pero hay que
implementar un nuevo hardware, es decir, hay que instalar una nueva tarjeta de circuito
impreso y hasta podra haber problemas por limitacin de espacio, entonces al final se piensa
en comprar mejor un nuevo temporizador que incluya la actualizacin que se desea realizar,
ya que podra salir demasiado costoso el rediseo. Por lo tanto la solucin que se plantea es
poder disear y redisear la cantidad de veces que sea necesario, a menor costo, en un mismo
dispositivo lgico programable, sin necesidad de implementar un nuevo hardware. Todo el
diseo digital se desarrolla en lenguaje simblico y VHDL, a travs del software de
programacin del fabricante ALTERA.

OBJETIVOS

Diseo e implementacin de un temporizador utilizando componentes digitales bsicos y


descripcin de este, utilizando VHDL.
Manejo de un cambio de canales.
Descripcin en varios mdulos para representar al temporizador.

MARCO TERICO
Con la creciente complejidad de los diseos digitales ha aparecido una necesidad de describir un
circuito de la forma ms eficiente y prctica posible. Un lenguaje de programacin ofrece la
posibilidad de un alto nivel de abstraccin y es la solucin adecuada para dicha tarea.
Los lenguajes de descripcin hardware son lenguajes de alto nivel con una sintaxis similar a los de
programacin (C, ADA, Pascal, Modula, etc.) y una semntica que permite el modelado y simulacin
de los dispositivos hardware a diferentes niveles de abstraccin. Los primeros lenguajes de este tipo
slo pretendan servir de vehculo de comunicacin del diseo. Los actuales lenguajes han adquirido
2

Diseo Digital

<-> Viernes 5:00-7:30 pm

un alto grado de estandarizacin y han adoptado los nuevos conceptos de la ingeniera de software,
permitiendo la verificacin de la especificacin del diseo mediante simulacin.
VHDL:
VHDL es un lenguaje de descripcin de circuitos electrnicos digitales que utiliza distintos niveles de
abstraccin. El significado por sus siglas VHDL es VHSIC (Very High Speed Integrated Circuits)
Hardware Description Language. Esto significa que VHDL permite acelerar el proceso de diseo.
VHDL no es un lenguaje de programacin, por ello conocer su sintaxis no implica necesariamente
saber disear con l. VHDL es un lenguaje de descripcin de hardware genrico, que permite
describir circuitos sncronos y asncronos. Para realizar esto debemos:
Pensar en puertas y biestables, no en variables ni funciones.
Evitar bucles combinacionales y relojes condicionados.
Saber qu parte del circuito es combinacional y cul secuencial.
Los circuitos descritos en VHDL pueden ser simulados utilizando herramientas de simulacin para
reproducir el funcionamiento del circuito. Adems utilizando herramientas de sntesis se puede
implementar dicho circuito en un dispositivo lgico programable o en un circuito integrado.
Dentro del VHDL hay varias formas con las que se puede disear el mismo circuito y es tarea del
diseador elegir la ms apropiada.
Funcional o Comportamental: Se describe la forma en que se comporta el circuito digital, se
tiene en cuenta solo las caractersticas del circuito respecto al comportamiento de las entradas
y las salidas. Esta es la forma que ms se parece a los lenguajes de software ya que la
descripcin puede ser secuencial, adems de combinar caractersticas concurrentes. Estas
sentencias secuenciales se encuentran dentro de los llamados procesos en VHDL. Los procesos
son ejecutados en paralelo entre s, y en paralelo con asignaciones concurrentes de seales y
con las instancias a otros componentes.
Flujo de datos: Se describen asignaciones concurrentes (en paralelo) de seales.
Estructural: Se describe el circuito con instancias de componentes. Estas instancias forman un
diseo de jerarqua superior, al conectar los puertos de estas instancias con las seales
internas del circuito, o con puertos del circuito de jerarqua superior. Es la recomendada
cuando el diseo digital se vuelve complejo o est conformado por mltiples bloques de
hardware.
Mixta: combinacin de todas o algunas de las anteriores.
En VHDL tambin existen formas metdicas para el diseo de mquinas de estados, filtros digitales,
bancos de pruebas etc.
DISEO DE UN SISTEMA USANDO VHDL:
El flujo de diseo de un sistema podra ser:
Divisin del diseo principal en mdulos separados. La modularidad es uno de los conceptos
principales de todo diseo. Normalmente se diferencia entre dos metodologas de diseo: topdown y bottom-up. La metodologa top-down consiste en que un diseo complejo se divide en
diseos ms sencillos que se puedan disear (o describir) ms fcilmente. La metodologa
bottom-up consiste en construir un diseo complejo a partir de mdulos, ya diseados, ms
simples. En la prctica, un diseo usa generalmente ambas metodologas.
Entrada de diseos, pueden usarse diversos mtodos tal como se vio anteriormente.
Simulacin funcional, es decir, comprobaremos que lo escrito en el punto anterior realmente
funciona como queremos, si no lo hace tendremos que modificarlo. En este tipo de simulacin
se comprueba que el cdigo VHDL o Verilog (u otro tipo de lenguaje HDL) ejecuta
correctamente lo que se pretende.
3

Diseo Digital

<-> Viernes 5:00-7:30 pm

Sntesis. En este paso se adapta el diseo anterior (que sabemos que funciona) a un hardware
en concreto, ya sea una FPGA o un ASIC. Hay sentencias del lenguaje que no son sintetizables,
como por ejemplo divisiones o exponenciaciones con nmeros no constantes. El hecho de que
no todas las expresiones en VHDL sean sintetizables es que el VHDL es un lenguaje genrico
para modelado de sistemas (no slo para diseo de circuitos digitales), por lo que hay
expresiones que no pueden ser transformadas a circuitos digitales. Durante la sntesis se tiene
en cuenta la estructura interna del dispositivo, y se definen restricciones, como la asignacin
de pines. El sintetizador optimiza las expresiones lgicas con objeto de que ocupen menor
rea, o bien son eliminadas las expresiones lgicas que no son usadas por el circuito.
Simulacin post-sntesis. En este tipo de simulacin se comprueba que el sintetizador ha
realizado correctamente la sntesis del circuito, al transformar el cdigo HDL en bloques
lgicos conectados entre s. Este paso es necesario ya que, a veces, los sintetizadores
producen resultados de sntesis incorrectos, o bien realiza simplificaciones del circuito al
optimizarlo.
Ubicacin y enrutamiento. El proceso de ubicacin consiste en situar los bloques digitales
obtenidos en la sntesis de forma ptima, de forma que aquellos bloques que se encuentran
muy interconectados entre s se siten prximamente. El proceso de enrutamiento consiste en
interconectar adecuadamente los bloques entre s, intentando minimizar retardos de
propagacin para maximizar la frecuencia mxima de funcionamiento del dispositivo.
Anotacin final. Una vez ha sido completado el proceso de ubicacin y enrutamiento, se
extraen los retardos de los bloques y sus interconexiones, con objeto de poder realizar una
simulacin temporal (tambin llamada simulacin post-layout). Estos retardos son anotados en
un fichero SDF (Standard Delay Format) que asocia a cada bloque o interconexin un retardo
mnimo/tpico/mximo.
Simulacin temporal. A pesar de la simulacin anterior puede que el diseo no funcione
cuando se programa, una de las causas puede ser por los retardos internos del chip. Con esta
simulacin se puede comprobar, y si hay errores se tiene que volver a uno de los anteriores
pasos.
Programacin en el dispositivo. Se implementa el diseo en el dispositivo final y se comprueba
el resultado.
ELEMENTOS BSICOS VHDL
VHDL es un lenguaje y como tal, posee sus tipos de datos y operadores. Los datos se almacenan en
objetos que contienen valores de un tipo dado.
IDENTIFICADORES.

CONSTANT. Los objetos de esta clase tienen un valor inicial que es asignado de forma
previa a la simulacin y que no puede ser modificado durante sta. constant identificador:
tipo:= valor;
VARIABLE. Los objetos de esta clase contienen un nico valor que puede ser cambiado
durante la simulacin con una sentencia de asignacin. Las variables generalmente se
utilizan como ndices, principalmente en instrucciones de bucle, o para tomar valores que
permitan modelar componentes. Las variables NO representan conexiones o estados de
memoria. variable identificador: tipo [:= valor];
SIGNAL. Los objetos de esta clase contienen una lista de valores que incluye el valor actual
y un conjunto de valores futuros. Las seales representan elementos de memoria o
conexiones y si pueden ser sintetizadas.
Los puertos de una entidad son implcitamente declarados como seales en el momento de
la declaracin, ya que estos representan conexiones. Tambin pueden ser declaradas en la
4

Diseo Digital

<-> Viernes 5:00-7:30 pm

arquitectura antes del BEGIN, lo cual nos permite realizar conexiones entre diferentes
mdulos. signal identificador: tipo;
VHDL permite utilizar tipos predefinidos, as como otros definidos por el usuario.
BIT 0, 1
BIT_VECTOR (range*)
BOOLEAN TRUE, FALSE
CHARACTER {ascii}
STRING {ascii}
SEVERITY_LEVEL {WARNING, ERROR, FALURE}
INTEGER range*
NATURAL range*
POSITIVE range*
REAL range*
TIME
*(range: n_min TO n_max; n_max DOWNTO n_min)
STD_LOGIC. Tipo predefinido en el estndar IEEE 1164. Este tipo representa una lgica
multivaluada de 9 valores. Adems del 0 lgico y el 1 lgico, posee alta impedancia Z,
desconocido X sin inicializar U entre otros. Igual que se permite crear un vector de bits
se puede crear un vector de std_logic, STD_LOGIC_VECTOR. Para poder utilizar el tipo
std_logic hay que aadir la librera que lo soporta.
Para poder utilizar el tipo:
use ieee.std_logic_1164.all.
Para poder utilizar las funciones aritmeticolgicas definidas (suma, resta multiplicacin)
use ieee.std_logic_arith.all.
Si los vectores estn en representacin binaria pura
use ieee.std_logic_unsigned.all.
Los vectores estn en C2
use ieee.std_logic_unsigned.all.
TIPO ENUMERADO es un tipo de dato con un grupo de posibles valores asignados por el
usuario. Los tipos enumerados se utilizan principalmente en el diseo de mquinas de
estados
type nombre is (valor1, valor2, );
Los tipos enumerados se ordenan de acuerdo a sus valores. Los programas de sntesis
automticamente codifican binariamente los valores del tipo enumerado para que estos
puedan ser sintetizados. Algunos programas lo hacen mediante una secuencia binaria
ascendente, otros buscan cual es la codificacin que mejor conviene para tratar de
minimizar el circuito o para incrementar la velocidad del mismo una vez que la descripcin
ha sido sintetizada. Tambin es posible asignar el tipo de codificacin mediante directivas
propias de la herramienta de sntesis.
TIPOS COMPUESTOS un tipo compuesto es un tipo de dato formado con elementos de otros
tipos, existen dos formas de tipos compuestos, arrays y records.
UN ARRAY es un objeto de datos que consiste en una coleccin de elementos del mismo
tipo.
type nombre is array (rango) of tipo;
UN RECORD es un objeto de datos que consiste en una coleccin de elementos de
distintos tipos.
type nombre is record
elemento1: tipo_de_dato1;
elemento2: tipo_de_dato2;
end record;

Diseo Digital

<-> Viernes 5:00-7:30 pm

OPERADORES
Un operador nos permite construir diferentes tipos de expresiones mediante los cuales podemos
calcular datos utilizando diferentes objetos de datos con el tipo de dato que maneja dicho objeto. En
VHDL existen distintos operadores de asignacin con lo que se transfieren valores de un objeto de
datos a otro, y operadores de asociacin que relacionan un objeto de datos con otro, lo cual no existe
en ningn lenguaje de programacin de alto nivel.
abs
*, /, mod, rem
+ (sig.), - (sig)
+, -, &
and, or, nand, nor, xor
:= asignacin de valores a constantes y variables.
<= asignacin de valores a seales.

ESTRUCTURA BSICA DE UN ARCHIVO FUENTE EN VHDL


El archivo VHDL contiene la descripcin del circuito que se quiere implementar.
ENTIDADES (ENTITY)
Una entidad es la abstraccin de un circuito, ya sea desde un complejo sistema electrnico hasta una
simple compuerta lgica. La entidad nicamente describe la forma externa del circuito, aqu se
enumeran las entradas y las salidas del diseo.
Una entidad es anloga a un smbolo esquemtico de los diagramas electrnicos, el cual describe las
conexiones del dispositivo hacia el resto del diseo. Lo siguiente muestra un ejemplo de su
contenido:
1. Define externamente al circuito o subcircuito.
2. Nombre y nmero de puertos, tipos de datos de entrada y salida.
3. Tienes toda la informacin necesaria para conectar tu circuito a otros circuitos.

entity F is
port (A, B: in bit; Y out bit);
end F;

Diseo Digital

<-> Viernes 5:00-7:30 pm

Los puertos pueden ser para seales de entrada in, salida out, entrada-salida o un buffer; que
utilizar el modo in/out.
Adems, la entidad puede definir un valor genrico (GENERIC) que se utilizar para declarar las
propiedades y constantes del circuito, independientemente de cul sea la arquitectura.
entity nombre is
generic (cte1: tipo := valor1; cte2: tipo:= valor 2; );
port (entrada1, entrada2, : in tipo;
salida1, salida2, : out tipo;
puertoi : modo tipo);
end nombre;
ARQUITECTURA (ARCHITECTURE)
Los pares de entidades y arquitecturas se utilizan para representar la descripcin completa de un
diseo. Una arquitectura describe el funcionamiento de la entidad a la que hace referencia. Si una
entidad la asociamos con una caja en la que se enumeran las interfaces de conexin hacia el
exterior, entonces la arquitectura representa la estructura interna de esa caja. Sus principales
funciones son:
1. Define internamente el circuito.
2. Seales internas, funciones, procedimientos, constantes.
3. La descripcin de la arquitectura puede ser estructural o por comportamiento.
Lo siguiente muestra un ejemplo de su contenido:
architecture arch_name of entity_name is
-- declaraciones de la arquitectura
-- tipos
-- seales
-- componentes
begin
-- cdigo de descripcin
-- instrucciones concurrentes
-- ecuaciones booleanes
process
begin
-- cdigo de descripcin
end process;
end arch_name;
Una arquitectura se describe por comportamiento o por estructura. Una entidad puede tener ms de
una arquitectura, pero cuando se compile se debe indicar cul es la arquitectura que queremos
utilizar.
PROCESS: Cuando en VHDL se escribe un process, dentro de l aparece la parte secuencial del
circuito. La simulacin no entra en el process hasta que no haya variado alguna de las seales o
variables de su lista de sensibilidad independientemente de lo que este contenido dentro del process.
Por otro lado nicamente dentro de un process pueden aparecer las sentencias de tipo if y else y
nunca puede aparecer una sentencia del tipo wait.
Sentencias de descripcin
WAIT esta instruccin es utilizada en procesos que no tienen lista de sensibilidad:
wait on signal_list;
7

Diseo Digital

<-> Viernes 5:00-7:30 pm

wait for time_expression;


wait until condition;
Eventos sobre las seales (EVENT) nos indican cuando ocurre un cambio en la seal
signal'event
signal'last_event
signal'last_value
IF THEN ELSE solo son aplicables dentro de un process
if condicin then
... instrucciones secuenciales
elsif otra_condicin then
... instrucciones secuenciales
else
... instrucciones secuenciales
end if;
CASE WHEN solo son aplicables dentro de un process case expresin is
when alternativa_l => ... instrucciones secuenciales
when alternativa_n => ... -- instrucciones secuenciales
when others => ... -- instrucciones secuenciales
end case;
FOR LOOP solo son aplicables dentro de un process
for loop_var in range loop
... -- instrucciones secuenciales
end loop;
WHILE LOOP solo son aplicables dentro de un process
while condicin loop
... -- instrucciones secuenciales
end loop;
WHEN ELSE
Signal_name <= valor_1 when condicin1 else
valor_2 when condicin2 else
...
valor_i when condicini else
otro_valor;
WITH SELECT WHEN
with identificador select
Signal_name <= valor_1 when valor_identificador1,
valor_2 when valor_identificador2,
...
valor_i when valor_identificadori,
otro_valor when others;

MAQUINAS DE ESTADO EN VHDL:


Una mquina de estados finita (FSM) es un modelo usado para disear circuitos lgicos secuenciales.
CARACTERSTICAS:
No puede estar en ms de un estado por vez.
El estado en el que se encuentra denomina estado actual.
El cambio de un estado a otro se denomina transicin, y se dispara con el reloj del circuito.
Son muy tiles en el diseo de protocolos de comunicacin.
8

Diseo Digital

<-> Viernes 5:00-7:30 pm

Existen dos tipos de mquinas de estado: Moore y Mealy. Para esta parte del marco terico,
se dar un ejemplo de mquina moore.

ESTRUCTURA DE UNA MQUINA DE MOORE:


Las salidas solo dependen del estado.

Existen diferentes tipos de codificacin de estados:


Binaria
One Hot
Gray
La codificacin de estados puede hacerse manualmente o de manera automtica:
En el mismo cdigo de VHDL se pueden establecer atributos que indican que tipo de
codificacin se quiere
Se puede indicar a la herramienta de sntesis como codificar los estados.
EJEMPLO: DISEO DE UNA MQUINA MOORE, DETECTOR DE SECUENCIA 101

Consiste en 3 pasos:
Definicin de los estados
Descripcin de los registros de estado
Descripcin de los bloques combinacionales de prximo estado y de salida.

Diseo Digital

<-> Viernes 5:00-7:30 pm

10

Diseo Digital

<-> Viernes 5:00-7:30 pm

TEMPORIZADOR:
Un temporizador es un aparato con el que podemos regular la conexin desconexin de un circuito
elctrico despus de que se ha programado un tiempo. El elemento fundamental del temporizador
es un contador binario, encargado de medir los pulsos suministrados por algn circuito oscilador, con
una base de tiempo estable y conocida. El tiempo es determinado por una actividad o proceso que se
necesite
controlar.
Se diferencia del rel, en que los contactos del temporizador no cambian de posicin
instantneamente.
Podemos clasificar los temporizadores en:
De conexin: el temporizador recibe tensin y mide un tiempo hasta que libera los
contactos.

11

Diseo Digital

<-> Viernes 5:00-7:30 pm

De desconexin: cuando el temporizador deja de recibir tensin al cabo de un tiempo,


libera los contactos.

Hay diversos tipos de temporizadores desde los que son usados en el hogar para cocinar, hasta los
que son usados en la automatizacin de procesos de industriales, tienen diferentes clases de
componentes que tienen como fin la misma funcin, pero cada uno sirve para algn proceso en
especfico:
Temporizador trmico que acta por calentamiento de una lmina bimetlica, el tiempo se
determina por la curva que adquiere la lmina.

Temporizador neumtico, est basado en la accin de un fuelle que se comprime al ser


accionado por un electroimn. El fuelle ocupa su posicin que lentamente, ya que el aire entra
por un pequeo orificio, al variar el tamao del orificio cambia el tiempo de recuperacin y por
consecuencia la temporizacin.

12

Diseo Digital

<-> Viernes 5:00-7:30 pm

Temporizador electrnico, el principio es la descarga de un condensador mediante una


resistencia. Por lo general se emplean condensadores electrolticos.

Temporizador magntico, se obtiene ensartando en el ncleo magntico, un tubo de cobre.

METODOLOGA DE DESARROLLO
La elaboracin de este proyecto tiene dos etapas importantes: hardware y el software.
En la parte de hardware nos enfocaremos en el diseo utilizando diferentes circuitos integrados
bsicos, conectados de tal forma que emulen el funcionamiento de un tpico temporizador.
Y cuando nos referimos a software utilizaremos el paquete informtico Quatus-2, para realizar la
descripcin de hardware utilizando el lenguaje vhdl, para describir nuestro circuito cerradura
electrnica.

ANLISIS Y MODELAMIENTO
Como bien se sabe en VHDL existen varios niveles que permiten la programacin en VHDL, y la que
se desarroll en este proyecto fue el nivel algortmico o conocido tambin por descripcin a alto nivel
HDL. Para el diseo se utilizaron los fundamentos bsicos de una descripcin como lo es:
Biblioteca (library)
13

Diseo Digital

<-> Viernes 5:00-7:30 pm

Entidad (entity)
Arquitectura (architectures)
Se dise la descripcin de las entidades y arquitecturas empleando elementos almacenados en las
bibliotecas: STD_LOGIC_1164 y Standard; de la librera IEEE y STD, respectivamente. En la entidad se
defini la entrada y salidas del sistema completo del temporizador. En la arquitectura se desarrolla
todo el proceso del conteo regresivo del reloj y las diferentes manipulaciones de incremento y
decremento del tiempo. Por la naturaleza del diseo se utiliz sentencias secuenciales y el tipo de
descripcin fue por procedimiento.
El temporizador diseado cumple con las siguientes especificaciones:
1- El tiempo mximo a temporizar ser de 59 minutos y 59 segundos.
2- El conteo ser de manera descendente o ascendente y se debe de tener al llegar a cero o 59.
3- Debe poseer un pulsador para incrementar los segundos de manera manual.
4- Debe poseer un pulsador para decrementar los segundos de manera manual.
6- Debe poseer un pulsador para incrementar los minutos de manera manual.
7- Debe poseer un pulsador para decrementar los minutos de manera manual.
8- Debe tener un pulsador para resetear el temporizador en cualquier momento.
9- Debe tener una salida que indique el momento en que el temporizador llega a cero.
Conocidas las especificaciones del diseo se pueden definir las seales de entrada y salida del
sistema:
- Seales de entrada:
segundos_1_canal: Seala la cantidad de segundos a contar en el canal 1.
minutos_1_canal: Seala la cantidad de minutos a contar en el canal 1.
segundos_2_canal: Seala la cantidad de segundos a contar en el canal 2.
minutos_2_canal: Seala la cantidad de minutos a contar en el canal 2.
clk: Reloj interno que marca el proceso.
Load_1_canal: Switch que habilita el canal 1.
Load_2_canal: Switch que habilita el canal 2.
Reset: Reinicia el contador a 0 en ambos canales.
- Seales de salida:
Q1_seg: Muestra el proceso de conteo de los segundos del canal 1.
Q1_min: Muestra el proceso de conteo de los minutos del canal 1.
Q2_seg: Muestra el proceso de conteo de los segundos del canal 2.
Q2_min: Muestra el proceso de conteo de los minutos del canal 2.
salida1_canal: Habilita o deshabilita la alimentacin del sistema controlado por el canal 1.
salida2_canal: Habilita o deshabilita la alimentacin del sistema controlado por el canal 2.
El dispositivo ser de la siguiente forma:

14

Diseo Digital

<-> Viernes 5:00-7:30 pm

El modelo que nuestro circuito va a tener finalmente ser:

Como se ve, el circuito cuento con compuertas lgicas, FF tipo D y multiplexores. Aparte se puede
observar correctamente las entradas y salidas de cada canal.

15

Diseo Digital

<-> Viernes 5:00-7:30 pm

16

Diseo Digital

<-> Viernes 5:00-7:30 pm

SIMULACIN Y SNTESIS
CDIGO EN VHDL:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity contador_carga is
port (segundos_1_canal: in std_logic_vector (5 downto 0);
minutos_1_canal: in std_logic_vector (5 downto 0);
segundos_2_canal: in std_logic_vector (5 downto 0);
minutos_2_canal: in std_logic_vector (5 downto 0);
clk, Load_1_canal, Load_2_canal, Reset: in std_logic;
Q1_seg: out std_logic_vector (5 downto 0);
Q1_min: out std_logic_vector (5 downto 0);
Q2_seg: out std_logic_vector (5 downto 0);
Q2_min: out std_logic_vector (5 downto 0);
salida1_canal: out std_logic;
salida2_canal: out std_logic);
end contador_carga;
architecture arq_contador_carga of contador_carga is
signal cnt1_seg: std_logic_vector(5 downto 0);
signal cnt1_min: std_logic_vector(5 downto 0);
signal cnt2_seg: std_logic_vector(5 downto 0);
17

Diseo Digital

<-> Viernes 5:00-7:30 pm

signal cnt2_min: std_logic_vector(5 downto 0);


signal habilitador1_canal: bit:= '0';
signal habilitador2_canal: bit:= '0';
begin
process(Reset,clk)
begin
if Reset='1' then
cnt1_seg<=(others=>'0');
cnt1_min<=(others=>'0');
cnt2_seg<=(others=>'0');
cnt2_min<=(others=>'0');
salida1_canal<='0';
salida2_canal<='0';
habilitador1_canal<='0';
habilitador2_canal<='0';
else
if rising_edge(clk) then
if Load_1_canal='1' then--MIENTRAS NO SE DA UNA CARGA, NO SE HABILITA
LA SALIDA
cnt1_seg<=segundos_1_canal;
cnt1_min<=minutos_1_canal;
habilitador1_canal<='1';
else--COMIENZA EL PROCESO DE TEMPORIZACIN
if cnt1_min="000000" and cnt1_seg="000000" and habilitador1_canal='1'
then--FINALIZACIN DE LA TEMPORIZACIN
Q1_seg<="000000";
Q1_min<="000000";
salida1_canal <= '1';
else--COMIENZA EL CONTEO DESCENDENTE
if cnt1_min="000000" and cnt1_seg="000000" then--FINALIZACIN
DE CONTEO DESCENDENTE, CONDICIN DE ACTIVACIN DE
SALIDA PREVIA CARGA
Q1_seg<="000000";
Q1_min<="000000";
salida1_canal <= '0';
else--CONDICIN DE CONTINUIDAD DEL CONTEO
DESCENDENTE
if cnt1_seg="000000" then--CONTEO DESCENDENTE DE
MINUTOS
cnt1_seg<="111100";
cnt1_min<=cnt1_min-1;
Q1_seg<=cnt1_seg;
Q1_min<=cnt1_min;
else--CONTEO DESCENDENTE DE SEGUNDOS
cnt1_seg<=cnt1_seg-1;
Q1_seg<=cnt1_seg;
Q1_min<=cnt1_min;
end if;
end if;
end if;
end if;
18

Diseo Digital

<-> Viernes 5:00-7:30 pm


if Load_2_canal='1' then--MIENTRAS NO SE DA UNA CARGA, NO SE HABILITA
LA SALIDA
cnt2_seg<=segundos_2_canal;
cnt2_min<=minutos_2_canal;
habilitador2_canal<='1';
else--COMIENZA EL PROCESO DE TEMPORIZACIN
if cnt2_min="000000" and cnt2_seg="000000" and habilitador2_canal='1'
then--FINALIZACIN DE LA TEMPORIZACIN
Q2_seg<="000000";
Q2_min<="000000";
salida2_canal <= '1';
else--COMIENZA EL CONTEO ASCENDENTE
if cnt2_min="000000" and cnt2_seg="000000" then--FINALIZACIN
DE CONTEO ASCENDENTE, CONDICIN DE ACTIVACIN DE
SALIDA PREVIA CARGA
Q2_seg<="000000";
Q2_min<="000000";
salida2_canal <= '0';
else--CONDICIN DE CONTINUIDAD DEL CONTEO ASCENDENTE
if cnt2_seg="000000" then--CONTEO ASCENDENTE DE
MINUTOS
cnt2_seg<="111100";
cnt2_min<=cnt2_min-1;
Q2_seg<=cnt2_seg;
Q2_min<=cnt2_min;
else--CONTEO ASCENDENTE DE SEGUNDOS
cnt2_seg<=cnt2_seg-1;
Q2_seg<=cnt2_seg;
Q2_min<=cnt2_min;
end if;
end if;
end if;
end if;

end if;
end if;
end process;
end arq_contador_carga;
EXPLICACIN DE LA ESTRUCTURA DEL CDIGO:
ESTRUCTURA DEL CODIGO:
1. LIBRERIAS
Las libreras usadas fueron la bsicas en todo programa vhdl, ya que el proyecto solo requiero
las operacin aritmticas bsicas con arreglos de vectores y bits de habilitacin.
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_arith.all;
19

Diseo Digital

<-> Viernes 5:00-7:30 pm

Use ieee.std_logic_unsigned.all;
2. ENTIDAD
En esta parte declaramos las entradas y salidas de nuestro sistema, las cuales consisten en
vectores de 6 bits como mnimo ya que la entrada del tiempo es en binario (60 = 111100). El
reloj, reset y los bits de control para la carga de informacin se definen solo como bits. Las
salidas son tambien vectores de 6 bits que mediante un bloque de conversin dentro del
cdigo se puede transformar a cdigo BCD 7 segmentos para utilizarlos con displays, y por
ultimo las salidas de activacin de cada canal.
Entity contador_carga is
Port (segundos_1_canal: in std_logic_vector (5 downto 0);
minutos_1_canal: in std_logic_vector (5 downto 0);
segundos_2_canal: in std_logic_vector (5 downto 0);
minutos_2_canal: in std_logic_vector (5 downto 0);
Clk, Load_1_canal, Load_2_canal, Reset: in std_logic;
Q1_seg: out std_logic_vector (5 downto 0);
Q1_min: out std_logic_vector (5 downto 0);
Q2_seg: out std_logic_vector (5 downto 0);
Q2_min: out std_logic_vector (5 downto 0);
salida1_canal: out std_logic;
salida2_canal: out std_logic);
End contador_carga;

3. ARQUITECTURA
a. SEALES
En la arquitectura del temporizador, como primera instancia se tuvo que crear seales
las cuales son de uso exclusivo del programa, estas seales han sido definidas para
almacenar la informacin de entrada y tambien para actuar como registros en el
proceso de conteo descendente, a su vez fue necesario definir dos seales de
habilitacin para asegurar que las salidas de los canales no se activen a menos que se
haya realizado una carga de informacin.
Architecture arq_contador_carga of contador_carga is
Signal cnt1_seg: std_logic_vector (5 downto 0);
Signal cnt1_min: std_logic_vector (5 downto 0);
Signal cnt2_seg: std_logic_vector (5 downto 0);
Signal cnt2_min: std_logic_vector (5 downto 0);
Signal habilitador1_canal: bit:= '0';
Signal habilitador2_canal: bit:= '0';
b. LECTURA DE DATOS (MINUTOS Y SEGUNDOS)
20

Diseo Digital

<-> Viernes 5:00-7:30 pm

A partir de aqu se explica el proceso principal de temporizacin. Este temporizador


cuenta con una etapa en la cual se establece el tiempo de espera para la activacin de
la salida, este proceso regido por el bit reset y el reloj consiste en una lgica simple
basada en instrucciones if else, ya que el control de reset es asncrono se ubica como
primera condicin del programa, si el bit de reset est en alto, se resetean todas las
seales y las salidas se ponen a cero, si el bit de reset est en bajo, se ejecuta la
temporizacin propiamente dicho.
If Reset='1' then
cnt1_seg<= (others=>'0');
cnt1_min<= (others=>'0');
cnt2_seg<= (others=>'0');
cnt2_min<= (others=>'0');
salida1_canal<='0';
salida2_canal<='0';
habilitador1_canal<='0';
habilitador2_canal<='0';
Else
Luego de esta condicional aparece la condicional para la lectura de datos, la cual
depende nicamente de los bits Load1_canal y Load2_canal los cuales son
independientes para cada canal; si alguno de estos bits est en alto y se da un flanco de
subida del reloj, habilitar la lectura de datos de su respectivo canal guardando la
informacin de entrada de minutos_1_canal y segundos_1_canal o minutos_2_canal y
segundos_2_canal en los registros definidos como las seales cnt1_seg, cnt1_min,
cnt2_seg y cnt2_min, a su vez que activar un bit de habilitacin para permitir la
activacin de la salida luego de la finalizacin de la temporizacin.
If rising_edge (clk) then
If Load_1_canal='1' then
cnt1_seg<=segundos_1_canal;
cnt1_min<=minutos_1_canal;
habilitador1_canal<='1';
Else
c. TEMPORIZACION
Luego de la lectura de datos llegamos al ncleo del proceso, el cual hace el descuento
progresivo del dato ingresado simulando asi la temporizacin. Esta etapa abarca la
condicin para la activacin de la salida la cual consiste en una condicional que implica
3 variables, cnt1_min, cnt1_seg y un bit de habilitacin del cual se habl en la etapa
anterior, en caso la temporizacin termina y se haba dado una carga de informacin
entonces la salida pasa a alto indicando que el conteo se realiz. En caso contrario se
ingresa a la etapa donde se realiza el decremento de los registros de los segundos de 1
en 1 y el registro de los minutos en 1 cada 60 segundos, logrando asi el funcionamiento
correcto de un temporizador.
if cnt1_min="000000" and cnt1_seg="000000" and habilitador1_canal='1' then
Q1_seg<="000000";
21

Diseo Digital

<-> Viernes 5:00-7:30 pm


Q1_min<="000000";
salida1_canal <= '1';

else
if cnt1_min="000000" and cnt1_seg="000000" then
Q1_seg<="000000";
Q1_min<="000000";
salida1_canal <= '0';
else
if cnt1_seg="000000" then
cnt1_seg<="111100";
cnt1_min<=cnt1_min-1;
Q1_seg<=cnt1_seg;
Q1_min<=cnt1_min;
else
cnt1_seg<=cnt1_seg-1;
Q1_seg<=cnt1_seg;
Q1_min<=cnt1_min;
end if;
end if;
end if;
end if;
Este proceso se realiza en paralelo al del segundo canal, siendo parte ambos de un
mismo if, para ser precisos ambos procesos de conteo son parte de las instrucciones
contenidas en el ELSE del primero IF el cual contena el RESET
if Load_2_canal='1' then
cnt2_seg<=segundos_2_canal;
cnt2_min<=minutos_2_canal;
habilitador2_canal<='1';
else
if cnt2_min="000000" and cnt2_seg="000000" and habilitador2_canal='1' then
Q2_seg<="000000";
Q2_min<="000000";
salida2_canal <= '1';
else
if cnt2_min="000000" and cnt2_seg="000000" then
Q2_seg<="000000";
Q2_min<="000000";
salida2_canal <= '0';
else
if cnt2_seg="000000" then
cnt2_seg<="111100";
cnt2_min<=cnt2_min-1;
Q2_seg<=cnt2_seg;
Q2_min<=cnt2_min;
else
cnt2_seg<=cnt2_seg-1;
Q2_seg<=cnt2_seg;
Q2_min<=cnt2_min;
22

Diseo Digital

end
end
end
end
end
end

<-> Viernes 5:00-7:30 pm


end if;
end if;
if;
if;
if;
if;
process;
arq_contador_carga;

SIMULACIN EN VHDL:

23

Diseo Digital

<-> Viernes 5:00-7:30 pm

24

Diseo Digital

<-> Viernes 5:00-7:30 pm

PLANTEAMIENTO DE PLD A IMPLEMENTAR


Un planteamiento aproximado del temporizador es el que se muestra en la figura siguiente:

25

Diseo Digital

<-> Viernes 5:00-7:30 pm

Constar de un contador 74192, un decodificador BCD-7 segmento 7448, un Flip-Flop 7476 y las
compuertas AND, OR y NOT necesarias para la implementacin del temporizador. Se realizan la
interconexin de estos dispositivos para formar tanto el tiempo en segundo como en minutos. En
total se utilizarn cuatro contadores, un Flip-Flop con cuatro decodificadores BCD-7 segmentos y
varias compuertas lgicas. Para la simulacin en tiempo real se seleccionar un dispositivo lgico
programable FPGA del fabricante Altera, especficamente se seleccionar la Altera FPGA Cyclone IV
4CE115.

EVALUACIN DEL PLD EMPLEADO


Para ejemplificar el circuito anterior, notaremos que se usar el DE2-115 para implementar el
proyecto y tiene la construccin mostrada en la siguiente figura:

26

Diseo Digital

<-> Viernes 5:00-7:30 pm

En el diagrama de bloques siguiente, podemos ver cmo est compuesto electrnicamente:


DISPOSITIVO FPGA:
Cyclone IV EP4CE115F29.
114,480 LEs.
432 M9K bloques de memoria.
3,888 Kbits memoria integrada.
4 PLLs.
CONFIGURACIN FPGA:

Modo de configuracin JTAG y AS.


EPCS64 dispositivo de configuracin serial.
Circuitera USB Blaster en la placa.

DISPOSITIVOS DE MEMORIA:

128MB (32Mx32bit) SDRAM.


2MB (1Mx16) SRAM.
8MB (4Mx16) Flash de 8 bits .
32Kb EEPROM.

SOCKET PARA TARJETA SD:

27

Diseo Digital

<-> Viernes 5:00-7:30 pm

Provee SPI y modo 4 bits SD para acceso a la tarjeta SD.

CONEXIONES:

2 puertos Ethernet 10/100/1000 Mbps.


Tarjeta de alta velocidad (HSMC).
Puertos configurables estndar de entrada/salida(voltage levels:3.3/2.5/1.8/1.5V).
USB tipo A y B
o Provee un host y controladores de dispositivo usando USB 2.0.
o Support data transfer at full-speed and low-speed.
o Driver de PC disponible.
Puerto de expansin de 40 pines
o Puertos configurables estndar de entrada/salida (voltage levels:3.3/2.5/1.8/1.5V).
Conector de salida VGA
o VGA DAC (Triple DACs de alta velocidad).
Conector serial DB9 para puerto RS-232 con control de subida.
PS/2 mouse/keyboard.

CLOCK:

3 entradas de oscilador de reloj de 50MHz.


Conectores SMA (clock externo de entrada/salida).

AUDIO:

Codificador/decodificador de 24 bits(CODEC).
Line-in, line-out, y microphone incorporados.

DISPLAY:
LCD 16x2.
SWITCHES E INDICADORES:

18 switches de arrastre y 4 push-buttons switches.


18 rojos y 9 verdes LEDs.
8 displays de 7 segmentos.

OTRAS CARACTERSTICAS:

Modulo receptor de control remote infrarrojo.


Decoder de TV (NTSC/PAL/SECAM) y conector interno de TV.

POTENCIA:

Entrada DC.
Reguladores de cambio y paso-bajo LM3150MH.

28

Diseo Digital

<-> Viernes 5:00-7:30 pm

RESULTADOS OBTENIDOS
DIAGRAMA DE TIEMPOS:
1. MUESTRA 1: Conteo sin cruce de canales

29

Diseo Digital

<-> Viernes 5:00-7:30 pm

2. MUESTRA 2: Uso de reset, comprobando el reinicio del sistema

30

Diseo Digital

<-> Viernes 5:00-7:30 pm

3. MUESTRA 3: Uso de reset, comprobando la reutilizacin de canales.

31

Diseo Digital

<-> Viernes 5:00-7:30 pm

4. MUESTRA 4: Prueba de conteo y activacin de salidas segn canal utilizado.

32

Diseo Digital

<-> Viernes 5:00-7:30 pm

33

Diseo Digital

<-> Viernes 5:00-7:30 pm

CONCLUSIONES

Se ha presentado el proceso de desarrollo de un temporizador digital de conteo decreciente


y creciente que es capaz de temporizar desde 99 minutos y 59 segundos hasta cero,
dependiendo del canal que se use.
En la simulacin del diseo esquemtico se pueden notar los efectos reales del
comportamiento de los circuitos integrados que en la mayora de los casos exhiben, a su
salida, valores intermedios antes de estabilizarse en un valor definitivo, aunque esto no
afecta el resultado final esperado.
En la simulacin del diseo con VHDL se puede observar que no existen los valores
intermedios que se dan en la simulacin del esquemtico, o sea, las salidas son ms
limpias.
En las simulaciones se puede observar que las salidas responden de la manera esperada
ante los diferentes cambios de las seales de entrada.
La programacin en VHDL acorta el tiempo de realizacin de los proyectos de electrnica
digital, abarata los costos y reduce el tamao de las tarjetas de circuito impreso y por ende
el tamao de los equipos diseados.

BIBLIOGRAFA

Problemas de circuitos y sistemas digitales


Fundamentos de lgica digital con diseo VHDL
Circuit Desing with VHDL
Diseo de Sistemas Digitales con VHDL
http://www.altera.com/

34

Mc Graw Hill
Stephen Brown Zvonko Vranesic
Volnei A. Pedroni
S.A. Prez, E. Soto, S. Fernndez

You might also like