Реализация бпф на микроконтроллере
Выборка данных их АЦП
// sample[] – массив 16-разрядных переменных
for i = 0 to (N-1)
begin
doADCSampleConversion()
// выборка входного сигнала в АЦП
sample[i] = read8BitSampleFromADC()
// чтение 8-разрядных данных из АЦП
end
for i = 0 to (N-1)
begin
if (sample[i] & 0x0080)
// Если 8-разрядная выборка отрицательная
sample[i] = sample[i] + 0xFF00// установить знак (-)
// 16-разрядного слова
end
Перестановка бит
i=x_n_re[ 1]; x_n_re[ 1]=x_n_re[128]; x_n_re[128]=i;
i=x_n_re[ 2]; x_n_re[ 2]=x_n_re[ 64]; x_n_re[ 64]=i;
i=x_n_re[ 3]; x_n_re[ 3]=x_n_re[192]; x_n_re[192]=i;
i=x_n_re[ 4]; x_n_re[ 4]=x_n_re[ 32]; x_n_re[ 32]=i;
...
i=x_n_re[207]; x_n_re[207]=x_n_re[243]; x_n_re[243]=i;
i=x_n_re[215]; x_n_re[215]=x_n_re[235]; x_n_re[235]=i;
i=x_n_re[223]; x_n_re[223]=x_n_re[251]; x_n_re[251]=i;
i=x_n_re[239]; x_n_re[239]=x_n_re[247]; x_n_re[247]=i;
Таблица для вычисления синуса и косинуса
const int cosLUT[N/2] = {+128,+127,+127,...,-127,-127,-127};
const int sinLUT[N/2] = {+0 ,+3 , +6,...,+9 , +6, +3};
Преобразование из комплексной в показательную форму
const unsigned char magnLUT[16][16] =
{
{0x00,0x10,0x20, ... ,0xd0,0xe0,0xf0},
{0x10,0x16,0x23, ... ,0xd0,0xe0,0xf0},
...
{0xe0,0xe0,0xe2, ... ,0xff,0xff,0xff},
{0xf0,0xf0,0xf2, ... ,0xff,0xff,0xff}
};
...
/* Вычисление x_n_re=abs(x_n_re) и x_n_im=abs(x_n_im) */
...
for(i=1; i<N_DIV_2; i++)
x_n_re[i] = magnLUT[x_n_re[i]>>11][x_n_im[i]>>11];
СТРУКТУРНАЯ СХЕМА НЕРЕКУРСИВНОГО ФИЛЬТРА
СТРУКТУРНЫЕ СХЕМЫ РЕКУРСИВНЫХ ФИЛЬТРОВ
ПРЯМАЯ ФОРМА
ПОСЛЕДОВАТЕЛЬНАЯ (КАСКАДНАЯ) ФОРМА
КАНОНИЧЕСКАЯ ФОРМА
ПЕРЕСТАНОВКА РЕКУРСИВНОЙ
И НЕРЕКУРСИВНОЙ ЧАСТЕЙ
ИТОГОВАЯ КАНОНИЧЕСКАЯ ФОРМА
ТРАНСПОНИРОВАННАЯ ФОРМА ФИЛЬТРА
ПРОМЕЖУТОЧНЫЙ ЭТАП
ТРАНСПОНИРОВАННАЯ ФОРМА
(DIRECT TRANSPOSED FORM II)
ТРАНСПОНИРОВАННАЯ ФОРМА
(DIRECT TRANSPOSED FORM I)
ПОСЛЕДОВАТЕЛЬНЫЕ (КАСКАДНЫЕ) ФОРМЫ
ПРЯМАЯ ФОРМА
КАНОНИЧЕСКАЯ ФОРМА
ТРАНСПОНИРОВАННАЯ ФОРМА
ЧАСТОТНАЯ ХАРАКТЕРИСТИКА ФИЛЬТРА
СИНТЕЗ КИХ-ФИЛЬТРА С ИСПОЛЬЗОВАНИЕМ ОКОННОЙ ФУНКЦИИИ
СИНТЕЗ С ПОМОЩЬЮ ПРЯМОУГОЛЬНОГО ОКНА
ИМПУЛЬСНАЯ ХАРАКТЕРИСТИКА ФНЧ
АЧХ ФИЛЬТРА
СИНТЕЗ С ПОМОЩЬЮ ОКНА ХЭММИНГА
ИМПУЛЬСНАЯ ХАРАКТЕРИСТИКА ФНЧ
АЧХ ФИЛЬТРА
FDATOOL –ГЛАВНОЕ ОКНО
ПРОЕКТИРОВАНИЕ ПОЛОСОВЫХ И РЕЖЕКТОРНЫХ ФИЛЬТРОВ С ОСПОЛЬЗОВАНИЕМ ФНЧ И ФВЧ
ПРОЕКТИРОВАНИЕ ФВЧ С ИСПОЛЬЗОВАНИЕМ ИМПУЛЬСНОЙ ХАРАКТЕРИСТИКИ ФНЧ
ИСХОДНЫЙ ФИЛЬТР
МЕТОД ИНВЕРСИИ СПЕКТРА
МЕТОД РЕВЕРСИРОВАНИЯ СПЕКТРА
АНАЛОГОВЫЕ ФИЛЬТРЫ-ПРОТОТИПЫ
ФИЛЬТР БАТТЕРВОРТА
ФИЛЬТР ЧЕБЫШЕВА 1-ГО РОДА
ФИЛЬТР ЧЕБЫШЕВА 2-ГО РОДА
ЭЛЛИПТИЧЕСКИЙ ФИЛЬТР
ФИЛЬТР БЕССЕЛЯ
ПРЕОБРАЗОВАНИЕ ФНЧ В ПОЛОСОВОЙ ФИЛЬТР
ИСХОДНЫЙ ФНЧ ПОЛОСОВОЙ ФИЛЬТР
ПРЕОБРАЗОВАНИЕ ФНЧ В РЕЖЕКТОРНЫЙ ФИЛЬТР
ИСХОДНЫЙ ФНЧ РЕЖЕКТРОНЫЙ ФИЛЬТР
-
Количество точек
Время выполнения
Intel Xeon – 2,4 ГГц
TMS320C6416-600 МГц
TMS320C62x
Stratix
Тактов
(мкс)
ADSP-
TS201 TigerSHARC
8051 SilLabs, fT=50 МГц
256
6952
256 (1,06 )
2402
33 мс
1024
18 мкс
11 мкс
34651
1024 (2,0)
11662
169 мс
2048
76010
2048 (4,03)
25316