Temporización activada por flanco cronometrado (retraso por contaminación)

Estoy leyendo un libro sobre arquitectura de computadoras y dice que, en dispositivos activados por borde con reloj, el retraso de contaminación generalmente es distinto de cero, y que se supone que el retraso de contaminación para los registros es mayor que su tiempo de espera, "lo que le da la propiedad importante de que sus entradas y salidas se pueden leer y escribir simultáneamente (es decir, mediante dispositivos similares que comparten la misma entrada de reloj)".

Pero no entendí muy bien esta afirmación. Hasta donde yo sé (soy muy nuevo en este tema), el retraso de la contaminación es un tiempo mínimo, medido después del borde del reloj activo, durante el cual la salida sigue siendo válida después de que la entrada ha cambiado (medido después del borde del reloj activo), y el tiempo de espera es un requisito de tiempo mínimo medido desde el borde del reloj activo, durante el cual los datos de entrada deben mantenerse estables. ¿Por qué el retraso de contaminación del registro es mayor que el tiempo de espera, y cómo exactamente este hecho permite que se lea y escriba simultáneamente? ¿Alguien podría dar una explicación más detallada?

Actualizar: Entiendo básicamente la importancia de tener un retraso de contaminación mayor que el tiempo de espera en un flip-flop activado por borde en la situación en la que hay dos flip-flops encadenados (es decir, la salida del primero sirve como entrada para el segundo ). Cuando el reloj sube, la entrada al primer flip-flop se muestrea y se propaga al segundo flip-flop. Luego, después de un período de reloj, cuando el reloj vuelve a subir, el segundo flip-flop muestrea su entrada. Pero la entrada del segundo flip-flop debe permanecer en el mismo valor durante al menos un tiempo de espera después de que suba el reloj, si queremos que se almacene correctamente. Por lo tanto, el primer flip-flop debe garantizar que su salida (que es la entrada del segundo flip-flop) no cambiará durante al menos un tiempo de espera. Es decir,

¿Es esto correcto? La parte que no entiendo es por qué este hecho le da a los registros "la importante propiedad de que sus entradas y salidas se pueden leer y escribir simultáneamente (es decir, mediante dispositivos similares que comparten la misma entrada de reloj)".

Respuestas (3)

De mi libro de texto, Diseño digital y arquitectura informática , Harris y Harris, pág. 88

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Una nota importante

Cuando intenta encontrar el retraso de propagación de un circuito combinacional con múltiples elementos, debe agregar el retraso de propagación a través de la ruta crítica .

Sin embargo, cuando intenta encontrar el retraso de contaminación de un circuito combinacional con múltiples elementos, debe agregar el retraso de contaminación a través del camino más corto .

Eso es probablemente obvio para ti.

En realidad, me parece que te refieres al retraso de la contaminación. Usted dijo que el retraso de la contaminación es la cantidad de tiempo medido después de que cambia una entrada y que la salida sigue siendo válida. Si te refieres a la salida anterior , entonces sí, porque eso significa lo mismo que hasta que la salida comienza a cambiar al nuevo valor.

Suma

Acerca de su pregunta sobre cómo trata esto con la lectura y escritura de un registro. Esto me confundió por un tiempo, pero creo que tiene mucho sentido para mí ahora.

Entonces, lo que dijo sobre el retraso de la contaminación y el tiempo de espera es correcto. Este problema se aplica cuando los flip-flops están conectados en cadena. Y si lo piensas, también solo se aplica cuando quieres leer y escribir al mismo tiempo.

Imagina un circuito con solo 2 chanclas. No necesariamente tiene que ser un registro, solo que el primer flip-flop es el elemento de almacenamiento en el que se escribe , y el segundo flip-flop es el elemento de almacenamiento que lee el primero. Si solo necesitaras leer y escribir en diferentes ciclos de reloj, entonces nada de este retraso importaría, porque la lectura siempre ocurriría en un ciclo de reloj diferente cuando la salida del primero fuera estable y no pudiera cambiar ya que la escritura sí puede. t ocurren en el mismo ciclo de reloj.

Sin embargo, si desea escribir un nuevo valor en el primer flip-flop, así como leer correctamente el valor anterior en el segundo en el mismo ciclo de reloj, entonces esa es la situación exacta que describió, donde si la contaminación retrasa el primer era menor que el tiempo de espera del segundo, entonces escribir en el primero contaminaría la lectura del segundo. Tiene perfecto sentido. La lectura debe ocurrir con éxito antes de que la escritura comience a cambiar lo que se lee, o el valor se pierde.

Esta impresión de su libro me fue útil. Sí, por retraso de contaminación quiero decir que es el tiempo durante el cual se garantiza que la salida anterior seguirá siendo válida antes de que comience a cambiar debido al cambio en la entrada. Lo que no entiendo del todo es por qué el retraso de la contaminación del registro es mayor que el tiempo de espera. El libro que estoy leyendo lo explica diciendo que otorga "la propiedad importante de que sus entradas y salidas se pueden leer y escribir simultáneamente", pero esta explicación me parece un poco vaga.
Sí, tu actualización es correcta por cierto. Si el retraso de la contaminación fue menor que el tiempo de espera, entonces se cambiaría la entrada del segundo flip-flop durante el tiempo de espera cuando necesita estar estable para tomar muestras correctamente.
@anónimo actualicé mi respuesta a su pregunta sobre lectura y escritura.
Me gustó el libro que mencionas, es muy bueno; Voy a hacer uso de ella. También recomiendo el libro que estoy estudiando por mi cuenta, "Estructuras de computación" (Ward y Halstead), pero algunas partes son difíciles de leer.

Nunca antes había escuchado el término "retraso por contaminación", pero parece que está hablando de los requisitos de tiempo de espera de entrada.

Los dispositivos de almacenamiento activados por borde tienen una ventana de tiempo relativa al borde del reloj durante la cual la entrada debe mantenerse estable para capturar su valor de manera confiable (y evitar problemas de metaestabilidad). El inicio de esta ventana se denomina "tiempo de configuración de entrada" y el final de la ventana se denomina "tiempo de espera de entrada". El tiempo de retención de entrada suele ser cero e incluso puede ser negativo.

La salida de dicho dispositivo tiene una ventana de tiempo durante la cual cambiará si el nuevo valor es diferente del valor anterior. Por lo general, hay un tiempo mínimo de reloj a salida, también llamado "tiempo de espera de salida", que siempre es un valor positivo pequeño. También hay un tiempo máximo de propagación de reloj a salida, después del cual se garantiza que la salida tendrá el nuevo valor.

Su pregunta se relaciona con la relación entre el tiempo de espera de salida y el tiempo de espera de entrada. Siempre que el primero sea más grande que el segundo, las cadenas de dispositivos idénticos (p. ej., flip-flops en un registro de desplazamiento) se pueden conectar directamente entre sí, de salida a entrada, sin preocuparse por un comportamiento inesperado.

Mi interpretación es que el "retraso de la contaminación" se refiere efectivamente a la cantidad de tiempo después de que cambia la entrada de un circuito estable durante el cual se garantiza que la salida no cambiará; esencialmente "retraso de propagación mínimo" o "tiempo de espera de salida", aunque el término "contaminación" [que no había escuchado previamente en este contexto] es quizás mejor que "tiempo de propagación mínimo", ya que "propagación" implica que un "correcto " el valor se propaga de una manera que la "contaminación" no lo hace.
@supercat: El libro que estoy estudiando también dice esto: "Los retrasos de contaminación se denominan ocasionalmente retrasos mínimos de propagación, lo cual es engañoso. La propagación y la contaminación generalmente ocurren en diferentes momentos, siendo la contaminación anterior".
@anónimo: ¿Cuál es el mecanismo físico que subyace a la "contaminación" que no está relacionado con el cambio de entradas (retraso mínimo de propagación)?
@DaveTweed: No estoy seguro de haber entendido tu pregunta. Soy nuevo en este tema, pero, que yo sepa, la contaminación siempre está relacionada con el cambio de las entradas.
@anónimo: Entonces, ¿cómo es que eso no es un retraso de propagación, específicamente un "retraso de propagación mínimo"? En otras palabras, ¿en qué se diferencia exactamente el retraso de la contaminación del retraso de la propagación, que es lo que afirma la fuente que está citando? No veo por qué necesitamos un nuevo término para este concepto.
@DaveTweed: No sé por qué los autores no querían usar el término "retraso mínimo de propagación", que, como afirman, se usa ocasionalmente. Este tema es nuevo para mí, así que no puedo juzgar con certeza. Tal vez sea solo para evitar confusiones con el uso del término "retraso de propagación" en el mismo libro. La distinción hecha por los autores es que el retraso de contaminación es el tiempo mínimo antes de que la salida comience a cambiar (después del cual ya no se garantiza que sea válido) y el retraso de propagación es el tiempo máximo para que la salida alcance el valor final. (y se garantiza que es válido).
@DaveTweed: ciertamente he visto que se usa el término "retraso de propagación mínimo", pero también puedo ver un argumento sólido para usar un término diferente: si una señal de entrada tarda 3 ns en aumentar de Vil a Vih, el tiempo durante el cual el se garantiza que la salida no cambie debe medirse desde el inicio de ese intervalo de 3 ns, mientras que el tiempo durante el cual no se garantiza que la salida sea válida debe medirse desde el final de ese intervalo. Si la palabra "entrada" se usara siempre en la frase "tiempo de espera de entrada", entonces tal vez "tiempo de espera de salida" sería un término mejor, pero...
... dado que el tiempo de espera de entrada a menudo se denomina simplemente "tiempo de espera", el término "tiempo de espera de salida" generaría más ambigüedad que un término que fuera totalmente diferente; "retraso por contaminación" parece razonable.
@supercat: Supongo que veo algunos de los matices que estás insinuando, pero no veo la utilidad práctica de ello. Como diseñador lógico, me preocupo principalmente por los tiempos de inicio y finalización cuando se garantiza que la salida de una puerta es válida ; Realmente no me importan las sutilezas sobre por qué o cómo dejó de ser válida. El cálculo de esos tiempos para una cadena de lógica se basa completamente en los retrasos de propagación mínimos y máximos.
@DaveTweed: la cantidad de tiempo entre el momento en que la entrada de un circuito se vuelve inválida y el momento en que su salida hará lo mismo, y el tiempo entre el momento en que la entrada de un circuito se vuelve válida y su salida hará lo mismo, ambos pueden llamarse "tiempo de propagación", y en muchas realizaciones prácticas de circuitos se verán afectadas por los mismos factores físicos, pero conceptualmente son cantidades independientes. Imagine, por ejemplo, un chip ROM asíncrono con un circuito de tiempo en cada entrada para decir si ha estado alto en los últimos 50-75 ns, un circuito similar para decir si ha estado bajo y...
[elimine ese ejemplo; intentaré agregar un ejemplo a mi artículo cuando no tenga el temporizador de edición de 5 minutos].
@DaveTweed: Después de una mayor consideración, creo que el deseo del autor de dividir los términos se relaciona con el hecho de que, en general, el mínimo y el máximo agregados de una cantidad determinada deben ser la suma de un grupo de mínimos y la suma de un grupo de máximos de las mismas cantidades , pero el tiempo hasta que la salida puede volverse inválida a menudo involucrará diferentes elementos del circuito desde el tiempo hasta que la salida sea válida. Además, algunos elementos del circuito pueden tener un comportamiento "analógico" de modo que, por ejemplo, una salida será válida 50 ns después de que la entrada alcance 1/3 de riel o 25 ns después de que alcance 2/3 de riel...
...lo que ocurra último. También podría especificar que no se volverá inválido hasta al menos 15 ns después de que la entrada haya pasado el punto del medio carril. Si uno conociera la pendiente de la onda de entrada, podría expresar las cosas en términos de retraso de propagación mínimo y máximo, pero una especificación de entrada real podría entrar en muchos más detalles que solo esos dos números.
¿Te has fijado en mi respuesta? ¿Cómo parametrizaría la temporización del circuito descrito allí? ¿El tiempo para que el acarreo se propague a través de los flops se consideraría "retraso de propagación" para el circuito como un todo? Sospecho que "propagación mínima y máxima" es probablemente una terminología buena y adecuada para un sistema en el que todo es completamente combinatorio, excepto los latches que comparten un reloj común, pero algunos circuitos del mundo real (especialmente en el ámbito de baja potencia) no lo hacen tener el lujo de un reloj cuya velocidad domina todo lo demás.

Creo que el término "retraso por contaminación" se usa para referirse a la duración mínima posible entre el momento en que las entradas dejan de mantener sus antiguos niveles de entrada válidos y el momento más temprano en que las salidas pueden dejar de mantener sus antiguos niveles de salida válidos. El término "retraso de propagación mínimo" se usa a menudo para este propósito, pero tal uso implica que el término "retraso de propagación" en realidad mide dos cosas:

  • La cantidad de tiempo entre el momento en que una entrada deja de ser una representación válida del nivel anterior y el momento en que se permite que la salida sea un nivel válido.

  • La cantidad de tiempo entre el momento en que una entrada asume un nivel lógico válido estable y el tiempo en el que se requiere que la salida asuma un nivel lógico estable.

Si se supone que una entrada dejará de ser un mínimo válido y se convertirá en un máximo válido simultáneamente, o viceversa, la referencia inicial para estos dos tiempos será la misma. En algunos casos, sin embargo, pueden ser diferentes. Además, el término "retardo de propagación" generalmente implica que se está propagando algo útil, pero en algunos casos un estímulo de entrada puede causar que una salida que era válida y que debería permanecer en su estado actual, se vuelva momentáneamente inválida antes de volver al estado. había sostenido anteriormente.

Imagine, por ejemplo, un circuito que se supone que tiene una salida "alta" cuando un contador de ondulación de ondulación de 16 bits tiene un valor de 32767 a 65534, inclusive. Idealmente, el circuito comenzaría a emitir un "alto" precisamente a la llegada del pulso 32.767 (suponiendo que el contador comenzara en cero) y bajaría a la llegada del pulso 65.535. Sin embargo, en ausencia de algunos circuitos adicionales, el circuito muy bien puede bajar brevemente con la llegada del pulso 32,768 (cuando debería quedarse alto) y subir brevemente con la llegada del pulso 65,536 (cuando debería quedarse solo). bajo). Dependiendo de lo que esté haciendo la salida de "comparación", el hecho de que se vuelva inválida brevemente en esos pulsos puede o no ser un problema, pero parecería un poco incómodo pensar en su comportamiento en términos de "

Arreglé un error tipográfico en tu ejemplo. Y la terminología no es "incómoda" en absoluto: eso es exactamente lo que siempre ha significado el retraso de propagación mínimo y máximo. Lo único que es incómodo aquí es tu ejemplo patológico y altamente artificial. Usando esencialmente la misma cantidad de lógica, puede hacer que la salida esté completamente libre de fallas, con un retraso de propagación consistentemente pequeño.
@DaveTweed: En ese ejemplo en particular, cambiar la lógica para evitar la falla no sería difícil, pero en otros casos lo sería. Muchos dispositivos del mundo real tienen todo tipo de comportamientos de tiempo extraños y, a veces, es necesario interactuar con tales cosas. Si uno tiene el lujo de sincronizar entradas y salidas a un reloj común, es fácil hacer salidas libres de fallas, pero a veces uno necesita que los circuitos sean completamente estáticos, excepto cuando sucede algo "interesante", y uno no sabe qué tipo de " "interesante" sucederá primero.
@DaveTweed: Considere un sensor de entrada múltiple que tiene una entrada estroboscópica, una salida "lista" y algunas salidas de datos. Las salidas de datos no se especifican entre un momento 5 ns después de que se afirma la luz estroboscópica y un momento 2 ns antes de que "listo" se active (lo que puede no suceder hasta 1 ms después de que se afirma la luz estroboscópica). ¿Consideraría que el retraso de propagación mínimo/máximo entre la luz estroboscópica y los datos es de 5ns y 1ms, o consideraría que los 5ns y 1ms representan cosas diferentes?
En tal escenario, ni siquiera me preocuparía por el retraso de luz estroboscópica a listo. Todo lo que me importa es el tiempo de configuración (2 ns) entre que los datos son válidos y están listos para afirmarse. La gran demora variable de luz estroboscópica a listo puede tener ramificaciones a nivel del sistema, pero ese no es uno de los problemas de tiempo para el diseño de lógica de bajo nivel.
@DaveTweed: Uno podría usar la señal de listo como referencia de tiempo, pero si lo que uno necesita para su aplicación fuera, por ejemplo, tomar 1000 lecturas por segundo y hacer algo con ellas, uno podría ignorar la señal de listo y simplemente emitir 1,000 luces estroboscópicas por segundo, agarrando cada lectura al mismo tiempo que una luz estroboscópica muestra la siguiente. Si uno quiere 1000 muestras/s sin importar qué tan rápido pueda muestrear el dispositivo, tal enfoque puede ser más fácil que coordinar con la señal "listo".