Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: C67x DSP Library
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Dr.NoA
Здравствуйте.

У меня вопрос по поводу использования функции DSPF_sp_biquad из библиотеки DSPLib для TMS320C67x.
В описании сказано, что функцию следует вызывать для обработки количества отсчетов больше 4, а мне нужно обрабатывать каждый отсчет отдельно в реальном масштабе времени, т.е. по тактовому сигналу считать 1 входной отсчет и выдать 1 выходной и ждать прихода следующего тактового испульса. Можно ли использовать в этом случае DSPF_sp_biquad или нет?
SM
раз сказано 4, значит нельзя. Значит цикл соптимизирован так, что у него после конвейеризации minimum safe trip count получился именно 4.
Dr.NoA
Понятно.
Тогда как же народ делает real-time фильтрацию?
fontp
По четыре и делают. Делается двойная буферизация, размер буферов кратен 4. Один буфер заливается обработчиком прерываний, второй в это время обрабатвается программой

for (i=0; i<len; i+=4) {
do_something(buf[i]);
}

Задержка будет на len отсчётов, для любого реал-тайма достаточно, вызывать прерывание на каждый отсчёт всё-равно слишком накладно. На самых подходящих процессорах сохранение контекста в обработчиках прерываний требует десятков (а то и сотни) тактов.
Нафиг нужно процессор грузить, да ещё и 6x, который как правило вообще аппаратно запрещает прерывания в конвейерных циклах, поскольку обычно неспособен сохранять контекст конвейера.
Dr.NoA
Спасибо за ответы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.