Portanto, antes disso, trabalhei apenas com MCUs Atmel simples de 8 bits e percebi nos esquemas da minha placa de desenvolvimento que ele possui apenas um cristal de 12Mhz, mas o MCU opera em até 100MHz. (Eu acho que o padrão é 80MHz. Eu só fiz isso mais alto uma vez por diversão. É apenas uma linha simples no código.)
Como isso acontece? Por que um Atmega328, por exemplo, roda na velocidade de cristal usada?
Respostas:
Isso não tem nada a ver com o núcleo ser um processador ARM; é sobre como o circuito de clock funciona:
Em muitos sistemas, como microcontroladores, chips de RF, chips de áudio, ... você precisa gerar um relógio mais rápido, que é um múltiplo exato de algum relógio de referência (por exemplo, um cristal externo).
Você faz isso com um oscilador controlado por tensão (VCO) que pode ajustar em frequência, aumentando ou diminuindo a tensão de controle.
Agora, apenas configurando qualquer tensão de controle, você pode fazê-lo oscilar com uma frequência aproximadamente no "estádio" certo, mas não com um múltiplo exato da frequência de entrada. Especialmente, os VCOs podem ser um pouco vagos, de modo que a frequência também "vagueia" continuamente por todo o lugar. Você precisa controlar esse oscilador comparando-o com o oscilador de referência.
A maneira de fazer isso é empregando um loop de fase bloqueada . A ideia é simples:
O acima é um loop de controle, bloqueado para a fase de - daí o nome.
Para microcontroladores "ricos", que possuem muitos periféricos e, portanto, se beneficiam de ter vários relógios internamente, é comum ter pelo menos 1 PLL. O ATMega328 é um pouco estranho nesse aspecto: é um microcontrolador relativamente rico em energia e relativamente periférico que ainda não possui um PLL.
fonte
Alguns dispositivos possuem um PLL que pode multiplicar a frequência do cristal para frequências mais altas. O ATMega328 não possui um PLL, ele usa o cristal diretamente.
fonte