364 = 91*4
fs = 4*f0
У меня есть опорный генератор, выдающий (с очень хорошей точностью) 20.000 МГц ± 1ppm. Получить от него 364 кГц простым делением не получится, нужно использовать аккумулятор фазы, как в DDS. Но и так не выйдет выдать точное значение, она всё равно будет с какими-то дробными долями (хоть и очень маленькими).
Что приводит к иррациональному соотношению частот квантования "сырого" сигнала и потока для аудиокодека (этому нужно 8, 32 или 48 кГц). Дурацкая проблема, наверняка решается как-то просто - типа, "наплевать на некруглость соотношения и считать, что частота равна строго 364000 Гц". Я не знаю, к каким именно эффектам это приведёт, но качество обработки сигнала от этого вряд ли улучшится.
А почеу бы и не прикинуть, собсно...
Например, для простоты конструкции возьмём 16-битный аккумулятор фазы. То есть углу 2π будет соответвовать число 65535. Опорный 20МГц генератор поделим, например, в восемь раз, будет 2,5МГц: реже тикает - меньше энергопотребление.
Из этих 2.5 МГц нам нужно получить 364 кГц. Для этого сначала посчитаем, какое приращение фазы нужно для этого иметь:
(0.364/2.5) * 65535 = 9541,896
Округляем до ближайшего целого, т.е. 9542
И смотрим, какая частота получится на самом деле (в герцах, для наглядности):
(9542/65535) * 2500000 = 364003,96734569314106965743495842 Гц.
Вот этот длинный страшный хвост (почти четыре лишних герца, о ужас!), наверное, будет нам как-то мешать.
Посмотрим, во что он превратится после снижения частоты до 8 кГц.
Для упрощения алгоритма сделаем так: удвоим частоту, а потом одним махом поделим на 91, как предполагалось ранее. Получается всего 8000,0871944108382652671963727125 Гц.
То есть разница меньше одной десятой доли герца. То есть, если я правильно понимаю смысл этой ошибки, она всего лишь добавит к выходной последовательности какую-то очень низкочастотную шумовую составляющую, но т.к. реальный алгоритм будет содержать полосовой фильтр (отрезающий слишком низкие и слишком высокие частоты перед подачей сигнала на кодек), то на выход эта помеха не попадёт вообще.
Проверю экспериментально уже совсем скоро.