Contador 4 Bits

INFORME DE PROYECTO CONSTRUCCIÓN DE UN CONTADOR DE 4 BITS CON FF JK PROFESOR ARTURO RODRIGUEZ Alvaro Gómez Rubio Ingeni

Views 78 Downloads 0 File size 837KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

INFORME DE PROYECTO CONSTRUCCIÓN DE UN CONTADOR DE 4 BITS CON FF JK PROFESOR ARTURO RODRIGUEZ

Alvaro Gómez Rubio Ingeniería de ejecución informática Santiago, enero de 2013

ÍNDICE

Introducción

3

Circuitos secuenciales y Flip Flop JK

5

Metodología

8

Realización de modelo teórico y simulación

10

Construcción de prototipo

17

Anexos

20

INTRODUCCIÓN

El presente trabajo corresponde al final de la asignatura “Tecnologías de Hardware”. El objetivo es el diseño y construcción de una simulación en Logi.cly de un contador digital de 4 bits, basado en dispositivos electrónicos biestables, en particular con flip flops JK y eventualmente, la posterior construcción de un prototipo funcional en protoboard. En electrónica digital, un contador es un circuito secuencial construido a partir de biestables y puertas lógicas capaz de realizar el cómputo de los impulsos que recibe en la entrada destinada a tal efecto, almacenar datos o actuar como divisor de frecuencia. Habitualmente, el cómputo se realiza en código binario. Para los efectos teóricos, se realizaron los diagramas y cálculos utilizando los conocimientos adquiridos en el curso semestral, apoyándome para su revisión en algunas herramientas automatizadas, como calculadoras de mapas de Karnaught. El desarrollo de la simulación se realizó basado en los resultados obtenidos, pero se realizaron algunas mejoras a medida que se armaba el diseño práctico, disminuyendo la cantidad de puertas utilizadas, por ejemplo. Con la simulación funcionando, la confección del prototipo fue apoyada por bibliografía encontrada en internet, así como la inestimable ayuda de un técnico electrónico, quien me apoyó para entender como solucionar algunas problemáticas presentadas, tales como la necesidad de dos condensadores que regulen la velocidad de repetición de los pulsos

obtenidos del chip utilizado para tales efectos, la incorporación de algunas resistencias para evitar que se quemen los leds, etc. Si bien el diseño general hecho en el simulador fue seguido fielmente para la creación del protoboard, la implementación incorporó una serie de dificultades propias de las características físicas y lógicas de los integrados, siendo necesario recurrir a las respectivas documentaciones, complejizando el producto obtenido, respecto a su versión teórica.

CIRCUITOS SECUENCIALES Y FLIP FLOP JK

Son utilizados principalmente en circuitos que requieren algún nivel de almacenamiento de datos, tales como memorias, relojes digitales y otros en formatos binarios, es decir, almacenando unidades discretas de información. En resumen, se puede definir un circuito secuencial como “un circuito cuya salida depende no solo de la combinación de entrada, sino también de la historia de las entradas anteriores”. Un circuito secuencial debe ser capaz de mantener su estado durante algún tiempo, para ello se hace necesario el uso de dispositivos de memoria. Los dispositivos de memoria utilizados en circuitos secuenciales pueden ser tan sencillos como un simple retardador (inclusive, se puede usar el retardo natural asociado a las compuertas lógicas) o tan complejos como un circuito completo de memoria denominado multivibrador biestable o Flip Flop. En consecuencia, en los circuitos secuenciales entra en juego de manera importante el factor tiempo. De hecho, los circuitos secuenciales se clasifican de acuerdo a la manera como manejan el tiempo, separándose en circuitos secuenciales síncronos y circuitos secuenciales asíncronos. En un circuito secuencial asíncrono, los cambios de estado ocurren al ritmo natural marcado por los retardos asociados a las compuertas lógicas utilizadas en su implementación, es decir, estos circuitos no usan elementos especiales de memoria, pues se sirven de los retardos propios de las compuertas lógicas usados en ellos. Esta manera de operar puede ocasionar algunos problemas

de funcionamiento, ya que estos retardos naturales no están bajo el control del diseñador y además no son idénticos en cada compuerta lógica. Los circuitos secuenciales síncronos, sólo permiten un cambio de estado en los instantes marcados por una señal de sincronismo de tipo oscilatorio denominada reloj. Con esto se pueden evitar los problemas que tienen los circuitos asíncronos originados por cambios de estado no uniformes en todo el circuito. Este es el caso de este proyecto, se trata de un circuito secuencial síncrono, basado en flip flops JK con un generador de pulsos. Este tipo de componentes son llamados “biestables”, ya que son capaces de almacenar el valor de un bit. El principio de funcionamiento es la realimentación entre puertas, manteniendo un valor estable hasta que cambien las entradas. Un FF JK está representado por el símbolo

Y la lógica que implementa es la siguiente:

Esta es su tabla de estados: ENTRADAS

SALIDAS

Modo de operación CLK

S

R

Q

Q

Mantenimiento

0

0

No cambia

Reset

0

1

0

1

Set

1

0

1

0

Conmutación

1

1

Estado opuesto

METODOLOGÍA

Para el desarrollo del proyecto se separaron las actividades en cuatro tipos: 1) Investigación 2) Desarrollo teórico 3) Desarrollo de modelo simulado 4) Confección del prototipo Para efectos de la investigación, se compilaron los antecedentes entregados por el profesor y se complementaron con los obtenidos en diversas publicaciones electrónicas respecto al cálculo de las tablas de verdad y tipos de diseño de artefactos similares. Con lo anterior despejado, procedí a la búsqueda de la información sobre la manera de trabajar con protoboards y sus características técnicas para el correcto desarrollo de un proyecto de este estilo. Posteriormente, se realizó el cálculo de las tablas de verdad, a partir de los diferentes valores deseados en el circuito y las tablas de estados de los JK, obteniéndose los valores combinacionales para las entradas de cada uno de los componentes del circuito. Esto entregó la información necesaria para el desarrollo de la tercera etapa. Consultando modelos definidos para contadores de 2 y 3 bits se escogió un tipo de diseño sencillo de implementar y que a la vez pudiese entenderse de manera directa. Con este criterio en mente se confeccionó la simulación dejando los FF en cascada, agregando un reloj de pulsos, una serie

de 4 leds para exponer el conteo en binario y un par de puertas AND para juntar las señales salientes de componentes en las entradas de los siguientes. Posteriormente, se llevó a la realidad el modelo utilizando una serie de circuitos integrados, algunas resistencias, leds (diodos), dos condensadores y cable a granel. Para el armado fue necesario recurrir a un técnico electrónico que me apoyó indicando posibles integrados a usar y sus códigos, así como en la manera correcta de implementar el reloj de pulsos y el uso del protoboard.

REALIZACIÓN DE MODELO TEÓRICO Y SIMULACIÓN

Por tratarse de un contador de 4 bits, la secuencia de conteo irá desde 0 a 15, siendo este el diagrama de los estados posibles de salida del circuito, en formato binario:

0000 1111

0001

1110

0010

1101

0011

1100

0100

1011

0101

1010

0110

1001

0111 1000

Para el cálculo de los diferentes estados involucrados se confeccionó una tabla que contiene los valores actuales y futuros para los 4 bits. Es importante recordar que una de las características de estos circuitos secuenciales es justamente que el cambio de estado depende de los valores anteriores que haya tenido, por lo que es importante realizar este ejercicio. De aquí en adelante se denominarán q3, q2, q1 y q0 a cada uno de los bits, de mayor a menos significación. TABLA DE ESTADOS Estado actual (q) q3 q2 q1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1

q0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Estado siguiente (Q) Q3 Q2 Q1 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 0 0

Q0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0

1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

La tabla anterior nos proporciona la combinatoria deseada en la salida de cada uno de los FF y los valores que tendrían anteriormente. Utilizando la tabla de estados del FF JK podemos determinar los valores a obtener en cada pin del JK, así como los valores a inyectar en ellos. La siguiente tabla muestra el cambio de los biestables (tabla de transiciones) de acuerdo a la tabla de estados previamente calculada. TABLAS DE TRANSICIONES DE LOS FF JK Estado Actual (q) Estado Siguiente (Q) q2 q1 q0 Q3 Q2 Q1 Q0 q3 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 0 1 1 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1

J3 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

K3 0 0 0 0 0 0 0 1 X X X X X X X X

J2 X X X X X X X X 0 0 0 0 0 0 0 1

0 0 0 1 X X X X 0 0 0 1 X X X X

Entradas FF JK K2 J1 K1 X 0 X 1 X X X X 0 0 0 1 0 X 1 X X 0 X 1 X X X X 0 0 0 1 0 X 1 X

J0 X X 0 1 X X 0 1 X X 0 1 X X 0 1

Como se advierte, con esto ya es posible obtener la lógica booleana para cada compuerta, la que se puede simplificar a través de mapas de Karnaught. A continuación se explicitan los cálculos para cada pin de los 4 JK involucrados.

K0 1 X 1 X 1 X 1 X 1 X 1 X 1 X 1 X

X 1 X 1 X 1 X 1 X 1 X 1 X 1 X 1

SIMPLIFICACIÓN POR KARNAUGHT DE ENTRADAS DE LOS FF JK BIT 0

0 0 0 0 1 1 1 1 1 1 1 1

0 1 1 1 1 0 0 0 0 1 1 1 1

1 0 0 1 1 0 0 1 1 0 0 1 1

1 0 1 0 1 0 1 0 1 0 1 0 1

X 1 X 1 X 1 X 1 X 1 X 1 X

1 X 1 X 1 X 1 X 1 X 1 X 1

q0q1 00 01

11

10

00 q2 q3

0

J0

J0=!q0

01 11 10

K0

q0q1 00 01

11

10

00 q2 q3

Estado Actual (q) Entradas FF q2 q1 q0 J0 K0 q3 0 0 0 1 X 0 0 0 1 X 1 0 0 1 0 1 X 0

K0=q0

01 11 10

BIT 1

J1

q0q1 00 01

11

10

00 q2 q3

Estado Actual (q) Entradas FF q2 q1 q0 J1 K1 q3 0 0 0 0 X 0 0 0 1 1 X 0 0 1 0 X 0 0 0 1 1 X 1 0 1 0 0 0 X 0 1 0 1 1 X 0 1 1 0 X 0 0 1 1 1 X 1 0 0 0 0 0 X 1 0 0 1 1 X 1 0 1 0 X 0 1

J1=!q1q0

01 11 10

K1

q0q1 00 01 00

11

10 K1=q1q0

1 1 1 1

0 1 1 1 1

1 0 0 1 1

1 0 1 0 1

X 0 1 X X

q2 q3

1

1 X X 0 1

01 11 10

BIT 2

J2

q0q1 00 01

11

10

q2 q3

00

J2=!q2q1q0

01 11 10

K2

q0q1 00 01 00 q2 q3

Estado Actual (q) Entradas FF q2 q1 q0 J2 K2 q3 0 0 0 0 X 0 0 0 1 0 X 0 0 1 0 0 X 0 0 1 1 1 X 0 1 0 0 X 0 0 1 0 1 X 0 0 1 1 0 X 0 0 1 1 1 X 1 0 0 0 0 0 X 1 0 0 1 0 X 1 0 1 0 0 X 1 0 1 1 1 X 1 1 0 0 X 0 1 1 0 1 X 0 1 1 1 0 X 0 1 1 1 1 X 1 1

01 11 10

11

10 K2=q2q1q0

BIT 3

J3

q0q1 00 01

11

10

q2 q3

00

J3=!q3q2q1q0

01 11 10

K3

q0q1 00 01 00 q2 q3

Estado Actual (q) Entradas FF q2 q1 q0 J3 K3 q3 0 0 0 0 X 0 0 0 1 0 X 0 0 1 0 0 X 0 0 1 1 0 X 0 1 0 0 0 X 0 1 0 1 0 X 0 1 1 0 0 X 0 1 1 1 1 X 0 0 0 0 X 0 1 0 0 1 X 0 1 0 1 0 X 0 1 0 1 1 X 0 1 1 0 0 X 0 1 1 0 1 X 0 1 1 1 0 X 0 1 1 1 1 X 1 1

01 11 10

11

10 K3=q3q2q1q0

Con los valores obtenidos se realizó una primera versión de la simulación en Logi.cly, la que posteriormente se optimizó para minimizar la cantidad de componentes utilizados. Si bien se entrega el archivo en un cd adjunto, esta es la imagen del circuito obtenido.

Como se observa, se utilizó una alimentación directa a los FF, colocando el interruptor en el CLR de los integrados. También se puede advertir que se utilizaron compuertas AND para unificar las salidas de los Q e inyectarlas en los J de cada FF.

CONSTRUCCIÓN DE PROTOTIPO

Para la construcción del protoboard se utilizaron los siguientes componentes:  Un regulador de voltaje L7805 (5V)  6 resistencias de 1 KOhms  1 led amarillo  5 leds rojos  2 Integrados 7476, con dos FF JK cada uno  1 integrado 74LS08 con compuertas AND  1 condensador de 10 uF  1 condensador de 100 uF  1 contador de tiempo LM555  1 protoboard  Cable de cobre Los detalles de cada integrado se pueden ver en los anexos. Se comenzó conectando el regulador de voltaje y el led amarillo para poder observar si el circuito estaba siendo correctamente alimentado. Luego, se conectó la alimentación al resto del modelo, puenteando hasta el pin 8 del contador de tiempo. Entre los pines 1 y 2 del 555, es decir, entre tierra y el gatillador, se puso el condensador de 100uF, ya que esa capacitancia entrega un tiempo razonable de pulsaciones. Probando con diferentes valores se corroboró que a medida que la capacitancia aumenta, también lo hace el tiempo entre cada

pulso. También se puso un condensador de 10uF en el pin de regulación de voltaje, como medida para minimizar el ruido. Desde el pin 3 del 555 se energizan los relojes de cada uno de los 4 FF, en los pines 1 y 6 de cada 7476. Ya teniendo configurada la alimentación de los pines CLKs, se procedió a la conexión del reloj con las entradas J y K de cada FF. En el caso de las entradas J se conectaron los pines 4 y 9 y para las entradas K se alimentaron los pines 16 y 12. Los orígenes de las alimentaciones son los mismos que se setearon en la simulación, en cascada. En el caso de las compuertas AND sólo se utilizaron 2 de las 4 que incluye el integrado, siendo alimentadas por los pines 1 y 2, y los 4 y 5. Las salidas correspondientes son los pines 3 y 6. Como se advierte en el modelo simulado, los leds son alimentados directamente por cada salida Q, de acuerdo a las señales que emitan los JK de derecha a izquierda, según aumenta la significancia de los bits. Entonces, cada diodo recibe alimentación desde los pines 11 y 15 de cada integrado, respectivamente. El circuito tiene su funcionamiento óptimo con una alimentación de 9 volts, ya que con voltajes menores que ese se presentaron algunos comportamientos erráticos de los FF y con más altos se corre el riesgo de quemar algunos de los componentes.

Por último, se presenta la imagen de como se ve el circuito funcionando: