Подключение аналоговых устройств к процессорам Blackfin на примере MEMS-микрофона
Введение
Вычислительные возможности процессоров Blackfin в задачах цифровой обработки сигналов наряду с готовыми программными модулями, реализующими различные алгоритмы обработки звука, позволяют сократить требования к программным и аппаратным средствам при проектировании систем, в которых применяются микрофоны. Используя в системе процессоры Blackfin, разработчики могут добиться низкого энергопотребления и высокой производительности.
MEMS-микрофоны завоевывают все большую популярность при цифровой обработке звука в таких устройствах, как сотовые телефоны, ПК, цифровые фотоаппараты и Bluetooth-гарнитуры. Blackfin — это семейство высокопроизводительных процессоров компании Analog Devices, широко применяемых для обработки сигналов во встраиваемых системах.
MEMS-микрофон ADMP421
ADMP421 — это недорогой, малопотребляющий, ненаправленный MEMS-микро-фон с цифровым выходом, монтируемый вертикально. Микросхема ADMP421 (рис. 1) включает в себя микрофонный элемент, выполненный по технологии MEMS, выходной усилитель и сигма-дельта модулятор 4-го порядка. Цифровой интерфейс микросхемы позволяет мультиплексировать во времени выходы сигналов с МПИ от двух микрофонов на одной линии данных, используя один тактовый сигнал. Метод, при помощи которого осуществляется подобное мультиплексирование, мы обсудим позднее.
Рис. 1. Функциональная блок-схема ADMP421
На рис. 2 изображена временная диаграмма выходных данных микрофона по отношению к тактовому сигналу при разных напряжениях на его выводе L/R. Если вывод L/R соединен с выводом GND, то данные выдаются по переднему фронту тактового сигнала. Если вывод L/R соединен с выводом VDD, то данные выдаются по заднему фронту тактового сигнала.
Рис. 2. Временная диаграмма выходного сигнала микрофона
Микрофон ADMP421 обладает высоким отношением сигнал/шум (ОСШ) и высокой чувствительностью, что позволяет применять его в условиях приема сигнала в дальней зоне. Он также обладает широкополосной частотной характеристикой с малой неравномерностью, что обеспечивает естественное качество звучания с высокой разборчивостью. Малый потребляемый ток микросхемы и наличие режима «сна» дают возможность увеличить срок действия батарей в портативном оборудовании. Встроенный фильтр, отсеивающий мелкие частицы, обеспечивает высокую надежность. И наконец, микрофон ADMP421 соответствует требованиям стандарта TIA-920 Telecommunications Telephone Terminal Equipment Transmission Requirements for Wideband Digital Wire Line Telephones.
Введение в модуляцию плотностью импульсов
Модуляция плотностью импульсов (МПИ) [2] — это одна из форм модуляции, используемых для представления аналогового сигнала в цифровой области. В сигнале с МПИ значения амплитуды сигнала кодируются не уровнями импульсов, как в импульсно-кодовой модуляции (ИКМ), а их относительной плотностью концентрации.
В потоке битов с модуляцией плотностью импульсов «1» соответствует импульсу положительной полярности (+A), а «0» — импульсу отрицательной полярности (-A). Математически это преобразование можно представить в виде формулы:
x[n] = -A(-1)a[n], (1)
где x[n] — это поток биполярных символов (-A или +A); a[n] — соответствующий поток двоичных битов (0 или 1).
Для преобразования потока битов с МПИ в многобитный звуковой сигнал в сигма-дельта аналого-цифровых преобразователях (АЦП) обычно используются децимирую-щие фильтры. Наиболее широко применяется подход, когда в качестве первого каскада децимации используются CIC-фильтры (которые также называют SINC-фильтрами) для понижения частоты дискретизации, к выходу которых подключаются полуполосные (half-band) фильтры нижних частот с коэффициентом децимации 2:1, убирающие генерируемый в процессе сигма-дельта модуляции высокочастотный шум и обеспечивающие дополнительную децимацию. В этой статье демонстрируется способ организации интерфейса между процессором Blackfin и MEMS-микрофонами без использования дополнительных компонентов, основанный на программной реализации упомянутых выше фильтров.
Проектирование структуры системы
Блок-схема разрабатываемой системы представлена на рис. 3. Данные, поступающие от микрофона, подвергаются процессу децимации, который состоит из трех этапов. На первом этапе децимирующий CIC-фильтр преобразует однобитный поток данных с МПИ в многоразрядные данные, а затем два полуполосных фильтра с коэффициентом децимации 2:1 и фильтр с конечной импульсной характеристикой (КИХ) устраняют высокочастотный шум, порождаемый процессом сигма-дельта модуляции в микрофоне. Воссозданный звуковой сигнал посылается на ЦАП для воспроизведения.
Рис. 3. Подключение двух MEMS-микрофонов к процессору Blackfin
Аппаратный интерфейс
MEMS-микрофон ADMP421 подключается к процессору Blackfin через последовательный порт SPORT. Микрофоны могут выдавать поток данных с МПИ по переднему либо заднему фронту тактового сигнала, в зависимости от логического уровня сигнала на выводе L/R. Способ подключения одиночного микрофона к процессору очевиден. Все, что необходимо сделать, — это подать на микрофон и порт SPORT один и тот же тактовый сигнал (с частотой в диапазоне от 1 до 3 МГц) и принимать данные с МПИ через порт SPORT процессора. При этом вывод L/R микрофона подключается к GND или VDD. Для подключения к одной последовательной линии данных двух таких микрофонов вывод L/R одного из них необходимо заземлить, а второго — подключить к VDD. В таком случае микрофоны будут выдавать данные по противоположным фронтам тактового сигнала. Чтобы SPORT мог принимать данные от обоих микрофонов, они должны тактироваться сигналом, имеющим частоту в два раза меньше частоты, на которой осуществляется прием по SPORT. Эти тактовые сигналы могут генерироваться либо внешним источником, либо самим портом SPORT. Сигма-дельта модуляция звуковых сигналов в микрофоне осуществляется на частоте подаваемого на него тактового сигнала.
Программные процедуры
Частота, с которой микрофон выдает данные в формате с МПИ (которая, в свою очередь, равна частоте входного тактового сигнала микрофона), должна быть кратна требуемой частоте дискретизации выходного звукового сигнала в системе. Так, например, в рассматриваемой реализации схемы используется децимация в 32 раза. Таким образом, для получения выходных отсчетов с частотой дискретизации 96 кГц на микрофон необходимо подать тактовый сигнал, имеющий частоту 3,072 МГц. При интерфейсе с двумя микрофонами тактовая частота, на которой работают микрофоны, остается прежней, а SPORT должен работать на удвоенной частоте для получения битов данных от обоих микрофонов. При любом из вариантов программные процедуры должны работать с отдельными битами (а не со словами), поскольку данные, поступающие от MEMS-микрофона, представляют собой однобитный поток с МПИ. При интерфейсе с двумя микрофонами данные в приемном буфере будут чередоваться побитно, и программное обеспечение должно обеспечить раздельную обработку данных от отдельных микрофонов.
Поскольку сигма-дельта модулятор в микрофоне имеет 4-й порядок, в процессоре Blackfin для воссоздания аудиопотока реализован CIC-дециматор 5-го порядка. За каскадом CIC следуют два каскада полуполосных фильтров с коэффициентами децимации 2:1 и каскад фильтра нижних частот, на выходе которого выдаются многобитные отсчеты звукового сигнала. Разработчики могут добавить после каскада КИХ-фильтра собственные алгоритмы обработки звукового сигнала, получаемого от микрофона (например, алгоритмы сжатия). Подробности реализации описываемых в статье методов можно наити в примере программы [6].
Идентификация данных конкретного микрофона в потоке данных с чередованием
При интерфейсе с двумя микрофонами данные в приемном буфере будут чередоваться по-битно. Это означает, что биты, соответствующие одному микрофону, будут следовать через один. Чтобы понять, какому из микрофонов принадлежат биты, вам необходимо просто подключить тактовый сигнал микрофонов (частота которого равна половине от частоты, на которой работает SPORT) к выводу сигнала кадровой синхронизации порта SPORT и настроить порт для работы в режиме без кадровой синхронизации. При этом SPORT начнет прием данных по первому переднему фронту тактового сигнала микрофонов, и первый бит будет соответствовать микрофону, вывод L/R которого подключен к VDD (то есть микрофону, который выдает данные по переднему фронту тактового сигнала). Более подробную информацию о синхронизации микрофонов можно найти в техническом описании ADMP421 [5]. В любом случае поток данных в буфере будет начинаться с данных, полученных именно от этого микрофона, а программное обеспечение должно быть написано таким образом, чтобы данные от разных микрофонов обрабатывались по раздельности.
CIC-фильтры
CIC-фильтры — это класс КИХ-фильтров с линейной фазой, которые состоят из каскадов гребенчатых фильтров и каскадов интеграторов. Передаточная характеристика децимирующего CIC-фильтра имеет вид [1]:
где НI — это передаточная характеристика интегратора; Нс — передаточная характеристика гребенчатого фильтра; N — количество каскадов (количество каскадов СІС-фильтра по определению равно количеству каскадов в секции гребенчатых фильтров или количеству каскадов в секции интеграторов, а не полному количеству каскадов во всем фильтре); R — коэффициент децимации; М — дифференциальная задержка.
На рис. 4 изображена блок-схема деци-мирующего С1С-фильтра 5-го порядка, используемого для восстановления звукового сигнала, которая включает в себя интеграторы, гребенчатые фильтры и блок понижения частоты дискретизации.
Рис. 4. Блок-схема CIC-дециматора 5-го порядка
На рис. 5 и 6, которые получены при помощи программного пакета MATLAB, представлены частотная и импульсная характеристики децимирующего С1С-фильтра 5-го порядка с коэффициентом децимации 8.
Рис. 5. Частотная характеристика CIC-фильтра
Рис. 6. Импульсная характеристика CIC-фильтра
Программная реализация децимирующего С1С-фильтра
Децимирующий С1С-фильтр, который играет основную роль в разрабатываемом приложении, был реализован на языке С. Процесс обработки данных в программе иллюстрирует фрагмент кода (листинг 1).
Полуполосная фильтрация
Полуполосные фильтры широко используются в задачах преобразования частоты дискретизации, когда коэффициент интерполяции или децимации равен двум.
Листинг 1.
/* Программная реализация децимирующего CIC-фильтра, вызываемая по завершении накопления каждого нового входного буфера */
/* Для обработки данных одного из микрофонов выполняется цикл по 16 битам с инкрементом, равным двум, что дает в итоге децимацию в восемь раз */
/* Функция GetBit() извлекает одиночный бит из принятых данных в формате с МПИ, содержащихся в буфере */
//Вычисление операции «сигма» (накопления) данных с МПИ от микрофона левого //канала (L)
for (i =0; i<16; i=i+2)
{
Sigma_L_1 += GetBit(buff,j,i); Sigma_L_2 += Sigma_L_1; Sigma_L_3 += Sigma_L_2; Sigma_L_4 += Sigma_L_3; Sigma_L_5 += Sigma_L_4;
}
//Вычисление операции «дельта» (разности) данных с МПИ от микрофона левого //канала (L)
Delta_L_1 = Sigma_L_5 — OldSigma_L_5;
Delta_L_2 = Delta_L_1 — OldDelta_L_1;
Delta_L_3 = Delta_L_2 — OldDelta_L_2;
Delta_L_4 = Delta_L_3 — OldDelta_L_3;
Result1 = Delta_L_4 — OldDelta_L_4;
/* Многоразрядные данные с микрофона L, которые будут передаваться на последующие этапы децимирующих КИХ-фильтров, сохраняются в переменной Result1. При работе 5 каскадов с коэффициентом децимации 8 разрядность чисел, представляемых этой переменной, может возрастать до 13 битов. Если разработчики хотят работать с более высоким коэффициентом децимации (например, 16) в CIC-фильтре, необходимо позаботиться о росте разрядности в его внутренних регистрах. */
input1[j] = Result1;
/* Аналогичную процедуру необходимо выполнить для данных со второго микрофона. Более подробно ознакомиться с работой программы можно при помощи кода, который включен в состав архива, сопровождающего эту статью */
}
Полуполосные фильтры обладают двумя важными характеристиками: неравномерность их характеристики в полосе пропускания и в полосе непропускания должна быть одинаковой, а граничные частоты полос пропускания и непропускания отстоят от частоты середины диапазона (рі/2) на одинаковое расстояние.
КИХ-фильтр нижних частот
После каскада С1С-фильтра необходимо обеспечить низкочастотную фильтрацию для устранения высокочастотного шума, вносимого процессом аналого-цифрового
преобразования в микрофоне. Для генерации коэффициентов КИХ-фильтра был использован пакет MATLAB, а для программной реализации фильтра — библиотечные функции фильтрации с КИХ, оптимизированные для работы с 16-битными дробными числами в процессоре Blackfin. Частотная характеристика 297-звенного КИХ-фильтра нижних частот с полосой 6 кГц приведена на рис. 7.
Рис. 7. Амплитудно-частотная характеристика КИХ-фильтра нижних частот
Результаты экспериментов
Для проведения экспериментов использовалась конфигурация с двумя MEMS-микро-фонами, подключенными к одному порту SPORT процессора Blackfin. В качестве аппаратной платформы для интерфейса с микрофонами была использована оценочная плата ADSP-BF533 EZ-KIT Lite. Однако для этих целей подойдет и любая другая оценочная плата с процессором семейства Blackfin.
Микрофоны в тестовой конфигурации работают от тактового сигнала с частотой 3,072 МГц, а SPORT принимает данные на частоте 6,144 МГц. Принимаемый поток данных с МПИ обрабатывается CIC-дециматором, понижающим частоту дискретизации в 8 раз, и выдается в виде 13-битных отсчетов с частотой 384 кГц. Выходные отсчеты CIC-фильтра поступают на два последовательных каскада децимирующих полуполосных КИХ-фильтров с коэффициентом преобразования частоты отсчетов 2:1. Последний каскад обработки — это КИХ-фильтр нижних частот, работающий с частотой следования отсчетов 96 кГц.
Для реализации алгоритма в режиме реального времени большую пользу представляет режим DMA процессора Blackfin с дескрипторами.
Ядро процессора Blackfin в тестовой конфигурации работает на частоте 594 МГц. В таблице перечислены значения количества тактов ядра, необходимых для формирования одного отсчета данных при реализации различных каскадов фильтрации, в вариантах интерфейса с одним и двумя микрофонами.
На рис. 8-12 представлены данные с МПИ, получаемые на выходе микрофона при подаче на него синусоидального входного сигнала, и формы сигнала на каждом из этапов процесса децимации. Рисунки получены при помощи окна вывода графиков (Plot) среды VisualDSP++.
Рис. 8. Данные с МПИ, поступающие с выхода микрофона
Рис. 9. Выход децимирующего CIC-фильтра
Рис. 10. Выход первого полуполосного децимирующего фильтра
Рис. 11. Выход второго полуполосного децимирующего фильтра
Рис. 12. Выход заключительного каскада КИХ-фильтра нижних частот
Заключение
В статье была продемонстрирована организация интерфейса между MEMS-микрофоном и процессором Blackfin без применения дополнительных компонентов. Поскольку аппаратный интерфейс осуществляется через последовательный порт процессора, обсуждаемая концепция может также быть распространена на интерфейс MEMS-микрофона с процессорами семейства SHARC компании Analog Devices. Применение последнего семейства процессоров SHARC 214xx очень привлекательно с точки зрения вычислительной производительности, благодаря наличию в них аппаратных акселераторов, которые могут быть использованы для выполнения низкочастотной КИХ-фильтрации параллельно с другими вычислениями.
Литература
- Hogenaeur E. B. An Economical Class of Digital Filters for Decimation and Interpolation // IEEE transactions on acoustics, speech, and signal processing. Vol. assp-29, No. 2. April 1981.
- http://en.wikipedia.org/wiki/Pulse-density_modulation
- ADSP-BF531/ADSP-BF532/ADSP-BF533: Blackfin Embedded Processor Data Sheet. Rev G, May 2010. Analog Devices Inc.
- ADSP-BF533Blackfin Processor Hardware Reference. Rev 3.4, April 2009. Analog Devices Inc.
- ADMP421 Omnidirectional Microphone with Bottom Port and Digital Output Data Sheet. Rev 0, April 2010. Analog Devices Inc.
- http://www.analog.com/static/imported-files/application_notes/EE350v01.zip