Видео в конце...
Приветствую! Мы продолжаем заниматься цифровой обработкой сигналов (ЦОС) и речь в этот раз пойдет о том, как генерируются гармонические колебания. В прошлых выпусках мы затронули большое количество широко используемых технологий с использованием радиосигналов. В этих технологиях без гармонических колебаний совершенно никак не обойтись. В сигналах различного рода модуляции без умножения на гармонику несущей частоты мы не получим радиосигнал, а также без обратного процесса демодуляции добраться до полезной информации в сигналах будет очень сложно. Генерация синусоидальных колебаний это очень важная часть процесса обработки сигналов.
Синус в мире цифр
Если в аналоговой схемотехнике для получения синуса используется колебательный контур из катушки и конденсатора, то в цифровой схемотехнике ситуация совершенно иная. Там где правят цифры проблема генерации сигналов решается либо табличным способом, либо на помощь призывают царицу всех наук - математику.
Сперва разберемся с, так называемым, табличным способом. Пожалуй, самым первым знакомством с табличным способом вычислений было заучивание таблицы умножения.
Мы заложили в свою память все возможные результаты операций умножения с числами до десяти. Позиционная система счисления и чрезвычайно наглядный способ умножения в столбик расширяют наши способности умножения до чисел больших разрядностей. Самое главное тут то, что благодаря результатам, уже содержащимся в памяти мы производим умножения чрезвычайно быстро.
Еще один не менее исторический пример это появление трехмерных шутеров от первого лица на настольных компьютерах. Как известно, уже к тому времени прорисовка трехмерной сцены в компьютере не представляла никаких сложностей с точки зрения теории. Основная проблема в том, что в играх на слабых настольных компьютерах необходимо формировать десяток другой кадров в секунду и это при большом количестве пикселей в каждом кадре.
Достижением в самой популярной на начало 90-х годов игре Doom была модификация известных алгоритмов отрисовки сцен специально для слабых компьютеров, коими были тогда абсолютное большинство настольных систем. Не последнюю роль в этих алгоритмах сыграли и табличные вычисления. Вот ими сейчас и займемся. Задача будет гораздо более простая.
Решение задачи
Необходимо сформировать последовательность чисел, описывающих гармоническую функцию синус и косинус. Также необходимо предусмотреть возможность задания частоты гармоник. В помощь нам поступает разработанный ранее интегратор.
Если говорить языком программистов, то роль интегратора в формировании адреса ячейки памяти, в которой хранится записанная ранее необходимая функция. В нашем случае в памяти хранится один период синусоиды в виде дискретных значений через равные промежутки времени.
При выставлении на вход интегратора константы, как мы уже знаем, на выходе интегратора начинается равномерный рост выходной величины. При достижении максимального значения, определяемого разрядностью аккумулятора, рост величины начинается вновь с начала отсчета. Величина константы на входе определяет скорость роста выходного значения интегратора.
Конструкция имеет общеупотребительное название - генератор управляемый напряжением (ГУН) или управляемый генератор (УГ)
Теперь рассмотрим эту конструкцию с точки зрения математики. Функция синус принимает аргумент фазу. Фаза, в свою очередь, это произведение константы на частоту гармонического сигнала и на время. Частота пусть будет постоянной, а вот время растет. Это вызывает рост фазы колебания. Таблица синусов выполняет роль функции синус входного аргумента.
Где там частота сигнала?
Как уже ранее говорилось, таблица хранит дискретные значения гармонической функции. Они отправляются на выход генератора в зависимости от состояния аргумента - фазы. Наиболее важным для понимания является связь между генерируемой частотой колебания и кодом частоты Х, который поступает на вход интегратора. В подсчете нужного кода частоты участвует желаемая частота (fd), разрядность аккумулятора (N) и тактовая частота системы (fCLK).
При желаемой частоте синусоиды 5 MHz, известных параметрах интегратора и кварцевого источника тактов несложно подсчитать какой код частоты необходимо подать на вход интегратора.
Параметры качества синуса
Параметры всей конструкции влияют на качество воспроизведения синуса. Минимальный шаг частоты устройства также определяется тактовой частотой и разрядностью аккумулятора. Очевидно, что при необходимости повысить точность выставления частоты можно увеличить разрядность накапливаемого в регистре числа.
Что касается фазы колебания, так тут тоже есть зависимость, только от разрядности шины адреса у памяти - таблицы. В данном примере разрядности шины и регистра совпадающие, однако, в общем случае это может быть не так. Минимальный шаг фазы гармоники определяется делением полного периода на количество дискретных значений в периоде.
Необходимо добавить, что хранить большое количество чисел в устройствах довольно затруднительно. Инженеры всегда в поисках баланса между точностью воспроизведения и объемом необходимой памяти. Дискретность фазы это прямой путь к, так называемым, фазовым шумам. Разностям между желаемой фазой и той дискретной, которую может предложить память.
Еще на качество воспроизведения большое влияние оказывает разрядность хранимых отсчетов функций. Чем ниже разрядность чисел, тем больше может быть разница дискретного значения с неокругленным. Эта разница порождает, так называемый, шум квантования.
Сколько ресурсов все это потребляет?
Грамотное описание массива для хранения чисел ведет к задействованию очень эффективного ресурса ПЛИС, специально созданного для таких задач. Речь о блочной памяти.
Посмотрим, насколько эффективно эта память способна разместить в себе множество значений гармонической функции. Так как в проектах цифровой обработки сигналов зачастую требуются ортогональные гармоники, то разместим две таблицы по 4096 отсчетов в каждой. Таблицу можно использовать одну и ту же, разница между синусом и косинусом всего в четверть периода.
Как показывает среда разработки, логики для двух сумматоров и регистра требуется совсем немного. Основную тяжесть на себя берет блочная память. Эти две таблицы забирают четверть всей памяти.
Блочная память расположена в отдельных столбцах полупроводникового кристалла.
Четверть всех ресурсов памяти это хорошо или плохо? Используемая ПЛИС довольно низкобюджетная и при этом еще остается немало ресурсов для других задач. А что если нам будут нужны несколько генераторов? Дела будут обстоять немного хуже.
Выводы
Самый большой недостаток такой конструкции в том, что она требовательна к памяти. При попытке повысить точность воспроизведения гармоники путем расширения памяти до 16 тысяч дискретных значений очевидно, что это съест все имеющиеся ресурсы памяти.
В следующий раз поговорим о том, как математика решает проблему хранения массива отсчетов.
Поддержите статью лайком если понравилось и подпишитесь чтобы ничего не пропускать.
Также не обойдите вниманием канал на YouTube. Подписки и лайки будут приятным ответом от аудитории.