Hola, ¿qué tal? [inaudible] Vamos a comenzar con otro mundo dentro de los circuitos digitales, vamos a empezar a hablar de circuitos secuenciales. Todo lo que hemos visto hasta hoy son circuitos combinacionales, hoy comenzamos con circuitos secuenciales y vamos a partir con lo básico "flip-flops", registros y contadores. Partamos antes del "flip-flops" incluso, con el "latch". Ya vimos cómo funcionan algunos circuitos combinacionales, que son los circuitos que hemos visto hasta ahora en el curso. Son circuitos cuya salida depende únicamente de las entradas. No tiene relación con entradas pasadas, entonces, no guarda memoria. Eso es lo que hemos visto hasta ahora. A partir de ahora, vamos a aprender circuitos secuenciales. Estos circuitos tienen algún tipo de memoria, tienen algo que les permite guardar un estado y ese estado es lo que, finalmente, después se refleja en la salida. Estos circuitos incluyen, como decía, elementos que tienen alguna memoria para definir ese estado y ese estado es modificado por las entradas del circuito. Vamos a partir con lo más sencillo, la idea de memoria es algo muy sencillo y lo vamos a ver con un ejemplo que está justo aquí. Aquí tenemos dos inversores en cascada, "A" y "B". Si ponemos un 0 aquí, va a aparecer un 1 aquí y si hay un 1 aquí, va a haber un 0 aquí y ese 0 se va a realimentar y va a generar un 1, etcétera. Entonces, ahí tenemos un circuito que tiene memoria porque está guardando un 0 en "A" y un 1 en "B". Si nosotros, por el contrario, ponemos un 1 en "A" y un 0 en "B", se va a realimentar y va a mantener su estado. Un circuito similar está aquí a la derecha, este tiene 2 entradas, una que dice "Set" y otra que dice "Reset". Esas entradas significan que uno puede cambiar el dato guardado, por ejemplo, si yo pongo aquí un "Set", aquí va a haber un 1, aquí va haber un 0, necesariamente. Si aquí hay un 0, aquí hay un 1 y este 1 se va a realimentar. Se realimenta y va a mantener un 0 aquí, independientemente de si este "Set" volvió a 0. Lo mismo con el "Reset". El "Reset" me permite poner un 1 aquí; si pongo un 1 aquí, aparece un 0 acá, o sea, el valor que estoy guardando es un 0. Entonces, este es un circuito que tiene memoria pero que además me permite establecer con el "Set" o borrar con el "Reset" el valor de la memoria. Generalmente en estos circuitos la salida se designa con la letra "Q". Partamos, entonces, con un "latch" básico. "Latch" es la traducción al inglés de cerrojo o algo que cierra y que mantiene su estado, y se usa esta palabra para referirnos a un "latch" electrónico. Es un elemento con memoria capaz de guardar un estado de un bit y una implementación con compuertas "NOR". Esta que está aquí, se conoce como un "latch" básico. Tiene 2 entradas que pueden cambiar el estado del "latch", el "Set" que es el que establece el valor y el "Reset" que es el que borra el valor. Entonces, podemos mirar esta tabla de verdad y esta tabla de verdad es especial, porque vamos a ver algo interesante aquí. Si "Set" y "Reset" son 0, significa que no quiero establecer ni borrar el valor del "latch". La salida va a ser 0 o 1 dependiendo del valor anterior. En este caso, Q_a y Q_b van a ser complementarias, por ejemplo, si Q_a es un 1, Q_b es un 0. Si Q_a es un 0, Q_b es un 1, y si "Set" y "Reset" están en 0, Q_a y Q_b mantienen su último valor. Entonces, este es el efecto memoria porque guarda el valor anterior. En cambio, si "Set" es 0 y "Reset" es 1, me borra Q_a que es la salida principal y me establece Q_b que es Q_a negado. En fondo, Q_b es Q_a negado. Luego, si "Set" es 1 y "Reset" es 0, Q_a es 1 y Q_b que es Q_a negado es 0. Finalmente, si ambos son 1, pasa una condición extraña en que ambos se borran, es una condición un poco extraña del "latch". Muy bien, en este diagrama de tiempo vamos a asumir que los NOR no tienen ningún tipo de retardo de propagación. Entonces, vamos avanzando "Reset", "Set". Entonces, cuando aplicamos "Reset", va a ocurrir que Q_a es 0 y Q_b es 1. Al aplicar "Set", ya estamos estableciendo Q_a en 1, Q_b en 0 y así sucesivamente, cada vez que hay un "Reset" o un "Set". ¿Qué sucede aquí? ¿Qué sucede en este caso cuando ambos son 1? Si este es 1 y este es 1, ambos quedan en 0. ¿Qué va a pasar aquí? ¿Qué ocurre en t_10? ¿Qué ocurre exactamente cuando ambos se vuelven a 0, si su estado original era 0? ¿Alguna idea de qué puede ocurrir? Pongan "pausa", piénsenlo y vuelvan. Bien, aquí no sabemos qué ocurre realmente porque sabemos que deberían mantener los valores anteriores. Pero supongamos que este fuera un 0; si este fuera un 0 y este es un 0 y todo lo demás es 0, cuando este Q_b es 0, la entrada aquí es un 0. Si la entrada aquí es un 0 y "Reset" es 0, esto es un 1, va a aparecer un 1 aquí. Está bien, ¿pero qué pasa si lo miramos al revés? Si este era 0, va a poner un 0 aquí, la entrada del "Set" es 0, va a aparecer un 1 aquí. Entonces, ¿qué va a ocurrir? No sabemos, esto es simétrico. Podría ser que uno quede en 1 y el otro queda en 0. ¿Cuál va a quedar en 1? ¿Y cuál va a quedar en 0? Probablemente habilitado por ruido o algo. No es obvio que es lo que ocurre. ¿Qué aprendimos hoy? Aprendimos nuestro primer circuito con memoria, que es un "latch" básico y aprendimos que los "latch" nos van a servir para hacer circuitos que tienen estados y que a través de ello podemos tener circuitos cuya salida depende no solo de las entradas, sino también de las entradas y de los estados anteriores. Muchas gracias por ver esta clase.