Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МПУЭВС. Лекции. Задания / pdf_ПрилПЦиПУ / Приложение_О_ ПрограмОбрабДанных

.pdf
Скачиваний:
30
Добавлен:
11.05.2015
Размер:
236 Кб
Скачать
☆

11

значением Х из памяти данных и первым значением k из памяти программ.

Затем в программе реализуется свертка данных Х и коэффициентов k. Для этого в следующей строке листинга переменная CNTR определяет количество циклов:

CNTR=N–1 . Регистр CNTR используется в качестве счетчика циклов умножения со сложением в устройстве МАС. Для выполнения цикла не требуется дополнительных команд по проверке условия его завершения. Выход из цикла выполнятся процессором автоматически при выполнении условия CNTR = 0

после N–1 проходов. Начало цикла определено меткой Convolution после оператора DO UNTIL, окончание – первой точкой с запятой. Результат вычислений заносится в регистр MR. Многофункциональная

команда

MR=MR+MX0*MY0 (SS), MX0=DM(I0, M1), MY0=PM (I4, M5)

выполняется за один машинный цикл (13,3 нС). Последние две строки программы умножают, суммируют N-ый раз и проверяют окончательный результат в регистре MR на переполнение с помощью бита MV. Заключительная команда умножения с накоплением выполняется с включенным режимом округления RND до старших 24 разрядов регистра MR. В случае переполнения

(MV=1) процессор командой SAT запишет в регистр MR максимально возможное число для формата, принятого в программе.

Благодаря такому подходу, при накоплении результата используются преимущества регистра MR 40-разрядной точности. Насыщение происходит только в том случае, если вычисление заключительного результата привело к переполнению 32 младших значащих разрядов регистра MR.

Ограничение на число звеньев фильтра, реализующего программу КИХ-

фильтрации в реальном масштабе времени, определяется, прежде всего, дли-

тельностью процессорного цикла, частотой дискретизации и требуемым объе-

мом других вычислений. Программа КИХ-фильтра, представленная в примере,требует общего количества циклов N+5 для фильтра с числом звеньев

12

N. Для DSP-процессора ADSP-2189M, обладающего быстродействием 75 MIPS,

реализация фильтра с числом звеньев 100 требует 13,3 нс · 100 + 5 · 13,3нс = 1,4

мкс. Это соответствует максимально возможной частоте дискретизации 714

кГц, ограничивая, таким образом, ширину полосы частот обрабатываемого сигнала несколькими сотнями килогерц.

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

ла, непосредственно вычисляющего алгоритм. Это позволяет избежать включе-

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

DSP-процессора по реализации алгоритмов цифровой обработки сигналов.

О.3 Форматы представления чисел

При разработке устройств, использующих сигнальные процессоры, не-

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

темах. Математический пакет MATLAB при синтезе проектируемого устройст-

ва позволяет анализировать эффекты, связанные с шумами квантования анало-

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

цессе вычислений и искажения характеристик из-за квантования коэффициен-

тов цифровых фильтров.

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

1.15. Формат используется 16-разрядными процессорами и означает, что целая часть числа содержит только один разряд – знаковый. Дробная часть использу-

ет 15 разрядов (рисунок О.4). Числа, которые можно представить в этом формате (см. таблицу. О.4), по модулю не превосходят единицы. Ноль в знаковом разряде соответствует положительным числам, единица – отрицательным. Пятнадцать разрядов после запятой обеспечивают

13

дискретность представления, равную единице в младшем разряде 2-15 = 1/32768

≈ 3·10-5.

Рисунок О.4 - Формате I.15 дробного числа со знаком

Согласно данным табл. 14 видно, что максимальное положительное число в формате 1.15 отличается от единицы и равно 32767/32768 ≈ 0,9999695. При проектировании цифровых устройств, использующих формат 1.х, необходимо масштабирование коэффициентов уравнений с целью привести их значения к диапазону [-1,1]. Для масштабирования все коэффициенты уравнения делятся на одну и ту же константу, затем на нее же умножается правая часть уравнения.

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

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

Таблица О.4 - Формат с фиксированной запятой 1.15

Двоичный код

 

Шестнадцатеричный код

 

Число в формате1.15

 

 

 

 

 

0000 0000 0000 0000

 

0000Н

 

0

 

 

 

 

 

0000 0000 0000 0001

 

0001Н

 

1/32768 = 0,0000305

 

 

 

 

 

0000 0000 0000 0010

 

0002Н

 

2/32768 = 0,0000610

 

 

 

 

 

….

….

 

….

 

 

 

 

 

 

0111 1111 1111 1110

 

7FFEH

 

32766/32768 = 0,9999390

 

 

 

 

 

0111 1111 1111 1111

 

7FFFH

 

32767/32768 = 0,9999695

 

 

 

 

 

1000 0000 0000 0000

 

8000H

 

-32768/32768 = -1

 

 

 

 

 

1000 0000 0000 0001

 

8001H

 

-32767/32768 = -0,9999695

 

 

 

 

 

….

….

 

….

 

 

 

 

 

 

1111 1111 1111 1110

 

FFFEH

 

-2/32768 = -0,0000610

 

 

 

 

 

1111 1111 1111 1111

 

FFFFH

 

-1/32768 = -0,0000305

 

 

 

 

 

14

Пример масштабирования коэффициентов эллиптического фильтра нижних частот 4-го порядка с частотой среза, равной 20 % от частоты Найквиста, пульсациями в полосе пропускания 1 дБ и подавлением сигнала в полосе задерживания 60 дБ. Перечисленные параметры фильтра заданы в командной строке пакета MATLAB с помощью функции ellip

» [b, a] = ellip(4, 1, 60, 0.2)

b = 0.0059 0.0053 0.0096 0.0053 0.0059 a = 1.0000 -3.0477 3.8240 -2.2926 0.5523

Из полученного решения видно, что максимальный по модулю коэффи-

циент больше единицы и равен 3,824.

Уравнение рекурсивного фильтра

y(k) = 0,0059 x(k) + 0,0053 x(k – 1) + 0.0096 x(k –

2) + 0.0053 x(k – 3) +

+ 0.0059 x(k – 4) + 3.0477 y(k – 1) – 3.8240 y(k –

2) + 2.2926 y(k – 3) –

– 0.5523 y(k – 4).

 

Для масштабирования делится и умножается правую часть уравнения на 4

y(k) = 4(0,0015 x(k) + 0,0013 x(k – 1) + 0,0024 x(k – 2) + 0,0013 x(k – 3) + + 0,0015 x(k – 4) + 0,7619 y(k – 1) – 0,9560 y(k – 2) + 0,5731 y(k – 3) –

– 0,1381 y(k – 4)).

Округление коэффициентов из-за конечной разрядности процессора мо-

жет заметно сказаться на рекурсивных фильтрах с крутым спадом АЧХ между полосами пропускания и задерживания. Если реализовать фильтр на 9-

разрядном процессоре в формате 1.8, то коэффициенты округляются с точностью до 1/256, так как у них остаются восемь двоичных разрядов после запятой.

»bm=b/4; % масштабирование коэффициентов числителя

»am=a/4; % масштабирование коэффициентов знаменателя

15

»[h,f]=freqz(b,a); % АЧХ до округления

»hm=freqz(bm,am);

»subplot(1,2,1)

»plot(f/pi,abs(hm)) % график АЧХ до округления

»bq=round(bm*256)/256; % округление масштабированных

»aq=round(am*256)/256; % кооэффициентов

»hq=freqz(bq,aq); % АЧХ после округления

»subplot(1,2,2)

»plot(f/pi,abs(hq)) % график АЧХ после округления

Рисунок О.5 – Передаточные характеристики фильтра Результат обработки показан на рисунке О.5 б. Видно, что амплитудно-

частотная характеристика фильтра изменилась существенно:

-амплитуда пульсаций в полосе пропускания существенно возросла;

-переходная область АЧХ стала более пологой;

-заданный параметр пульсаций в полосе пропускания фильтром с форматом 1.8 не обеспечивается;

16

Округление коэффициентов фильтра приведенного примера в формате

1.15 приводит к небольшим искажениям частотной характеристики. В этом случае графики АЧХ без учета квантования и с квантованием практически сливаются. График амплитудно-частотной характеристики фильтра в формате

1.15 совпадает с графиком АЧХ на рисунке О.5 а. Отсюда можно сделать вывод о том, что разрядность процессора в рассмотренном примере не оказывает влияния на вид АЧХ.

В некоторых случаях удобно использовать для процессоров ADSP-2189M

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

Целые числа без знака имеют диапазон [0,65535], диапазон целых чисел со зна-

ком составляет [-32768, 32767]. Коэффициенты деления частоты генератора,

задающие период квантования сигналов в АЦП и ЦАП, в рассматриваемой программе задаются в виде 16-разрядных целых чисел без знака. Програм-

мы на языке Си поддерживают 16- и 32-разрядные переменные со знаком и без знака.