Vous êtes sur la page 1sur 16

BENEMRITA UNIVERSIDAD

AUTNOMA DE PUEBLA
Facultad de Ciencias de la Electrnica
Licenciatura en Electrnica
Sistemas Digitales Secuenciales
Prctica 3:
"Contador"
Alumnos:
Nora Estefana Gonzlez Ramrez
Jos Eduardo Miranda Daz
Miguel Prez Gonzlez
Mauricio Velzquez Daz
Maestro:
Carlos Garca Lucero

A los 8 das del mes de Octubre de 2015.

Contenido
Introduccin............................................3
Objetivos.................................................3
Objetivo general.........................................3
Objetivos especficos....................................3
Planteamiento del Problema....................4
Marco terico y Estado del Arte...............4
Mquina de estados......................................4
Desarrollo del Sistema.............................7
Anlisis de Resultados...........................10
Conclusiones.........................................11
Referencias............................................11
Apndices..............................................12
Transistor 2N2222.....................................12
Display de 7 segmentos,..............................13
Flip Flop D..............................................14
Cdigo implementado en la FPGA.................15

Introduccin.
Los sistemas digitales secuenciales se visualizan con una gama de problemas a resolver
mucho ms amplia en comparacin a los sistemas combinacionales.
Esta propiedad de los sistemas secuenciales se debe a que estos sistemas constan de dos
partes bsicas, elementos combinacionales y elementos de memoria. Y una de las
mayores aplicaciones de dichos elementos de memoria son las Maquinas de Estado,
estn son conformadas por combinaciones de sistemas combinacionales y secuenciales.
Para este caso se utilizaron 2 mquinas de estado, puesto que tendramos dos salidas que
compartiran el mismo bus de datos y estas iran a diferentes display's.
Se debe conocer muy bien el funcionamiento de cmo realizar el diseo de cada
mquina de estado para que cada una desempee la funcin que tu deseas.

Objetivos.
Objetivo general.
Disear e implementar un contador Ascendente/Descendente con un botn de pausa y
un botn de Reset cuyas salidas sean visualizadas en 2 display's de 7 segmentos los
cuales deben compartir el mismo bus de datos.

Objetivos especficos.
Desarrollar dos mquinas de estado independientes las cuales no estarn sincronizadas
al mismo reloj.
Emitir los estados del contador en dos display's de 7 segmentos los cuales compartirn
el mismo bus de datos.

Planteamiento del Problema.


Se tiene que desarrollar un contador de 4 bits Ascendente/Descendente con un botn de
pausa y Reset cuyos estados (nmeros emitidos durante la cuenta) se puedan visualizar
en 2 display's de 7 segmentos los cuales comparten el mismo bus de datos, para esto se
deber usar una mquina de estados aparte del contador principal para determinar que
display encender en cada momento.

Marco terico y Estado del Arte.


Mquina de estados.
Mquinas de estado es el nombre con el que se conocen los mtodos de Anlisis y
Diseo de Circuitos Secuenciales Sincrnicos, son circuitos secuenciales que se
encuentran constituidos por una etapa combinacional y una etapa de memoria,
relacionadas de tal forma que conforman un sistema secuencial para algn propsito
especial. Los registros y contadores con entradas asincrnicas son ejemplos de este tipo
de sistemas secuenciales.
MQUINA DE ESTADO DE MEALY
En esta mquina de estados las salidas se encuentran determinadas por el estado interno
del sistema y por las entradas no sincronizadas con el circuito. El diagrama de bloques
representativo de esta mquina se muestra en la figura. Donde se observa que las salidas
del sistema son tanto sincrnicas como asincrnicas.

MQUINA DE ESTADO DE MOORE


Las salidas solo dependen del estado interno y de cualquier entrada sincronizada con el
circuito, como se observa en la figura, donde las salidas del sistema son nicamente
sincrnicas. Un ejemplo de este tipo de mquinas de estado son los contadores.

Diagramas de Estado
Un diagrama de estados es una representacin grfica que indica la secuencia de los
estados que se presentan en un circuito secuencial, teniendo en cuenta las entradas y
salidas. El diagrama se forma con crculos y lneas. Los crculos representan los estados
del circuito secuencial de ellos contiene un nmero que identifica su estado.
Las lneas indican las transiciones entre estados y se marcan con dos nmeros separados
por un (/), estos dos nmeros corresponden a la entrada y salida presentes antes de la
transicin.

Tablas de Estado
Una tabla de estado es un listado que contiene la secuencia de los estados de entradas,
estados internos y salidas del sistema, considerando todas las posibles combinaciones de
estados actuales y entradas. Las tablas de estado por lo general se dividen en tres partes:
estados actuales, estados siguientes y salidas.

Mapas de Karnaugh

Un mapa de Karnaugh es una representacin grfica de una funcin lgica a partir de


una tabla de verdad. El nmero de celdas del mapa es igual al nmero de combinaciones
que se pueden obtener con las variables de entrada. Los mapas se pueden utilizar para 2,
3, 4 y 5 variables.

Ecuaciones de estado.
Una ecuacin de estado (tambin llamada ecuacin de transicin) especifica el siguiente
estado en funcin del estado actual y las entradas. Una ecuacin de estados es una
expresin algebraica que especifica la condicin para una transicin de estado de un
flip-flop.
Diseo, mquina de estado.
Es la implementacin de las ecuaciones de estados en esquemtico simblico.

Desarrollo del Sistema.


1.- Primero se visualiz que para esta prctica se necesitaran 2 mquinas de estado las
cuales se disearan por separado, una mquina de estado para el contador y otra para
definir la velocidad con la que los display's encenderan y apagaran.
2.- Se dise un diagrama esquemtico en el cual se representan el circuito completo
considerando las 2 mquinas de estado independientes, obviamente para cada mquina
de estado se utiliz un registro diferente lo cual causo que no estuvieran sincronizadas.

Ilustracin 1. Esquema del contador general.

3.- Una vez teniendo visualizado exactamente qu se nos peda, se comenz con el
diseo de cada mquina de estado individualmente, es decir la mquina de estados para
el contador de 0.5 segundos y el contador de 10 milisegundos. Para realizar esto se
siguen los pasos indicados en el marco terico, primero se realiza un diagrama de
estados, luego una tabla de estados, y todos los pasos siguientes.

a) Diseo del contador de 0.5 segundos.


Diagrama de estados

Tabla de estados

Mapas de Karnaugh
En este caso se realizaron mapas para cada variable de entrada, esto es
desde Q0 hasta Q3

Ecuaciones de estado

b) Diseo del contador de 10 milisegundos

Diagrama de estados

Para este ejemplo se consider obsoleto realizar una tabla de estados, se not que era
posible pasar directo al mapa de Karnaugh.
Mapa de Karnaugh

Ecuaciones de estado

Sobra decir que para ninguna de nuestras mquinas de estado se realiz el diseo con
esquemas simblicos ya que carecan de relevancia para la implementacin en VHDL.
4.- Una vez teniendo todo el diseo de las dos mquinas de estado, realizar la
programacin en VHDL resulto sumamente sencillo ya que lo nico que se tuvo que
hacer fue introducir nuestras ecuaciones de estado en lenguaje VHDL y seleccionar los
casos para la salida de cada display.
5.- Para complementar el funcionamiento de la segunda mquina de estado (10
milisegundos) se utilizaron 2 transistores los cuales abran la salida para cada display,
esta salida era regulada por nuestro segundo contador.

Anlisis de Resultados.
El diseo de nuestro sistema a travs de mquinas de estado nos permiti disear un
contador de cuatro bits y controlarlo de manera ascendente o descendente adems de
incluir un Reset que inicializaba la cuenta nuevamente, mostrando los resultados en dos
display's de 7 segmentos conectados a travs de un bus.
Esto significa que tanto las ecuaciones obtenidas en el diseo de ambos contadores, as
como la implementacin correcta de las salidas, hicieron posible el funcionamiento
adecuado del sistema, por lo cual el contador operaba de acuerdo a los resultados
esperados.

10

Conclusiones.
Los objetivos principales de nuestras maquinas fueron cumplidos, logro sincronizarse el
funcionamiento de cada mquina de estado para cumplir con la especificacin de que
los display's que nos serviran para visualizar los estados del contador compartieran el
mismo bus de datos.

Referencias.
Introduccin a la Programacin en VHDL.
Marcos Snchez lez.
Facultad de Informtica.
Universidad Complutense de Madrid.
CircuitDesignwith VHDL.
Volnei A. Pedroni
MIT Press
2004

11

Apndices.
Transistor 2N2222

12

Display de 7 segmentos,

13

Flip Flop D

14

Cdigo implementado en la FPGA


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entitycodigo is
Port ( AD : in STD_LOGIC;
R : in STD_LOGIC;
Q : in STD_LOGIC_VECTOR (3 downto 0);
C : in STD_LOGIC;
D : out STD_LOGIC_VECTOR (3 downto 0);
Display : out STD_LOGIC_VECTOR (6 downto 0);
B0 : out STD_LOGIC;
B1 : out STD_LOGIC);
endcodigo;
architecture Behavioral of codigo is
signal Dis0: std_logic_vector(6 downto 0);
signal Dis1: std_logic_vector(6 downto 0);
begin
D(0) <= (not Q(0)) and (not R);
D(1) <= (not R) and (AD xnor (Q(1) xor Q(0)));
D(2) <= ((not R) and (not AD) and ((Q(2) and Q(1)) or (Q(2) and Q(0)) or ((not Q(2))
and (not Q(1)) and (not Q(0))))) or ((not R) and AD and ((Q(2) and (not Q(1))) or (Q(2)
and (not Q(0))) or ((not Q(2)) and Q(1) and Q(0))));
D(3) <= ((not R) and (not AD) and ((Q(3) and Q(1)) or (Q(3) and Q(0)) or ((not Q(1))
and (not Q(0)) and (Q(3) xnor Q(2))))) or ((not R) and AD and ((Q(3) and (not Q(1))) or
(Q(3) and (not Q(0))) or (Q(1) and Q(0) and (Q(3) xor Q(2)))));

15

with Q select
Dis0 <=
"1111110" when "0000" ,
"0110000" when "0001" ,
"1101101" when "0010" ,
"1111001" when "0011" ,
"0110011" when "0100" ,
"1011011" when "0101" ,
"1011111" when "0110" ,
"1110000" when "0111" ,
"1111111" when "1000" ,
"1110011" when "1001" ,
"1111110" when "1010" ,
"0110000" when "1011" ,
"1101101" when "1100" ,
"1111001" when "1101" ,
"0110011" when "1110" ,
"1011011" when "1111" ;

B0 <= not C;
B1 <= C;
process (C, Dis0, Dis1)
begin
if C = '0' then
Display <= Dis0;
else
Display <= Dis1;
end if;
endprocess;
endBehavioral;

16

with Q select
Dis1 <=
"1111110" when "0000" ,
"1111110" when "0001" ,
"1111110" when "0010" ,
"1111110" when "0011" ,
"1111110" when "0100" ,
"1111110" when "0101" ,
"1111110" when "0110" ,
"1111110" when "0111" ,
"1111110" when "1000" ,
"1111110" when "1001" ,
"0110000" when "1010" ,
"0110000" when "1011" ,
"0110000" when "1100" ,
"0110000" when "1101" ,
"0110000" when "1110" ,
"0110000" when "1111" ;