реклама на сайте
подробности

 
 
> Оптимальная реализация КИХ фильтра на x86
chan
сообщение Jan 23 2007, 01:33
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 8-05-05
Пользователь №: 4 846



Подскажите алгоритм реализации КИХ фильтра на x86 совместимом процессоре. Требуется корректировать частотную характеристику 8 каналов аудио (16 бит 48КГц) в реальном времени. Реализация FFT->умножение->IFFT не проходит по времени (процессор 755 МГц). Для коррекции характеристики достаточно 64 коэффициентов. Может быть есть уже готовые примеры реализации, или на этом процессоре такое в принципе не возможно?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
blackfin
сообщение Jan 26 2007, 19:36
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(chan @ Jan 23 2007, 01:33) *
Требуется корректировать частотную характеристику 8 каналов аудио (16 бит 48КГц) в реальном времени. Реализация FFT->умножение->IFFT не проходит по времени (процессор 755 МГц). Для коррекции характеристики достаточно 64 коэффициентов. Может быть есть уже готовые примеры реализации, или на этом процессоре такое в принципе не возможно?

Используйте DCT. Он быстрее..
Практически "готовый" эквалайзер можно "скопировать"
из стандартов по сжатию звука:
iso11172-3: polyphase filter bank - 32 полосы,
iso13818-3: polyphase filter bank - 32 полосы,
iso13818-7: TDAC filter bank - 128/1024 полосы,
iso14496-3: TDAC filter bank - 128/1024/120/960 полосы.
См.-> http://www.mp3-tech.org/programmer/docs/paper-1-english.pdf
Go to the top of the page
 
+Quote Post
GinGreen
сообщение Jan 27 2007, 11:24
Сообщение #3





Группа: Новичок
Сообщений: 12
Регистрация: 9-12-06
Пользователь №: 23 333



# Используйте DCT. Он быстрее.. #

Может и быстрее, но при этом должны выполняться условия для N - точечной входной последовательности:

1. последовательность вещественная
2. x(n) = x(N - n)
Go to the top of the page
 
+Quote Post
blackfin
сообщение Jan 27 2007, 13:16
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(GinGreen @ Jan 27 2007, 11:24) *
Может и быстрее, но при этом должны выполняться условия для N - точечной входной последовательности:
1. последовательность вещественная
2. x(n) = x(N - n)


1. Звук - это обычно "вещественная последовательность".
2. Банки фильтров, используемые в стандартах сжатия звука,
это именно ФИЛЬТРЫ, реализованные с помощью алгоритма DCT
и еще много чего. И как всякий фильтр они не требуют периодического
по времени сигнала на входе.

Что касается, "может и быстрее", то FFT (radix2) требует:
4*N*log2(N)+4*N умножений реальных чисел и
6*N*log2(N)+2*N сложений реальных чисел, т.е.
1792 умножений и 2432 сложений для N=64.

Тогда как DCT (radix-2) требует:
(N/2)*log2(N) умножений реальных чисел и
(3*N/2)*log2(N)-N+1 сложений реальных чисел, т.е.
192 умножений и 513 сложений для N=64.

См: IEEE Trans. on Comm., v.com-25, no.9, sept.1977, p.1004,
W.Chen. "A fast computational algorithm for the discrete cosine transform".

Сообщение отредактировал blackfin - Jan 27 2007, 13:56
Go to the top of the page
 
+Quote Post
blackfin
сообщение Jan 27 2007, 13:51
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Пардон, в статье Chen'а опечатка.

Для FFT (radix2):
2*N*log2(N)-2*N умножений реальных чисел и
3*N*log2(N)-N сложений реальных чисел, т.е.
640 умножений и 704 сложений для N=64.

Для DCT (radix-2):
(N/2)*log2(N) умножений реальных чисел и
(3*N/2)*log2(N)-N+1 сложений реальных чисел, т.е.
192 умножений и 513 сложений для N=64.

Сообщение отредактировал blackfin - Jan 27 2007, 14:32
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 22:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01425 секунд с 7
ELECTRONIX ©2004-2016