Для требуемой частоты выбираем целочисленный делитель (при этом ГУН на максимум надо выводить). При плавной перестройке меняем в небольших пределах делитель M - он всегда дробный. Вопрос в каком диапазоне вы его можем менять без ресета ФАПЧ и не будет ли там каких артефактов пока остается открытым
Попробовал сегодня такой алгоритм.. Делитель N вычисляется также как и в библиотеке для Si5351A.
Т.е.
divider = pllFreq/freq; // PLL freq, принимаю равным 13200 MHz
if ((divider & 1) != 0) divider--; // Здесь делитель делаю четным. Это делитель N.
pllFreq = divider * freq; // Определяю новую pllFreq. Она меняется в небольших пределах, обусловлено это округлением делителя. При этом делитель всегда целочисленный
Затем в программу ввел инкремент частоты каждый раз на 1 кгц, То есть что-то вроде ГКЧ. При изменении частоты от 30 мгц до 40 мгц на экране осциллографа картинка не стабильна. В начале развертки видно, что частота устанавливается с задержкой. В целом картинка как и при наблюдении сигнала с ГКЧ, но в начале есть какие-то неприятные моменты. Похоже, что захват частоты происходит с задержкой. Печально это, но сдается мне, такой вариант не годится. Так это всего 1 кгц. Скорее всего PLL дергать нельзя. Сейчас попробую менять частоту только N- делителем, не трогая PLL.
Есть хорошая новость и плохая..
Хорошая, это та, что при изменении частоты только делителем N, не трогая PLL, картинка на моем осциллографе также дергается в начале развертки.
Плохая - придется искать причину
. Надо бы конечно, засинхронизировать развертку от стороннего генератора. Самый раз было бы от опорника 80 мгц, но плата уже покрыта лаком и ковырять не хочется.. В процессе изготовления второй вариант, с задающим генератором на небуферированной логике (sgk рекомендовал), продолжу эксперимент на ней.
И еще одна ложка дегтя.. Перестройка по частоте от 30 мгц до 40 мгц, с шагом 10 кгц происходит за 8 сек примерно. То есть расчет частоты и запись в регистры составляет примерно 8 ms. Это много, по сравнению с тем, что было на Si5351A. Надо что-то серьезно менять.
Хотя и возможностей не мало. Первое - PLL можно вообще никогда не менять, только при включении. Знаменатели делителей можно считать и загонять в регистры только при смене диапазона.. Сейчас это происходит при каждом шаге.