федеральное агенство связи
Московский технический университет связи и информатики
Кафедра радиотехнических систем
Методические указания на выполнение лабораторной работы №1
ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ЦИФРОВОГО НЕРЕКУРСИВНОГО ФИЛЬТРА
Для студентов специальности 210312 – Аудиовизуальная техника
Москва 2010
1.Цель работы
Целью лабораторной работы является:
- изучение реализации алгоритма цифровой фильтрации на цифровом сигнальном процессоре (ЦСП) ADSP-2181; освоение средств и технологии разработки программного обеспечения ЦСП; разработка и отладка программ ЦОС на языке ассемблера ЦСП.
2. Задание на подготовку
Изучить принцип цифровой фильтрации по указанной литературе. Изучить по данному описанию алгоритм цифровой фильтрации и его программную реализацию на ЦСП ADSP-2181. Для заданного в таблице 1 варианта рассчитать коэффициенты нерекурсивного цифрового фильтра. Расчет коэффициентов и анализ фильтра можно произвести с помощью системы МАТLAB [1]. Провести анализ характеристик цифрового фильтра. Для заданного в таблице 1 варианта входного сигнала получить 20-30 отсчетов сигнала на выходе фильтра, используя полученные в п. 2.3. коэффициенты фильтра. Представить коэффициенты фильтра в формате 1.15.3. Экспериментальная часть
Используя свой вариант из таблицы 1 получить сигнал на выходе цифрового фильтра и сравнить его с сигналом, полученным при домашнем расчёте. Для этого необходимо выполнить следующие действия.
В подпрограмму цифровой нерекурсивной фильтрации подставить коэффициенты фильтра из таблицы 1, представленные в формате 1.15. Выполнить отладку и получить исполняемый файл. С помощью симулятора получить несколько значений отсчетов генерируемого сигнала, построить по ним график.4. Содержание отчета
Отчет должен содержать: цель работы, алгоритм и программу цифровой фильтрации для ЦСП ADSP-2181, схему цифрового фильтра, результаты домашнего расчета и компьютерного моделирования, выводы по проделанной работе.
5. Методические указания по выполнению работы
Типичной задачей цифровой обработки аудио и видеосигналов сигналов является линейная фильтрация. Цифровые фильтры (ЦФ) обладают рядом существенных преимуществ, среди которых высокая стабильность параметров, возможность получения разнообразных форм частотных характеристик. Кроме того, ЦФ не требуют настройки и легко реализуются программными методами. Цифровая фильтрация получила новый стимул развития с появлением сигнальных процессоров, позволяющих обрабатывать сигналы в реальном масштабе времени. Высокая производительность сигнальных процессоров достигается благодаря их принципиально другой архитектуре, многофункциональной и гибкой системе команд, аппаратной реализации большинства типичных для данных приложений операций, высокой степени параллелизма процессов в микропроцессоре [1].
Нерекурсивный цифровой фильтр или фильтр с конечной импульсной характеристикой (КИХ или FIR фильтр) реализует алгоритм дискретной временной свертки. Общий алгоритм линейной цифровой фильтрации состоит в следующем. На вход ЦФ с известной импульсной характеристикой {hk} поступает сигнал, представляющий собой последовательность отсчётов {xk} = (x0, x1, x2, x3,…,). Можно записать n-ый отсчет выходного сигнала {yk} с помощью разностного уравнения [2 стр.257-260, 3 стр.46- 54]:
, (1)
представляющего собой дискретную свёртку входного сигнала{xk} и импульсной характеристики фильтра {hk}. Число R = N-1 является порядком цифрового нерекурсивного фильтра.
5.1. Предварительный расчет
5.1.1. Расчет коэффициентов фильтра с помощью системы MATLAB.
Процесс проектирования цифровых фильтров состоит из тех же этапов, что и процесс проектирования аналоговых фильтров. Сначала формулируются требования к желаемым характеристикам фильтра, по которым затем рассчитываются параметры фильтра. Амплитудная и фазовая характеристики формируются аналогично аналоговым фильтрам. Ключевое различие между аналоговым и цифровым фильтрами заключается в том, что, вместо вычисления величин сопротивлений, емкостей и индуктивностей для аналогового фильтра, рассчитываются значения коэффициентов для цифрового фильтра. Эти коэффициенты постоянно находятся в памяти и используются для обработки (фильтрации) дискретных данных, поступающих от АЦП.
В системе MATLAB несложно выполнить синтез цифрового КИХ-фильтра методом окон, используя функцию fir1[2 стр.400-406]:
h=fir1(R, wc, ftype, win),
где h – вектор коэффициентов длиной N=R+1; R – порядок фильтра; wc – вектор нормированных частот разрыва (для ФНЧ и ФВЧ с одним элементом, для ПФ и РФ с двумя элементами); ftype – параметр, указывающий тип избирательности и принимающий значения ‘high’ – для ФВЧ, ‘stop’—для РФ, ‘low’ – для ФНЧ и ‘bandpass’ – для ПФ (по умолчанию – ФНЧ для вектора частот с одним элементом и ПФ для вектора частот с двумя элементами); win – вектор-столбец значений весовой последовательности, задающий оконную функцию (по умолчанию используется окно Хэмминга).
Таблица 1
Номер вар. | Порядок фильтра R | Тип фильтра | Частота или вектор нормированных частот разрыва, wc | Последовательность входных отсчётов {xk} |
5 | ФНЧ | 0.1 | 0.5; 0.5; 0.5; 0.5;- 0.5; -0.5;-0.5;-0.5 | |
5 | ФНЧ | 0.25 | -0.3; -0.2;-0.1; 0; 0.1; 0.2; 0.3; 0 | |
5 | ФНЧ | 0.5 | - 0.5; -0.5; -0.5;-0.5;0.5;0.5; 0.5;0.5 | |
5 | ФНЧ | 0.75 | 0.1; 0.2; 0.3; 0; -0.3;-0.2;-0.1; 0 | |
5 | ФНЧ | 0.9 | 0.5; 0.5; 0.5; 0.5;- 0.5; -0.5;-0.5;-0.5 | |
6 | ФНЧ | 0.1 | -0.3; -0.2;-0.1; 0; 0.1; 0.2; 0.3; 0 | |
6 | ФНЧ | 0.25 | - 0.5; -0.5; -0.5;-0.5;0.5;0.5; 0.5;0.5 | |
6 | ФНЧ | 0.5 | 0.1; 0.2; 0.3; 0; -0.3;-0.2;-0.1; 0 | |
6 | ФНЧ | 0.75 | 0.5; 0.5; 0.5; 0.5;- 0.5; -0.5;-0.5;-0.5 | |
6 | ФНЧ | 0.9 | -0.3; -0.2;-0.1; 0; 0.1; 0.2; 0.3; 0 | |
6 | ФВЧ | 0.1 | - 0.5; -0.5; -0.5;-0.5;0.5;0.5; 0.5;0.5 | |
6 | ФВЧ | 0.2 | 0.1; 0.2; 0.3; 0; -0.3;-0.2;-0.1; 0 | |
6 | ФВЧ | 0.3 | 0.5; 0.5; 0.5; 0.5;- 0.5; -0.5;-0.5;-0.5 | |
6 | ФВЧ | 0.4 | -0.3; -0.2;-0.1; 0; 0.1; 0.2; 0.3; 0 | |
6 | ФВЧ | 0.5 | - 0.5; -0.5; -0.5;-0.5;0.5;0.5; 0.5;0.5 | |
7 | ФНЧ | 0.1 | 0.1; 0.2; 0.3; 0; -0.3;-0.2;-0.1; 0 | |
7 | ФНЧ | 0.25 | 0.5; 0.5; 0.5; 0.5;- 0.5; -0.5;-0.5;-0.5 | |
7 | ФНЧ | 0.5 | -0.3; -0.2;-0.1; 0; 0.1; 0.2; 0.3; 0 | |
7 | ФНЧ | 0.75 | - 0.5; -0.5; -0.5;-0.5;0.5;0.5; 0.5;0.5 | |
7 | ФНЧ | 0.9 | 0.1; 0.2; 0.3; 0; -0.3;-0.2;-0.1; 0 | |
6 | ПФ | 0.3 …0.7 | 0.5; 0.5; 0.5; 0.5;- 0.5; -0.5;-0.5;-0.5 | |
6 | ПФ | 0.4 …0.6 | -0.3; -0.2;-0.1; 0; 0.1; 0.2; 0.3; 0 | |
6 | РФ | 0.3 …0.7 | - 0.5; -0.5; -0.5;-0.5;0.5;0.5; 0.5;0.5 | |
6 | РФ | 0.4 …0.6 | 0.1; 0.2; 0.3; 0; -0.3;-0.2;-0.1; 0 |
5.1.2. Анализ характеристик цифрового фильтра.
Анализ характеристик [3 стр.55-59] цифрового фильтра удобно произвести с помощью функции fvtool(h) системы MATLAB[2 стр.574-581], где h – вектор коэффициентов фильтра, полученных при расчете. Используя данную функцию получить и зарисовать импульсную характеристику цифрового фильтра, его фазово-частотную (ФЧХ) и амплитудно-частотную (АЧХ) характеристики для своего варианта.

Рис.1 Окно анализа характеристик фильтра.
5.1.3. Расчет отклика цифрового фильтра.
Отсчеты на выходе цифрового фильтра можно получить, используя непосредственно формулу (1), подставляя в нее заданные в таблице 1 входные отсчеты {xk} и полученные в результате расчета коэффициенты фильтра {hk}. С помощью системы MATLAB получить отсчеты сигнала на выходе фильтра y можно с помощью функции y=conv(x, h), выполняющей свертку вектора входных отсчетов x и вектора коэффициентов фильтра h.
5.1.4. Представить коэффициенты фильтра в формате 1.15.
Для представления коэффициентов фильтра в формате 1.15 [3 стр.82-91] с помощью системы MATLAB воспользуемся функцией моделирования эффекта квантования quantizer в следующей форме q = quantizer([16 15]) [2 стр.592-601], где q – имя объекта quantizer; данные с фиксированной точкой произвольного формата (режим представления данных ‘fixed’ по умолчанию); округление в направлении -∞ (режим округления ‘floor’по умолчанию); при переполнении реализуется арифметика насыщения (режим управления переполнением ‘saturate’ по умолчанию); формат данных отображается двухэлементным вектором ([16 15]), в котором первый элемент соответствует длине слова (разрядности), а второй – длине его дробной части. С помощью функции Н=num2hex (q, h), где q – имя объекта quantizer; h – вектор коэффициентов фильтра, получить вектор коэффициентов фильтра Н, представленных в формате 1.15. Учитывая, что память программ цифрового сигнального процессора ADSP-2181 24-разрядная, дополнить полученные коэффициенты двумя нулями справа.
5.2. Программа реализации цифрового нерекурсивного фильтра.
Последовательность работы фильтра для сигнального процессора с циклической буферизацией можно описать следующим образом:
получение отсчета от АЦП (обычно по прерыванию); помещение отсчета в циклический буфер входного сигнала; обновление указателя циклического буфера входного сигнала; обнуление аккумулятора; осуществление фильтрации (цикл по всем коэффициентам с п.5.1 по п.5.6) ; выборка коэффициента из циклического буфера коэффициентов; обновление указателя циклического буфера коэффициентов; выборка отсчета из циклического буфера входного сигнала; обновление указателя циклического буфера входного сигнала; умножение коэффициента на отсчет; добавление нового слагаемого к промежуточному результату; выдача отфильтрованного отсчета на ЦАП.При подготовке к работе требуется зарисовать блок-схему алгоритма работы фильтра.
Программа реализации цифрового фильтра содержит главный модуль и модуль подпрограммы обработки данных. Подпрограмма обработки данных вызывается из главного модуля по прерыванию приема очередного отсчета данных. В лабораторной работе изучается модуль подпрограммы обработки данных.
В модуле подпрограммы, реализующем базовую операцию свертки осуществляется алгоритмическая обработка очередного отсчета сигнала, который считывается из регистра устройства ввода/вывода (I/O). Вывод данных также осуществляется через устройство I/O.
Устройство ввода-вывода (Input/Output Processor) управляет прямым доступом к памяти (Direct Memory Access – DMA) процессора через внешний порт, хост-порт, последовательные порты, порты последовательного периферийного интерфейса (Serial Peripheral Interface – SPI) и универсального асинхронного приемопередатчика (Universal Asynchronous Receiver/Transmitter – UART). При выполнении каждой операции DMA передается целый блок данных. Управляя DMA, устройство ввода-вывода позволяет выполнять передачу данных независимо от ядра процессора.
Регистры устройства I/O доступны как часть карты памяти процессора. Регистры устройства I/O занимают адреса с 0х00 по 0xFF. Так как регистры устройства I/O являются частью карты памяти I/O, доступ к этим регистрам по шинам выполняется как доступ к ячейке памяти I/O. Несмотря на то, что обращения к регистрам выполняются как обращения к ячейкам памяти, регистры отделены от внутренней памяти процессора.
Значения коэффициентов фильтра h(N – 1), h(N – 2), … h(1), h(0) в указанной последовательности размещаются по возрастающим адресам памяти программ, образуя массив или циклический буфер коэффициентов. Они умножаются на соответствующие отсчеты входного сигнала x(n–N+1), x(n–N+2), … x(n–1), x(n), которые образуют сигнальную память фильтра или циклический буфер отсчетов сигнала в памяти данных процессора. Ему соответствует структура данных типа очередь постоянной длины.
Очередной отсчет сигнала x(n) после его обработки замещает самое старое значение сигнала в очереди x(n–N). Адрес этого отсчета определяет начало очереди, которое циклически перемещается в буфере в процессе обработки сигнала. Такому способу обработки соответствует алгоритм программной реализации нерекурсивного фильтра без сдвига сигнальной памяти. Исходный адрес начала очереди соответствует обычно началу буфера в памяти данных.
Все коэффициенты и значения данных для нерекурсивного фильтра, рассчитанные в п.5.1.4 представляются в формате 1.15 как показано в примере. Длина фильтра указывается в соответствии со своим вариантом.
.MODULE/RAM/ABS=0 fir_filter; {объявление программного модуля с именем fir_filter, размещенного в программной памяти RAM по адресу 0}
.CONST Length=5; {определение длины фильтра N=R +1}
.VAR/DM/CIRC Samples[Length]; {объявление буфера отсчетов в памяти данных}
.VAR/PM/CIRC Coeff[Length]; {объявление буфера коэффициентов в памяти программ}
.INIT Coeff: H#07ae00, H#35c200, H#7FFF00, H#35c200, H#07ae00; {инициализация коэффициентов}
.ENTRY fir; {вход в подпрограмму инициализации}
fir: I0=^Samples; {загрузка указателя буфера данных}
M0=1; {модифицирующее значение адреса данных}
L0=Length; {задание длины циклического буфера данных}
I4=^Coeff; {загрузка указателя буфера коэффициентов}
M4=1; {модифицирующее значение адреса коэффициентов}
L4=Length; {задание длины циклического буфера коэффициентов}
CNTR = 25; {задание количества обрабатываемых отсчетов}
DO main UNTIL CE; {подпрограмма обработки нерекурсивного фильтра}
SR1=IO(0); {чтение отсчета данных x(n) через устройство I/O}
DM(I0,M0)=SR1; {пересылка x(n) в начало очереди данных}
CNTR=Length-1; {задание длины циклического буфера коэффициентов}
MR=0,MX0=DM(I0,M0),MY0=PM(I4,M4); {обнуление накопителя,
считывание значений x(n-N+1) и h(N-1) из памяти}
DO conv UNTIL CE; {начало цикла умножения с накоплением}
conv: MR=MR+MX0*MY0(SS), MX0=DM(I0,M0), MY0=PM(I4,M4); {умножения с накоплением, считывание следующего отсчета и коэффициента}
MR=MR+MX0*MY0(RND); {вычисление последнего значения, округление}
IF MV SAT MR; {насыщение}
main: IO(1)=MR1; {окончания цикла main, запись y(n) из MR1 в регистр I/O}
RTS; {возвращение из подпрограммы программу}
.ENDMOD; {конец модуля}
Отладка программы
Генерирование кода программы начинается с создания файлов исходного кода на языке С или ассемблере (рис.2). Модуль является блоком команд на ассемблере, который образует главную программу, подпрограмму или объявление переменных данных. Программист на языке С записывает файлы на языке С и использует компилятор С для создания из этих файлов модулей кодов ассемблера. Программист на языке ассемблера непосредственно записывает модули кодов ассемблера. Каждый модуль кода программы транслируется ассемблером отдельно.
Редактор связей (линкер) связывает вместе несколько модулей, формируя, таким образом, выполняемую программу (файл отображения в памяти). Редактор связей считывает информацию о разрабатываемой системе аппаратных средств из файла описания архитектуры и определяет на ее основе оптимальные адреса для кода программы и данных. В модулях программ на ассемблере каждый фрагмент кода/ данных может быть задан как полностью перемещаемый, перемещаемый внутри определенного сегмента памяти или неперемещаемый (расположенный по абсолютному адресу). Редактор связей помещает неперемещаемые модули кода программы или данных по заданным адресам в памяти, при условии что область памяти имеет правильные атрибуты. Перемещаемые объекты помещаются по адресам, выбранным редактором связей. Редактор связей генерирует файл отображения памяти, содержащий одну выполняемую программу, которая может для ее проверки загружаться в симулятор или эмулятор.

Рис. 2. Процесс отладки системы.
Программа-симулятор выводит на дисплей окна, в которых можно видеть различные часть аппаратного окружения. Для дублирования проектируемых аппаратных средств симулятор конфигурирует свою память в соответствии с файлом отображенные в карте памяти порты ввода/вывода. Такое моделирование позволяет отладить аппаратные средства системы и проанализировать их рабочие характеристики перед тем, как приступить к их макетированию.
После окончания моделирования системы и ее программного обеспечения в ходе макетирования аппаратных средств может использоваться встроенный эмулятор, с помощью которого проверяются электрические схемы, временные характеристики и выполнение программы в реальном времени.
Программа разбиения (сплиттер) транслирует полученную редактором связей программу в файл стандартного формата для программатора ППЗУ. Как только код программы записан в ППЗУ и инсталлирован (с процессором семейства ADSP-21хх) на макете, макет готов к работе.
Порядок выполнения работы
В качестве исходных данных используется программа фильтрации на языке ассемблера. Для разработки программ и исследования ЦСП типа ADSP-2181 используются пакет программ ADI_DSP, включающий файл архитектуры системы adsp2181.ach, ассемблер asm21, линкер ld21, средство разработки и отладки программ Visual DSP. Для удобства выполнения ассемблирования рекомендуется пользоваться программой Windows Commander, иконка которой расположена на рабочем столе:

Ассемблирование, компоновка и отладка программ ЦСП выполняется в следующем порядке:
6.1. Открыть папку LABS, находящуюся на диске С.
6.2. В файле, указанном преподавателем (как правило, это файл с расширением *.dsp, например, fir. dsp) вписать коэффициенты фильтра и длину фильтра, полученные при подготовке к работе.
6.3. Сохранить файл, назвав его своим именем, например myfir. dsp.
6.4. Вызвать ассемблер командной строкой asm21 myfir (для этого удобно использовать командную строку Windows Commander).
6.5.Устранить ошибки и получить объектный файл myfir. obj.
6.6. Вызвать линкер командной строкой: ld21 myfir - a adsp2181.ach - e myfir - g - x (последние два ключа не обязательны) и получить исполняемый файл myfir. exe.
6.7. Запустить Visual DSP с помощью ярлыка
, находящегося на рабочем столе или (в случае его отсутствия) запустить файл DEBUGAPP. exe из директории С:\Program Files\Analog Devices\VisualDSP\System.
6.8. Загрузить исполняемый файл с расширением *.exe, полученный в ходе выполнения п.6.6. Загрузка файла производится из диалогового окна Open a Processor Program, которое открывается из меню File/Load… или с помощью клавиш Ctrl+L (рис.3).

Рис. 3. Диалоговое окно для загрузки исполняемой программы.
6.9. В соответствии с заданным в таблице 1 вариантом создать файл для ввода отсчетов. Этот файл создается в текстовом формате и сохраняется с произвольным расширением, например *.dat. Пример файла приведен на рис 4.

Рис. 4 Файл отсчетов.
Полученный файл соединяется с программой с помощью меню Settings/Streams..., в ходе выполнения которого откроется диалоговое окно, пример которого приведен на рис. 5.

Рис. 5. Диалоговое окно для ввода данных из файла вывода данных в файл.
В этом окне необходимо установить следующие значения (см. рис.5).
В левой части:
Sourse (Источник) –File (выбрать созданный Вами файл, содержащий последовательность отсчетов.
Format (формат данных): Fractional – для ввода данных в десятичной системе счисления.
Circular (периодичность) – поставить галочку.
В правой части:
Destination (Назначение) – Debug Target.
Device – IO Memory I/O Port.
Address 0x0000.
После завершения ввода всех данных необходимо нажать Connect.
Для отсчетов выходного сигнала необходимо задать имя файла, в который они будут выводиться. Это также можно сделать с помощью меню Settings/Streams.
В этом окне необходимо установить следующие значения.
В левой части:
Sourse (Источник) – Debug Target.
Device – IO Memory I/O Port.
Address 0x0001.
В правой части:
Destination (Назначение) – File.
Имя файла – задать файл, в который будут выводиться выходные отсчеты. Файл необходимо назвать первыми буквами своей фамилии с расширением *.dat, например petrov. dat.
Format (формат данных): Fractional – для вывода данных в десятичной системе счисления и «ручного» построения графика или исследования выходных данных в математических пакетах (Matlab, Matcad, и т. п).
После завершения ввода всех данных необходимо нажать Connect, а затем ОК.
6.10. В окне дизассемблера поставить точку останова напротив инструкции rts, два раза щелкнув кнопкой манипулятора «мышь» на пустом месте перед адресом этой инструкции (рис. 6).

Рис. 6. Рабочее окно Visual DSP. В окне Disassembly черным цветом выделена инструкция rts (адрес 0x00000011), где необходимо установить точку останова.
Запустить выполнение программы с помощью меню Debug/Run, или клавиши F5 или пиктограммы
. Остановка программы производится в точке останова после получения заданного в программе количества отсчетов.
6.11. Закрыть отладчик. Из полученного файла с отсчетами переписать значения 25 отсчетов и построить по ним график. Сравнить его с графиком, полученным в ходе выполнения домашнего расчета.
Список литературы Сперанский B. C. Сигнальные микропроцессоры и их применение в системах телекоммуникаций и электроники. - М: Горячая линия – Телеком, 2008. , Арбузов обработка сигналов. Моделирование в MATLAB. – СПб.: БХВ-Петербург, 2008. – 816с. , , Поляк обработка сигналов: Справочник. – М.: Радио и связь, 1985. – 312с.
Контрольные вопросы В чем особенность гарвардской архитектуры ЦСП? Какие еще виды архитектур встречаются в сигнальных процессорах? Каковы основные блоки ЦСП ADSP-2181и их общее назначение? Какие блоки используются при реализации цифрового фильтра? Какова программная модель и работа АЛУ? Какова программная модель и работа умножителя-накопителя? Какова программная модель и работа устройства сдвига? Какова программная модель и функции элементов генераторов адресов данных DAG1и DAG2? Какова программная модель и функции элементов генератора адресов инструкций (программного автомата)? Как представлены периферийные устройства в базовой архитектуре ЦСП? Как описывается прямая и косвенная адресация данных в инструкциях сигнальных процессоров? Какие типы пересылок поддерживаются системой команд сигнального процессора и как они выполняются? Какие инструкции выполняют управление программой? Какие инструкции обеспечивают ветвление программ? Как выполняется инструкция IDLE и для чего она используется? Каковы структура ассемблерной программы и основные директивы ассемблера? Что понимается под программным модулем и как он объявляется? Какие директивы используются для межмодульных связей? Как объявляются константы в ассемблере ADSP-2181? Как объявляются переменные в ассемблере ADSP-2181? Как осуществляется инициализация переменных (буферов)? Какие программные средства используются для разработки и отладки программ сигнальных процессоров? Какие аппаратные средства используются для разработки и отладки систем на базе сигнальных процессоров? Каковы основные этапы разработки и отладки систем на базе сигнальных процессоров? Как осуществляется вызов ассемблера и линкера и какие задачи решают данные программные средства? Каково назначение симулятора и как осуществляется отладка программ с его помощью? Какова структура лабораторного комплекса для отладки систем на базе сигнального процессора ADSP-2181? Принцип цифровой фильтрации. Приведите примеры применения цифровой фильтрации в системах обработки аудио и видеосигналов. Импульсная характеристика цифрового фильтра и её свойства. Чем принципиально отличаются импульсные характеристики нерекурсивных и рекурсивных фильтров? Как определяется понятие системной функции цифрового фильтра? Как вычисляется АЧХ и ФЧХ нерекурсивного цифрового фильтра? Вычисление дискретной свертки. Подпрограмма вычисления свертки на ЦСП ADSP2181. Каковы основные команды программы реализации нерекурсивного фильтра? Как обобщенно описывается инструкция DO UNTIL и как она выполняются? Где хранятся данные и коэффициенты, как формируются их адреса? Как задаются данные и коэффициенты в программе? Возвращаемые и изменяемые параметры и регистры. Чем определяется максимальный порядок фильтра? Оценить число инструкций при реализации нерекурсивного фильтра порядка N на ЦСП.


