Научная статья на тему 'Моделирование основных процессов цифровой обработки информации'

Моделирование основных процессов цифровой обработки информации Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
353
48
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Борисов С. С., Шаронов А. А., Кузнецов И. И.

Приводится краткое описание теории цифровой обработки сигналов (ЦОС). Модель последовательности цифровой обработки сигнала, а также пример работы программы «Basic DSP» версии 1.0 на языке Delphi в среде Borland Delphi.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Моделирование основных процессов цифровой обработки информации»

УДК 621. 399

С.С. Борисов, А.А. Шаронов, И.И. Кузнецов

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

МОДЕЛИРОВАНИЕ ОСНОВНЫХ ПРОЦЕССОВ ЦИФРОВОЙ ОБРАБОТКИ ИНФОРМАЦИИ

Приводится краткое описание теории цифровой обработки сигналов (ЦОС). Модель последовательности цифровой обработки сигнала, а также пример работы программы «Basic DSP» версии 1.0 на языке Delphi в среде Borland Delphi.

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

Алгоритмы БПФ с основанием 2. Алгоритмы БПФ хорошо известны и широко используются, но при первом ознакомлении с ними они по ряду причин достаточно трудны для понимания. В литературе [1, 3-6], встречается несколько различных подходов к описанию алгоритмов БПФ. Например, ввиду сложности операции перестановки данных ее проще всего понять на конкретных примерах.

Дискретное преобразование Фурье (ДПФ) конечной последовательности {x(n)} , где 0 < n < N — 1:

N—1

х (k) = X x(n)e"j(2n/N )nk, (1)

n=0

где k = 0,1,...,N - 1 или в более удобной форме

N—1

X (k) = X x(n)Wnk, (2)

n=0

где W = e~j(2n)/ N . Легко показать, что Wnk является периодической последовательностью с периодом N, т.е.

W(n+mN )(k+1N) = wnk (3)

где m, l = 0,±1,...

Периодичность Жпк является одним из ключевых моментов БПФ. Часто периодичность подчеркивают тем, что вместо Ж записывают .

Из соотношения (1) следует, что в случае, когда последовательность х(п) является комплексной, при прямом вычислении ^-точечного ДПФ нужно выполнить N - 1) комплексных умножений и NN - 1) комплексных сложений. Таким образом, для достаточно больших N (порядка 1000) прямое вычисление ДПФ требует выполнения чрезмерного количества вычислительных операций. Основная идея БПФ состоит в том, чтобы разбить исходную ^точечную последовательность на две более короткие последовательности, ДПФ которых могут быть скомбинированы таким образом, чтобы получилось ДПФ исходной N-точечной последовательности. Так, например, если N четное, а исходная N-точечная последовательность разбита на две

^/2)-точечные последовательности, то для вычисления искомого

22

^точечного ДПФ потребуется порядка (N/2) 2 = N /2 комплексных умножений, т.е. вдвое меньше по сравнению с прямым вычислением. Здесь множитель (N/2) дает число умножений, необходимое для прямого вычисления ^/2)-точечного ДПФ, а множитель 2 соответствует двум ДПФ, которые должны быть вычислены. Эту операцию можно повторить, вычисляя вместо (N/2)-точечного ДПФ два ^/4)-точечных ДПФ (предполагая, что N/2 четное) и сокращая тем самым объем вычислений еще в два раза. Выигрыш в два раза является приближенным, поскольку не учитывается, каким образом из ДПФ меньшего

размера образуется искомое ^точечное ДПФ.

Проиллюстрируем описанную методику для N-точечной последовательности {х(п)}, считая, что N равно степени 2. Введем две ^/2)-точечные последовательности {х1(п)} и {х2(п)} из четных и нечетных членов {х(п)} соответственно, т. е.

х1(п) = х(2п), п = 0,1,.., N /2 -1, (4)

х2(п) = х(2п +1), п = 0,1,.., N /2 -1. (5)

N-точечное ДПФ последовательности {х(п)} можно записать как

N-1 N-1

X (к) = X х(п)ж;к + X х(п)< =

п=0 п=0 / г\

(6)

N/2-1 N/2-1 4 '

= X х(2п)Ж2пк + X х(2п + 1)^2п+1)к.

п=0 п=0

С учетом того, что

= [е] (2п 7 N }]2 = еЛ2п /(N/2)] = /2, (7)

перепишем выражение (6) в виде

N/2-1 N/2-1

X(к) = £х,(птЇ2 + w;^2 I^(и)^. (8)

И=0 и=0

X (Л) = ) + ^Х2(к), (9)

где Х\(к) и Х2(к) равны (^/2)-точечным ДПФ последовательностей Х\(п) и х2(п).

Из формулы (8) следует, что ^-точечное ДПФ Х(к) может быть разложено на два (М2)-точечных ДПФ, результаты которых объединяются согласно (9). Если бы (М2)-точечные ДПФ вычислялись обычным способом, то для вычисления ^-точечного ДПФ потребовалось бы очевидно (N2 /2 + N) комплексных умножений. При больших N (когда (М2/2>>Ы) это позволяет сократить время вычисления на 50 %.

Поскольку Х(к) определено при 0 < к < N - 1, а Х\(к) и Х2(к) определены при 0 < к < N/2 - 1, необходимо доопределить формулу (9) для к >> N/2. Это определение достаточно очевидно и может быть описано следующим образом:

I ад*«ухк < ^-1. (10)

[Х1(к - N/2) + Ж£Х2(к - N/2),N/2 < к < N -1.

На рис. 1 с помощью направленного графа представлена последовательность операций при выполнении восьмиточечного ДПФ с использованием двух четырехточечных преобразований.

Входная последовательность х(п) сначала разбивается на две последовательности х1(п) и х2(п) из четных и нечетных членов х(п), после чего рассчитываются их преобразования Х1(к) и Х2(к).

Затем в соответствии с формулой (10) получают Х(к).

Рассмотренная схема вычислений может быть использована для расчета М2-точечных ДПФ в соответствии с формулами (9) и (10). Каждая из последовательностей х1(п) и х2(п) разбивается на две последовательности, состоящие из четных и нечетных, членов. Анало-

гично М2-точечные ДПФ могут быть записаны как комбинации двух М4-точечных ДПФ, т.е.

Хх(к) = А(к) + ^/2 В(к) (11)

или

Хх{к) = А (к) + Щк/2 В (к ), (12)

где 0 < к < N/2 - 1, А (к) и В(к) - ^4-точечные ДПФ соответственно

четных и нечетных членов х1(п). На рис. 2 показан результирующий

направленный граф, в котором четырехточечные ДПФ из рис. 1 рассчитываются согласно (12).

Х 1(0) = х(0)

Х1(1) = х(2)

Х1(2) = х(4)

Х 1(3) = х(6)

Х 2(0) = х(1)

Х 2(1) = х(3)

Х 2(2) = х(5)

Х 2(3) = х(7)

Рис. 1. Вычисление восьмиточечного ДПФ через два четырехточечных ДПФ

Процесс уменьшения размера ДПФ от Ь до Ь/2, где Ь равно степени 2, может быть продолжен до тех пор, пока не останутся только двухточечные ДПФ.

Двухточечное ДПФ F(к), к = 0,1, может быть рассчитано без использования умножений по формулам:

(0) = / (0)+/ (1)Щ0, (13)

(1) = / (0) + / (1)^84. (14)

Здесь _Дп), п=0,1, - преобразуемая двухточечная последовательность. Поскольку Щ0 = 1 и Щ4 = -1, для вычислений по формулам (13) действительно не нужны операции умножения.

а(0) = х1 (0) = х(0) а(1) = х1(2) = х(4) Ь(0) = х1(1) = х(2) Ь(1) = х1(3) = х(6) с(0) = х2(0) = х(1) с(1) = х2(2) = х(5) ё (0) = х2(1) = х(3) ё (1) = х2(3) = х(7)|

1(0 1(1 1(2 1(3 2(0. 2(1 2 ( 2(3

Рис. 2. Вычисление восьмиточечного ДПФ через два четырехточечных ДПФ, которые в свою очередь вычисляются через четыре двухточечных ДПФ

Таким образом, восьмиточечное ДПФ (рис. 1, 2) в итоге сводится к алгоритму, описываемому направленным графом, представленным на рис. 3.

X (7)

Рис. 3. Восьмиточечное ДПФ, полученное последовательным прореживанием в 2 раза

Перестановка данных и двоичная инверсия. Еще одной особенностью алгоритма с прореживанием по времени (как, впрочем, и большинства других алгоритмов БПФ) является необходимость такой перестановки элементов входной последовательности, чтобы выходная последовательность Х(к) имела естественный (прямой) порядок расположения, т. е. к = 0,1,.... В примере на рис. 3 для этого требовался следующий порядок размещения входной последовательности: х(0), х(4), х(2), х(6), х(1), х(5), х(3) и х(7). Характер перестановки элементов входной последовательности может быть описан сравнительно просто. Ниже будет показано, что в случае, когда N является степенью 2, входная последовательность должна быть расположена в памяти в двоично-инверсном порядке для того, чтобы выходная последовательность получалась в прямом порядке. Двоично-инверсный порядок определяется следующим образом.

Если записать порядковые номера элементов входной последовательности в двоичном коде, используя Ь двоичных разрядов, причем N = 2Ь, а затем инвертировать порядок следования разрядов, то получаемые при этом числа и будут номерами элементов входной последовательности после их перестановки. Так, для случая N = 8 = 23 прямой порядок номеров приведен в таблице слева, а двоичноинверсный порядок - справа.

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

Номер Двоичное представление Двоичная инверсия Двоично-инверсный код

0 000 000 0

1 001 100 4

2 010 010 2

3 011 110 6

4 100 001 1

5 101 101 5

6 110 011 3

7 111 111 7

Цифровые фильтры

Рассмотрим наиболее простые из цифровых фильтров - фильтры с постоянными параметрами.

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

х(2Т)

х(3Т)

х(кТ)

х(0)

х(Т)

і

а

у(0)

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

У

0

у(Т)

т

У(2Т)

У(3Т),

У(кТ)

Т 2Т 3Т

Рис. 4. Сигнал на входе (а) и на выходе (б) цифрового фильтра

Алгоритмы расчета могут быть самыми разнообразными; в процессе расчета кроме последнего значения входного сигнала х(кТ) могут использоваться предыдущие значения входного и выходного сигналов: х(кТ - Т), х(кТ - 2Т), ..., у(кТ - Т), у(кТ - 2Т), ... Сигнал на выходе цифрового фильтра у(кТ) (рис. 4, б) также представляет собой последовательность числовых значений, следующих с интервалом Т. Этот интервал является единым для всего устройства цифровой обработки сигналов.

Поэтому если на вход цифрового фильтра подать простейший сигнал в виде единичного импульса (рис. 5, а)

х0 =

[1, к = 0, І0, к ф 0,

(15)

то на выходе получим сигнал в виде дискретнои последовательности числовых значении, следующих с интервалом Т. По аналогии с обыч-

і

ными аналоговыми цепями назовем этот ответный сигнал импульснои характеристикой фильтра g(kT) (рис. 5, б). В отличие от импульсноИ характеристики аналоговой цепи функция g(kT) является безразмерной.

При подаче на вход фильтра произвольного дискретного сигнала х(кТ) (см. рис. 4, а), представляющего собой набор дискретных значений х(0), х(Т), х(2Т), ... , под действием первого элемента х(0) на выходе фильтра формируется последовательность g(кT), умноженная на х(0); при действии х(Т) - последовательность g(kT), умноженная на х(Т) и сдвинутая вправо на величину Т, и т.д.

“Г"

Т

х0(кТ)

Ш(0)

1 1 Ш(Т) Е(кТ)

( 1 Ш(2Т)

1 1 >

—1-ї ►

0 Т 2Т

Рис. 5. Единичный импульс (а) и импульсная характеристика цифрового фильтра (б)

В результате на выходе получим последовательность у(пТ), причем

У(0) = Ш (0) х(0) (16)

У(Т) = g (Т) х(0) + Ш (0) х(Т), (17)

у(2Т ) = ш (2Т) х(0) + ш (Т) х(Т) + ш (0) х(2Т ), (18)

х(пТ) = X х(кТ)ш(пТ - кТ) = Xх(пТ - кТ)ш(кТ).

к=0

к=0

(19)

1

0

г

а

г

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

Формула (18) представляет собой алгоритм цифровой фильтрации. Если импульсная характеристика фильтра описывается последовательностью с конечным числом членов, то фильтр может быть реализован в виде схемы, изображенной на рис. 6. Здесь буквой Т обозначены элементы задержки сигнала на время Т (на одну ячейку), §(0), ё(Т), ... , §(М Т) - элементы, умножающие сигнал на соответствующий коэффициент.

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

£(0)

Рис. 6. Схема нерекурсивного цифрового фильтра

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

Вернемся к схеме цифрового фильтра, изображенной на рис. 6. Такие фильтры, где для расчета используются лишь значения входного сигнала, называют простыми или нерекурсивными. Алгоритм нерекурсивного фильтра легко записать, если известна импульсная характеристика фильтра. Для практической реализации алгоритма [7] необходимо, чтобы импульсная характеристика содержала конечное число членов. Если импульсная характеристика содержит бесконечное число членов, но они быстро убывают по величине, то можно ограничиться конечным числом членов, отбросив те, значения которых малы. В случае, если элементы импульсной характеристики не убывают по величине, алгоритм нерекурсивного фильтра оказывается нереализуемым.

В качестве примера рассмотрим простейший цифровой фильтр, аналогичный ЯС-цепи (рис. 7). Импульсная характеристика ЯС-цепи имеет вид:

g (і) =1 в-/т. (20)

т

Чтобы записать импульсную характеристику соответствующего цифрового фильтра, в выражении д

(20) і следует заменить на кТ. Однако 0----------------------------1 I-1-о

импульсная характеристика ЯС-цепи х^) с — у(0

имеет размерность 1/с, а импульсная

О о

характеристика цифрового фильтра 7 ^ епь

должна быть безразмерной. Поэтому

опустим множитель 1/т в выражении (20) и запишем импульсную характеристику цифрового фильтра в виде

g(кТ) = е~кТ/т. (21)

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

е"т / т << 1. (22)

Теперь можно записать выражение для сигнала на выходе фильтра:

у(пТ) = х(пТ) + е~т / тх(пТ + Т) +

+ е"2Т/тх(пТ - 2Т) +... + е"ш/тх(пТ -Ш).

Это выражение является одновременно алгоритмом цифрового фильтра. Схема этого фильтра представлена на рис. 8.

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

1

Рис. 8. Схема нерекурсивного цифрового фильтра, аналогичного RC-цепи «Basic DSP»

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

Примером модели последовательности цифровой обработки сигнала в современной аппаратуре может служить рис. 9.

Рис. 9. Модель последовательности цифровой обработки сигнала

Для этих целей можно использовать программный пакет Ма1;-ЬаЪ, но у данного решения есть недостатки:

- Ма1ЬаЪ является платным программным продуктом, и для его использования необходимо приобретение достаточно дорогой лицензии;

- для построения модели требуется опыт работы в среде Ма1ЬаЪ;

- для эффективной работы среды Ма1ЬаЪ требуется мощный персональный компьютер.

Рис. 10. Внешний вид работы программы

Поэтому был создан программный продукт, имеющий следующие свойства:

- возможность моделирования процессов ЦОС,

- простота пользовательского интерфейса,

- минимальность аппаратных требований,

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

- бесплатность.

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

Программа «Basic DSP» версии 1.0 была написана на языке Delphi в среде Borland Delphi 7 [2] и в значительной мере отвечала вышеозначенным заданным свойствам.

Исходный сигнал моделируется путём загрузки звуковых файлов формата WAVE («Загрузить wav» «Старт») (рис. 10). Имеются индикатор продолжительности процесса симуляции (зависит от длины WAVE файла) и окно основных свойств загруженного файла (частота дискретизации, количество бит и т.д.).

Обучающийся имеет возможность визуального наблюдения за амплитудным и спектральным составом:

а) исходного сигнала - верхняя пара индикаторов;

б) сигнала после прохождения цифрового фильтра на 2600 МГц

- вторая сверху пара индикаторов;

в) сигнала после усиления в заданное число раз - третий индикатор сверху;

г) сигнала после суммирования с сигналом синусоиды задаваемой частоты и амплитуды - нижняя пара индикаторов.

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

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

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

3S

Библиографический список

1. Лайонс Р. Цифровая обработка сигналов. - М.: БИНОМ, 2003.

2. Архангельский А.Я. Программирование в Delphi 7. - М.: БИНОМ, 2000.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

3. Рабинер Л., Гоулд Б. Теория и применение цифровой обработки сигналов: пер. с англ. / под ред. Ю.Н. Александрова. - М.: Мир, 1978.

4. Цифровая обработка сигналов: учеб. пособие для вузов / Л.М. Гольденберг [и др.]. - 2 изд., перераб. и доп. - М.: Радио и связь, 1990.

5. Оппенгейм А.В., Шафер Р.В. Цифровая обработка сигналов: пер. с англ. / под ред. С.Я. Шаца. - М.: Связь, 1979.

6. Burrus C.S., Parks T.W. DFT/FFT and Convolution Algorithms, Wiley Interscience. - NY, 1985.

7. URL: http://www.codenet.ru.

Получено 09.09.2011

i Надоели баннеры? Вы всегда можете отключить рекламу.