¿Por qué es preferible activar el borde en lugar del nivel?

15

Estoy tratando de entender por qué se prefiere la activación de bordes sobre la activación de nivel. En mi libro no se explica claramente. Después de buscar en línea, llegué a saber que la activación del borde es insensible a los fallos, mientras que la activación del nivel es sensible. Qué significa eso?

Tampoco entiendo lo siguiente: "Si el reloj es sensible al nivel, el nuevo \ $ Q_n \ $ puede correr a través de la red lógica y cambiar la salida. Para evitar esto, necesitamos un pulso corto para capturar la salida y mantenerla constante. Pero tal pulso corto no es fácil para crear, por lo tanto, vamos a la activación por flanco. El problema de retroalimentación se resuelve porque no hay tiempo suficiente para que la nueva salida regrese a la entrada dentro de la duración de un solo flanco ascendente "

No entendí por qué la salida no se precipitaría en el nivel de activación y por qué necesitamos un pulso corto para mantener la salida.

En segundo lugar, el problema de retroalimentación, ya que la duración de activación de nivel es larga en comparación con la activación por flanco, en el caso de la primera, la salida volverá a la entrada y seguirá haciendo esto mientras El reloj está activo. ¿Cuál es el problema de retroalimentación?

¿Pero cómo se resolverá en el desencadenamiento de bordes? Si el tiempo para caer o levantarse es muy corto, ¿cómo se podrá propagar la salida a través de todas las puertas? ¿Es como, una vez que se aplica el disparo por flanco, la salida se propagará a través de todas las puertas y las siguientes entradas se considerarán solo en el próximo borde del reloj?

    
pregunta avi

5 respuestas

10

Aunque un borde es un momento bien definido en el tiempo, no es cierto que el nivel de activación tampoco tenga un momento en el tiempo bien definido. Lo hace. Hay un momento bien definido en el tiempo cuando el nivel del reloj cae, se muestrean las entradas al circuito cronometrado y ya no se admiten más cambios en las entradas.

El problema con la activación de nivel es que mientras el nivel de reloj es alto, las entradas cambian las salidas. En los circuitos que tienen retroalimentación (las salidas se conectan de nuevo a las entradas), la activación del nivel causa un caos, porque el nivel es lo suficientemente ancho (medio ciclo de reloj) para que la salida pueda realimentar las entradas dentro del mismo período.

Entonces, en el momento en que se produce un momento bien definido cuando cae el reloj y se supone que cada dispositivo toma instantáneas y mantiene el estado hasta el siguiente nivel, ya se ha producido un caos y los circuitos se encuentran en estados impredecibles. Esto es inaceptable. En circuitos secuenciales, queremos que las salidas producidas en el período de reloj \ $ t \ $ solo se tengan en cuenta para calcular los estados del período de reloj \ $ t + 1 \ $. También queremos la buena propiedad de que podemos reducir la velocidad del reloj, y no tener la ruptura de circuito secuencial. En el nivel de activación, reducir la velocidad del reloj funciona contra nosotros. Cuanto más ralentizamos el reloj, más tiempo permitimos para una retroalimentación sin restricciones.

La primera solución obvia que se sugiere a sí misma para acortar el nivel hasta el punto de que es imposible que se produzca una retroalimentación no deseada (y mantener el nivel de "encendido" corto, incluso si desaceleramos arbitrariamente el período de reloj). Supongamos que pulsamos el reloj de 0 a 1 y volvemos a 0 muy rápidamente, de modo que los dispositivos temporizados aceptan sus entradas, pero las salidas no tienen tiempo suficiente para correr a través del bucle de retroalimentación para cambiar esas entradas. El problema con esto es que los pulsos estrechos no son confiables, y básicamente requieren una respuesta que puede ser varios órdenes de magnitud más rápida que la frecuencia de reloj. Podríamos encontrar que necesitamos un pulso que es de un nanosegundo de ancho, aunque el sistema funcione a solo 1 Mhz. Entonces, tenemos el problema de distribuir pulsos de nanosegundos limpios, agudos y suficientemente altos de nanosegundos en un bus diseñado para 1 Mhz.

El siguiente paso lógico, entonces, es hacer que los dispositivos generen el pulso estrecho para ellos mismos como la derivada temporal del borde del reloj. A medida que el reloj pasa de un nivel a otro, los dispositivos pueden generar internamente un pulso corto que hace que se muestreen las entradas. No tenemos que distribuir ese pulso por el bus del reloj.

Y así, básicamente, puedes considerar que todo está desencadenado por niveles al final. El disparo por flanco es un truco para permitir que los dispositivos creen un disparador de nivel muy fino que es más rápido que todos los bucles de retroalimentación externos, permitiendo a los dispositivos aceptar entradas rápidamente y luego cerrar la entrada a tiempo antes de que sus salidas cambiantes cambien los valores de las entradas .

También podemos hacer una analogía entre la señal de "habilitación" (reloj de nivel activado) y una puerta en una embarcación que mantiene la presión del aire. El nivel de activación es como abrir una puerta, permitiendo que el aire escape. Sin embargo, podemos construir un bloqueo de aire que consta de dos (o más) puertas, que no están abiertas simultáneamente. Esto es lo que sucede si dividimos el reloj de nivel en varias fases.

El ejemplo más simple de esto es el flip-flop maestro-esclavo . Esto consiste en dos chancletas D disparadas en función del nivel en cascada. Pero la señal del reloj se invierte, por lo que la entrada de uno se habilita mientras que la otra se desactiva y viceversa. Esto es como una puerta de bloqueo de aire. En general, el flip flop nunca está abierto, de modo que la señal puede pasar libremente. Si recibimos retroalimentación de la salida del flip-flop a la entrada, no hay problema porque se cruza a una fase de reloj diferente. El resultado final es que el flip-flop maestro-esclavo muestra un comportamiento desencadenado por el borde. Es útil estudiar el flip-flop maestro-esclavo porque tiene algo que decir acerca de la relación entre el nivel y el desencadenamiento de bordes.

    
respondido por el Kaz
2

Para entender por qué es preferible activar el borde, imagine un sumador de 8 bits conectado a un registro, agregando constantemente 1 al valor del registro, con un botón pulsador conectado al pin de habilitación del registro.

Si el pin de habilitación del registro es sensible al nivel, entonces el contenido del registro se incrementará constantemente durante la duración de la presión del botón. El siguiente estado del registro no será determinista para una pulsación determinada del botón. Esto se debe a que el sumador puede incrementar el registro muchas veces antes de que pueda quitar el dedo; en otras palabras, los comentarios abandonan el registro y lo devuelven al sumador demasiado rápido.

Si el pin de activación fuera sensible al borde, el contenido del registro se incrementaría exactamente una vez cada vez que se presionara el botón, sin importar cuánto tiempo se presionó el botón (suponiendo que la entrada se haya rebotado correctamente). Sería imposible que la salida del registro vuelva al sumador a tiempo por cualquier comportamiento no determinista.

    
respondido por el ajs410
1

Como han dicho otros, el borde es un momento muy específico en el tiempo. Todos sabemos que los circuitos digitales pueden atravesar fallas donde la salida de una compuerta es incorrecta, ya que solo algunas de sus entradas han llegado a ella, las otras señales están en camino y están tomando más tiempo debido a la ruta más larga (la electricidad viaja bastante rápido pero aún así 3x10 ^ 8 m / s toma un poco de tiempo para rodear los cables). Si tenemos un nivel de unidad activada, su salida se efectuará por fallas. Al hacer que las cosas se disparen, tenemos una ventana muy estrecha en el tiempo donde "pueden pasar", en otras palabras, el circuito solo cambiará su estado (los valores de los diferentes cables dentro del circuito, incluida la salida) en ciertos instantes bien definidos en hora. Tenga en cuenta la frase "instantes en el tiempo" hacia abajo, ya que esto es lo que define el comportamiento de un circuito secuencial formado por chanclas.

En este punto, no conocerá algo llamado "análisis de tiempo", pero lo explicaré un poco. Cuando hacemos circuitos digitales, queremos simularlos para ver cómo se comportarán y si este comportamiento se ajusta a lo que queremos que haga. En el análisis de temporización, verificamos si las señales son capaces de llegar a un cierto punto del circuito dentro del tiempo requerido. Si están demasiado retrasados el circuito no funcionará correctamente. Al utilizar bloques de circuitos activados por flanco en lugar de niveles activados, el análisis de tiempo se vuelve muy fácil, ya que sabemos exactamente cuándo pueden ocurrir cosas en el circuito. Esto significa que el diseño del circuito se vuelve más fácil también. Recuerde que, en el mundo real, se encontrará con cierres de nivel muy raramente.

    
respondido por el quantum231
1

La activación de flancos es buena para los relojes, ya que permite que el valor de salida mediante un pestillo en respuesta a un borde de reloj (por ejemplo, ascendente) se use en el cálculo de lo que debería hacer en el siguiente borde de reloj ascendente. Si se está construyendo un circuito secuencial, como un contador que usa una cantidad de pestillos activados por flanco, se pueden mezclar arbitrariamente componentes lógicos rápidos y lentos, siempre que, para cada ruta posible, el tiempo de propagación menos la cantidad en que el reloj del pestillo receptor se atrase se garantiza que el remitente es mayor que el tiempo de espera del receptor, y se garantiza que el tiempo de ciclo más la cantidad en la que el reloj del pestillo receptor se retrasa a los remitentes, menos el tiempo de propagación, es mayor que el tiempo de configuración del receptor.

Por el contrario, la construcción de un circuito para contar los pulsos en una sola entrada sin utilizar pestillos activados por el borde requeriría ciertas garantías sobre las velocidades relativas de algunas partes del circuito. Un enfoque común solía ser convertir una señal de reloj entrante (ClkIn) en un par de señales de reloj no superpuestas (Phi1 y Phi2). Phi1 es cierto cuando ClkIn es alto y ha sido alto durante un tiempo mínimo garantizado . Phi2 es alta cuando ClkIn es bajo y ha estado bajo durante un tiempo mínimo garantizado . Cuando ClkIn cambia de bajo a alto, Phi2 bajará antes de Phi1 alto; Igualmente cuando cambia de alto a bajo. Uno podría construir un contador al tener dos conjuntos de pestillos (que llamaré Count1 y Count2). Cuando Phi1 es alto, Count1 encierra Count2. Cuando Phi2 es alto, Count2 encierra (Count1 + 1). Si Phi1 y Phi2 estuvieran a la altura de ambos a la vez, o con muy poco tiempo entre ellos, el valor del contador sería indeterminado, pero siempre que se mantenga la separación adecuada, el contador funcionará muy bien. Los sistemas de dos fases con frecuencia tienen una cantidad bastante generosa de separación diseñada; siempre que todo sea lo suficientemente rápido, dicha separación puede evitar problemas con la inclinación del reloj.

Internamente, muchos cierres activados por flanco se pueden considerar como un par de cierres maestro / esclavo que están cableados para que el maestro enganche la entrada cuando el reloj esté en el estado anterior al borde, y el esclavo enganche el maestro cuando El reloj está en el estado después. Las señales que alimentan los dos pestillos deben tener una relación adecuada, pero si se producen en la misma vecindad que los pestillos, no es necesario que la cantidad de separación sea suficiente como la necesaria si las dos fases del reloj fueran enviado a un área más amplia.

Tenga en cuenta que si bien la activación de bordes es buena para los relojes, hay otros propósitos para los que es menos buena. A veces es ventajoso para eventos periódicos en interrupciones siempre que no haya dos eventos que compartan la misma señal activada por el borde. El disparo por flanco es malo para las interrupciones compartidas, y en algunos casos puede ser problemático incluso con las no compartidas, a menos que haya una manera de sondear el estado del cable de interrupción. La activación de nivel también puede ser ventajosa en los casos en que una señal de luz estroboscópica estará activa en el mismo ciclo que cierta información que debería estar enganchada, pero donde la información tiene una ruta de cálculo más larga que la luz estroboscópica. Si la información es algo así como una dirección para un chip de memoria asíncrono, tenerla disponible en algún momento durante un ciclo de reloj puede ser mejor que esperar hasta el comienzo del próximo ciclo de reloj.

    
respondido por el supercat
0

Aunque otras respuestas han cubierto casi todo lo que hay que decir sobre tu pregunta, para que quede más claro, he agregado algunos diagramas y una breve explicación.

Imagina que quieres diseñar un circuito que incluya algún tipo de retroalimentación. Diga A = A.B (básicamente una puerta AND con una retroalimentación). Si lo implementas utilizando un simple pestillo sensible al nivel que almacena el valor de A, tu circuito se verá así.

Estopuedecrearunproblema.Cuandoelrelojestáalto,elpestillosevuelvetransparenteylapuertaANDcalculaelnuevovalordeAandB.Peroelvalorsedevuelveallatch,ycomoellatchsiguesiendotransparente(CLKsiguesiendoalto),secalculaelnuevovalordeAANDB.EstoesloquecomúnmenteseconocecomounaCondicióndecarrera,quecreafallas(altasybajasinesperadasenlasalida)quemencionó.

UnasoluciónaesteproblemaseríamantenerelpulsoCLKmuycorto,losuficientementecortocomoparaqueunavezquesegenerelasalidadelacompuertaAND,elpestillosedesactiveantesdequeelvalorseasignenuevamentealaentrada.Debeserintuitivoverporquéestopuedeserdifícildelograr.Dependeríadelavelocidaddeconmutacióndelpestillo(finalmente,uncerrojotambiénestáhechodepuertascombinadas),lalongituddelcableycientosdeotrosparámetros.

Unasegundaopciónmásfactibleesusarunelementosensiblealborde(unflipflopenestecaso),queesbásicamenteunpardepestillosconectadosdeunamaneramuyinteligente.

Básicamente, cuando la señal CLK es alta, el latch U1 es transparente, lo que lleva el valor lógico en la entrada A a la salida del latch U1, cuando la señal CLK es LOW, el latch U2 se vuelve transparente, y se calcula un nuevo valor de A AND B . Pero este valor se propagará a la entrada de la compuerta AND solo cuando el pestillo U1 se vuelva transparente (CLK es ALTO) y, en consecuencia, el latch U1 se vuelve transparente (CLK es BAJO). Lo que básicamente es equivalente a decir que el circuito ahora es sensible al borde (el valor de salida cambia solo en el borde negativo del reloj).

Esto evita el problema de Condición de carrera explicado anteriormente, y es por eso que se prefiere la activación de nivel sobre la activación de borde.

    
respondido por el ironstein

Lea otras preguntas en las etiquetas