Actualización de una celda de memoria / sincronización con un reloj

2

Me pregunto cómo funcionan realmente las computadoras en un nivel de puerta. Puedo ver cómo se puede construir un mecanismo de almacenamiento a partir de puertas lógicas (por ejemplo, SR NOR latch ). Lo que me pregunto: ¿cómo se actualizan los valores en las celdas de memoria si el nuevo valor depende del anterior?

Ejemplo: tengo una celda de almacenamiento de un bit y quiero crear una lógica que invierta el valor en la celda. Fácil - lea el valor antiguo - inviértalo - active la entrada correspondiente a la celda de memoria para establecer el nuevo valor (R o S). Pero eso solo va a desencadenar un bucle de retroalimentación, cambiando el bit lo más rápido posible.

¿Cómo se maneja esta situación en los microprocesadores? Me imagino que tiene algo que ver con la señal del reloj, pero no veo cómo resolverlo, incluso con un reloj externo.

Dicho de otra manera: dado un RS-Flip flop y una línea de señal de reloj, ¿hay un arreglo de puerta que invierta el Flip flop una vez por cada tictac del reloj? Si esto no es realmente solucionable en el nivel de la puerta, ¿cómo se resuelve en microchips reales?

    

1 respuesta

2

Lo que parece que te falta es flip-flops disparados por el borde . Estos se utilizan en varios puntos entre la lógica combinatoria. Básicamente, muestrean la salida de la lógica en un borde del reloj, luego congelan ese valor hasta el siguiente borde del reloj. Mientras tanto, la lógica combinatoria es libre de producir valores intermedios de basura, siempre que se establezca en la siguiente respuesta antes del siguiente borde del reloj.

Esta es una razón por la que la mayoría de los procesadores tienen varios bordes de reloj por instrucción "ciclo".

En su ejemplo de una memoria de 1 bit con su salida realimentada a su entrada a través de un inversor, habría un flip flop disparado por el borde en algún lugar. Esto probablemente se encuentre en la entrada o en la salida de la celda de memoria, a menudo en ambos lugares. Incluso con un solo flip-flip en el bucle, el valor se congela para cada ciclo de reloj. Al final de ese ciclo de reloj, el valor opuesto a ese valor está listo en la entrada del flip-flop. En el siguiente borde del reloj, el flip-flop muestrea su entrada, transfiere ese valor a su salida y congela la salida nuevamente. En este escenario, terminaría con el valor digital activado en cada ciclo de reloj. En efecto, obtendrías una onda cuadrada en la mitad de la frecuencia de reloj.

Con múltiples flip-flops en el bucle, cada flip flop agregaría 1 al valor de división general. Con dos flip-flop, obtendrías la frecuencia de reloj / 3, con tres obtendrías la frecuencia de reloj / 4, etc.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas