59
ALGRF, экземпляр алгоритма XDAIS должен создаваться динами-
ческий, поэтому Вы используете начальное значение инициализа-
ции равное NULL.
• Инициализация программных потоков во время выполнения.
Следующая ступень - это динамическая инициализация. Первона-
чально код подготавливает статические параметры, которые ис-
пользуются в динамической инициализации. По умолчанию Вы
имеете два набора коэффициентов FIR фильтра: одна для фильтра
нижних частот, а другая для фильтра высоких частот. ваш алгоритм
может нуждаться в других статических данных, которые могут быть
инициализированы таким путем.
Функция thrAudioprocInit( ) должна инициализировать все экземп-
ляры потоков Audioproc, в нашем случае это thrAudioproc[0] и
thrAudioproc[1]. Для каждого потока в цикле создаются и инициа-
лизируются все используемые им экземпляры
алгоритма XDAIS.
Для каждого потока, Вы сначала создаете один экземпляр FIR и
один экземпляр VOL, таким образом, инициализируя поля algFIR и
algVOL в структуре данных потока. Вы создаете экземпляр FIR пу-
тем присваивания значения параметров структуры заданных по
умолчанию параметрам локальным переменных, и затем изменяете
значения полей, которые отличаются от исходных.
Для экземпляра
VOL алгоритма необходимо проделать то же самое.
• Функция run( ) вызываемая объектом программных прерыва-
ний SWI. thrAudoprocRun( ) - функция с довольно очевидной струк-
турой. Функция вызывается объектами swiAudoproc0 и
swiAudoproc1 с аргументами 0 и 1 соответственно. Аргумент chan –
это номер канала, который используется для доступа к требуемой
структуре данных программного потока.
Функция
производит регулярный обзор назначенного входа и раз-
мещения выходного канала, определяет адреса и размеры обоих
фреймов, обрабатывает входной фрейм, и сохраняет результаты в
выходной фрейм после вызова FIR и VOL. Входом для FIR является
входной фрейм, а выходом FIR – промежуточный буфер. Этот же
буфер является входом для VOL и его выход
- это выходной фрейм.
По окончании, эта функция освобождает входной канал и запускает
выходной канал перед выходом. ,
• thrControl.h, thrControl.c: Управляющий программный поток – это по-
ток PRD. Частью управляющего процесса также является функция
thrControlIr( ), которая вызывается объектом clkControl CLK каждый
такт. Последний, симулирует подпрограмму регулярного прерывания,
которое вызывается при возникновении внешнего события
связанного с
аппаратным обеспечением. Эта стандартная программа обслуживания
прерывания читает модельные регистры ввода-вывода, содержащие те-