PROYECTO DE ELECTRÓNICA DIGITAL: BIMESTRE II Heredia Andrango Ariel Sebastián. 24 de marzo de 2021 1. Introducción El desarrollo de la electrónica digital ha revolucionado el ámbito tecnológico a gran escala, dando como resultado un sinnúmero de dispositivos que emplean circuitos digitales con aplicaciones novedosas y útiles para la sociedad. Con el presente proyecto se pretende demostrar el uso de circuitos integrados, memorias y otros elementos mediante la implementación de un circuito digital para un reloj que carga datos desde 2. memorias permanentes, opera y guarda la información de la hora en una memoria temporal en intervalos de tiempo especı́ficos, ası́ como también se mide su tiempo de funcionamiento en esos mismo intervalos Se presentan los aspectos teóricos considerados para el diseño del circuito, ası́ como la funcionalidad del mismo dentro del software de simulación electrónica Proteus. Planteamiento Se tiene almacenado la hora de inicio de un reloj en una memoria ROM, al arrancar la simulación, un reloj toma ese dato y empieza a trabajar. Cada 20 segundos que el circuito est´a funcionando, guarda su valor en flip flops. Cuando se pare el reloj con un botón, en displays diferentes deben mostrar el tiempo aproximado que ha podido trabajar el reloj. Es decir que se podr´a observar el tiempo transcurrido en múltiplos de 20. Diseñe todo el circuito digital que demuestre este evento. 3. Objetivos 3.1. Objetivo general Desarrollar un circuito de reloj que cargue datos, funcione y guarde la información en flip-flops, y que un cronómetro mida su tiempo de funcionamiento en un intervalo fijo. 3.1.1. Objetivos Especı́ficos Diseñar de manera esquemática circuitos contadores para reloj y cronómetro, y circuitos para almacenamiento temporal con flip-flops. Definir un archivo binario con la información de hora de inicio con el software Max Loader. Implementar memorias ROM para la extraer la información del binario y enviarla al reloj para el funcionamiento del resto del circuito. Generar un sistema de almacenamiento de la hora de reloj y cronometrado del circuito para un intervalo de 20 segundos. 4. Diseño del circuito digital Para realizar el circuito se emplearon los siguientes componentes: Display de 7 segmentos ánodo común color verde. Compuertas NOT TTL 7404 Compuertas AND TTL 7411 1 Compuertas NAND TTL 74132 Decodificadores BCD para display 7 segmentos Memorias EEPROM Contadores de décadas sı́ncronos 74160 Flip-Flops tipo D Resistores de 500 Ω Switch Diodos Generadores de pulsos 4.1. Consideraciones previas Se requiere que al arrancar la simulación, el reloj cargue la información de la hora de inicio almacenada en memoria permanente. En este caso, al emplear una sola memoria ROM implica extraer la información de posiciones especı́ficas y luego cargarla a cada contador que posee el reloj; sin embargo, esto derivarı́a en un retraso relativo que generarı́a más carga computacional en el software. Se considera entonces el uso de varias memorias para que la carga sea instantánea. Los contadores del reloj digital tienen una entrada LOAD que se activa con BAJO, para que el contador cargue el valor inicial deseado y empiece a trabajar, la activación de la entrada debe realizarse una sola vez y por un lapso corto . En este informe se presentan las abreviaciones US: unidades de segundo, DS: decenas de segundo, UM: unidades de minuto, DM: decenas minuto, UH: unidades de hora, DH, decenas de hora. 4.2. Carga de datos desde EEPROM Las EEPROM seleccionadas para el circuito son de 16 kB, de la serie NMOS 27128. Para esta primera fase se implementaron 6 memorias, cada una carga respectivamente las decenas y unidades tanto de horas, como de minutos y segundos. La idea de usar varias memorias es para que se obtengan los valores de las diferentes posiciones de forma automática, y se envı́en directamente al reloj sin ninguna operación manual por parte del usuario. La información de la hora de inicio se guarda en un archivo .bin, el cual se genera desde el software Max Loader. Como se requieren de 6 dı́gitos se utilizan 6 posiciones de memoria, de la 0 a la 5. En ese orden se configuró: unidad de segundo, decena de segundo, unidad de minuto, decena de minuto, unidad de hora y decena de hora. Figura 1: Generación del archivo binario con la hora de inicio En base a esto, las entradas (de direccionamiento) de cada memoria se conectan a Vcc o GND respectivamente en función de la posición donde se encuentra la información. Los pines de encendido y lectura de las memoria se activan en bajo. 2 Figura 2: Disposición de las memorias EEPROM Con los pines de encendido y lectura activados, la memoria arroja la información en la posición configurada y la manda a la siguiente fase, la del reloj. 4.3. Reloj de 24 horas La fase del reloj consiste en implementar un conjunto de contadores sı́ncronos en secuencia que realicen la cuenta de segundos, minutos y horas. Los 74160 son contadores de décadas (0-9). Ası́: Contadores de segundos Consta de dos contadores en secuencia, uno para US y otro para DS. La cuenta es a 60 (0-59), esto se logra activando el pin Reset del contador de decenas cuando llega a 6. En el de unidades no se hace nada porque después de nueve retorna a cero. El número 6 en binario es 110, por lo que basta conectar las bits Q2 y Q1 a una NAND y ésta al reset (que se activa en bajo). Figura 3: Conteo de segundos Contadores de minutos Dos contadores en secuencia que dependen de los contadores de segundos, el contador UM se activa cuando se cuentan 59 segundos. Esto se logra conectando el pin RCO de US (contador de unidades de segundo) y los bits Q2 y Q0 del contador DS en una compuerta AND. Esta compuerta se conecta a las entradas de habilitación del contador de UM. Al igual que en los segundos, se configuran los contadores para una cuenta de 60 minutos (0-59). 3 Figura 4: Conteo de minutos y segundos Contadores de horas Dos contadores de UH y DH que dependen de los dos anteriores, se sigue el mismo procedimiento que para los minutos. La configuración adicional es que se cuentan 24 horas (0-23), conectando Q1 del contador de DH y Q2 del de UH a una NAND y ésta a los pines reset de los dos contadores. Figura 5: Conteo de horas, minutos y segundos Pulsos de reloj Como son contadores sı́ncronos, se utiliza una misma señal de pulsos a las entradas CLK de cada uno. Carga de datos de EEPROM El reloj no comenzará desde cero, sino partir de la hora almacenada y extraı́da de las memorias ROM, como el pin LOAD de cada contador se activa en bajo, se dispara un solo flanco de subida (de 0 a 1) para que la carga se efectúe una pequeña fracción de tiempo, ya que de lo contrario se mantendrı́a ese valor cargado y el reloj no podrı́a continuar. Una vez tomado el dato que se encuentra ya en las entradas D0, D1, D2 y D3 de cada contador, el reloj comienza a trabajar. 4 Figura 6: Reloj completo Como se verfica en la figura 6, se colocaron decodificadores BCD 7447 junto con displays 7 segmentos de ánodo común, para poder visualizar la hora en decimal. 4.4. Contador de 20 segundos La siguiente parte consiste en un contador de 20 segundos, este sirve para la etapa de almacenamiento de hora. Este contador tiene la misma señal de pulsos de la sección de reloj, cuando se llega a 20 segundos (0-19) o dos decenas el contador debe resetearse. Esto se logra conectando una NOT desde Q1 (del contador de decenas) hacia el RESET de las decenas. Una vez que llega a 20, la salida de aquella compuerta NOT, sirve para ser enviada a la siguiente fase. Figura 7: Contador de 20 segundos 5 4.5. Almacenamiento de hora en Flip-Flops Consiste de un arreglo de flip-flops tipo-D de 6 direcciones de 4 bits cada una, que recibe la información de la hora que está en el reloj. Dado que se requiere almacenar la hora cada vez que transcurren 20 segundos, las entradas CLK deben recibir los flancos de subida desde el contador de 20 segundos de la parte anterior. Como la señal que resetea el contador es 0, se utiliza una compuerta NOT para de ahı́ conectar a las CLK de todos los flip-flops. Figura 8: Arreglo de flip-flops para almacenamiento de hora 4.6. Cronómetro de funcionamiento Se busca medir el tiempo de ejecución del circuito. El diseño es similar al reloj de 24 horas, con las siguientes diferenciaciones: Se incrementa cada 20 segundos No tiene datos iniciales que cargar, empieza desde 0. Utiliza la misma señal de pulsos del reloj de 24 horas. El display para las unidades de segundo (US) se mantiene siempre en cero porque són múltiplos de 20, esto se logra conectando las entradas de datos del 7447 a un mismo diodo cuyo ánodo se conecta a tierra, para evitar algún tipo de cortocircuito. El display de las decenas de segundo (DS) debe mostrar múltiplos de 2 (2 decenas = 20). Por caracterı́sticas de los números pares en binario, su bit menos significativo es 0. Por lo que este bit se desconecta del contador y se lo reconecta a tierra con un diodo de protección. Las unidades y decenas de minutos se conservan. Se quita el limitante de conteo a 24 horas, para llegar hasta 99 horas posibles. 6 Figura 9: Cronómetro de funcionamiento 5. Simulación Para la simulación se tiene el siguiente ejemplo: En un archivo binario, en las posiciones más bajas de memoria, se encuentra almacenada la hora 23:49:16, la cual se carga al reloj. Figura 10: Carga de archivo desde las memorias hacia al reloj El reloj toma el dato y empieza a operar, una vez que han pasado 20 segundos, se guarda la hora en el arreglo de flip-flops, y el cronómetro marca los primeros 20 segundos en su marcador. 7 Figura 11: Hora de reloj Figura 12: Almacenamiento de hora 8 Figura 13: Cronómetro de funcionamiento Al parar el reloj en tiempo arbitrario (por ejemplo en 23:50:02) deteniendo los pulsos, los flip-flops almacenan la hora que haya estado a los 0:20, 0:40, 1:00, 1:20, etc; y el cronómetro indica el tiempo aproximado de funcionamiento del reloj en múltiplos de 20. en el ejemplo el cronómetro indica un tiempo aproximado de 40 segundos, y en ese tiempo se guardó la hora que tenı́a el reloj también en ese instante. Figura 14: Simulación general con detenimiento del reloj En la hora arbitraria 23:50:02, en realidad han pasado 46 segundos, pero como el cronómetro está configurado para contar cada 20 segundos, muestra una aproximación a 40 segundos. La hora guardada fue 23:49:55. 9 6. Análisis de resultados El circuito cumple con lo planteado; sin embargo, existe un retraso de un segundo debido al tiempo de carga de los datos en el reloj, en el primer segundo se hace la transición de 0:00:00 a 23:49:16 pero el tanto el contador de 20s como el cronómetro ya se han inicializado. Esto hace que en los primeros 20 segundos se guarde la hora con esa diferencia de 1 segundo, de modo que no se guarda 23:49:36 sino 23:49:35 (el cronómetro también marca 0:20 en ese tiempo). A partir de ahı́ sı́ se guarda la hora de 20 en 20. 7. Conclusiones La utilización de varias memorias ayuda a una lectura simultánea de los datos, reduciendo la carga computacional que equivaldrı́a utilizar una única memoria y cargar dato por dato con el uso del simulador. Las compuertas NAND permiten limitar el conteo hasta determinado número cuyos bits son igual a 1 (a las entradas de las compuertas), debido a que la salidas activan en bajo el reset de los contadores. Este principio fue de utilidad para el diseño del reloj y del cronómetro. Para que los contadores carguen un dato inicial y empiecen a operar, debe activarse el pin LOAD, pero debe activarse por única vez. Esto hace que requiera un solo pulso para cargar el dato en un instante determinado, o un único flanco para que cargarlo en un tiempo 0. Los flip-flops tipo D son los que permiten almacenar información de manera temporal, y junto con los registros de desplazamiento son el principio de las memorias RAM. Para este caso no se emplearon estos registros de desplazamiento, cada flip-flop almacena cada bit cuando se le envı́a un flanco de subida. 8. Recomendaciones Se recomienda en la parte práctica no utilizar tantas memorias con valores altos de almacenamiento si el circuito no lo requiere, puede terminar en costes innecesarios. Se recomienda analizar bien las entradas y salidas de los integrados, verificando si se activan con alto o bajo, y si su valor de verdad es cero o uno. Se recomienda practicar el grabado de memorias ROM fı́sicas para adquirir destrezas previo a futuros armados de circuitos más complejos. Se recomienda colocar diodos, para algunas entradas o salidas inncesarias, para darles un solo sentido de corriente y evitar algún cortocircuito. 10