top of page
Buscar

Informe #15: Sumador/Restador BCD ingresado por teclado matricial (Dos dígitos).

  • Foto del escritor: SALOMON FELIPE RAMIREZ BUITRAGO
    SALOMON FELIPE RAMIREZ BUITRAGO
  • 10 ago 2020
  • 6 Min. de lectura



UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS

INGENIERIA ELECTRONICA


MATERIA

FUNDAMENTOS DE CIRCUITOS DIGITALES

GRUPO 005-1


SALOMON FELIPE RAMIREZ BUITRAGO

20182005041


DOCENTE

CESAR ANDREY PERDOMO CHARRY


3 DE AGOSTO DEL 2020

 

INTRODUCCION

En esta práctica se desarrollará un sumador y restador con ingreso por teclado matricial, de manera similar al ingreso por DIP SWITCH, para esta práctica necesitaremos el ingreso de dos dígitos, por lo que será necesario desarrollar el circuito con base en el uso de 6 bits.

Una nueva incorporación a esta práctica es que deberemos usar los registros de desplazamiento, para que al momento de ingresar un dígitoseguido de otro, el primero en ingresar se corra una posición a la izquierda.

 

MATERIALES

  • PSoC Creator 4.3.

  • PSoC 5LP

  • Tarjeta de desarrollo

  • Jumpers

 

METODOLOGIA

Gracias a la adquisición de nuevo material para poder trabajar, este laboratorio ha sido implementado de manera tangible.

Con el uso de una PSoC 5LP y una tarjeta de desarrollo con varios componentes, se realizarán todos los laboratorios posteriores.

En este laboratorio se nos han dado indicaciones de como deben ser las conexiones:

Figura 1. Conexiones para la práctica 15. [1]

Además se deben cumplir unas condiciones iniciales para la manipulación del sistema. Dichas condiciones son dadas con base en las entradas que posee el teclado matricial (caracteres alfanuméricos y algunos especiales):

  • 0 al 9 --> son habilitados para ingresar el A o el B

  • *--> Suma

  • # --> Resta

  • A --> Se visualiza A

  • B --> Se visualiza B

  • C --> Funcionalidad de borrado

  • D --> Se ejecuta la operación

También tenemos un flujo de operación inicial que nos indica el funcionamiento del montaje:

  1. Inicialmente el sistema tiene habilitado el ingreso de A el cual debe ser dos números entre 0-9. Durante este paso se debe visualizar el dato A en el display. De tal forma que el registro A está compuesto por A_Unidades y por A_Decenas, cuando se ingrese el primer dato (entre 0-9) este será cargado en A_Unidades y cuando se ingrese el segundo dato A_Unidades se desplaza a A_decenas y el segundo dato es cargado en A_Unidades. En caso de presionar la tecla C se hará un borrado que será un desplazamiento en el otro sentido es decir de A_Decenas a A_Unidades. Durante este paso se debe visualizar el dato A en los displays.

  2. Luego de ingresado se debe presionar * para suma o # para resta, al hacer esto se confirma el dato A y se habilita el banco de memoria B.

  3. Se ingresa B (B_Unidades y B_Decenas) con la misma lógica usada en A.

  4. Se presiona D se visualiza el resultado es decir D funciona como el igual

  5. Si se presiona A se visualiza A

  6. Si se presiona B se visualiza B

  7. Si se presiona D se visualiza el resultado

En un principio, se desarrolla un teclado matricial, como el que se desarrollo en el laboratorio 11, ya que la entrada del dígito se hará por medio de este. Sin embargo, esta vez se acoplarán los circuitos del teclado y el traductor en uno sólo:


Figura 2. Teclado matricial.
Figura 3. Teclado matricial completo.

Debido a que vamos a trabajar los números en formato BCD, como ya se ha venido trabajando en el transcurso del semestre, es necesario implementar un comparador. Ya que vamos a trabajar con el uso de 6 bits, este debe ser sólo de 4 bits, debido a que el número 9 (que es el mayor dígito a ingresar por tecla) se puede representar fácilmente con 4 bits. Este comparador lo haremos a partir del comparador de 2 bits diseñado desde la práctica 12:

Figura 4. Comparador de 2 bits.
Figura 5. Circuito complementador.
Figura 6. Comparador de 4 bits.

Teniendo listo el comparador de 4 bits, le agregamos la condición en la que nos va a detectar cuando un número sea mayor a 9. Lo hacemos poniendo en binario el número 9 (1001) a la entrada de B:

Figura 7. Comparador de 4 bits con la condición mayor a 9.

Tras tener listo el decodificador del teclado y el comparador de 4 bits, desarrollamos el banco de memoria, el cuál consta de dos arreglos de Flip Flops tipo D junto con multiplexores de 2 a 1, con el propósito de generar un registro bidireccional para almacenar los datos a recibir desde el teclado. El desplazamiento se da gracias a que los selectores de los multiplexores están conectados, permitiendo el desplazamiento hacia la izquierda o la derecha. Cuando el selector esté en 0, nos desplazamos hacia la izquierda, dando la función de ingresar el número correspondiente a las unidades; cuando el selector esté en 1, nos desplazamos hacia la derecha, dando la función de borrar el número que se encuentre en las unidades. Esta memoria es capaz de almacenar datos de 4 bits, por lo que cada arreglo debe tener 4 Flip Flops tipo D:

Figura 8. Banco de memoria.

Para la función de borrado, debemos delegar la tecla C con su correspondiente código binario referido al número 12 (1100):


Figura 9. Tecla de borrado.

Ahora, es necesario indicar los botones que usaremos para las operaciones de suma y resta. Debido al flujo de operación estos deben ser el * y el # respectivamente. Por lo que crearemos un selector, que nos permita detectar en qué caso se está usando el uno o el otro. Por la lógica que se ha usado en los laboratorios anteriores, debemos definir estos 2 botones como el número 14 (en binario 1110) para el * y el número 15 (en binario 1111) para el #. Teniendo como resultado:

Figura 10. Selector de suma o resta.

Ahora si tendríamos una parte del bloque principal del circuito, que sería el que nos permitiría recibir un dato entre 0 y 9, poder elegir el siguiente número que será desplazado hacia la izquierda, elegir una operación a realizar y poder habilitar el siguiente banco de memoria; además de poder usar la tecla de borrado en el caso 1 del selector. Para que pueda pasar al siguiente banco de memoria, añadimos FLip FLops del tipo SR, conectado a la salida de una compuerta OR desde el selector de suma o resta con la entrada S y permaneciendo su entrada R en 0:


Figura 11. Bloque de recepción de datos.

Por el lado del comparador de 4 bits, procedemos a realizar el sumador de 4 bits. A diferencia del laboratorio 10, en este diseño se opta por realizar el complemento a 1 por separado. El complemento a 1 se realiza para poder hacer el complemento a 2, que dará lugar a la resta del caso en el que el primer número sea menor al segundo. Para hacer el sumador de 4 bits, debemos crear el sumador de 2 bits y por medio de la unión de varios de estos, creamos el de 2. El sumador de 2 bits, al igual que en la práctica 10, se ha realizado con MUX de 16 a 1:

Figura 12. Sumador de 2 bits.
Figura 13. Sumador de 4 bits.

Ahora implementamos el sumador y restador BCD. Primero se realiza el sumador de 1 dígito BCD, poniendo dos sumadores binarios de 4 bits junto con el circuito que corrije cuando va a ser mayor a 9 el resultado:

Figura 14. Sumador BCD de un dígito.

Ahora se implementan 2 de estos circuitos, teniendo en cuenta tanto la suma como la resta:

Figura 15. Sumador BCD de dos dígitos.

Para desarrollar la resta, hacemos uso del complemento a 9. Para este circuito, es necesario tener en 9 (1001) en una de las entradas y en la otra tener una compuerta NOT para cada bit de entrada, al igual que siempre debe permanecer en 1 el carry de entrada, por lo que se le pone un 1 lógico. Teniendo como circuito:


Figura 16. Complemento a 9.

Y debido a que vamos a realizar la visualización por medio de Displays, debemos realizar el conversor de BCD a 7 segmentos, para esta tarea, optamos el uso de compuertas universales, como se hizo en el laboratorio 10:

Figura 17. Decodificador de BCD a 7 segmentos.

Ahora, debido a que manejamos 4 Displays, es necesario conectar y poner a 0 los pines comunes que poseen, por lo que es necesario usar un decodificador de 2 a 4, que nos ayudará en esta tarea, junto con otros componentes que vemos más adelante:

Figura 18. Decodificador de 2 a 4.

Para la visualización,primero se debe desarrollar un circuito que permita poder elegir qué letra se quiere visualizar, por lo que se crea un selector en el que se podrá optar por la letra que se vaya a emplear dependiendo de las necesidades del flujo de operación:

Figura 19. Selector de las letras del teclado matricial.

Para poder visualizar cada uno de los resultados, dependiendo de la tecla que se oprima, según el flujo de operación, se agrega el circuito de las visualizaciones. Esto se hace a partir de la traducción de cada letra a código binario, teniendo: A el número 10 (1010), B el número 11 (1011) y D el número 13 (1101) :

Figura 20. Visualizaciones de los resultados.

Se debe mostrar el correcto funcionamiento de los números solicitados, por lo que haremos uso del enable como se hizo en la práctica 10 y del circuito al que se correspondía que sólo se encendiera el segmento g (en caso de que el número ingresado en A sea menor al ingresado al B), sólo que en este diseño, se ha optado por unificarlos:

Figura 21. Visualización.

Ahora podemos realizar la incorporación de todos los subcircuitos para dar desarrollo a el sumador y restador de 6 bits:

Figura 22. Totalidad del circuito.

En la totalidad del circuito, adicional a los componentes que ya se habían mencionado, tenemos algunos subcircuitos del laboratorio 14. Para poder realizar la visualización dinámica, se han multiplexado las entradas de los datos, por lo que usamos MUX de 4 a 1 y en cada entrada del MUX, mandamos un bus de datos de 7 bits, también multiplexamos las salidas de los bloques de complemento a 9. Además de agregar el contador de 2 bits a una frecuencia alta, para que la percepción visual nos permita ver todo como si fuera un solo tomo del número.

Vídeo demostrativo del montaje:

 

ANÁLISIS DE RESULTADOS

Algunos circuitos serán omitidos en esta sección, debido a que ya han sido trabajados en otras prácticas de manera detallada y puntual.

Para el decodificador de 2 a 4 se estableció la siguiente tabla:

A partir de esta tabla, sacamos las expresiones:




 

CONCLUSIONES

  • Gracias al uso del microcontrolador PSoC 5LP y a sus diversas funciones y flexibilidad, podemos implementar circuitos que de manera tradicional serían básicamente irrealizables o muy tediosos.

  • De manera similar al laboratorio 12, se tuvo un correcto funcionamiento en la práctica, permitiendo llevar de manera satisfactoria el flujo de operación.

  • La implementación de los registros de desplazamiento es muy interesante, ya que con los clásicos Flip Flops junto a multiplexores, podemos desplazar los datos que almacenamos.

 

WEBGRAFIAS

[1]. Documento correspondiente al laboratorio 15.

 
 
 

Comments


Formulario de suscripción

3132151693

©2020 por Fundamentos de circuitos digitales 2020-1. Creada con Wix.com

bottom of page