¿Cómo funciona una MCU ARM más rápido que el cristal externo?

12

Entonces, antes de esto, solo trabajaba con MCU Atmel simples de 8 bits y me di cuenta de que en los esquemas de mi placa de desarrollo solo tenía un cristal de 12Mhz, sin embargo, la MCU funciona a hasta 100MHz. (Creo que el valor predeterminado es 80MHz. Solo lo hice más alto una vez por diversión. Es solo una línea simple en el código).

¿Como hace eso? ¿Por qué un Atmega328, por ejemplo, funciona a la velocidad de cristal utilizada?

usuario3033693
fuente
55
1) mHz significa mili Hertz, por lo que 1/1000 de Hertz, use MHz (M mayúscula) cuando se refiere a Mega Hertz. 2) ¿Qué MCU de 8 bits? 3) ¿Qué placa de desarrollo? 4) El ATMega 328 no tiene que funcionar a la velocidad del cristal, lea la sección de sincronización en la hoja de datos para ver qué es posible. 5) Algunos circuitos integrados tienen un PLL que puede usarse para multiplicar la frecuencia del reloj externo.
Bimpelrekkie
1
@Bimpelrekkie: La mayoría de ese comentario es la respuesta. ¿Te gustaría dar una respuesta?
JRE
El divisor VCO para comparar con 12 MHz termina multiplicando f. Eso es lo que hace un sintetizador de frecuencia PLL.
Tony Stewart Sunnyskyguy EE75
@Bimpelrekkie parece que alguien ya me lo arregló. Ya mencioné Atmel y atmega328. pero no importa ya que es un ejemplo. afaik atmega328p no tiene una PPL? Tenía mucha curiosidad sobre cómo puedes simplemente multiplicarlo. Afortunadamente, Marcus Muller ya lo explicó muy bien.
user3033693
Es probable que el procesador en la computadora en la que está leyendo esto esté usando un reloj de referencia de 100Mhz o más lento, pero el núcleo se ejecuta en ghz.
old_timer

Respuestas:

28

Esto no tiene nada que ver con que el núcleo sea un procesador ARM; se trata de cómo funciona el circuito de reloj:

En muchos sistemas como microcontroladores, chips RF, chips de audio, ... necesita generar un reloj más rápido que sea un múltiplo exacto de algún reloj de referencia (por ejemplo, un cristal externo).

Para ello, tiene un oscilador controlado por voltaje (VCO) que puede ajustar en frecuencia incorporando o disminuyendo un voltaje de control.

Ahora, simplemente configurando cualquier voltaje de control, puede hacer que oscile a una frecuencia aproximadamente en el "estadio" correcto, pero no a un múltiplo exacto de la frecuencia de entrada. Especialmente, los VCO pueden ser un poco a la deriva, por lo que la frecuencia también "vagará" continuamente por todo el lugar. Necesita controlar ese oscilador comparándolo con el oscilador de referencia.

La forma de hacerlo es empleando un bucle de fase bloqueada . La idea es simple:

  1. Divida la frecuencia que sale del VCO por un factor ; ese es el factor que queremos que el VCO sea más rápido que la referencia. Hacer eso es fácil: puede, por ejemplo, simplemente usar un contador digital que cuente hasta N y solo luego cambie la salida.N
  2. Compare ese reloj con el reloj de referencia en . Si uno es más rápido que el otro, ajuste la frecuencia en consecuencia. Puede hacerlo de manera digital simplemente haciendo XOR en ambos relojes: idealmente, si son idénticos, el resultado es un 0 constante, pero si uno es más rápido que el otro, entonces habrá una cantidad creciente de veces cuando el XOR de ambos relojes es 1; ralentizar o acelerar el VCO en consecuencia.fVCO/Nfref

Lo anterior es un bucle de control, bloqueado en la fase de, de ahí el nombre.

Para los microcontroladores "ricos", que tienen muchos periféricos y, por lo tanto, se benefician de tener múltiples relojes internamente, es habitual tener al menos 1 PLL. El ATMega328 es un poco extraño en ese sentido: es un microcontrolador relativamente rico en periféricos y relativamente hambriento de energía que todavía no tiene un PLL.

Marcus Müller
fuente
1
Gracias :) esto lo explica muy bien! En lugar de burlarte o concentrarte en mis tontos errores, me acabas de decir lo que obviamente estoy preguntando. Algunas cosas son MUY difíciles de poner atención con mi dislexia. Incluso si leo mi publicación 2-3 veces, pierdo muchas marcas o accidentalmente pongo las mayúsculas donde no necesito. Sin mencionar que el inglés no es mi primer idioma.
user3033693
77
¡@AmyGamble, sin embargo, tu inglés es muy bueno! Creo que el primer comentario que recibió debajo de su publicación fue porque muchos ingenieros jóvenes simplemente se olvidan de la capitalización de las unidades, lo que puede volverse muy problemático más adelante :) ¡Espero que nunca se sienta desanimado!
Marcus Müller
9

Algunos dispositivos tienen un PLL en ellos que puede multiplicar la frecuencia de cristal a frecuencias más altas. El ATMega328 no tiene un PLL, usa el cristal directamente.

Solo yo
fuente