Полная версия этой страницы:
C67x DSP Library
Здравствуйте.
У меня вопрос по поводу использования функции DSPF_sp_biquad из библиотеки DSPLib для TMS320C67x.
В описании сказано, что функцию следует вызывать для обработки количества отсчетов больше 4, а мне нужно обрабатывать каждый отсчет отдельно в реальном масштабе времени, т.е. по тактовому сигналу считать 1 входной отсчет и выдать 1 выходной и ждать прихода следующего тактового испульса. Можно ли использовать в этом случае DSPF_sp_biquad или нет?
раз сказано 4, значит нельзя. Значит цикл соптимизирован так, что у него после конвейеризации minimum safe trip count получился именно 4.
Понятно.
Тогда как же народ делает real-time фильтрацию?
По четыре и делают. Делается двойная буферизация, размер буферов кратен 4. Один буфер заливается обработчиком прерываний, второй в это время обрабатвается программой
for (i=0; i<len; i+=4) {
do_something(buf[i]);
}
Задержка будет на len отсчётов, для любого реал-тайма достаточно, вызывать прерывание на каждый отсчёт всё-равно слишком накладно. На самых подходящих процессорах сохранение контекста в обработчиках прерываний требует десятков (а то и сотни) тактов.
Нафиг нужно процессор грузить, да ещё и 6x, который как правило вообще аппаратно запрещает прерывания в конвейерных циклах, поскольку обычно неспособен сохранять контекст конвейера.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.