36 votos

Por qué necesito un reloj microcontroladores

¿Por qué necesito las instrucciones ser procesados en intervalos de tiempo (es decir, con el uso de un reloj)? ¿No ejecutarán secuencialmente - inmediatamente después de la instrucción anterior haya terminado?

Una analogía de la necesidad de relojes en microcontroladores resultaría particularmente útil.

36voto

jackrabbit Puntos 2990

Un ejemplo ilustrativo o dos pueden ser de ayuda aquí. Echa un vistazo a la hipotética siguiente circuito:

schematic

simular este circuito – Esquema creado mediante CircuitLab

Supongamos para empezar a ambos a y B son altos (1). La salida de el Y por lo tanto es 1, y ya que tanto los insumos para la operación XOR 1, la salida es 0.

La lógica de los elementos no cambian su estado de forma instantánea - hay un pequeño pero significativo retardo de propagación como el cambio en la entrada que se maneja. Supongamos que B pasa a nivel bajo (0). El XOR ve el nuevo estado en su segunda entrada al instante, pero la primera entrada todavía ve el 'rancio' 1 de la puerta and. Como resultado, la salida brevemente va de alta, pero sólo hasta que la señal se propaga a través de la puerta Y, haciendo de las dos entradas para el XOR de baja, y provocando la salida a ir bajo de nuevo.

El fallo no es una parte deseada de la operación del circuito, pero fallos como que va a suceder en cualquier momento hay una diferencia en la velocidad de propagación a través de las diferentes partes del circuito, debido a la cantidad de la lógica, o incluso sólo la longitud de los cables.

Una manera muy fácil de manejar que es poner un edge-triggered chancletas en la salida de su combinatoria lógica, como este:

schematic

simular este circuito

Ahora, todos los problemas que suceden a escondidas del resto del circuito por el chancletas, que sólo las actualizaciones de su estado cuando el reloj va de 0 a 1. Tan largo como el intervalo entre el aumento de reloj de los bordes es lo suficientemente largo para que las señales se propagan por todo el camino a través de la combinatoria lógica de las cadenas, los resultados serán de forma fiable determinista, y glitch.

21voto

Rebel Puntos 128

Siento que muchas de estas respuestas no son exactamente golpear en el meollo de la cuestión. El micro-controlador tiene un reloj simplemente porque se ejecuta (y es impulsado por) secuencial lógica.

En digital, teoría de circuitos, secuencial lógica es un tipo de lógica de circuito cuya salida depende no sólo del valor presente de sus señales de entrada, pero en la secuencia de últimas entradas, la entrada de la historia. Esto está en contraste con la lógica combinacional, cuya salida es una función de sólo el presente entrada. Que es secuencial y lógica del estado (memoria), mientras que la lógica combinacional no. O, en otras palabras, secuencial lógica es la lógica combinacional con la memoria.

Así:

La principal ventaja de la lógica sincrónica es su simplicidad. Las puertas de la lógica que realizar las operaciones sobre los datos requieren de una cantidad finita de tiempo para responder a los cambios en sus entradas. Esto se denomina retardo de propagación. El intervalo entre los impulsos de reloj debe ser lo suficientemente largo para que todas las puertas de la lógica tienen tiempo para responder a los cambios y sus resultados "liquidar" a estable la lógica de los valores, antes de la próxima reloj de pulso se produce. Siempre y cuando esta condición se cumple (haciendo caso omiso de algunos otros detalles) el circuito está garantizado para ser estable y confiable. Esto determina la máxima velocidad de funcionamiento de un circuito síncrono.

16voto

Erica Puntos 106

Respuesta corta: los directivos quieren un simple, fácil de probar, PRUEBA de función antes de comprometerse a millones de personas (o más) de dólares a un diseño. Las herramientas actuales, simplemente no dar asincrónica diseños de esas respuestas.

Las microcomputadoras y los microcontroladores suelen utilizar un esquema de sincronización para asegurar el control de temporización. El proceso de todos los rincones tienen para mantener la sincronización a través de toda la tensión, la temperatura, proceso, etc efectos en la propagación de la señal de velocidad. No hay ninguna corriente de las puertas de la lógica de cambio al instante: cada puerta de los interruptores según el voltaje que se suministra, la unidad con la que se presenta, la carga de las unidades, y el tamaño de los dispositivos que se utilizan para hacerlo, (y, por supuesto, el nodo de proceso (tamaño del dispositivo) está hecho, y cómo de rápido QUE el proceso es en realidad la realización de ESTE paso a través de la fab). Con el fin de llegar a la "instantánea" de la conmutación, usted tendría que usar quantum de la lógica, y que se supone que cuántica dispositivos puede cambiar instantáneamente; (no estoy seguro).

Velocidad de reloj, la lógica hace DEMOSTRANDO que el tiempo a través de todo el procesador, funciona en el voltaje, la temperatura y el procesamiento de las variables. Hay muchas herramientas de software disponibles que ayudan a medir este tiempo, y la neta proceso se llama "el tiempo de cierre". Sincronización puede (y, en mi experiencia, no) tomar en algún lugar entre 1/3 a 1/2 de la energía usada en un microprocesador.

Así que, ¿por qué no asincrónica diseño? Hay pocos, si alguno, el momento de cierre de las herramientas para apoyar a este estilo de diseño. Hay pocos, si alguno, automatizado lugar y la ruta de las herramientas que puede tratar y gestionar un gran asincrónica de diseño. Si nada más, los gerentes NO aprobar algo que no tiene un directo, generado por ordenador, PRUEBA de funcionalidad.

El comentario que asincrónica diseño requiere "una tonelada de" la sincronización de las señales, lo que se requiere un "mucho más transistores", ignora los costos de enrutamiento y de sincronización de un reloj mundial, y el costo de todos los flip-flops que fichar sistema requiere. Asincrónica diseños son (o deberían ser), más pequeño y más rápido que su velocidad de reloj de contrapartes. (Uno simplemente toma el UNO más lento camino de la señal, y la utiliza para alimentar un "listo" de la señal a la lógica anterior).

Asincrónica lógica es más rápido, porque nunca tiene que esperar que un reloj que se había extendido por otro bloque en algún otro lugar. Esto es especialmente cierto en el registro-a-lógica-a-las funciones de registro. Asincrónica lógica no tiene varias "set up" y "hold" los problemas, como sólo el final del disipador de estructuras (registros) tienen esos problemas, frente a un canalizadas de lógica con flip-flops intercalados para el espacio de la lógica retrasos de propagación para fichar límites.

¿Se puede hacer? Ciertamente, incluso en un mil millones de transistores de diseño. Es más difícil? Sí, pero sólo porque demuestra que funciona a través de todo un chip (o sistema), es mucho más complicado. Llegar el momento en el papel es razonablemente directa para cualquier bloque o sub-sistema. Conseguir que el tiempo controlado en un fichero automatizado de lugar y la ruta del sistema, es mucho más difícil, porque la herramienta NO está configurado para manejar el potencial mucho mayor conjunto de restricciones de temporización.

Los microcontroladores también tiene potencialmente un gran conjunto de otros bloques de la interfaz para (relativamente) lento señales externas, sumado a toda la complejidad de un microprocesador. Que hace de temporización un poco más complicado, pero no mucho.

La consecución de una "primera a llegar" "lock-out" de la señal mecanismo es un diseño de circuito de la cuestión, y no se conocen maneras de lidiar con eso. Las condiciones de carrera son un signo de 1). un mal diseño de la práctica; o 2). externos de las señales de entrada en el procesador. Sincronización en realidad introduce una señal-vs-reloj de condición de carrera que se relaciona con el "set-up" y "hold" violaciones.

Yo, personalmente, no entiendo cómo una asincronía en el diseño podía entrar en un establo, o cualquier otra condición de carrera. Que bien podría ser mi limitación, pero a menos que suceda en la introducción de datos en el procesador, NUNCA debe ser posible en un bien diseñado sistema lógico, e incluso entonces, puesto que puede suceder que las señales entrar, diseño de tratar con él.

(Espero que esta ayuda).

Todo lo que dijo, si usted tiene el dinero ...

11voto

Alex Andronov Puntos 178

Microcontroladores necesidad de utilizar un reloj ya que deben ser capaces de responder a los eventos que puedan ocurrir en cualquier momento, incluyendo casi simultáneamente con cualquiera de los otros eventos externos o los eventos generados por los propios controladores, y que a menudo tienen múltiples circuitos que necesitan saber si un evento X precede a otro evento Y. no importa si todos los circuitos de decidir que X precedido Y, o todos los circuitos de decidir que X no preceder Y, pero es esencial que, si ninguno de los circuitos decide que X precedido Y, a continuación, todos deben hacerlo. Desafortunadamente, es difícil asegurar que los circuitos dentro de un acotado de tiempo llegar a una garantía de un consenso en cuanto a si X precede a Y, o, incluso, llegar a un consenso sobre si es o no han llegado a un consenso. Sincrónico lógica puede ayudar enormemente con eso.

La adición de un reloj a un circuito hace que sea posible para garantizar que un subsistema no experimentará ningún condiciones de carrera, a menos que una entrada a los cambios del sistema en una ventana muy pequeña en relación a la del reloj, y también la garantía si la salida de un dispositivo se alimenta a otro, el primer dispositivo de salida no va a cambiar en el segundo dispositivo de la crítica de la ventana, a menos que la entrada para el primer dispositivo de cambios dentro de una aún más pequeña ventana crítica. La adición de otro dispositivo antes de que el primer dispositivo se asegurará de que la entrada para el primer dispositivo no va a cambiar en esa pequeña ventana, a menos que la entrada para el nuevo dispositivo de los cambios dentro de un muy, muy pequeño de la ventana. Desde un punto de vista práctico, a menos que uno está tratando de causar un consenso fracaso, la probabilidad de que una señal de cambio dentro de los que realmente pequeña ventana puede ser reducido a ser menor que la probabilidad de que el dispositivo que sufren algunos otros incontrolable fracaso como un meteoro huelga.

Es ciertamente posible diseño totalmente asincrónico de los sistemas que se ejecutan "tan rápido como sea posible", pero a menos que un sistema es extremadamente simple que será difícil evitar tener un diseño que se tropezó por una condición de carrera. Aunque hay maneras de resolver las condiciones de carrera sin necesidad de relojes, las condiciones de carrera a menudo se puede resolver de forma mucho más rápida y fácilmente mediante el uso de relojes que sería el caso sin ellos. Aunque asincrónica lógica a menudo será capaz de resolver las condiciones de carrera más rápido que la velocidad de reloj de la lógica, las ocasiones en que no puede hacerlo plantean un problema importante, especialmente teniendo en cuenta la dificultad de tener partes de un sistema que llegar a un consenso sobre si es o no han llegado a un consenso. Un sistema que siempre se puede ejecutar un millón de instrucciones por la sección general será más útil que uno que a veces puede funcionar con cuatro millones de instrucciones por segundo, pero potencialmente podría atascarse por milleconds (o más) en un momento dado de condiciones de carrera.

7voto

Lorenzo Donati Puntos 6644

Mcu son sólo uno de los muy complejo ejemplo de un síncronos secuenciales circuito de lógica. La forma más sencilla es probablemente la velocidad de reloj de D-flip-flop D-FF), es decir, un síncrona de 1 bit elemento de la memoria.

Hay elementos de memoria que son asincrónicos, por ejemplo el D-latch, que es (en un sentido) asíncrono, equivalente a la D-FF. Un MCU es nada más que un montón de millones de tales básica de los elementos de memoria (D-FF) pegadas con toneladas de puertas lógicas (estoy simplificando).

Ahora vayamos al punto: ¿por qué Mcu uso de D-FFs en lugar de la D-seguros como elementos de memoria internamente? Es esencial para la fiabilidad y la facilidad de diseño: D-pestillos de reaccionar tan pronto como sus entradas de cambio y sus resultados se actualizan tan rápido como sea posible. Esto permite desagradable interacciones no deseadas entre las diferentes partes de un circuito de lógica (no intencionados de los bucles de retroalimentación y carreras). El diseño de un complejo circuito secuencial asincrónica utilizando bloques de construcción es inherentemente más difícil y propenso a errores. Sincrónico circuitos de evitar esas trampas mediante la restricción de la operación de los bloques de construcción para los instantes de tiempo cuando el reloj bordes detectados. Cuando el borde de llegar un sincrónica circuito de lógica adquiere los datos en sus entradas, pero no actualización de sus salidas sin embargo. Tan pronto como los insumos son adquiridos, las salidas se actualizan. Esto evita el riesgo de que una señal de salida es realimentada a la entrada, el cual no ha sido completamente adquiridos y desordenar las cosas (dijo simplemente).

Esta estrategia de "disociación" de entrada de adquisición de datos de las salidas de actualización permite a los más simples técnicas de diseño, que se traduce en sistemas más complejos para un determinado esfuerzo de diseño.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X