Comments 18
Только вот вряд ли можно назвать третий вариант генератора «цифровым»
Для PLL все равно нужен опорный генератор, так что это лишь усложненный частный случай. А здесь описаны принципы генерации синусоидального сигнала вообще.
А где генерация синусоиды через решение дифференциального (разностного) уравнения на контроллере, не требующая никаких пзу?
Это по сути и есть прямой цифровой синтез, только вместо таблицы используется непосредственно вычисленные значения. Там есть про это пара строчек
Хм. Я бы сказал, что между решением разностного уравнения и использованием таблицы для последующей аппроксимации — существенная разница. И по точности, и по вычислительным затратам, и по требуемой памяти.

Вы пишете:
необходим высокопроизводительный процессор, или модуль для работы с плавающей точкой. Вычисление значений в микроконтроллере может занять продолжительное время

Вы про что конкретно говорите? Про решение разностного уравнения? Или про вычисление синуса, например, разложением в ряд?
Это спорное утверждение, для которого вы не привели весомых аргументов. Решение разностного уравнения, если я правильно помню, — одно умножение на константу (частоту) и одно сложение.
Уравнение будет второго порядка
image

и простейшая разностная схема для него
image

image

Сложность в таком методе в том, что он неустойчив — амплитуда синуса будет уходить.
Я бы предложил решать проблему «сбросом» метода раз в период например.
А если сразу писать в разностных уравнениях, минуя ненужную аппрокимацию второй производной, то получится
image.
Так же, как и у вас, — умножение на константу и сложение, только константа другая.
Не совсем хорошо говорить про неустойчивость, правильнее про границу устойчивости. К насколько сильному убеганию приведет реализация с некоторой заданной точностью, да и будет ли это убегание — надо моделировать. Но с убеганием действительно можно бороться, сбрасыванием или другим образом.
В любом случае, эта реализация сильно отличается от табличной. Причем тут высокопроизводительный процессор и продолжительное время — требует пояснений.
Да, конечно. Там должна быть частота дискретного сигнала, радиан/отсчет.
Есть ещё один способ — белый шум + цифровой фильтр. (Для читой синусоиды не очень, а для более широполосных сигналов может быть полезно). Теоретически, таким способом можно создать любой сигнал.
Вы, наверное, имели ввиду, любой гладкий? Да и то, как мне сейчас кажется, не любой сигнал, а любой желаемый спектр. Сомневаюсь, что через образующий фильтр вы сможете жестко фазу задать.
Если использовать БИХ фильтр, то фазу можно задать инициализацией выходного сигнала. Но полной детерминированности конечно не будет.
А как будут регулироваться параметры выходного сигнала? Вы предлагаете отфильтровать это дело полосовым фильтром с высокими характеристиками?
Выходной сигнал управляется коэффициентами фильтра. Например, можно будет плавно менять частоту, или ширину спектра.
Это нереализуемо, если нужно получить сигнал, в котором например будут 10, 20 и 50 гармоники. Ну, то есть сигнал с именно заданными гармониками
Only those users with full accounts are able to leave comments. Log in, please.