Вход |  Регистрация
 
 
Время электроники Вторник, 26 сентября
 
 


Это интересно!

Новости


Обзоры, аналитика


Интервью, презентации

Ранее

ВЫСОКОКАЧЕСТВЕННЫЕ МИКРОСХЕМЫ ДЛЯ АУДИОПРИЛОЖЕНИЙ

В статье рассмотрены высококачественные микросхемы (приемопередатчики S/PDIF, SRC-преобразователи, цифровые сигнальные процессоры семейства SHARC, ЦАП и ОУ), ориентированные на применение в аудиоаппаратуре высокого класса различного назначения.

Фундаментальные основы обработки видеоизображений. Часть 1

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

ЧИПСЕТЫ NATIONAL SEMICONDUCTOR ДЛЯ SD/HD/3G SDI-ИНТЕРФЕЙСОВ. Часть 1

Разработкой нового семейства чипсетов для поддержки стандарта 3G SDI компания National Semiconductor расширила портфолио продукции «лучший в своем классе», предназначенной для применения в профессиональной и телевещательной видеоаппаратуре. Семейство чипсетов обеспечивает функции передачи и приема цифровых видеосигналов со скоростями передачи до 3Гбит/с по стандартному телевизионному 75-Ом кабелю на расстояния от 100 до 350 м. Новое семейство чипсетов SD/HD/3G SDI предназначено для замещения линейки CLCxxx.

 

12 марта

Основы обработки звука во встраиваемых системах. Часть 2

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



Форматы данных

Существует много способов представления данных внутри процессора. Как правило для обработки звука используются две архитектуры процессоров — с фиксированной и с плавающей точками. Процессоры с фиксированной точкой поддерживают целочисленную и дробную арифметику и обычно работают с 16-, 24- или 32-разрядными данными. Процессоры с плавающей точкой имеют высокую производительность и поддерживают 32- или 64-разрядные данные с плавающей точкой, однако обычно они потребляют больше мощности и стоят дороже. Поэтому в большинстве случаев разработчику приходится искать компромисс между качеством звука и стоимостью затрат.

 

Арифметика с фиксированной точкой

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

 

Арифметика с плавающей точкой

Запись чисел в формате с плавающей точкой очень похожа на научное представление рациональных чисел. Числа записываются при помощи мантиссы и  экспоненты, которые определяют, соответственно, точность и динамический диапазон.
Операции с плавающей точкой в цифровых процессорах регулируются стандартом IEEE 754, в котором используется следующий формат записи чисел. Бит 31 (старший бит) — это знаковый бит (sign_bit), равный нулю для положительных чисел и единице для отрицательных. Биты 30—23 — это поле экспоненты (exp_field), соответствующее значению степени двойки со смещением, равным 127. И наконец, биты 22—0 — это дробная мантисса (mantissa). Формат также подразумевает наличие скрытого бита со значением 1, который находится слева от точки:

 

(–1)sign_bit (1,mantissa) 2exp_field – 127.

 

В таблице 1 перечислены минимальные и максимальные положительные величины, которые могут быть выражены при помощи некоторых стандартных типов данных.

 

Таблица 1. Диапазон возможных значений при использовании различных типов данных

Тип данных Наименьшее положительное значение Наибольшее положительное значение
IEEE-754 с плавающей точкой (одинарная точность) 2–126 ≈ 1,2∙10–38 2128 ≈ 3,4∙1038
п. 1.15: 16-разрядные с фиксированной точкой 2–15 ≈ 3,1∙10–5 1 – 2–15 ≈ 9,9∙10–1
п. 1.23: 24-разрядные с фиксированной точкой 2–23 ≈ 1,2∙10–7 1 – 2–23 ≈ 9,9∙10–1

 

Эмуляция форматов на 16-разрядных процессорах

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

 

Эмуляция плавающей точки на процессорах с фиксированной точкой

Для большинства 16-разрядных процессоров с фиксированной точкой сущест­вуют библиотеки, которые, в соответствии со стандартом IEEE 754, реализуют операции над числами с плавающей точкой путем их эмуляции при помощи арифметики с фиксированной точкой. Такая эмуляция требует дополнительных процессорных циклов, однако в связи с тем, что частота ядер современных процессоров с фиксированной точкой достигла диапазона 500 МГц…1 ГГц, во многих случаях дополнительная нагрузка не столь существенна.
Чтобы ускорить вычисления, можно использовать «облегченную» версию стандарта IEEE 754, в которой отсутствует, например, поддержка значений ±∞, «ноль» и NaN. Дальнейшая оптимизация заключается в представлении мантиссы и экспоненты с помощью более типичных для процессора типов данных. Возьмем, к примеру, процессоры с фиксированной точкой Blackfin производства Analog Devices, где имеется регистровый файл, состоящий из шестнадцати 16-разрядных регистров, которые можно также использовать как восемь 32-разрядных регистров. Для оптимального использования регист­рового файла число с плавающей точкой может быть представлено парой 16-разрядных слов, из которых одно резервируется под экспоненту, а другое — под дробную часть числа.

Эмуляция чисел с фиксированной точкой с двойной точностью

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

 

Точная 32-разрядная эмуляция

В 16-разрядных процессорах к регистрам регистрового файла можно обращаться как к двум 16-разрядным половинам одного регистра, и эти половины могут объединяться для представления единого 32-разрядного числа. Архитектура процессора Blackfin на аппаратном уровне поддерживает сложение и вычитание 32-разрядных чисел с фиксированной точкой, представленных подобным образом за один такт. Процесс умножения 32-разрядных чисел с фиксированной точкой, содержащихся в 32-разрядных регистрах R0 и R1, иллюстрирует рисунок 1.

 

Рис. 1. Умножение 32-разрядных чисел с фиксированной точкой, содержащихся в 32-разрядных регистрах R0 и R1

 

После необходимого масштабирования для представления в формате 1.31 окончательное выражение для 32-разрядного умножения будет иметь вид: ((R1.L x R0.L) >> 32 + (R1.L x R0.H) >> 16) + ((R1.H x R0.L) >> 16 + R1.H x R0.H). Возможность параллельного выполнения команд в архитектуре процессоров Blackfin позволяет реализовать подобную операцию за три цикла.

 

Эмуляция с 31-разрядной точностью 

При понижении точности представления до 31 бита количество циклов, необходимых для перемножения чисел с фиксированной точкой, можно снизить до двух. Этот метод особенно подходит для аудиосистем, в которых обычно требуется представление чисел с разрядностью не менее 24 бит, а 32-разрядная точность может быть излишней.
Из рисунка 1 следует, что умножение младших половин слов R1.L × R0.L не вносит больших корректив в окончательный результат. Поскольку результат усекается для представления в формате 1.31, операция умножения повлияет только на младший бит результата. Во многих приложениях потеря точности, вызванная потерей одного разряда, компенсируется ускорением вычислений. Выражение для умножения с 31-разрядной точностью имеет вид: ((R1.L × R0.H) + (R1.H × R0.L)) >> 16 + + (R1.H × R0.H). В архитектуре процессоров Blackfin подобная операция может быть реализована за два цикла.

 

Методы обработки аудиосигналов

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

 

Блочная обработка и обработка отдельных отсчетов

Существуют два подхода к обработке цифровых аудиосигналов — обработка отдельных отсчетов и блочная обработка. В первом случае процессор обрабатывает данные по мере их поступления, и в каждом периоде дискретизации возникают непроизводительные издержки. Подобным образом реализуются многие фильтры, поскольку эффективная задержка при этом меньше, чем при блочной обработке.
Во втором случае перед обработкой данных необходимо заполнить буфер определенной длины. При поступлении каждого отсчета не нужно вызывать подпрограмму обработки, поэтому непроизводительные издержки значительно сокращаются. Кроме того, многие процессоры для встраиваемых систем содержат несколько вычислительных узлов (например, умножителей или АЛУ), что позволяет обрабатывать блоки данных параллельно. И, что еще важнее, некоторые алгоритмы (например, преобразование Фурье) изначально ориентированы на блочную обработку данных.

 

Двойная буферизация

Чтобы избежать одновременных обращений ядра и контроллера DMA к одному элементу в системах с блочной обработкой данных, необходимо использовать схему с двойной буферизацией. В этой схеме для работы с буфером длиной N создается сдвоенный буфер длиной 2N. Для двунаправленных систем необходимо создать два буфера длиной 2N.

 

Рис. 2. Схема с двойной буферизацией

 

Пока ядро обрабатывает буфер in 1 и помещает результат в буфер out 1 (см. рис. 2а),  контроллер DMA заполняет in 0 и передает данные из out 0. Как только контроллер DMA заканчивает работать с левыми половинами сдвоенных буферов, он начинает заполнять in 1 и передавать данные из out 1, а ядро переходит к обработке данных из in 0 и заполнению out 0 (см. рис. 2б). В системах реального времени обработка блока не должна занимать больше времени, чем затрачивает контроллер DMA на пересылку половины сдвоенного буфера.

 

Двумерный DMA (2D DMA)

Поток, передаваемый по цифровому каналу, может содержать данные нескольких каналов, которые мультиплексируются в одну линию данных, как, например, в формате I2S. В этом случае для разбора данных отдельных каналов и их линейного упорядочивания в памяти может использоваться механизм 2D DMA (см. рис. 3).

 

Рис. 3. Схема механизма 2D DMA

 

Базовые операции

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

 

Формирование сигналов


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

 

Фильтрация и алгоритмы

Цифровые фильтры используются в аудиосистемах для ослабления или усиления энергии звукового сигнала  на определенных частотах. Наиболее распространенными типами фильт­ров являются фильтры нижних частот, фильтры верхних частот, полосовые и режекторные фильтры. Любой из этих фильтров может быть реализован двумя способами: в виде фильтра с конечной импульсной характеристикой (КИХ) или фильтра с бесконечной импульсной характеристикой (БИХ).

 

Фильтры с конечной импульсной характеристикой

Выходной сигнал КИХ-фильтра определяется суммой текущего и предыдущих отсчетов сигнала, умноженных на соответствующие коэффициенты фильтра. Структура КИХ-фильтра и уравнение, описывающее его работу, которое также называется «сверткой», приведены на рисунке 4а.

 

Рис. 4. Структуры КИХ- и БИХ-фильтров

 

В этой записи x — входной вектор; y — выходной вектор; h — массив коэффициентов фильтра. Свертка — это настолько распространенная операция в обработке мультимедийных данных, что во многих процессорах реализовано выполнение команды умножения-накопления (MAC) одновременно с несколькими обращениями (чтением и записью) к памяти за один цикл.

 

Фильтры с бесконечной импульсной характеристикой

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

 

Быстрое преобразование Фурье

Зачастую с аудиосигналами удобнее работать в частотной области.  Для преобразования сигнала из временной области в частотную используется преобразование Фурье. Обратное преобразование Фурье выполняет преобразование из частотной области во временную. Существует определенная взаимосвязь между операциями в частотной и  во временной областях. Так, свертка во временной области (или пропускание сигнала через КИХ-фильтр) эквивалентна умножению в частотной области. Это свойство не имело бы большого практического значения, если бы не существовала оптимизированная реализация преобразования Фурье, которая называется быстрым преобразованием Фурье (БПФ). Во многих случаях реализовать КИХ-фильтр с большим количеством коэффициентов проще путем вычисления спектра сигнала, его умножения на частотную характеристику фильтра и взятия обратного преобразования от результата умножения.
При обработке аудиосигналов часто применяются и другие преобразования, например модифицированное дискретное косинусное преобразование (MDCT), которое является базисным для многих алгоритмов сжатия аудиосигналов.

 

Преобразование частоты дискретизации

В некоторых задачах возникает необходимость преобразовать сигнал, оцифрованный с одной частотой, в сигнал, оцифрованный с другой частотой. Это может потребоваться, например, в случаях, когда нужно выдать сигнал, оцифрованный с низкой частотой, на более высокочастотный ЦАП, или, если требуется, сократить количество вычислений за счет понижения частоты сигнала с избыточной дискретизацией.
Процесс повышения частоты дискретизации называется интерполяцией, а процесс ее понижения — децимацией. Децимация сигнала в М раз достигается взятием каждого М-го отсчета и отбрасыванием остальных. Интерполяция сигнала в L раз обеспечивается добавлением в сигнал L – 1 нулей между каждыми двумя отсчетами. Чтобы реализовать рациональные коэффициенты преобразования, операции интерполяции и децимации могут применяться последова-тельно.
Нужно отметить, что процесс преобразования частоты дискретизации описан здесь упрощенно. На практике перед выдачей интерполированного сигнала или перед его подачей на вход дециматора он должен быть пропущен через ФНЧ с особой структурой для устранения гармоник, появляющихся из-за добавления нулей. Аналогичным образом перед децимацией входные сигналы для предотвращения спект­ральных наложений должны быть отфильтрованы в ФНЧ специальной формы.



Вы можете скачать эту статью в формате pdf здесь.
Оцените материал:

Автор: Дэвид Катц, Рик Джентайл, Томаш Лукасек (David Katz, Rick Gentile, Tomasz Lukasiak), инженеры компании Analog Devices



Комментарии

0 / 0
0 / 0

Прокомментировать





 

Горячие темы

 
 




Rambler's Top100
Руководителям  |  Разработчикам  |  Производителям  |  Снабженцам
© 2007 - 2017 Издательский дом Электроника
Использование любых бесплатных материалов разрешено, при условии наличия ссылки на сайт «Время электроники».
Создание сайтаFractalla Design | Сделано на CMS DJEM ®
Контакты