Поэтому до этого я работал только с простыми 8-битными микроконтроллерами Atmel и понял, что на моей схеме платы разработки он имеет только кристалл 12 МГц, но MCU работает на частоте до 100 МГц. (Я думаю, что по умолчанию установлено значение 80 МГц. Я сделал это только один раз для забавы. Это просто простая строка в коде.)
Как оно это делает? Почему, например, Atmega328 работает на скорости используемого кристалла?
Ответы:
Это не имеет никакого отношения к ядру, являющемуся процессором ARM; это о том, как работает схема синхронизации:
Во многих системах, таких как микроконтроллеры, радиочастотные микросхемы, звуковые микросхемы ... необходимо генерировать более быстрые тактовые импульсы, которые в точности кратны некоторым опорным тактовым сигналам (например, внешнему кристаллу).
Вы делаете это, имея управляемый напряжением генератор (VCO), который вы можете регулировать по частоте, увеличивая или уменьшая управляющее напряжение.
Теперь, просто установив любое управляющее напряжение, вы можете заставить его колебаться с частотой примерно в правильной «точке», но не с точным кратным входной частоты. В частности, ГУН могут быть немного дремучими, так что частота также будет постоянно «блуждать» повсюду. Вам нужно управлять этим генератором, сравнивая его с опорным генератором.
Способ сделать это - использовать фазовую петлю . Идея проста:
Выше приведен цикл управления, привязанный к фазе - отсюда и название.
Для «богатых» микроконтроллеров, которые имеют много периферийных устройств и, следовательно, выигрывают от наличия нескольких тактов внутри, обычно используется как минимум 1 ФАПЧ. ATMega328 немного странен в этом отношении: это относительно энергоемкий, относительно периферийный микроконтроллер, который до сих пор не имеет PLL.
источник
Некоторые устройства имеют ФАПЧ, которые могут умножить частоту кристалла на более высокие частоты. ATMega328 не имеет PLL, он использует кристалл напрямую.
источник