Знакомство с цифровым интерфейсом сигма-дельта-модуляторов микроконтроллеров STM32

20 апреля

системы безопасностипотребительская электроникаинтернет вещейST Microelectronicsстатьяпассивные ЭК и электромеханикаМикроконтроллерSTM32МЭМСАЦП/ЦАПМикрофон

В некоторых моделях микроконтроллеров STM32 производства STMicroelectronics имеется цифровой фильтр для сигма-дельта-модуляторов (DFSDM), полезный для многих приложений, использующих аналого-цифровое преобразование. В статье описаны разные области применения модуля DFSDM, преимущества его использования и примеры конфигураций, а также описание работы с его симулятором.

Модуль DFSDM (Digital Filter for Sigma-Delta Modulators, цифровой фильтр для сигма-дельта-модуляторов) – это встроенное периферийное устройство, имеющееся в ряде микроконтроллеров STM32 (таблица 1). Этот модуль представляет особый интерес для приложений, в которых выполняется обработка аналоговых сигналов.

Хотя сам модуль DFSDM – чисто цифровое периферийное устройство, он предназначен для поддержки широкого спектра внешних аналоговых интерфейсов. Такое отделение аналогового интерфейса (сигма-дельта-модулятора) от микроконтроллера предоставляет разработчику полную свободу в выборе аналоговых компонентов, параметры которых полностью соответствовали бы требованиям конкретного приложения, таким как диапазон аналоговых сигналов, уровень шума, частота дискретизации.

Цифровые данные, сформированные сигма-дельта-модулятором, обрабатываются модулем DFSDM (производится цифровая фильтрация). Модуль DFSDM имеет достаточно гибкую конфигурацию и позволяет задавать различные параметры выходных данных: разрядность, скорость передачи, частотный диапазон выходного сигнала.

С точки зрения приложения модуль DFSDM в паре со внешним аналоговым интерфейсом ведет себя как обычный АЦП. Более того, в модуле DFSDM имеются дополнительные блоки, типичные для АЦП: аналоговый сторожевой компаратор, детектор предельных значений и схема коррекции смещения.

В данной статье сноска [СИМ.] ссылается на симулятор модуля DFSDM, выполненный в виде файла таблицы Microsoft® Excel®, который можно загрузить с сайта www.st.com. Чтобы найти этот файл, введите в поле поиска на домашней странице сайта ключевое слово «DFSDM_tutorial».

Таблица 1. Изделия, в которых имеется DFSDM

Тип Подмножество Наименование
Микроконтроллеры Вся серия STM32L4, STM32L4+, STM32H7
Вся линейка STM32F412, STM32F413/423
STM32F76xxx STM32F765BG, STM32F765BI, STM32F765IG, STM32F765II, STM32F765NG, STM32F765NI, STM32F765VG, STM32F765VI, STM32F765ZG, STM32F765ZI, STM32F767BG, STM32F767BI, STM32F767IG, STM32F767II, STM32F767NG, STM32F767NI, STM32F767VG, STM32F767VI, STM32F767ZG, STM32F767ZI, STM32F768AI, STM32F769AG, STM32F769AI, STM32F769BG, STM32F769BI, STM32F769IG, STM32F769II, STM32F769NG, STM32F769NI, STM32F769SL
STM32F77xxx STM32F777BI, STM32F777II, STM32F777NI, STM32F777VI, STM32F777ZI, STM32F778AI, STM32F779AI, STM32F779BI, STM32F779II, STM32F779NI

Принципы аналого-цифрового преобразования с использованием модуля DFSDM

Данный документ относится к микроконтроллерам с ARM-ядром.

Основной принцип аналого-цифрового преобразования с использованием модуля DFSDM

Обобщенная блок-схема аналого-цифрового преобразования с использованием модуля DFSDM представлена на рисунке 1.

Рис. 1. Блок-схема аналого-цифрового преобразования с использованием модуля DFSDM

Рис. 1. Блок-схема аналого-цифрового преобразования с использованием модуля DFSDM

Аналоговый сигнал поступает на вход внешнего сигма-дельта-модулятора, который преобразует входной сигнал в цифровой однобитный поток (сигналы DATA и CLK). Однобитный поток представляет собой последовательность логических нулей и единиц, передаваемых с большой скоростью по последовательному каналу: сигнал данных DATA синхронизируется тактовым сигналом CLK. Среднее значение этих логических единиц и нулей, подсчитанное в течение достаточно длительного промежутка времени, пропорционально усредненному значению аналогового сигнала. Длительность периода усреднения определяет точность преобразования входного аналогового сигнала.

Операция усреднения однобитного потока выполняется периферийным модулем DFSDM микроконтроллера STM32. Модуль DFSDM принимает и обрабатывает поток однобитных данных, осуществляя цифровую фильтрацию и усреднение. На выходе модуля формируются отсчеты данных с частотой, меньшей чем частота входного битового потока, но с большей разрядностью. Разрядность выходных значений и частота их формирования определяются настройками цифрового фильтра DFSDM.

Сигма-дельта-модулятор

Для периферийного модуля DFSDM требуется внешний аналоговый интерфейс, осуществляющий аналого-цифровое преобразование сигнала от аналогового источника. В роли аналогового интерфейса в данном случае выступает сигма-дельта-модулятор.

Сигма-дельта-модулятор представляет собой однобитный аналого-цифровой преобразователь, который осуществляет дискретизацию входного аналогового сигнала и преобразует полученные выборки в поток однобитных цифровых данных – последовательность чередующихся нулей и единиц. В общем случае выходной сигнал сигма-дельта-модулятора может быть многоразрядным, однако в этой статье рассматривается только однобитный аналого-цифровой преобразователь (который применяется чаще всего). Усредненное значение этих данных, вычисленное в течение заданного интервала времени, представляет собой среднее значение входного аналогового сигнала в течение того же временного интервала. Сигма-дельта-модуляцию можно рассматривать как разновидность широтно-импульсной модуляции (ШИМ), при которой варьируется как период, так и коэффициент заполнения (при обычной ШИМ изменяется только коэффициент заполнения, тогда как период остается постоянным). Чтобы наглядно увидеть разницу между двумя методами модуляции, сравните рисунки 2 и 3.

Рис. 2. Пример широтно-импульсной модуляции (ШИМ)

Рис. 2. Пример широтно-импульсной модуляции (ШИМ)

Рис. 3. Пример сигма-дельта-модуляции

Рис. 3. Пример сигма-дельта-модуляции

Поток цифровых данных, формируемый сигма-дельта-модулятором, обрабатывается периферийным модулем DFSDM микроконтроллера STM32. Модуль DFSDM осуществляет цифровую фильтрацию, параметры которой должны задаваться в соответствии с требованиями конкретного приложения.

Для целей анализа цифровой поток обычно преобразуется из последовательности двоичных «0» и «1» в последовательность значений «+1» и «-1», чтобы его можно было сопоставить со входным сигналом, из которого удалена постоянная составляющая. Нулевому входному напряжению соответствует коэффициент заполнения, равный 50:50 (при использовании сигма-дельта-модулятора первого порядка).

Цифровой фильтр

Периферийный модуль DFSDM (цифровой фильтр для сигма-дельта-модуляторов) реализует цифровой этап аналого-цифрового преобразования. Как следует из названия модуля, его основная функция — фильтрация потока «сырых» цифровых данных, поступающих с внешнего сигма-дельта-модулятора. Модуль DFSDM выполняет усреднение входного битового потока, передаваемого с большой скоростью, и формирует значения большей разрядности, которые выдает в параллельном виде и с меньшей частотой. В модуле DFSDM предусмотрены конфигурируемые параметры, позволяющие задавать разрядность и скорость передачи выходных данных в соответствии с требованиями конкретного приложения.

Также модуль DFSDM имеет дополнительный функционал, связанный с процессом аналого-цифрового преобразования:

  • независимые быстрые сторожевые компараторы по каждому каналу с программируемой скоростью и разрядностью, предназначенные для обнаружения входных сигналов, уровень которых выходит за границы минимального или максимального допустимого напряжения;
  • возможность генерации сигнала аварийного события (break), используемого для моментального оповещения других периферийных устройств (таймеры) о таких событиях, как срабатывание аналогового сторожевого компаратора или обнаружение короткого замыкания;
  • детекторы короткого замыкания по каждому каналу, предназначенные для очень быстрого обнаружения замыканий на землю или шину питания: когда входное напряжение достигает любого из предельных значений аналогового диапазона и остается постоянным в течение заданного времени (детекторы работают независимо от основного процесса преобразования);
  • детекторы предельных значений для фиксации минимального и максимального значений входного сигнала.

Принцип сигма-дельта-модуляции (внешний аналоговый интерфейс – работа и симуляция)

Принцип сигма-дельта-модуляции

Структурная схема сигма-дельта-модулятора приведена на рисунке 4.

Рис. 4. Структурная схема сигма-дельта-модулятора

Рис. 4. Структурная схема сигма-дельта-модулятора

Для примера на рисунке 5 показаны сигналы в разных точках сигма-дельта-модулятора.

Рис. 5. Сигналы в сигма-дельта-модуляторе

Рис. 5. Сигналы в сигма-дельта-модуляторе

Примечание. Метки с [1] по [5], имеющиеся на рисунке, используются далее в тексте.

В приведенном ниже описании процесса сигма-дельта-модуляции имеются отсылки к меткам, имеющимся на рисунках 4 и 5:

Аналоговый входной сигнал [1] поступает на вычитатель, где из него вычитается выходной сигнал однобитного ЦАП обратной связи (формирующего напряжение +Vref или -Vref), после чего разностный сигнал [2] поступает в интегратор. Интегратор накапливает разность между аналоговым входным сигналом [1] и выходным сигналом однобитного ЦАП обратной связи (+Vref или -Vref). Сигнал с выхода интегратора [3] поступает на компаратор, который сравнивает этот сигнал с нулевым опорным напряжением. Выходное состояние компаратора [4] по таковому сигналу фиксируется D-защелкой [5] для передачи на выход модулятора через дискретные временные интервалы. Выход D-защелки представляет собой цифровой однобитный выход сигма-дельта-модулятора. Этот выходной сигнал также поступает на однобитный ЦАП обратной связи, который может формировать только два напряжения (как правило, в качестве ЦАП используется аналоговый коммутатор, переключающий выход между источниками опорных напряжений +Vref и –Vref). Скорость передачи выходного потока однобитных данных определяется тактовой частотой модулятора.

Результат работы сигма-дельта-модулятора представляет собой поток цифровых данных (кривая черного цвета на рисунке 5), который синхронизируется тактовым сигналом модулятора. Среднее значение этих данных (вычисленное в цифровой области) соответствует входному аналоговому напряжению. Это среднее значение вычисляется как отношение числа единичных битов к числу нулевых битов в выходном потоке сигма-дельта-модулятора на протяжении заданного количества периодов тактового сигнала.

Этот поток цифровых данных поступает на вход периферийного модуля DFSDM микроконтроллера STM32 для фильтрации. Значения конфигурируемых параметров модуля DFSDM необходимо задавать в соответствии с требованиями приложения.

Формирование спектра шума

Выходной сигнал сигма-дельта-модулятора необходимо пропустить через фильтр, чтобы удалить из него высокочастотные составляющие (шум квантования) и оставить только полезный сигнал. Чтобы правильно спроектировать такой фильтр, необходимо иметь некоторое представление о характере спектра выходного сигнала сигма-дельта-модулятора. Сразу отметим, что спектр сигма-дельта-модулированного сигнала отличается от спектра широтно-импульсного модулированного сигнала.

Сигнал с широтно-импульсной модуляцией характеризуется фиксированным периодом и изменяемым коэффициентом заполнения. Из-за постоянного периода (частоты) модуляции ШИМ-сигнала в его спектре присутствуют пики, соответствующие частоте модуляции и ее гармоникам. Удалить эти частотные составляющие с помощью аналоговых методов фильтрации (RC- или LC-фильтра) достаточно сложно.

При сигма-дельта-модуляции изменяется как коэффициент заполнения, так и частота сигнала. Вследствие этого энергия в спектре сигма-дельта-модулированного сигнала распределяется более равномерно и не сосредотачивается в окрестностях отдельных частотных составляющих, как в случае ШИМ (поскольку нет фиксированной частоты модуляции). Кроме того, в области более высоких частот сигма-дельта-модулированных сигналов обычно сосредоточено больше энергии, чем в аналогичной области ШИМ-сигналов (из-за более высоких частот модуляции). Шум сигма-дельта-модулированного сигнала можно легко подавить с помощью аналоговых методов фильтрации (RC- или LC-фильтра).

Типичные спектры ШИМ- и сигма-дельта-модулированного сигналов представлены на рисунке 6 (эти спектры соответствуют сигналам, изображенным на рисунках 2 и 3 соответственно). Из рисунка 6 видно, что при широтно-импульсной модуляции спектральные составляющие с меньшими частотами имеют более высокие уровни. Поэтому для обработки такого сигнала требуется фильтр более высокого порядка, чтобы в достаточной степени подавить первый спектральный пик, соответствующий частоте модуляции. В спектре сигма-дельта-модулированного сигнала в области низких частот сосредоточено меньшее количество энергии, поэтому можно использовать более простой фильтр. Характеристики фильтра должны соответствовать порядку сигма-дельта-модулятора. Так, в цифровых микрофонах обычно применяются сигма-дельта-модуляторы четвертого порядка, которые отличаются низким уровнем шума квантования в рабочей полосе частот и, в то же время, имеют очень высокий шум квантования за пределами этой полосы. Соответственно, порядок фильтра должен быть таким, чтобы он смог обеспечить эффективное подавление этого шума без ущерба для полезного сигнала.

Рис. 6. Спектры ШИМ-сигнала и сигма-дельта-модулированного сигнала

Рис. 6. Спектры ШИМ-сигнала и сигма-дельта-модулированного сигнала

Присущее методу сигма-дельта-модуляции более равномерное распределение шума квантования в области рабочих частот с одновременным его «вытеснением» в область высших частот носит название «формирование спектра шума» (Noise Shaping). Эта особенность позволяет получать полезные сигналы с меньшим уровнем шумов, несмотря на использование более простых фильтров.

Линейность аналого-цифрового преобразования

Выходной сигнал сигма-дельта-модулятора представляет собой последовательный поток битов. Очевидно, что такой разрядности совершенно недостаточно для практического использования. Чтобы увеличить разрядность выходных данных, производится усреднение этих однобитных значений в течение заданного периода времени. Данные, получаемые в результате усреднения, имеют большую разрядность (обычно 16 бит), но меньшую частоту дискретизации. Операция усреднения (фильтрации) основана на линейной математической операции над цифровыми значениями, поэтому процесс фильтрации не вносит в сигнал дополнительных нелинейных искажений.

В аналого-цифровых преобразователях с параллельным выводом данных обычно используется больше аналоговых компонентов, чем в сигма-дельта-модуляторах. Так, в составе N-разрядного АЦП последовательного приближения имеется резисторная матрица R-2R (или матрица конденсаторов C-2C), состоящая из N резисторов (конденсаторов). Между значениями сопротивлений (емкостей) элементов матрицы должны точно выдерживаться соотношения 1:1 и 1:2. Соответственно, линейность АЦП последовательного приближения зависит от точности резисторов (конденсаторов). На практике абсолютно точные соотношения обеспечить невозможно и именно эта неидеальность и лежит в основе нелинейностей, влияющих на передаточную характеристику.

По вышеупомянутым причинам сигма-дельта АЦП обычно обеспечивает лучшую линейность, чем АЦП других типов. Нелинейность аналого-цифрового преобразования с использованием сигма-дельта-модулятора определяется исключительно конструкцией последнего (рисунок 4). Кроме того, эта нелинейность зависит только от влияния входного напряжения на характеристики аналоговых компонентов (конденсаторов/резисторов в интеграторе и аналоговых ключах, емкость/сопротивление которых зависят от напряжения), а не от соотношения между номиналами компонентов. Такая характеристика как линейность особенно важна при обработке аудиосигналов, поскольку в этом случае любая нелинейность приводит к искажениям сигнала (интегральная нелинейность INL напрямую связана с коэффициентом нелинейных искажений).

Изменяемая разрядность АЦП

Выходная разрядность сигма-дельта-преобразователя не фиксирована (в отличие от, скажем, 12-битного АЦП последовательного приближения). Как уже не раз было сказано, выходной сигнал сигма-дельта-модулятора имеет разрядность 1 бит, которую можно увеличить до необходимого значения, применяя цифровую фильтрацию (усреднение). К недостаткам такого способа увеличения разрядности можно отнести уменьшение скорости вывода данных. Это уменьшение скорости имеет предсказуемый характер, и его следует рассчитывать заранее в соответствии с требованиями конкретного приложения. К примеру, цифровой фильтр можно сконфигурировать таким образом, что он будет выдавать 24-битные значения с частотой 1 кГц или же 16-битные значения с частотой 50 кГц.

Теоретически максимальное значение разрядности может быть сколь угодно большим, однако на практике следует принимать во внимание шумы и ошибки, вносимые компонентами преобразовательного тракта (конструкция сигма-дельта-модулятора, вносимые помехи). Также большую роль играет нестабильность сигнала в течение периода дискретизации – она может отрицательно сказаться на точности измерений, что особенно важно для приложений, которые используют значения очень большой разрядности, формируемыми с очень маленькой скоростью. 

Ошибки смещения и усиления

Усредненное значение битового потока с выхода сигма-дельта-модулятора представляет собой среднюю величину входного аналогового сигнала. Точность вычисления этого среднего значения, лежащего в диапазоне 0…1, будет зависеть от следующих элементов модулятора (рисунок 4):

  • резисторы и конденсаторы интегратора;
  • источники опорного напряжения однобитного ЦАП (+Vref / -Vref);
  • смещение интегратора.

Все эти элементы имеют такие погрешности как отклонение значений конденсаторов/резисторов от номинальных, величина напряжения смещения, разность между абсолютными значениями напряжений +Vref и -Vref.

В идеале выходной битовый поток, содержащий одинаковое количество нулевых и единичных битов, соответствует входному сигналу с нулевым напряжением. Однако из-за указанных выше погрешностей входное аналоговое напряжение, которому соответствует выходной битовый поток с одинаковым количеством нулей и единиц, оказывается отличным от нуля на величину ошибки смещения. Эту ошибку можно компенсировать программным способом или аппаратно (в процессе калибровки).

Коэффициент усиления, представляющий собой отношение между выходным значением и входным напряжением, также зависит от погрешностей компонентов сигма-дельта-модулятора. Разница между теоретически рассчитанным и фактически измеренным коэффициентом представляет собой ошибку усиления. Эту ошибку тоже можно компенсировать путем калибровки (как правило, программной).

Некоторые характеристики компонентов сигма-дельта-модулятора также зависят от температуры, что, в свою очередь, влияет на величину ошибок смещения и усиления. Температурная зависимость параметров резисторов и конденсаторов интегратора влияет только на ошибку усиления. Ошибка смещения менее подвержена влиянию колебаний температуры, поскольку ошибки при формировании напряжений +Vref и -Vref, взаимно компенсируются из-за симметричности этих опорных напряжений.

Меньшая скорость передачи

Для увеличения разрядности выходных значений сигма-дельта-модулятора следует увеличить длину усредняемой битовой последовательности путем увеличения времени усреднения или применения фильтра более высокого порядка. Вот почему сигма-дельта-преобразователи используются главным образом там, где не требуется высокое быстродействие (обычно при работе в диапазоне звуковых и более низких частот). Но в особых случаях, когда требуется исключительная линейность, сигма-дельта преобразователи могут применяться и в приложениях с более высокой скоростью передачи данных.

Для устройств, работающих с квазистатическими сигналами, например, датчиков температуры, скорость передачи данных не критична. В таких случаях часто применяют сигма-дельта-модулятор, который позволяет изменять разрядность выходных данных (большое число разрядов при малых скоростях передачи данных).

Симуляция сигма-дельта-модуляции с использованием [СИМ.]

Для изучения принципов сигма-дельта-модуляции, в [СИМ.] была реализована модель сигма-дельта-модулятора, структурная схема которого показана на рисунке 4. Симулятор формирует временные диаграммы сигналов для всех узлов модулятора, помеченных на рисунке 4. Пользователь может изменять уровень входного сигнала, а также некоторые параметры модулятора, и наблюдать, как сделанные изменения влияют на работу каждого из блоков сигма-дельта-модулятора. Результат работы [СИМ.] для синусоидального входного сигнала показан на рисунке 7.

Рис. 7. Симуляция сигма-дельта-модулятора

Рис. 7. Симуляция сигма-дельта-модулятора

Принципы и реализация цифровой фильтрации

Принцип работы

Цифровой фильтр выполняет фильтрацию (усреднение) потока однобитных данных, формируемого сигма-дельта-модулятором. На выходе фильтра формируются слова данных большей разрядности (обычно 12…24 бита), но выдаваемые с меньшей частотой (так называемое «прореживание»). Работа цифрового фильтра заключается в удалении частотных составляющих, лежащих за пределами полосы частот полезного сигнала (шума квантования, помех и прочего) и уменьшении скорости выдачи данных в соответствии с шириной полосы полезного сигнала.

Структура фильтра оказывает большое влияние на характеристики аналого-цифрового преобразования и представляет собой результат компромисса между требуемыми параметрами (такими как крутизна АЧХ-фильтра, настройка фильтра, конечная разрядность и так далее) и сложностью аппаратной реализации (которая влияет на стоимость). Фильтрация сигналов часто требует использования более сложных операций, нежели простое усреднение битового потока. Задача разработчика состоит в том, чтобы минимизировать сложность фильтра без ущерба для требуемых характеристик АЦП.

При проектировании фильтра следует учитывать следующие моменты:

  • Тип фильтра. Среди множества других типов фильтров особый интерес представляет sinc-фильтр, который обеспечивает приемлемые характеристики при невысокой стоимости аппаратной реализации. Импульсная характеристика sinc-фильтра представляет собой функцию sinc (x) (отсюда и его название). Фильтры этого типа используются в сигма-дельта АЦП чаще всего. Стоимость реализации sinc-фильтра невысока, поскольку в нем не используются умножители, а коэффициенты фильтра задаются целыми числами. По сути sinc-фильтр просто вычисляет скользящее среднее для однобитных отсчетов.
  • Длина фильтра (Filter Oversampling Ratio, FOSR – коэффициент передискретизации). Фильтр большей длины, усредняющий большее число отсчетов, формирует значения большей разрядности, но уменьшает частоту их появления на выходе (прореживание). Поэтому длина фильтра выбирается такой, чтобы достичь компромисса между требуемой скоростью преобразования и разрядностью выходных данных.
  • Порядок фильтра (Filter Order, FORD). Операцию вычисления скользящего среднего можно многократно выполнять над уже усредненными отсчетами. Порядок фильтра определяет, сколько раз операция скользящего среднего будет производиться над одними и теми же входными отсчетами. Фильтр более высокого порядка формирует значения большей разрядности за счет большего количества циклов усреднения, но при этом увеличивается задержка формирования выходных данных.

Пример работы sinc-фильтра – увеличение разрешения

В этом разделе подробно рассматривается, каким образом многократное вычисление скользящего среднего позволяет увеличить разрешение sinc-фильтра.

Возьмем фильтр третьего порядка (FORD = 3), имеющий длину FOSR = 10 (вычисление скользящего среднего производится в каждом звене фильтра):

  • Наблюдение за работой фильтра проводится в течение трех периодов входного потока данных: 3 × FOSR = 30 отсчетов (рисунки 8 и 9).
  • Входной битовый поток содержит практически одни «0», за исключением единственной «1» в каждом из периодов усреднения (FOSR = 10) (обозначены кривыми «Вход» на рисунках 8 и 9). Сравним два входных потока: один поток содержит равноотстоящие единичные отсчеты (в позициях 10, 20 и 30 горизонтальной оси, как изображено на рисунке 8), а в другом потоке в один интервал усреднения попадают уже два единичных отсчета. Таким образом мы смоделируем более высокую плотность импульсов (позиции 10, 19 и 29 горизонтальной оси, изображенные на рисунке 9).
  • Первое звено фильтра выполняет операцию скользящего среднего (кривые «1-й порядок»), результат которой фиксируется каждый период FOSR и представляет собой выходной сигнал фильтра первого порядка (10-й, 20-й, 30-й такт). Для обоих битовых потоков на выходе звена всегда формируется «1» (рисунки 8 и 9), поскольку в каждом периоде усреднения имеется только один единичный бит.
  • Второе звено фильтра выполняет операцию скользящего среднего над выходными данными первого звена (кривые «2-й порядок/10»), результат которой фиксируется каждый период FOSR и представляет собой выходной сигнал фильтра второго порядка (20-й, 30-й такт). Как видим, усреднение на этом этапе приводит к разным результатам (рисунки 8 и 9). Это обусловлено более высокой плотностью единичных битов во втором потоке (благодаря более высокой плотности битового потока, показанного на рисунке 9, при усреднении получается большее число, чем при усреднении потока с меньшей плотностью, показанного на рисунке 8).
  • Третье звено фильтра выполняет операцию скользящего среднего над выходными данными второго звена (кривые «3-й порядок/100»), результат которой фиксируется каждый период FOSR и представляет собой выходной сигнал фильтра третьего порядка (30-й такт). На этом этапе также видна разница между результатами фильтрации битового потока меньшей (рисунок 8) и большей (рисунок 9) плотности. Благодаря применению операции «скользящее среднее» выходное значение третьего звена изменяется более плавно и имеет большую точность.
  • Динамический диапазон сигнала на выходе фильтра равен FOSRFORD, однако для получения первого результата требуется FORD × FOSR отсчетов, поскольку каждое последующее звено фильтра должно накопить валидные отсчеты с выхода предыдущего звена (рисунки 8 и 9). В заключение следует сказать, что фильтры более высоких порядков позволяют получить большую разрядность при том же размере битовой последовательности или ту же разрядность при меньшей длине битовой последовательности. С другой стороны, увеличение порядка фильтра влечет за собой усложнение его аппаратной реализации и увеличение времени инициализации.

Рис. 8. Работа фильтра третьего порядка при одной «1» на интервале длины фильтра

Рис. 8. Работа фильтра третьего порядка при одной «1» на интервале длины фильтра

Рис. 9. Работа фильтра третьего порядка при большей плотности входных импульсов

Рис. 9. Работа фильтра третьего порядка при большей плотности входных импульсов

Аппаратная реализация sinc-фильтра

Передаточная характеристика sinc-фильтра во временной области описывается функцией sinc(), формула которой в цифровой области приведена ниже. Это выражение можно интерпретировать как многократное вычисление скользящего среднего входных однобитных данных. Остальная часть этого раздела будет посвящена поиску возможных решений, которые дадут возможность упростить конструкцию фильтра и, в конечном итоге, позволят получить эффективную и достаточно простую аппаратную реализацию (формула 1):

$$y(n)=x(n)+x(n-1)+x(n-2)+…+x(n-(FOSR-1)),\qquad{\mathrm{(}}{1}{\mathrm{)}}$$

где:

  • x(n) – входное значение n-го отсчета;
  • y(n) – выходное значение n-го отсчета

На рисунке 10 показана структурная схема аппаратной реализации формулы 1 без каких бы то ни было упрощений.

Рис. 10. Структурная схема простой реализации алгоритма вычисления скользящего среднего

Рис. 10. Структурная схема простой реализации алгоритма вычисления скользящего среднего

Аппаратная реализация, схема которой приведена выше, требует (FOSR – 1) сумматоров и (FOSR – 1) триггеров. Однако, как мы увидим далее, эту схему можно упростить.

Формулу 1 можно упростить, используя результат вычисления предыдущего отсчета y (n-1) (формулы 2 и 3):

$$y(n)=x(n)+y(n-1)-x(n-FOSR)\qquad{\mathrm{(}}{2}{\mathrm{)}}$$

$$y(n)=x(n)-x(n-FOSR)+y(n-1)\qquad{\mathrm{(}}{3}{\mathrm{)}}$$

На рисунке 11 представлена упрощенная схема, которая требует всего двух сумматоров и FOSR + 1 триггеров. Эту схему можно представить в виде последовательного соединения двух блоков: гребенчатого фильтра и интегратора.

Рис. 11. Упрощение структуры sinc-фильтра (этап 1)

Рис. 11. Упрощение структуры sinc-фильтра (этап 1)

Для дальнейшего упрощения переведем уравнение в Z-область (частотную область), воспользовавшись следующими соотношениями:

  • X(z) в Z-области соответствует x(n) в дискретной временной области, где n – целое число периодов тактового сигнала (период тактового сигнала = 1/Fs; Fs = частота дискретизации);
  • zN × X(z) соответствует x(n-N), то есть значению x(n), задержанному на N тактов.

Тогда уравнение для sinc-фильтра первого порядка в Z-области примет вид формулы 4:

$$Y(z)=X(z)-Z^{-FOSR}\times X(z)+Z^{-1}\times Y(z)\qquad{\mathrm{(}}{4}{\mathrm{)}}$$

Соответствующая передаточная функция H (z) определяется формулой 5:

$$H(z)=\frac{Y(z)}{X(z)}=\frac{1-z^{-FOSR}}{1-z^{-1}}\qquad{\mathrm{(}}{5}{\mathrm{)}}$$

На рисунке 11 мы представили sinc-фильтр в виде комбинации из двух блоков: гребенчатого фильтра и интегратора. Передаточная функция такого фильтра (CIC-фильтра, или каскадного интегрально-гребенчатого фильтра) определяется по следующим формулам.

Передаточная функция гребенчатого фильтра в Z-области (формула 6):

$$H_{C}(z)=\frac{P(z)}{X(z)}=1-z^{-FOSR}\qquad{\mathrm{(}}{6}{\mathrm{)}}$$

Передаточная функция интегратора (формула 7):

$$H_{I}(z)=\frac{Y(z)}{P(z)}=\frac{1}{1-z^{-1}}\qquad{\mathrm{(}}{7}{\mathrm{)}}$$

Общая передаточная функция эквивалентна передаточной функции sinc-фильтра (формула 8):

$$H_{C}(z)\times H_{I}(z)=\frac{P(z)}{X(z)}\times \frac{Y(z)}{P(z)}=\frac{1-z^{-FOSR}}{1-z^{-1}}=H(z)\qquad{\mathrm{(}}{8}{\mathrm{)}}$$

Для дальнейшего упрощения фильтра переставим местами блоки гребенчатого фильтра и интегратора, как показано на рисунке 12.

Рис. 12. Упрощение структуры sinc-фильтра (этап 2)

Рис. 12. Упрощение структуры sinc-фильтра (этап 2)

Поскольку фильтрация ограничивает ширину спектра выходного сигнала, мы можем снизить частоту дискретизации y(n) в FOSR раз. Для этого достаточно брать один отсчет y(n) каждые FOSR тактов (рисунок 13).

Рис. 13. Упрощение структуры sinc-фильтра (этап 3)

Рис. 13. Упрощение структуры sinc-фильтра (этап 3)

Период тактового сигнала уменьшенной частоты определяется по формуле 9:

$$T=\frac{FOSR}{F_{S}}=FOSR\times \tau,\qquad{\mathrm{(}}{9}{\mathrm{)}}$$

где \(\tau=\frac{T}{FOSR}\).

Уравнение для гребенчатого фильтра, работающего на пониженной частоте, можно переписать следующим образом (формула 10):

$$y(n\cdot \tau )=p(n\cdot \tau )-p(n\cdot \tau -FOSR\cdot \tau )\\y\left(\frac{n\cdot T}{FOSR} \right)=p\left(\frac{n\cdot \tau }{FOSR} \right)-p\left(\frac{n\cdot \tau }{FOSR}-\frac{FOSR\cdot T}{FOSR} \right)\\y(m)=p(m)-p(m-1),\qquad{\mathrm{(}}{10}{\mathrm{)}}$$

где \(m=\frac{n}{FOSR}\).

Эта операция соответствует уменьшению частоты дискретизации последовательности p(n) в FOSR раз и прохождению результата через дифференциатор первого порядка. Цепочку триггеров, тактируемых сигналом с высокой частотой, можно заменить одним триггером, работающим на пониженной частоте. Окончательная схема приведена на рисунке 14.

В результате снижения частоты дискретизации мы избавились от операции скользящего среднего (поскольку уменьшилась частота формирования выходных данных).

Итоговая схема (рисунок 14) содержит всего два триггера и два сумматора (все узлы имеют разрядность FOSR бит).

Рис. 14. Упрощение структуры sinc-фильтра (этап 4)

Рис. 14. Упрощение структуры sinc-фильтра (этап 4)

Sinc-фильтры более высоких порядков получаются последовательным соединением фильтров первого порядка с последующей группировкой каскадов одного типа (рисунок 15).

Рис. 15. Структурная схема sinc-фильтра более высокого порядка

Рис. 15. Структурная схема sinc-фильтра более высокого порядка

Выражение для передаточной функции sinc-фильтра более высокого порядка (порядок фильтра = FORD) выглядит следующим образом:

  • FORD фильтров первого порядка соединяются последовательно (формула 11):

$$H(z)=\left[\left(\frac{1}{1-z^{-1}} \right)\times (1-z^{-FOSR}) \right]\times \left[\left(\frac{1}{1-z^{-1}} \right)\times (1-z^{-FOSR}) \right]\qquad{\mathrm{(}}{11}{\mathrm{)}}$$

  • члены уравнения перегруппировываются (формула 12):

$$H(z)=\left[\left(\frac{1}{1-z^{-1}} \right)\times \left(\frac{1}{1-z^{-1}} \right)… \right]\times \left[(1-z^{-FOSR})\times (1-z^{-FOSR})… \right]\qquad{\mathrm{(}}{12}{\mathrm{)}}$$

  • окончательная формула 13:

$$H(z)=\frac{Y(z)}{X(z)}=\left(\frac{1-z^{-FOSR}}{1-z^{-1}} \right)^{FORD}\qquad{\mathrm{(}}{13}{\mathrm{)}}$$

Уменьшение частоты дискретизации производится на выходе конечного каскада интегратора, что позволяет заменить каждый каскад гребенчатого фильтра дифференциатором с задержкой на один период уменьшенной частоты дискретизации (рисунок 15).

Можно реализовать sinc-фильтр, который будет работать со входными значениями большей разрядности (например, при использовании параллельного ввода данных вместо последовательного). Для этого необходимо увеличить разрядность триггеров и сумматоров.

Функционирование модуля DFSDM

Структурная схема

Структурная схема периферийного модуля DFSDM со всеми его функциональными блоками, а также внутренними и внешними соединениями, приведена на рисунке 16. Модуль DFSDM никоим образом нельзя рассматривать только как цифровой фильтр – он представляет собой законченное цифровое периферийное устройство, которое обеспечивает выполнение всех операций, связанных с процессом аналого-цифрового преобразования (в связке со внешним сигма-дельта-модулятором).

Рис. 16. Структурная схема модуля DFSDM

Рис. 16. Структурная схема модуля DFSDM

Приемники последовательных данных

Блок приемников последовательных данных принимает данные от внешнего сигма-дельта-модулятора по последовательному каналу. Поддерживается интерфейс SPI с выборкой по нарастающему/спадающему фронтам тактового сигнала и однопроводной интерфейс с манчестерским кодированием. Также поддерживается прием данных, передаваемых в виде PDM-сигнала, который используется цифровыми микрофонами (ниже будет приведен рисунок 27).

К одному выводу DFSDM_DATINy можно подключить до двух цифровых микрофонов (сконфигурированных как стереомикрофон). В этой конфигурации микрофоны выдают отсчеты по разным фронтам тактового сигнала (сигналы обоих микрофонов передаются по одной линии данных DFSDM_DATIN). Чтобы подать такой составной сигнал в два разных канала, они оба должны принимать последовательные данные с одних и тех же выводов (DFSDM_DATINy, DFSDM_CKINy) к которым подключены оба микрофона (ниже будет приведен рисунок 27). Соответственно, каждый канал модуля конфигурируется таким образом, чтобы считывать данные по противоположному фронту тактового сигнала.

В качестве тактового сигнала можно использовать либо внешний сигнал синхронизации, поступающий на вход DFSDM_CKINy (если сигма-дельта-модулятор генерирует такой тактовый сигнал), либо сигнал от внутреннего тактового генератора (если примененному сигма-дельта-модулятору требуется внешний тактовый сигнал). Сигнал внутреннего тактового генератора передается в сигма-дельта-модулятор через вывод DFSDM_CKOUT. Интерфейс с манчестерским кодированием однопроводной (используется только вывод DFSDM_DATINy) и не требует отдельного тактового сигнала, поскольку этот сигнал восстанавливается из потока данных. В блоке приемников последовательных данных имеется детектор наличия синхросигнала, который можно использовать для генерации прерывания в случае отсутствия тактового сигнала (при неисправности внешнего оборудования).

В приемнике последовательных данных также реализована функция пропуска тактовых импульсов («Pulse skipper»). Эта функция позволяет приостановить выдачу данных с выхода приемников на время, равное длительности заданного числа периодов тактового сигнала (пропускается заданное число входных однобитных отсчетов). На практике функция пропуска импульсов используется для формирования диаграммы направленности путем задержки данных одного канала относительно данных другого канала. Формирование диаграммы направленности – это метод, позволяющий получать сигналы (звуки) с заданного направления с использованием массива датчиков (микрофонов). Сигнал каждого из микрофонов массива задерживается относительно сигнала предыдущего микрофона, а величина задержки определяет направление основного лепестка диаграммы.

Приемники параллельных данных

Приемник параллельных данных представляет собой 16-битный регистр с параллельной загрузкой, к которому по шине APB могут обращаться ЦПУ, модуль DMA или непосредственно встроенный АЦП. Эти приемники дают возможность выполнять постобработку (фильтрацию) внутренних сигналов. Их можно использовать для:

  • фильтрации данных, формируемых внутренним АЦП;
  • фильтрации данных, получаемых по интерфейсу SPI (через буфер в памяти);
  • фильтрации любых 16-битных данных, хранящихся в памяти (данные пересылаются в приемник посредством DMA).

Цифровой фильтр

Цифровой фильтр представляет собой ключевой компонент модуля, который, собственно, и обрабатывает входные данные. Конфигурация фильтра определяется требованиями, которые конкретное приложение предъявляет к скорости и  разрядности. Можно задавать следующие параметры:

  • порядок фильтра: Sinc1 … Sinc5, FastSinc;
  • коэффициент передискретизации:
    • FOSR = 1… 1024 (для Sinc1… Sinc3, FastSinc);
    • FOSR = 1… 215 (для Sinc4);
    • FOSR = 1… 73 (для Sinc5).

Приведенные выше диапазоны значений FOSR определены с учетом порядка фильтра и его внутренней разрядности (32 бита) так, чтобы исключить переполнение (эти значения справедливы для однобитного входного сигнала, при обработке параллельных входных данных большей разрядности эти диапазоны сужаются).

Интегратор

В данном случае интегратор работает как простой сумматор, который складывает заданное число выходных отсчетов фильтра. Количество отсчетов, которое используется для получения одного выходного значения интегратора, может выбираться из диапазона IOSR = 1…256. В целом интегратор работает как фильтр Sinc1: выполняет усреднение заданного числа отсчетов.

Блок вывода данных

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

Сдвиг битов вправо используется для:

  • приведения внутреннего 32-битного представления выходных значений к ширине выходного регистра (24 бита);
  • дополнительного уменьшения разрядности выходного сигнала, например, до 16 бит при обработке аудиоданных.

Коррекция смещения позволяет устранить ошибку смещения внешнего сигма-дельта-модулятора. Для этого в регистр смещения загружается требуемое число (24-битное значение со знаком), которое автоматически прибавляется к выходному значению. Величина коррекции смещения обычно определяется в процессе калибровки, выполняемой программой микроконтроллера, и сохраняется в соответствующем регистре.

Все операции в модуле DFSDM, такие как фильтрация, интегрирование, коррекция смещения, сдвиг битов вправо, выполняются над числами со знаком.

Сторожевой компаратор

Сторожевой компаратор модуля DFSDM выполняет ту же функцию, что и одноименный блок в модуле АЦП. Он предназначен для контроля нахождения результатов АЦП в заданных пределах. Если сигнал выходит за предварительно заданные границы, компаратор извещает об этом ЦПУ микроконтроллера посредством генерации прерывания или другие периферийные модули – посредством формирования сигнала аварийного события.

Сторожевой компаратор может контролировать не только выходные данные модуля DFSDM, но и необработанные данные от сигма-дельта-модулятора – с выхода приемника последовательных данных.

Аналоговый сторожевой компаратор подключен к выходу приемника последовательных данных через отдельный цифровой фильтр с настраиваемыми параметрами (FOSR = 1…32, FORD = 1…3). Такое решение позволяет пользователю выбирать оптимальное сочетание скорости реакции и разрядности контролируемых значений независимо от скорости основного преобразования. В некоторых случаях требуется, чтобы скорость реакции на выход сигнала за заданные границы была выше скорости основного преобразования. Результат основного преобразования (выходные значения модуля DFSDM) обычно можно контролировать с большей точностью, однако скорость реакции в этом случае получается меньше.

Детектор короткого замыкания

Детектор короткого замыкания предназначен для очень быстрого обнаружения факта насыщения входного аналогового сигнала, при котором сигнал выходит за границы допустимого диапазона. В нормальной ситуации усиление входного аналогового сигнала регулируется автоматически (посредством обратной связи по току или напряжению) таким образом, чтобы его уровень оставался в допустимых пределах. Однако при некоторых нештатных ситуациях, таких как короткое замыкание, измеряемые значения могут выйти за пределы рабочего диапазона. В этом случае необходимо обеспечить как можно меньшее время реакции, например, для своевременного отключения питания.

Этот функционал реализован в блоке детектора короткого замыкания. Обнаружение факта насыщения сигнала основано на анализе битового потока, поступающего с выхода приемника последовательных данных. Типичный сигма-дельта-модулятор формирует однобитный сигнал с частыми переходами между «0» и «1» (в соответствии с изменениями аналогового сигнала). В случае насыщения входного сигнала на выходе сигма-дельта-модулятора появляется длинная последовательность логических «0» (уровень сигнала меньше отрицательного порогового значения) либо «1» (уровень сигнала больше положительного порогового значения). Если длина такой последовательности превышает заданное значение, то блок формирует событие «короткое замыкание».

Порог срабатывания детектора короткого замыкания (SCDT) может задаваться в диапазоне 1…256 отсчетов входного сигнала. К примеру, если задать SCDT = 100, то событие «короткое замыкание» будет сформировано при первом же обнаружении во входном битовом потоке последовательности из 100 нулевых или 100 единичных битов. Детектор короткого замыкания может генерировать прерывание (для программной обработки события) или формировать сигнал аварийного события (для быстрой аппаратной обработки события).

Такой метод обнаружения короткого замыкания намного быстрее, чем метод с использованием аналогового сторожевого компаратора, при котором выполняется цифровая фильтрация более длинных входных битовых последовательностей.

Детектор предельных значений

Детектор предельных значений просто анализирует выходные данные и сохраняет минимальное и максимальное значения в регистрах предельных значений. Используя эти регистры, можно отслеживать максимальный и минимальный уровни преобразованного сигнала в течение некоторого периода времени. Эти значения могут пригодиться при постобработке, например, для нормализации сигнала или для автоматической регулировки усиления. При каждом чтении регистров предельных значений в них автоматически загружаются начальные значения (значения после сброса), и процесс обнаружения предельных значений перезапускается.

Симуляция модуля DFSDM

Симулятор [СИМ.] может моделировать работу сигма-дельта-модулятора и внутренних блоков модуля DFSDM. Данное ПО позволяет изучать процесс преобразования входного сигнала и влияние на этот процесс параметров модуля DFSDM, а также исследовать и анализировать как внутренние сигналы, так и выходной сигнал.

Симулятор позволяет моделировать:

  • сигма-дельта-модулятор (демонстрация принципа работы);
  • sinc-фильтр + интегратор (демонстрация работы цифрового фильтра);
  • частотные характеристики sinc-фильтров (демонстрация формы АЧХ ФНЧ);
  • применение БПФ к ШИМ- и сигма-дельта-модулированному сигналам (демонстрация формирования спектра шума);
  • работу фильтров высокого порядка (демонстрация увеличения разрешения при многократном усреднении сигнала);
  • дельта-сигма-модулятор (цифро-аналоговый преобразователь).

Принцип работы сигма-дельта-модулятора

Это моделирование выполняется на первом листе [СИМ.].

Моделирование сигма-дельта-модулятора первого порядка осуществляется на основе модели, соответствующей схеме, представленной на рисунке 4, причем моделируется каждый блок. В качестве входного сигнала модулятора используется один период синусоидального сигнала. Каждой помеченной точке схемы на рисунке 4 соответствует отдельная кривая на графике, который можно увидеть на рисунке 17.

Рис. 17. Моделирование работы сигма-дельта-модулятора

Рис. 17. Моделирование работы сигма-дельта-модулятора

Пользователь может задать другую форму входного сигнала или изменить некоторые параметры модулятора (коэффициент усиления интегратора, уровень Vref) и наглядно увидеть влияние сделанных изменений на выходной сигнал сигма-дельта-модулятора.

Данное моделирование позволяет визуализировать внутренние сигналы в разных точках модулятора.

Это моделирование предназначено для демонстрации основных принципов работы сигма-дельта-модулятора, поэтому в нем используется модель сигма-дельта-модулятора первого порядка. На практике в большинстве случаев применяют сигма-дельта-модуляторы второго порядка, а в цифровых микрофонах обычно используются модуляторы четвертого порядка.

Фильтрация в модуле DFSDM (фильтр и интегратор)

Это моделирование выполняется на втором листе [СИМ.]. Эта часть симулятора модуля DFSDM относится к блокам sinc-фильтра и интегратора (для дополнительной информации обратитесь к разделам «Цифровой фильтр» и «Интегратор»).

В [СИМ.] реализованы модели как sinc-фильтра, так и интегратора. Пользователь может изменять параметры FORD и FOSR фильтра и параметр IOSR интегратора. Результаты моделирования в точности соответствуют результатам, получаемым при реальном использовании модуля DFSDM. Разработчик может задать в симуляторе необходимые ему значения параметров фильтра и интегратора, после чего проконтролировать изменение формы выходного сигнала, не дожидаясь изготовления реальных прототипов.

Для такого моделирования требуются входные данные (поток однобитных значений) от сигма-дельта-модулятора (как в реальном устройстве). В данном конкретном случае в качестве входного сигнала используются результаты моделирования сигма-дельта-модулятора первого порядка, модель которого также реализована в [СИМ.] (подробнее об этом сказано в разделе «Принцип работы сигма-дельта-модулятора»). Таким образом, можно сравнить выходной цифровой сигнал (кривая результата моделирования фильтра модуля DFSDM) со входным аналоговым сигналом, подаваемым на сигма-дельта-модулятор. Далее можно будет скорректировать параметры фильтра таким образом, чтобы добиться приемлемого (в соответствии с требованиями приложения) расхождения между аналоговым сигналом на входе сигма-дельта-модулятора и выходным сигналом модуля DFSDM (выходные отсчеты).

На рисунке 18 приведены графики не только выходного сигнала (FORD = 5), но и сигналов с выхода каждого каскада фильтра. Эти графики наглядно показывают, насколько может увеличиться разрешение сигнала при выполнении большего количества циклов усреднения.

Рис. 18. Моделирование работы фильтра

Рис. 18. Моделирование работы фильтра

Частотные характеристики sinc-фильтра

Это моделирование выполняется на третьем листе [СИМ.]. Результаты этого моделирования позволяют визуально оценить зависимость частотной характеристики sinc-фильтра от его порядка.

АЧХ фильтра можно определить, подав на его вход одиночный импульс и применив БПФ к импульсной характеристике, снятой с выхода фильтра. Именно этот метод используется в данном моделировании – сначала вычисляется импульсная характеристика фильтра, после чего к полученному результату применяется БПФ на 512 точек. Результаты расчета АЧХ для фильтров разных порядков, которые можно получить при помощи [СИМ.], приведены на рисунке 19.

Рис. 19. АЧХ фильтра

Рис. 19. АЧХ фильтра

Частотная характеристика имеет гребенчатую форму с периодическими провалами, также называемыми «нулями», и характеризуется постепенным увеличением затухания по мере роста частоты (фильтр нижних частот). Частота первого провала зависит от выбранного значения FOSR и определяется как fsampling/FOSR. При непрерывной выборке значение fsampling/FOSR также равно частоте передачи выходных данных. Очевидно, что частотные составляющие входного сигнала, соответствующие провалам АЧХ, полностью подавляются фильтром. В ряде случаев это свойство можно использовать для удаления из входного сигнала помех с заранее известными частотами. Например, для фильтрации наводок от электросети (50/60 Гц), которые могут возникнуть в длинной линии связи, соединяющей удаленные датчики с микроконтроллером.

Ослабление сигнала на более высоких частотах (кроме частот, соответствующих провалам АЧХ и зависящих только от значения FOSR) пропорционально порядку фильтра (FORD). Таким образом, чем выше порядок фильтра, тем сильнее подавление высокочастотных составляющих. При обработке квазистатических сигналов, таких как сигналы от датчиков температуры или давления, для подавления помех от сети переменного тока рекомендуется использовать фильтр высокого порядка (FORD), а также задавать большой коэффициент передискретизации (FORD). Для последующей фильтрации квазистатических сигналов можно использовать интегратор, расположенный после фильтра. Увеличение коэффициента передискретизации интегратора (IOSR) обеспечивает дополнительное усреднение сигнала. На практике пользователь должен сначала задать значение FORD (большое), а затем соответствующим образом подобрать FOSR и IOSR, чтобы отфильтровать помехи с частотой электросети (50/60 Гц). Первый провал общей АЧХ блока, состоящего из sinc-фильтра и интегратора, расположен на частоте fsampling/(FOSR × IOSR). 

Формирование спектра шума при сигма-дельта-модуляции

Это моделирование выполняется на четвертом и пятом листах [СИМ.]. В ходе моделирования сравниваются спектры ШИМ- и сигма-дельта-модулированного сигнала и подчеркиваются преимущества последнего в части формирования спектра шума. Один и тот же входной сигнал (один период синусоидальной волны, рисунок 20) проходит через сигма-дельта-модулятор и широтно-импульсный модулятор, после чего к получившимся сигналам применяется БПФ. Спектры ШИМ-сигнала и сигма-дельта-модулированного сигнала, получаемые в результате моделирования, показаны на рисунке 21. По оси X отложены значения, кратные частоте входного сигнала (основная частота и ее гармоники), ось Y отражает величину спектральной плотности. Вполне логично, что амплитуда спектральной составляющей с индексом 1 (основная частота сигнала) очень велика (~470). Для восстановления исходного сигнала необходимо отфильтровать пики всех остальных гармоник.

Рис. 20. Сигма-дельта-модулированный сигнал и ШИМ-сигнал (для сравнения спектров)

Рис. 20. Сигма-дельта-модулированный сигнал и ШИМ-сигнал (для сравнения спектров)

Графики спектров, приведенные на рисунке 21, демонстрируют, что основная часть энергии ШИМ-сигнала сконцентрирована в пиках, расположенных в точках, кратных частоте модуляции, а также в окрестностях этих точек (в данном случае частота модуляции в 16 раз больше основной частоты сигнала). Такое распределение энергии обусловлено самим принципом широтно-импульсной модуляции, при которой используется постоянная частота модуляции и переменный коэффициент заполнения. С ростом частоты амплитуда этих пиков уменьшается.

Рис. 21. Спектры сигма-дельта-модулированного сигнала и ШИМ-сигнала

Рис. 21. Спектры сигма-дельта-модулированного сигнала и ШИМ-сигнала

В противоположность спектру ШИМ-сигнала, уровень первых гармоник в спектре выходного сигнала сигма-дельта-модулятора первого порядка достаточно мал, но постепенно увеличивается с ростом частоты.

Как следствие, к аналоговому фильтру нижних частот, который необходим для восстановления исходного сигнала (синусоидального сигнала, которому соответствует гармоника №1 на рисунке 21), к сигма-дельта-модулированному сигналу предъявляются не такие жесткие требования, как к ШИМ-сигналу. Ширина полосы пропускания этого аналогового ФНЧ должна немного превышать полосу частот исходного сигнала, а крутизна частотной характеристики фильтра должна быть достаточной, чтобы обеспечить эффективное подавление всех высокочастотных составляющих, появившихся в сигнале в результате модуляции. Поскольку в низкочастотной части спектра ШИМ-сигнала сосредоточено больше энергии шума квантования, чем в спектре сигма-дельта-модулированного сигнала, аналоговый ФНЧ для ШИМ-сигнала должен иметь более крутую характеристику (более высокий порядок).

Еще одна особенность сигма-дельта-модулированного сигнала заключается в том, что при этом виде модуляции шум квантования в низкочастотной части спектра практически постоянен и не зависит от разрешения входного сигнала, тогда как в случае ШИМ-сигнала шум квантования влияет на весь спектр, особенно на первую гармонику. В этом можно легко убедиться, если уменьшить уровень входного сигнала с 95% от максимального значения (рисунок 21) до 10% (рисунок 22).

Рис. 22. Спектры сигма-дельта-модулированного сигнала и ШИМ-сигнала при уменьшении уровня сигнала до 10% от максимального значения

Рис. 22. Спектры сигма-дельта-модулированного сигнала и ШИМ-сигнала при уменьшении уровня сигнала до 10% от максимального значения

Моделирование работы фильтров высокого порядка

Это моделирование выполняется на шестом листе [СИМ.]. Оно показывает, как можно увеличить выходное разрешение фильтра, выполняя многократное усреднение одних и тех же данных (принцип работы фильтров высокого порядка).

Рис. 23. Фильтры высокого порядка – принцип многократного усреднения

Рис. 23. Фильтры высокого порядка – принцип многократного усреднения

В данном моделировании используется период усреднения, равный 10 отсчетам (FOSR = 10). На протяжении каждого из периодов усреднения входной сигнал содержит по одному импульсу (один отсчет равен «1», а остальные девять – «0»). Моделирование производится для двух входных сигналов (рисунок 23):

  • с равноотстоящими импульсами на месте 10-го, 20-го и 30-го отсчетов. Такая ситуация соответствует сигналу с постоянной плотностью импульсов;
  • с неравномерно распределенными импульсами на месте 10-го, 19-го и 29-го отсчетов. Такая ситуация соответствует сигналу с переменной плотностью импульсов.

Для обоих сигналов отображаются результаты моделирования при однократном, двойном и тройном усреднениях, что эквивалентно порядку фильтра FORD = 1, FORD = 2, FORD = 3. Выходные отсчеты формируются каждый 10-й входной отчет, в конце интервала усреднения.

В первом сигнале импульсы распределены равномерно (каждый 10-й отсчет), поэтому выходной сигнал, формируемый во время 10-го, 20-го и 30-го отсчетов, всегда равен 1.00, независимо от порядка фильтра.

Во втором сигнале расстояние между импульсами несколько меньше – 10-й, 19-й и 29-й отсчеты, поэтому их плотность немного выше. Такое изменение плотности импульсов никак не сказывается на работе простого усредняющего фильтра, на выходе которого формируется такое же значение 1.00, являющееся постоянным для всех периодов усреднения, что и в случае первого сигнала. Это обусловлено тем, что фильтр первого порядка выполняет усреднение только в одном периоде (10 отсчетов). Таким образом, фильтр первого порядка не может обнаруживать изменения плотности импульсов (точнее, для этого необходимо использовать фильтр с большим значением FOSR, с более низкой частотой выходных данных).

При двойном усреднении картина меняется. Первое валидное значение формируется на выходе фильтра после второго периода усреднения, поскольку при двойном усреднении для формирования одного выходного отсчета используются два периода сигнала. В результате двойного усреднения на выходе фильтра формируются значения 1.10 (результат после второго периода усреднения) и 1.00 (результат после третьего периода усреднения). То есть фильтр второго порядка смог обнаружить увеличение плотности импульсов на втором периоде усреднения и уменьшение плотности импульсов на третьем периоде усреднения.

Тройное усреднение обеспечивает еще большую точность. Первое валидное значение появляется на выходе в конце третьего периода усреднения, поскольку при тройном усреднении для формирования одного выходного отсчета используются три периода сигнала. Таким образом, на выходе фильтра в результате тройного усреднения формируется значение 1.08 (результат после третьего периода). Это означает, что фильтр третьего порядка отслеживает изменение плотности импульсов с еще большей точностью. 

Моделирование дельта-сигма ЦАП

Это моделирование выполняется на седьмом листе [СИМ.]. Сигма-дельта-модуляция может использоваться не только для аналого-цифрового, но и для цифро-аналогового преобразования. В последнем случае все аналоговые блоки в составе сигма-дельта-модулятора (рисунок 4) заменяются их цифровыми эквивалентами (рисунок 24).

Рис. 24. Принцип работы дельта-сигма ЦАП первого порядка

Рис. 24. Принцип работы дельта-сигма ЦАП первого порядка

Рассмотрим особенности работы каждого блока в цифровой области:

  • блок «Вычитатель» представляет собой операцию вычитания;
  • блок «Интегратор» представляет собой операцию сложения (суммирование входных битов);
  • блок «Компаратор» представляет собой цифровой компаратор. Он определяет знак слова данных, поступающего от интегратора (знаковый бит – старший значащий бит);
  • блок «Заполнение битом» используется вместо 1-битного ЦАП на рисунке 4. Он представляет собой АЦП, на выходе которого формируется значение ±digital_reference_word, знак которого определяется выходным значением компаратора. Величина «digital_reference_word» должна соответствовать входному диапазону цифрового сигнала, поступающего на компаратор (эквивалент значений +Vref, -Vref в сигма-дельта-преобразователе);
  • Фильтр нижних частот представляет собой аналоговый блок, который выполняет фильтрацию потока однобитных значений, формируемых с большой частотой. Этот битовый поток представляет сигма-дельта-модулированный сигнал и в данном случае формируется из N-разрядного входного цифрового сигнала. Свойства данного битового цифрового потока полностью идентичны свойствам битового потока в сигма-дельта-модуляторе (формирование спектра шума), поэтому для его фильтрации можно использовать более простой аналоговый фильтр (по сравнению с ШИМ-сигналом).

При моделировании этого дельта-сигма ЦАП на его вход подается оцифрованный синусоидальный сигнал с амплитудой ± 5 В (кривая «Digital input» розового цвета на рисунке 25). В реальном приложении выходной битовый поток (синяя кривая на рисунке 25) должен пропускаться через аналоговый ФНЧ. В симуляторе аналоговая фильтрация заменена цифровым sinc-фильтром.

Рис. 25. Симуляция дельта-сигма ЦАП

Рис. 25. Симуляция дельта-сигма ЦАП

На выходе дельта-сигма ЦАП (рисунок 25) формируется довольно качественно восстановленный «аналоговый» синусоидальный сигнал, несмотря на то, что для квантования входного сигнала используется только 11 дискретных уровней [-5…+5].

Еще раз отметим, что основное достоинство сигма-дельта-модуляции по сравнению с широтно-импульсной модуляцией – более простая фильтрация (аналоговая в случае ЦАП) выходного сигнала. Это обусловлено теми же причинами, которые были рассмотрены в разделе «Формирование спектра шума при сигма-дельта-модуляции». 

Моделирование фильтра высоких частот

Это моделирование выполняется на восьмом листе [СИМ.]. Фильтры высоких частот находят применение там, где из входного сигнала требуется удалить постоянную составляющую и/или низкочастотный шум: при работе с сигналами звукового диапазона, включая изменения статического давления на выходе микрофона, измерение энергии переменного тока, коррекцию смещения по постоянному току, зависящему от температуры и так далее.

В модуле DFSDM нет никаких фильтров высоких частот, однако такую фильтрацию легко можно реализовать программно в виде дополнительного этапа обработки выходных данных модуля DFSDM (вместо использования внешнего аппаратного ФВЧ).

Фильтр верхних частот, реализованный в симуляторе, описывается уравнением 14:

$$y(n)=\frac{coeff}{256}\times \left(y(n-1)+x(n)-x(n-1) \right),\qquad{\mathrm{(}}{14}{\mathrm{)}}$$

где:

  • y(n) – «filtered_value» в симуляторе (выход фильтра);
  • coeff – «coeff» в симуляторе (частота среза фильтра);
  • y(n-1) – «last_filtered_value» в симуляторе (предыдущее выходное значение фильтра);
  • x(n) – «sample» в симуляторе (входной отсчет фильтра);
  • x(n-1) – «last_sample» в симуляторе (предыдущий входной отсчет фильтра).

Работа этого фильтра сводится к одному умножению, двум сложениям и одной операции сдвига (деление на 256).

В процессе моделирования через ФВЧ пропускается синусоидальный сигнал, имеющий смещение по постоянному току, которое постепенно уменьшается (голубая кривая на рисунке 26).

Рис. 26. Моделирование фильтра высоких частот

Рис. 26. Моделирование фильтра высоких частот

Выходной сигнал фильтра высоких частот представлен на рисунке 26 темно-синей кривой. После некоторого периода адаптации фильтр верхних частот убирает из сигнала постоянную и низкочастотные составляющие. Скорость адаптации зависит от значения «coeff» (частоты среза фильтра). 

Поддержка цифровых МЭМС-микрофонов

Современные цифровые микрофоны формируют выходной сигнал в формате PDM (модуляция плотности импульсов). Сигнал PDM можно рассматривать как разновидность сигма-дельта-модулированного сигнала, поэтому он поддерживается модулем DFSDM.

Цифровые микрофоны – это МЭМС-устройства (микроэлектромеханические системы), которые изготавливаются с применением полупроводниковой технологии. Активный элемент таких микрофонов состоит из мембраны и пары микроэлектродов. Один из электродов закреплен, другой встроен в мембрану. Когда на мембрану воздействует давление воздуха (звук), подвижный электрод отклоняется от начального положения, что приводит к изменению емкости между электродами. Получаемый сигнал обрабатывается встроенной электронной схемой и выводится в виде PDM-сигнала (сигнала с модуляцией плотности импульсов).

Для цифровых микрофонов требуется внешний тактовый сигнал, который подается на вход CLK микрофона. Данные передаются на выход DATA в виде модулированного сигнала PDM. Частота тактового сигнала обычно находится в диапазоне 1…3,2 МГц. Этот тактовый сигнал формируется на выходе DFSDM_CKOUT модуля DFSDM и определяет скорость передачи данных из микрофона в модуль. Типовая схема подключения цифрового стереомикрофона к модулю DFSDM приведена на рисунке 27.

Рис. 27. Подключение МЭМС-микрофонов к модулю DFSDM (поддержка стереосигнала)

Рис. 27. Подключение МЭМС-микрофонов к модулю DFSDM (поддержка стереосигнала)

К одному входу модуля DFSDM можно одновременно подключить два микрофона (левый и правый каналы). Соответственно, оба микрофона используют общую линию данных и общий тактовый сигнал. Тактовый сигнал поступает с вывода DFSDM_CKOUT одновременно на левый и правый микрофоны. Выходные данные обоих микрофонов передаются по одной линии: данные левого микрофона считываются по нарастающему фронту тактового сигнала, а правого – по спадающему фронту (рисунок 28). Конфигурация микрофона (левый/правый каналы) обычно задается подачей соответствующего уровня на управляющий вывод (L/R) микрофона.

Рис. 28. Выходной сигнал МЭМС-микрофона (левый и правый каналы)

Рис. 28. Выходной сигнал МЭМС-микрофона (левый и правый каналы)

Разделение сигналов от двух микрофонов на линии DATA осуществляется модулем DFSDM. Вход канала с номером x модуля DFSDM можно переназначить на прием входного сигнала канала с номером (x+1). При этом канал с номером x настраивается на чтение данных по нарастающему фронту, а канал с номером (x+1) – по спадающему фронту. Для обоих каналов используется один и тот же тактовый сигнал, который подается на выход DFSDM_CKOUT. При такой конфигурации канал с номером x принимает данные от левого микрофона, а канал с номером (x+1) – от правого. Данные каждого из каналов поступают на отдельные цифровые фильтры, которые формируют два потока многоразрядных данных для левого и правого каналов микрофона. Схема подключения МЭМС-микрофонов (в конфигурации стереомикрофона) к модулю DFSDM приведена на рисунке 27. 

Формирование диаграммы направленности

Формирование диаграммы направленности – это методика, которая позволяет использовать массив неподвижных ненаправленных датчиков, например, массив микрофонов, для обработки сигналов, поступающих с определенного направления. При этом приоритетное направление можно менять программно, не изменяя положения датчиков.

В приведенном ниже примере используется микрофонная решетка – массив микрофонов, расположенных на одной линии и на одинаковом расстоянии друг от друга (рисунок 29). Источник звука расположен в произвольной точке перед микрофонной решеткой, а нежелательные шумы и помехи поступают со всех направлений. При простом суммировании сигналов от всех микрофонов синфазно складываются (и, следовательно, усиливаются) только звуки, поступающие с направления, перпендикулярного решетке. Синфазного сложения звуков, поступающих с прочих направлений, не происходит.

Рис. 29. Принцип формирования диаграммы направленности

Рис. 29. Принцип формирования диаграммы направленности

Для усиления сигналов, поступающих с направления, отличного от перпендикулярного, можно механически повернуть микрофонную решетку на требуемый угол. Другое решение заключается в задержке сигналов от каждого микрофона для компенсации разного времени прохождения полезного сигнала. При правильном задании длительностей всех задержек усиливаться будут только звуки, приходящие с заданного направления, поскольку они будут совпадать по фазе. Звуки, поступающие с других направлений, будут усиливаться в меньшей степени (рисунок 29).

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

Формирование диаграммы направленности можно реализовать с использованием модуля DFSDM. Модуль DFSDM способен принимать и независимо обрабатывать сигналы от нескольких микрофонов, формируя многоразрядные выходные отсчеты для каждого канала. Эти отсчеты сохраняются в памяти микроконтроллера (для каждого микрофона используется отдельный буфер). Затем отчеты складываются для получения конечного результата. Задержка формируется в два этапа:

  1. Грубая установка: выходной буфер модуля DFSDM (для конкретного микрофона) можно сдвинуть относительно другого на заданное количество отсчетов. Один отсчет соответствует задержке длительностью 1/fdatarate, где fdatarate – частота передачи выходных данных (типичные значения частоты передачи сигналов звукового диапазона: 44,1 кГц, 22,05 кГц, 16 кГц…). Сдвиг на один отсчет соответствует расстоянию s = v/fdatarate (v – скорость звука в воздухе, ~ 343 м/с).

Примеры грубой задержки:

  • fdatarate = 44,1 кГц: s = 343 мс/44100 Гц= ~ 7,8 мм;
  • fdatarate = 16 кГц: s = 343 мс/16000 Гц = ~ 21,4 мм.
  1. Точная установка: для поддержки микрофонных массивов с близко расположенными микрофонами и точного задания направления на приоритетный источник звука необходимо формировать задержку с большей точностью. Это достигается путем сдвига отсчетов входного битового потока от микрофона к модулю DFSDM, а не смещения итоговых выходных отсчетов модуля DFSDM. Входные однобитные отсчеты считываются с частотой, равной частоте PDM-сигнала.

Примеры точной задержки:

  • — fPDM = 3 МГц: с = 343 мс/3000000 Гц = ~ 0,11 мм;
  • — fPDM = 200 кГц: с = 343 мс/200000 Гц = ~ 1,7 мм.

Такая маленькая дискретность при задании задержки позволяет точно задавать предпочтительное направление на источник звука даже при использовании миниатюрных микрофонных решеток.

В модуле DFSDM формирование точных задержек, необходимых для задания направления на источник звука, производится не с помощью линий задержки, а посредством пропуска отсчетов входного битового потока. Некоторые отсчеты, поступающие с приемника последовательных данных, маскируются путем стробирования тактового сигнала и не передаются в цифровой фильтр. Схема маскирования отсчетов, основанная на пропуске тактовых импульсов, приведена на рисунке 30.

Рис. 30. Реализация пропуска тактовых импульсов для формирования диаграммы направленности

Рис. 30. Реализация пропуска тактовых импульсов для формирования диаграммы направленности

На рисунке 31 наглядно показан результат работы механизма пропуска импульсов, действие которого аналогично использованию линии задержки.

В верхней части рисунка 31 иллюстрируется нормальная работа модуля без пропуска тактовых импульсов. Каждое выходное значение формируется из восьми входных отсчетов (FOSR = 8). Для формирования диаграммы направленности необходимо одновременно запустить несколько фильтров модуля DFSDM.

Рис. 31. Результат пропуска импульсов (FOSR = 8)

Рис. 31. Результат пропуска импульсов (FOSR = 8)

В нижней части рисунка 31 показана ситуация с пропуском отсчетов S10, S11 и S12 по левому каналу. Фильтр (FOSR = 8) ожидает три дополнительных отсчета, чтобы получить по каждому каналу восемь однобитных отсчетов, необходимых для формирования одного выходного значения. В результате получается, что для формирования выходного значения с одним и тем же порядковым номером в правом канале используются более старые однобитные отсчеты по сравнению с левым каналом. Такой же результат можно было получить, если бы в правом канале стояла линия задержки на три отсчета (буферы задержки, хранящие три последних отсчета).

Тактирование внешнего сигма-дельта-модулятора

Модуль DFSDM может тактировать внешний сигма-дельта-модулятор посредством тактового сигнала, формируемого на выходе DFSDM_CKOUT. Частота этого сигнала определяет частоту выборки входных данных, от которой также зависит частота формирования выходных данных. К выводу DFSDM_CKOUT может быть подключен один из следующих источников:

  • тактовый сигнал модуля DFSDM:
    • тактовый сигнал шины APB;
    • системный тактовый сигнал, независимый от делителя тактового сигнала шины APB.
  • тактовый сигнал с выхода PLL (аудио-PLL, который используется модулем I2S).

Для получения требуемой частоты сигнала на выходе DFSDM_CKOUT сигнал от выбранного источника тактового сигнала проходит через делитель с коэффициентом деления 2…256 (это значение определяется содержимым поля CKOUTDIV регистра DFSDM_CHyCFGR1).

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

Сам модуль DFSDM (приемники, фильтры, дополнительные блоки) синхронизируется тактовым сигналом шины APB или системным тактовым сигналом. Частота этого сигнала должна быть в 4 раза больше частоты дискретизации входного сигнала (или в 6 раз больше, если используется манчестерское кодирование).

Для снижения потребляемой мощности и частота дискретизации, и рабочая частота модуля должны иметь минимальные значения, определяемые требованиями конкретного приложения.

Оптимизация энергопотребления модуля DFSDM

Потребление модуля DFSDM зависит от:

  • включенных блоков:
    • количества включенных каналов
    • количества включенных фильтров
    • количества включенных дополнительных узлов (аналоговых сторожевых компараторов, детектора короткого замыкания).
  • частоты тактового сигнала:
    • включенных узлов.

Для оптимизации энергопотребления следует включать только необходимые блоки (приемники, фильтры, дополнительные узлы) и использовать минимальную тактовую частоту, обеспечивающую требуемые скорости передачи входных и выходных данных.

Оптимизация энергопотребления в спящем режиме

Модуль DFSDM может использоваться во время нахождения микроконтроллера в спящем режиме. В этом случае модуль обычно выполняет задачу мониторинга аналоговых сигналов (с использованием аналогового сторожевого компаратора) и пробуждения ЦПУ при выходе контролируемого сигнала за заданные границы

В качестве примера можно назвать такие устройства как радионяня или датчик разбития стекла. В подобных устройствах процессор большую часть времени находится в спящем режиме, а модуль DFSDM отслеживает уровень звука посредством аналогового сторожевого компаратора. Если уровень звука превышает заданный порог, ЦПУ выходит из спящего режима по сигналу прерывания от сторожевого компаратора, модуль DFSDM накапливает поступающие данные, после чего ЦПУ выполняет их анализ, чтобы определить, действительно ли это плач ребенка или звук разбития стекла. Во время спящего режима модулю DFSDM не требуется обрабатывать входные данные, поэтому для уменьшения энергопотребления необходимо оставить включенным только аналоговый сторожевой компаратор.

Ниже приведен пример конфигурации микроконтроллера и конкретно модуля DFSDM, обеспечивающей пониженное энергопотребление (задача приложения – обнаружение звука):

  • Тактовые сигналы
    • выключите все периферийные устройства, кроме DFSDM;
    • используйте для тактирования модуля DFSDM системный тактовый сигнал с минимальной частотой (пример: 4 МГц; для максимального снижения энергопотребления используйте внутренний генератор MSI);
    • уменьшите до минимума тактовую частоту шин AHB и APB, поскольку в спящем режиме не требуется обращаться к периферийным устройствам. Используйте большие значения коэффициентов деления предделителей шин AHB и APB (пример: предделитель AHB = 512, тактовая частота AHB = 4 МГц/512 = 7,8 кГц);
    • используйте для тактирования модуля DFSDM системный тактовый сигнал (пример: 4 МГц), поскольку тактовая частота шины APB будет слишком мала для нормальной работы цифрового фильтра;
    • частота тактового сигнала для цифрового МЭМС-микрофона должна быть меньше тактовой частоты DFSDM, деленной на 4 (пример: 1 МГц вполне достаточно для работы микрофона).
  • Модуль DFSDM:
    • сконфигурируйте фильтр для получения требуемой частоты формирования выходных данных (пример: 16 кГц);
    • настройте аналоговый сторожевой компаратор на контроль выходных данных и задайте соответствующие пороговые значения для обнаружения звука;
    • отключите контроль переполнения буфера выходных данных, поскольку данные с выхода модуля DFSDM не используются (работает только аналоговый сторожевой компаратор).
  • После пробуждения (генерация прерывания от аналогового сторожевого компаратора):
    • восстановите рабочие значения тактовой частоты шин AHB, APB (коэффициенты деления предделителей), обеспечивающие высокое быстродействие, чтобы ускорить обмен данными с модулем DFSDM (пример: предделитель AHB = 1, тактовая частота AHB = 4 МГц);
    • при необходимости измените конфигурацию модуля DFSDM так, чтобы обеспечить более высокую частоту формирования отсчетов выходного сигнала для лучшего распознавания звука (пример: 44,1 кГц);
    • запустите накопление данных с выхода модуля DFSDM в буферах памяти (пример: пересылка данных посредством DMA);
    • выполните распознавание звуков для каждого буфера данных (пример: анализ на основе БПФ);
    • при обнаружении искомого звука выполните необходимые действия (включите сигнализацию). Если искомый звук не будет обнаружен или прекратится через какое-то время, то снова переведите микроконтроллер в спящий режим до появления следующего сигнала от аналогового сторожевого таймера.

При выполнении вышеописанного сценария потребление микроконтроллера (из-за активности модуля DFSDM) возрастает примерно в 2 раза (относительно потребления в глубоком спящем режиме с выключенным модулем DFSDM и при той же частоте системного тактового сигнала).

Методическое руководство по настройке модуля DFSDM

Функциональные возможности модуля DFSDM аналогичны возможностям АЦП со внешней аналоговой частью. Модуль DFSDM чрезвычайно гибок в настройке, но в то же время требует следования определенной методике при задании конфигурации. Этот раздел поможет пользователю сконфигурировать модуль DFSDM в соответствии с требованиями, предъявляемыми приложением к процессу аналого-цифрового преобразования.

Основные сведения о конфигурации

Основные параметры, имеющие отношение к процессу аналого-цифрового преобразования:

  • диапазон значений входных аналоговых сигналов (характеристика сигма-дельта-модулятора);
  • минимальная частота передачи выходных данных;
  • точность установки частоты передачи данных;
  • минимальная разрядность выходных данных;
  • число используемых каналов (на один блок АЦП);
  • необходимость использования дополнительных функций:
    • аналоговый сторожевой компаратор;
    • детектор короткого замыкания.
  • метод пересылки данных: DMA, прерывание, циклический опрос.

Параметры приложения, влияющие на конфигурацию модуля DFSDM:

  • диапазон частот системного тактового сигнала;
  • напряжение питания;
  • ограничения по току потребления;
  • характеристики используемого сигма-дельта-преобразователя (или цифрового микрофона): диапазон частот тактового сигнала, диапазон значений входного аналогового сигнала, порядок сигма-дельта-модулятора.

Далее мы рассмотрим вопросы, касающиеся настройки различных блоков модуля DFSDM в соответствии с требованиями приложения.

Настройка тактовых сигналов

Частота тактового сигнала модуля DFSDM выбирается исходя из следующих требований:

  • минимальной частоты передачи выходных данных;
  • точности установки частоты передачи выходных данных;
  • минимальной разрядности выходных данных.

Основная задача – выбрать такие значения параметров фильтра и частоты дискретизации входного сигнала, чтобы обеспечить требуемую частоту передачи выходных данных.

Частота дискретизации входного сигнала определяется характеристиками используемого сигма-дельта-модулятора (или цифрового микрофона).

Настройки системы тактирования для двух разных приложений представлены в таблице 2, которая размещена ниже.

Конфигурация приемников последовательных данных

Приемники последовательных данных преобразуют данные, поступающие на входы микроконтроллера (DFSDM_DATIN и DFSDM_CKIN), и пересылают их в фильтры. Конфигурация приемников определяется характеристиками внешнего устройства (сигма-дельта-модулятора или цифрового микрофона), подключенного к модулю DFSDM.

В таблице 2, расположенной ниже, приведены примеры конфигураций модуля DFSDM для двух разных приложений.

Приложение 1. Измерение температуры

  • Назначение: измерение температуры, заключающееся в измерении напряжения и тока через датчик PT100 и определении сопротивления/температуры этого датчика. Процесс измерения температуры запускается раз в секунду по сигналу таймера.
  • Внешнее устройство: сдвоенный внешний сигма-дельта-модулятор STPMS2 для оцифровки каналов напряжения и тока.
  • Физическая линия связи:
    • модулятор STPMS2 использует один канал SPI (выводы: CLK, DAT);
    • на вывод CLK модулятора STPMS2 поступает тактовый сигнал с выхода DFSDM_CKOUT микроконтроллера;
    • вывод DAT модулятора STPMS2 подключен к выводу DFSDM_DATIN1 микроконтроллера (вход последовательных данных канала 1; вход канала 0 переназначен для приема входного сигнала канала 1, в результате чего сигнал с вывода DFSDM_DATIN1 поступает как в канал 0, так и в канал 1);
    • вывод DFSDM_CKIN1 (вход синхронизации канала 1) не используется. Чтение данных производится по внутреннему тактовому сигналу, который получается путем перенаправления тактового сигнала с выхода CKOUT (SPICKSEL[1:0] = 1).
  • Постобработка:
    • данные канала 0 (U, напряжение) обрабатываются фильтром 0;
    • данные канала 1 (I, ток) обрабатываются фильтром 1;
    • встроенное ПО микроконтроллера вычисляет сопротивление датчика PT100 (R = U/I), которое затем преобразуется в значение температуры.

Приложение 2. Обработка звука

  • Назначение: аудиозапись с частотой дискретизации 48 кГц.
  • Внешнее устройство: цифровой МЭМС-микрофон MP34DT01-M.
  • Физическая линия связи:
    • микрофон MP34DT01-M имеет один канал передачи данных (выводы: CLK, DOUT);
    • на вывод CLK микрофона поступает тактовый сигнал с выхода DFSDM_CKOUT микроконтроллера;
    • вывод DOUT микрофона подключен к выводу DFSDM_DATIN0 микроконтроллера (вход последовательных данных канала 0).
  • Постобработка:
    • данные канала 0 (микрофон) обрабатываются фильтром 0;
    • выходной поток с частотой передачи 48 кГц сохраняется в буфере посредством DMA, работающего в непрерывном режиме.

Таблица 2. Примеры применения модуля DFSDM

Параметры Приложение 1. Измерение температуры Приложение 2: Обработка звука
Описание Варианты Значение(1) Примечания Значение(1) Примечания
Последовательный протокол (SITP[1:0]) SPI + STPMS2 имеет интерфейс SPI

+

MP34DT01-M имеет интерфейс SPI
Манчестер
Формирователь тактового сигнала DFSDM(2) + STPMS2 имеет вход тактового сигнала + MP34DT01-M имеет вход тактового сигнала
Внешнее устройство(3)

Активный фронт Нарастающий фронт Отсчеты значения тока считываются по нарастающему фронту

+

Вывод «L/R» MP34DT01-M подключен к GND; активный уровень – нарастающий
Спадающий фронт Отсчеты значения напряжения считываются по спадающему фронту
Источник тактового сигнала Тактовый сигнал APB. Системный тактовый сигнал. Сигнал от PLL Системный тактовый сигнал (fHSI16) fCKIN должен быть равен 2 МГц(4)

Конфигурация fCKIN:

\(f_{CKIN}=\frac{f_{HSI16}}{(CKOUTDIV+1)}\),

где:
fHSE16 = 16 МГц;
CKOUTDIV = 7

Сигнал от PLL fCKIN должен быть равен 3,072 МГц(5)

Конфигурация fCKIN:

\(f_{CKIN}=\frac{f_{HSE}\times N}{Q\times (CKOUTDIV+1)},\)

где:
fHSE = 16 МГц (сигнал от кварцевого резонатора);
N = 48; Q = 2;
CKOUTDIV = 124

Частота входного тактового сигнала \(\frac{f_{CKIN}}{f_{CKOUT}}\) 2 МГц 3,072 МГц
Число потоков данных, передаваемых по последовательному каналу Один поток(6)

Тоже поддерживается STPMS2, но требует использования дополнительной линии/вывода

+

Используется монофонический микрофон
Два потока(7)

+

В примере используется общая линия для передачи сигналов напряжения и тока. Требуется только одна линия/вывод
Точность задания частоты тактового сигнала Низкая точность

+

Высокая точность тактового сигнала не требуется – измерение температуры запускается по таймеру раз в секунду. Тактовый сигнал формируется из тактового сигнала DFSDM (16 МГц): CKOUTSRC = 0
Высокая точность + Требуется высокая точность установки частоты передачи 48 кГц (стандарт)
  1. ‘+’ = допустимое значение, ‘–’ = недопустимое значение.
  2. Устройству необходим внешний тактовый сигнал (тактовый сигнал подается в устройство).
  3. Устройство использует внутренний тактовый сигнал (тактовый сигнал генерируется устройством).
  4. Диапазон частот входного тактового сигнала STPMS2 1…4,915 МГц.
  5. fCKIN = datarate × FOSR × IOSR, где datarate = 48 кГц, FOSR = 64, непрерывный режим.
  6. Передается один поток (выборка только по одному фронту).
  7. Передаются два потока (данные одного потока выбираются по нарастающему фронту, данные второго потока – по спадающему).

Приемники параллельных данных

Приемники параллельных данных реализуют альтернативный канал поступления 16-битных данных в цифровые фильтры – напрямую из внутренних источников данных микроконтроллера.

Приемники параллельных данных представляют собой набор 32-битных (2×16 бит) регистров с параллельной загрузкой, содержимое которых затем поступает в цифровой фильтр. Каждому каналу приема последовательных данных соответствует один 32-битный регистр, состоящий из двух 16-битных регистров. Для выбора источника данных фильтра предназначены биты DATMPX[1:0] регистра DFSDM_CHyCFGR1. Если DATMPX[1: 0] = 0, то данные берутся из приемника последовательных данных (в виде битового потока), в противном случае данные берутся из приемника параллельных данных (в виде 16-битных значений со знаком).

Загружать данные в эти регистры может процессор/DMA (DATMPX[1:0] = 2) или же АЦП (DATMPX[1:0] = 1). В зависимости от возможностей встроенного АЦП в некоторых микроконтроллерах предусмотрена быстрая выделенная 16-битная шина между АЦП и регистрами параллельного ввода данных.

Каждый канал имеет отдельный 32-битный регистр параллельного ввода, состоящий из двух 16-битных регистров. Для записи в эти регистры можно использовать 32-битные операции, загружая по два входных отсчета за раз. Каким образом будут использоваться старшее и младшее слова 32-битного регистра, зависит от режима упаковки данных, определяемого значением поля DATPACK[1:0]:

  • стандартный режим: в регистре хранится один отсчет (используются только младшие 16 бит регистра);
  • режим чередования: в регистре хранятся два отсчета, используемых одним и тем же каналом (регистр образует FIFO-буфер на два отсчета);
  • парный режим: отсчет из младшего 16-битного слова регистра используется заданным каналом, а отсчет из старшего 16-битного слова – следующим каналом.

При записи одного 16-битного отсчета в регистр параллельного ввода автоматически генерируется один тактовый импульс для цифрового фильтра, который, в свою очередь, автоматически считывает содержимое этого регистра для последующей обработки. Таким образом, скорость передачи выходных данных определяется скоростью поступления входных данных (скоростью передачи данных от ЦПУ/DMA или АЦП).

Приемники параллельных данных позволяют выполнять быструю НЧ-фильтрацию без использования процессора. Рассмотрим три примера:

Постобработка выборок АЦП.

АЦП используется в качестве источника данных. Он настроен для совместной работы с модулем DFSDM, при этом модуль DFSDM конфигурируется следующим образом:

  • данные на параллельный вход поступают от АЦП: DATMPX[1:0] = 1;
  • АЦП пересылает результаты своей работы по внутренней 16-битной шине непосредственно в регистры параллельного ввода (используется только младшее 16-битное слово). При работе с АЦП упаковывать данные не имеет смысла, поэтому рекомендуется задавать DATPACK[1:0] = 0;
  • модуль DFSDM обрабатывает данные в соответствии с настройками фильтра (FOSR, FORD, IOSR) и формирует выходные отсчеты с меньшей частотой;
  • Постобработка данных, хранящихся в буфере (например, НЧ-фильтрация результатов работы АЦП после программной ВЧ-фильтрации).

Выбирается режим чтения данных из регистров параллельного ввода: DATMPX[1:0] = 2. Процессор может напрямую пересылать данные из буфера в регистры параллельного ввода. Также для загрузки данных в регистры параллельного ввода можно использовать DMA. Режим упаковки данных следует выбирать в соответствии с алгоритмом работы приложения:

  • Если данные хранятся в буфере в 16-битном формате, то для увеличения быстродействия можно использовать значение DATPACK[1:0] = 2. В этом случае одной 32-битной операцией записи можно будет загружать два последовательных отсчета (буфер FIFO).
  • Если данные хранятся в буфере в 16-битном формате и каждый второй отсчет поступает из другого источника (например, нечетные выборки соответствуют левому аудиоканалу, а четные – правому), то для увеличения быстродействия можно использовать значение DATPACK[1:0] = 3. В этом случае одной 32-битной операцией можно будет записать сразу два отсчета (по одному отсчету в регистры параллельного ввода разных каналов).
  • Постобработка данных от другого коммуникационного модуля.

Данные пересылаются из периферийного устройства в заданный регистр параллельного ввода (посредством DMA) и обрабатываются модулем DFSDM. Например, можно подключить к микроконтроллеру внешний АЦП по интерфейсу SPI и использовать модуль DFSDM для НЧ-фильтрации. В этом случае модуль DFSDM настраивается исходя из тех же соображений, что и во втором примере.

Sinc-фильтр

Цифровой фильтр выполняет цифровую обработку сигналов, которые представлены данными, полученными приемниками последовательных или параллельных данных. Данные могут быть как однобитными (приемники последовательных данных), так и в виде 16-битных целых со знаком (приемники параллельных данных). Каждый отсчет, получаемый приемником, автоматически вычитывается цифровым фильтром для обработки. В зависимости от настроек цифрового фильтра, прежде чем на его выходе появятся первые значения, может потребоваться несколько входных отчетов.

Фильтр, реализованный в модуле DFSDM, представляет собой sinc-фильтр нижних частот, также известный как гребенчатый фильтр. Основные параметры этого фильтра:

  • FOSR – коэффициент передискретизации фильтра, который определяет, сколько входных отсчетов используется при вычислении скользящего среднего. Диапазон значений FOSR составляет 1…1024;
  • FORD – порядок фильтра, определяющий количество итераций при вычислении скользящего среднего. Диапазон значений FORD составляет 1…5.

Конфигурация фильтра зависит от требований приложения и обсуждается в следующих разделах.

Параметры НЧ-фильтрации

Прежде всего, нас интересует амплитудно-частотная характеристика фильтра. Графики АЧХ sinc-фильтра для FORD = 1, 3 и 5 при фиксированном значении FOSR = 8 приведены на рисунке 32 (более общие графики были показаны на рисунке 19). Кривые АЧХ на рисунке 32 показывают степень подавления высокочастотных компонентов сигнала за пределами полосы пропускания фильтра (от -20 дБ для FORD = 1 до -100 дБ для FORD = 5). Чем выше порядок фильтра, тем лучшее подавление в области высоких частот он обеспечивает (фильтр нижних частот). Однако при использовании высоких порядков имеет место побочный эффект, который может оказать влияние на сигнал, попадающий в полосу пропускания фильтра. Этот эффект иллюстрируется правым графиком на рисунке 32, на котором показаны в увеличенном масштабе фрагменты АЧХ в полосе пропускания. Как видно из рисунка, характеристика фильтра в полосе пропускания не совсем плоская, а имеет небольшой завал, который увеличивается с ростом частоты и увеличением порядка фильтра. В зависимости от полосы частот входного аналогового сигнала этот завал может повлиять на качество фильтруемого сигнала. При необходимости затухание, обусловленное этим завалом, можно компенсировать, применяя к выходным данным программный компенсационный фильтр.

Рис. 32. АЧХ sinc-фильтра

Рис. 32. АЧХ sinc-фильтра

Те дискретные частоты, на которых ослабление сигнала максимально, называются частотами режекции (рисунок 32). Первая частота режекции (и все ее гармоники) sinc-фильтра не зависит от порядка фильтра FORD, а зависит только от частоты дискретизации и выбранного значения FOSR: fnotch = fsampling / FOSR. Уменьшение FOSR приводит к увеличению расстояния между частотами режекции.

Такая форма АЧХ может оказаться полезной, если нам необходимо максимально ослабить узкополосную помеху, энергия спектра которой сосредоточена в окрестности некоей фиксированной частоты. Например, если приложение чувствительно к наводкам с частотой питающей сети 50 Гц и ее гармоник, рекомендуется настраивать фильтр таким образом, чтобы первый провал АЧХ соответствовал частоте 50 Гц. При такой конфигурации и настройках фильтра можно будет работать с очень слабыми сигналами в среде с относительно высоким уровнем помех.

Разрешение выходных данных

В результате работы sinc-фильтра (вычисления скользящего среднего) происходит увеличение разрешения оцифрованного сигнала (в FOSR раз). Многократное усреднение еще больше увеличивает это разрешение. Итоговое разрешение выходного сигнала (в единицах младшего разряда) определяется по формуле 15:

$$Resolution_{out}=Resolution_{in}\times FOSR^{FORD},\qquad{\mathrm{(}}{15}{\mathrm{)}}$$

где:

  • Resolutionin – разрешение входных данных (2 в случае последовательных входных данных и более в случае параллельных входных данных, например, 4096 для 12-битных входных значений.

Будьте внимательны и не допускайте выхода значения Resolutionout за границы 32-битного диапазона, поскольку все внутренние расчеты фильтр производит в 32-битном формате.

Частота формирования выходных данных

Вследствие работы sinc-фильтра (вычисления скользящего среднего) частота формирования выходных данных уменьшается по сравнению с частотой дискретизации входных данных. Следует отметить, что при непрерывном преобразовании частота формирования выходных данных зависит только от значения FOSR (формула 16):

$$Datarate_{out}=\frac{f_{sampling}}{FORS(равно\:первой\:частоте\:режекции\:f_{notch})}\qquad{\mathrm{(}}{16}{\mathrm{)}}$$

Поскольку Datarateout зависит только от FOSR, а Resolutionout зависит как от FOSR, так и от FORD, рекомендуется сначала подобрать значение FOSR, чтобы обеспечить требуемую частоту выходных данных, а затем скорректировать FORD для достижения требуемого разрешения выходных данных.

Длительность задержки

Под задержкой в данном случае понимается временной интервал между началом работы фильтра (при наличии отсчетов входного сигнала) и первым валидным выходным отсчетом. Эту задержку необходимо учитывать как при включении фильтра (первый отсчет), так и при возобновлении работы фильтра (в случае, если входные отсчеты поступают с перерывами и повторный запуск преобразования производится по некоему сигналу). Фильтр состоит из набора синхронных логических узлов (сумматоров и регистров, реализующих алгоритм вычисления скользящего среднего), состояние которых должно быть проинициализировано валидными данными предыдущих входных отсчетов. В случае приостановки потока входных данных и, соответственно, потери их предыстории, прежде чем выходные данные снова станут валидными, потребуется какое-то время, чтобы внутренняя логика фильтра «заполнилась» корректными значениями. Задержка фильтра определяется по формуле 17:

$$T_{latency}=T_{sampling}\times \left[(FOSR\times FORD)+(FORD+1) \right]\qquad{\mathrm{(}}{17}{\mathrm{)}}$$

Примечание. Теоретически минимальная задержка составляет Tlatency = Tsampling × (FOSR × FORD), однако из-за особенностей реализации фильтра и оптимизации его структуры требуется еще несколько тактов, представленных в формуле 17 членом (FORD + 1).

Моделирование

Модель цифрового фильтра, реализованная в [СИМ.], позволяет:

  • задавать входной сигнал: поток однобитных значений либо 16-битных значений со знаком;
  • изменять параметры фильтра (FOSR, FORD и IOSR);
  • рассчитывать итоговый выходной сигнал и проверять влияние параметров фильтра на него. Пример работы симулятора приведен на рисунке 18.

Интегратор

Блок интегратора имеет единственный параметр конфигурации – IOSR (коэффициент передискретизации интегратора). Работа интегратора заключается в накоплении (суммировании) IOSR последовательных отсчетов с выхода фильтра. Эта операция дополнительно уменьшает частоту формирования выходных данных (в IOSR раз).

При выборе значения IOSR необходимо принимать во внимание следующее:

  • требуемую частоту передачи выходных данных;
  • требуемое число отсчетов с выхода фильтра, необходимое для получения одного выходного значения интегратора.

Аналоговый сторожевой компаратор

Параметры конфигурации аналогового сторожевого компаратора, встроенного в модуль DFSDM, указаны в таблице 3.

Таблица 3. Параметры аналогового сторожевого компаратора модуля DFSDM

Параметр Описание
AWLT Нижний порог сторожевого компаратора. 24-битное число со знаком.
AWHT Верхний порог сторожевого компаратора. 24-битное число со знаком.
AWFSEL Выбор быстрого режима сторожевого компаратора.

0: сторожевой компаратор контролирует 24-битные значения с выхода фильтра;

1: сторожевой компаратор контролирует значения, вычисленные на основе данных входного однобитного потока*

* – Если AWFSEL = 1, то входные последовательные данные фильтруются собственным фильтром сторожевого компаратора, который необходимо настраивать аналогично основному цифровому фильтру:

  • AWFORD: порядок фильтра сторожевого компаратора;
  • AWFOSR = коэффициент передискретизации фильтра сторожевого компаратора.

Поскольку параметры фильтра сторожевого компаратора имеют меньший диапазон допустимых значений (AWFOSR = 1…32, AWFORD = 1…3), максимальная разрядность выходных значений этого фильтра составляет 16 бит. Поэтому при AWFSEL = 1 используются только старшие 16 бит регистров пороговых значений (AWHT [23: 8] и AWLT [23: 8]).

В каждом входном канале имеется компаратор, который сравнивает данные аналогового сторожевого компаратора (выходные значения его фильтра) с пороговыми значениями этого сторожевого компаратора (AWHT/AWLT). Если выбрано несколько каналов (биты AWDCH[7:0] регистра DFSDM_FLTxCR2), то одновременно могут появиться несколько запросов на сравнение. В этом случае запросы обрабатываются последовательно в порядке возрастания номера канала. Результаты сравнения могут сохраняться в виде флагов отдельно для каждого канала (биты AWHTF[7:0] и AWLTF[7:0] регистра DFSDM_FLTxAWSR). Каждое сравнение занимает 1 период тактового сигнала модуля DFSDM. Чтобы иметь возможность выполнить сравнение по всем выбранным каналам, пользователь должен соответствующим образом настроить число контролируемых каналов и параметры фильтра аналогового сторожевого компаратора с учетом частоты дискретизации входного сигнала и тактовой частоты модуля DFSDM.

Аналоговый сторожевой компаратор модуля DFSDM может генерировать сигналы аварийного события и сигналы прерывания. Прерывания используются для активации ЦПУ и требуют обработки со стороны программного обеспечения. Сигналы аварийного события (BKAWH[3:0]) используются для быстрого взаимодействия с другими периферийными устройствами, например, для останова таймеров, формирующих ШИМ-сигналы управления двигателями.

Детектор короткого замыкания

Детекторы короткого замыкания имеются во всех каналах и активируются установкой бита SCDEN регистра DFSDM_CHyCFGR1 соответствующего канала. Пороговое значение детектора короткого замыкания для каждого канала задается полем SCDT[7:0] (диапазон 0…255).

Детектор короткого замыкания содержит инкрементный счетчик, который подсчитывает количество идущих подряд «0» или «1» на выходе приемника последовательных данных. Счетчик перезапускается при каждой смене значения во входном потоке (от «1» к «0» или от «0» к «1»). Если счетчик достигает значения, хранящегося в SCDT[7:0], то формируется событие обнаружения короткого замыкания.

Работу детектора короткого замыкания можно разбить на два этапа, как описано в двух следующих разделах.

Собственно обнаружение короткого замыкания

На этом этапе контролируется ситуация, когда входной сигнал модуля DFSDM переходит в состояние переполнения (выходит за границы диапазона значений внешнего сигма-дельта-модулятора) и остается в этом состоянии дольше допустимого.

Максимально допустимая длительность состояния короткого замыкания в соответствии с требованиями приложения определяется как tshortmax. Это значение преобразуется в максимальное количество идущих подряд «0» или «1», которое заносится в поле SCDT[7:0] и вычисляется по формуле 18:

$$SCDT[7:0]=t_{shortmax}\times f_{sampling}\qquad{\mathrm{(}}{18}{\mathrm{)}}$$

Каждый раз, когда детектор короткого замыкания обнаруживает, что входной сигнал сохраняет стабильность на протяжении SCDT[7:0] отсчетов, формируется сигнал ошибки, сигнализируя о том, что входной сигнал слишком долго находится в насыщении.

Обработка события обнаружения короткого замыкания

Существует два варианта обработки события обнаружения короткого замыкания:

  • Генерация прерывания. Прикладное ПО микроконтроллера (обработчик прерывания) в качестве реакции на данное событие должно выполнить требуемые действия, например, остановить таймеры, генерирующие ШИМ-сигнал управления двигателем.
  • Сигнал аварийного события, конфигурация которого определяется полем BKSCD[3:0], может управлять другими периферийными устройствами без какого-либо участия процессора. К примеру, сигнал аварийного события можно использовать для управления модулем таймера и останова генерации ШИМ-сигнала управления двигателем.

Пропуск импульсов

Модуль DFSDM может использоваться в приложениях, требующих формирования диаграммы направленности массива датчиков для выбора приоритетного направления на источник входного сигнала. Сам алгоритм формирования диаграммы направленности был рассмотрен в разделе «Формирование диаграммы направленности». Данная техника обычно применяется при работе с массивом цифровых микрофонов (микрофонной решеткой).

При конфигурировании модуля DFSDM для реализации алгоритма формирования диаграммы направленности требуется знать значения задержек, которые будут применяться к сигналу от каждого микрофона решетки (рисунок 29). Задержка каждого микрофона вычисляется в соответствии с углом между приоритетным направлением и плоскостью микрофонной решетки, после чего преобразуется в число тактовых импульсов входного последовательного сигнала. Перед настройкой задержек необходимо синхронно запустить прием битовых потоков по всем используемым каналам модуля DFSDM установкой бита глобального разрешения DFSDMEN. После запуска модуля DFSDM вычисленные значения задержек необходимо записать в поле PLSSKP[5:0] соответствующих каналов (однократно для каждого канала). После того, как конфигурирование полей PLSSKP[5:0] будет завершено, программа должна повторно прочитать их содержимое и удостовериться, что оно сброшено в 0 – это будет служить признаком того, что при формировании выходных данных модуля DFSDM были применены требуемые задержки.

При дальнейшей работе программы задержки можно изменять, не прерывая прием аудиоданных, но только в сторону увеличения (загружаемые значения прибавляются к записанным ранее). Программа должна сохранять значения, записываемые в поля PLSSKP[5:0] для каждого канала, и учитывать, что реально формируемая задержка равна сумме всех последовательно записанных значений.

Пример.

Предположим, что были синхронно включены три канала приема сигналов от микрофонов, после чего в поля PLSSKP[5:0] этих каналов были загружены значения задержек 0, 5 и 10, соответствующие требуемому углу φ.

Если требуется изменить угол таким образом, чтобы он стал равен -φ,то в поля PLSSKP[5:0] следует записать значения 20, 10 и 0, соответственно. Итоговая задержка сигнала в используемых каналах составит 20, 15, 10, соответственно (записываемые значения представляют собой разность между задержками, определяющими приоритетное направление, а не абсолютные значения задержки).

Если выключить модуль DFSDM (прекратить обработку данных от всех микрофонов), то при новом синхронном запуске модуля (DFSDMEN = 1) накопленные задержки для всех каналов обнуляются.

Конфигурирование с использованием [СИМ.]

Утилита [СИМ.] предоставляет собой конфигурируемый симулятор, реализующий принципы и формулы, представленные в данной статье, а также модель периферийного модуля DFSDM.

Рис. 33. Конфигурирование модуля DFSDM в [СИМ.]

Рис. 33. Конфигурирование модуля DFSDM в [СИМ.]

Симулятор модуля DFSDM предлагает достаточно простой интерфейс (рисунок 33), как если бы этот модуль был обычным АЦП. Пользователь имеет возможность задавать характеристики входного сигнала и настраивать параметры модуля DFSDM в соответствии с требованиями конкретного приложения, нуждающегося в поддержке аналого-цифрового преобразования (частота дискретизации, режим работы, параметры фильтра и так далее). Пользователь может либо варьировать входные параметры, чтобы достичь желаемого конечного результата (скорость передачи и разрядность выходных данных), либо использовать симулятор для проверки уже определенной конфигурации.

В другом варианте (более детерминированном) сначала проводится предварительный анализ, во время которого требования приложения преобразуются в сценарий цифровой обработки сигналов, перенесенный на архитектуру модуля DFSDM с использованием информации из данной статьи. Такой анализ не всегда прост, и в определенных случаях пользователю может потребоваться принятие компромиссных решений (например, между разрешением и скоростью передачи данных).

Заключение

Периферийное устройство DFSDM имеет продвинутые, подчас сложные для понимания функциональные возможности, которые могут оказаться полезными для многих приложений, использующих аналого-цифровое преобразование. В статье описаны разные области применения модуля DFSDM, преимущества использования этого периферийного устройства и примеры конфигураций, а также приведены различные методические указания.

Симулятор [СИМ.] позволяет быстро оценить различные значения параметров модуля DFSDM и удостовериться, что выбранная архитектура программы и соответствующая конфигурация модуля отвечают требованиям приложения.

Понимание принципов, лежащих в основе функционирования модуля DFSDM, а также того, как их можно реализовать с применением соответствующих средств и методов (для чего и предназначен данный документ), представляет собой важнейшее условие для успешной разработки приложений с использованием модуля DFSDM.

Оригинал

Перевел Андрей Евстифеев по заказу АО КОМПЭЛ

•••

Наши информационные каналы

О компании ST Microelectronics

Компания STMicroelectronics является №1 производителем электроники в Европе. Компоненты ST широко представлены в окружающих нас потребительских товарах – от iPhone до автомобилей разных марок. Лидеры индустриального рынка выбирают компоненты ST за их надежность и выдающиеся технические параметры. В компании ST работает 48 000 сотрудников в 35 странах. Производственные мощности расположены в 12 странах мира. Более 11 тысяч сотрудников заняты исследованиями и разработками – инновационное лидерство ...читать далее

Товары
Наименование
MP34DT01TR-M (ST)
MP34DT05TR-A (ST)
X-NUCLEO-CCA02M1 (ST)