Como um ARM MCU roda mais rápido que o cristal externo?

12

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?

user3033693
fonte
5
1) mHz significa mili Hertz, então 1/1000 de um Hertz, use MHz (capital M) quando você quer dizer Mega Hertz. 2) o que MCU de 8 bits? 3) Qual placa de desenvolvimento? 4) O ATMega 328 não precisa correr na velocidade do cristal, leia a seção de relógio na folha de dados para ver o que é possível. 5) Alguns ICs possuem um PLL que pode ser usado para multiplicar a frequência do relógio externo.
Bimpelrekkie 26/05/19
1
@Bimpelrekkie: A maior parte desse comentário é a resposta. Gostaria de responder?
JRE
O divisor de VCO para comparar com 12 MHz acaba multiplicando f. Isso é o que um sintetizador PLL freq faz.
Tony Stewart Sunnyskyguy EE75
@Bimpelrekkie parece que alguém já o corrigiu para mim. Eu já mencionei Atmel e atmega328. mas não importa, pois é um exemplo. afaik atmega328p não tem um PPL? Fiquei muito curioso sobre como você pode simplesmente multiplicá-lo. felizmente Marcus Muller já explicou isso muito bem.
User3033693
o processador no computador em que você está lendo isso provavelmente usa um relógio de referência de 100Mhz ou mais devagar, mas o núcleo roda em ghz.
Old_timer 26/05/19

Respostas:

28

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:

  1. N
  2. fVCO/Nfref

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.

Marcus Müller
fonte
1
Obrigado :) isso explica muito bem! Em vez de zombar ou se concentrar nos meus erros bobos, você acabou de me dizer o que obviamente estou perguntando. Algumas coisas são MUITO difíceis para eu prestar atenção na minha dislexia. Mesmo que eu leia minhas postagens 2 a 3 vezes, sinto falta de muitas marcas ou coloco a capitalização acidentalmente onde não preciso. Sem mencionar que o inglês não é minha primeira língua.
User3033693
7
@AmyGamble seu inglês é muito bom, no entanto! Acho que o primeiro comentário que você recebeu em seu post foi porque muitos jovens engenheiros simplesmente esquecem a capitalização de unidades - o que pode se tornar muito problemático mais tarde :) Espero que você nunca se sinta desencorajado!
Marcus Müller
9

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.

Apenas eu
fonte