|
FIR 8000-20000 taps (коэффициентов), DSP или FPGA? |
|
|
|
Sep 2 2010, 06:24
|
Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984

|
Доброго времени суток, уважаемые господа! Собственно ТЗ: Необходимо реализовать FIR floating point или Fixed Point особенность задачи- фильтр очень длинный. Другие типы фильтров не интересуют. - 24 bit input
- коэффициенты минимум 24 bit лучше float хотябы single precision
- длина 8000-20000 taps
- выход без округления.
- частота сэмплирования 50-200 кГц
Прошу ващего совета: на чём это всё делать? Также выносится на обсуждение Алгоритм вычисления: ВЛОБ или через FFT - IFFT К посту прикладываю интересную статью вранцузов  . Да и ещё проект не комерческий. Так что использования opencores или free lib, LOW COST тех решения приветсвуются!!
|
|
|
|
|
 |
Ответов
|
Sep 3 2010, 17:53
|
Местный
  
Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859

|
Немного добавлю ко всему вышеизложенному.
1. КИХ-фильтр надо рассчитывать как оптимальный по Чебышеву. Он обладает наименьшим порядком.
2. Скорее всего, MatLab не подойдет для рассчета КИХ-фильтра такой длины. Результат не будет дотягивать до оптимального. Длинные фильтры лучше считать в специализированной программе. Раньше была FD (Filter Designer), сделанная в Питере в коллективе А.А. Ланне.
3. Считать фильтр, чтобы имп. характеристика получилась четной длины. Тогда она будет полностью симметричной и можно вычислять свертку по приведенной схеме. Тогда, например, за 10 тактов на одном умножителе можно вычислить свертку длиной 20 коэффициентов. При симметричной имп. характеристике достаточно хранить только половину коэффициентов - существенная экономия при таких порядках.
4. В Вашем случае Fs = 200 кГц, Ft = 200 МГц. Значит на каждый поступающий отсчет сигнала есть 1000 тактов для умножения. Если взять 8 умножителей и воспользоваться приведенной схемой, то можно реализовать фильтр длиной 16000 коэффициентов.
5. Реализовать в FPGA. Единственная проблема - хранение отсчетов сигнала, может быть понадобится внешняя память. Делал подобные фильтры, но не длиннее 8192 коэффициентов, на Stratix, Stratix II, Cyclone II.
|
|
|
|
|
Sep 3 2010, 18:10
|
Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984

|
Цитата(soldat_shveyk @ Sep 3 2010, 21:53)  Немного добавлю ко всему вышеизложенному.
1. КИХ-фильтр надо рассчитывать как оптимальный по Чебышеву. Он обладает наименьшим порядком.
2. Скорее всего, MatLab не подойдет для рассчета КИХ-фильтра такой длины. Результат не будет дотягивать до оптимального. Длинные фильтры лучше считать в специализированной программе. Раньше была FD (Filter Designer), сделанная в Питере в коллективе А.А. Ланне.
3. Считать фильтр, чтобы имп. характеристика получилась четной длины. Тогда она будет полностью симметричной и можно вычислять свертку по приведенной схеме. Тогда, например, за 10 тактов на одном умножителе можно вычислить свертку длиной 20 коэффициентов. При симметричной имп. характеристике достаточно хранить только половину коэффициентов - существенная экономия при таких порядках.
4. В Вашем случае Fs = 200 кГц, Ft = 200 МГц. Значит на каждый поступающий отсчет сигнала есть 1000 тактов для умножения. Если взять 8 умножителей и воспользоваться приведенной схемой, то можно реализовать фильтр длиной 16000 коэффициентов.
5. Реализовать в FPGA. Единственная проблема - хранение отсчетов сигнала, может быть понадобится внешняя память. Делал подобные фильтры, но не длиннее 8192 коэффициентов, на Stratix, Stratix II, Cyclone II. Спасибо, очень дельный совет.. Если вы можете выкладывать примеры, исходного хдл кода , только приветсвуется. Сегодня просматривал характеристики процессора от Analog Sharc Audio Processor 1,2-1,6 GFLOPS Audio proceesor. Расчёт 1 taps FIR занимает 1,25 нс что уже позволяет посчитать не один фильтр для 96кГц и длительностью в 0.1с. Если я не ошибаюсь (9600 taps*10*1,25*10^(-9) c == 0.12 ms на один фильтр)
|
|
|
|
Сообщений в этой теме
0xFF FIR 8000-20000 taps (коэффициентов) Sep 2 2010, 06:24 andrew_b Цитата(0xFF @ Sep 2 2010, 10:24) Необходи... Sep 2 2010, 06:50 DmitryR Цитата(0xFF @ Sep 2 2010, 10:24) [*] 24 b... Sep 2 2010, 07:19 rv3dll(lex) у виртех 5 умножитель18*25 Sep 2 2010, 07:29 0xFF Цитата(andrew_b @ Sep 2 2010, 09:50) А вы... Sep 2 2010, 07:35 DmitryR Цитата(0xFF @ Sep 2 2010, 11:35) Наскольк... Sep 2 2010, 07:47 rv3dll(lex) я вот никак не смог запустить фильтр на 400 мегаге... Sep 2 2010, 08:21 des00 делайте IIR, на флоатовском тигровом шарике Sep 2 2010, 08:32 DmitryR Мне кажется что он может во-первых не успеть, а во... Sep 2 2010, 10:21  alex_os Если не секрет, для чего такой монстроидальный фил... Sep 2 2010, 12:07 0xFF Цитата(des00 @ Sep 2 2010, 11:32) делайте... Sep 2 2010, 14:16  blackfin Цитата(0xFF @ Sep 2 2010, 18:16) Фильтр п... Sep 2 2010, 16:23   DS Цитата(blackfin @ Sep 2 2010, 20:23) Для ... Sep 2 2010, 16:55    0xFF Цитата(DS @ Sep 2 2010, 19:55) Еще лучше ... Sep 2 2010, 18:01   DmitryR Цитата(blackfin @ Sep 2 2010, 20:23) Для ... Sep 3 2010, 05:25    0xFF Цитата(DmitryR @ Sep 3 2010, 09:25) А это... Sep 3 2010, 06:53     des00 Цитата(0xFF @ Sep 3 2010, 01:53) Следующи... Sep 3 2010, 07:07     VladimirB Цитата(0xFF @ Sep 3 2010, 10:53) Спасибо ... Sep 3 2010, 07:22      DmitryR Цитата(VladimirB @ Sep 3 2010, 11:22) 1) ... Sep 3 2010, 07:39       alex_os Самый простой способ сделать такой чудовищный филь... Sep 3 2010, 08:28        0xFF Цитата(alex_os @ Sep 3 2010, 12:28) Самый... Sep 3 2010, 10:32         DS Цитата(0xFF @ Sep 3 2010, 14:32) Ну их в ... Sep 3 2010, 12:03          0xFF Цитата(DS @ Sep 3 2010, 16:03) А чем, про... Sep 3 2010, 15:07           DS Вы все-таки изложите физическую постановку вопроса... Sep 3 2010, 16:12            0xFF Цитата(DS @ Sep 3 2010, 20:12) На результ... Sep 3 2010, 17:52             alex_os Цитата(0xFF @ Sep 3 2010, 21:52) В итоге ... Sep 3 2010, 19:55    DS Цитата(DmitryR @ Sep 3 2010, 09:25) А это... Sep 3 2010, 07:18 MKS Цитата(alex_os @ Sep 2 2010, 15:07) ...
П... Sep 2 2010, 16:12 alex_os Цитата(MKS @ Sep 2 2010, 20:12) Подробное... Sep 2 2010, 18:32  DS Цитата(alex_os @ Sep 2 2010, 22:32) upd: ... Sep 2 2010, 18:50  0xFF Цитата(alex_os @ Sep 2 2010, 21:32) Немно... Sep 2 2010, 20:31 0xFF Цитата(petrov @ Sep 3 2010, 23:16) И заче... Sep 3 2010, 19:48 petrov Цитата(0xFF @ Sep 3 2010, 23:48) Потому ч... Sep 3 2010, 20:03 alex_os Цитата(0xFF @ Sep 3 2010, 23:48) Потому ч... Sep 3 2010, 20:03 0xFF Цитата(petrov @ Sep 4 2010, 00:03) Не виж... Sep 3 2010, 20:16 petrov Цитата(0xFF @ Sep 4 2010, 00:06) Расскажи... Sep 3 2010, 20:19  0xFF Цитата(petrov @ Sep 4 2010, 00:19) Один р... Sep 3 2010, 20:22   petrov Цитата(0xFF @ Sep 4 2010, 00:22) "Ад... Sep 3 2010, 20:30 alex_os Цитата(0xFF @ Sep 4 2010, 00:16) Расскажи... Sep 3 2010, 20:26  0xFF Цитата(alex_os @ Sep 4 2010, 00:26) Я нич... Sep 3 2010, 20:51   petrov Цитата(0xFF @ Sep 4 2010, 00:51) Есть инт... Sep 3 2010, 20:58    0xFF Цитата(petrov @ Sep 4 2010, 00:58) Методо... Sep 3 2010, 21:08     petrov Цитата(0xFF @ Sep 4 2010, 01:08) Да я не ... Sep 3 2010, 21:26     DmitryR Цитата(0xFF @ Sep 4 2010, 01:08) Качество... Sep 5 2010, 07:26 0xFF Цитата(petrov @ Sep 4 2010, 01:26) Прости... Sep 3 2010, 21:30 petrov Цитата(0xFF @ Sep 4 2010, 01:30) Простите... Sep 3 2010, 21:37  0xFF Цитата(petrov @ Sep 4 2010, 01:37) Удачи.... Sep 3 2010, 22:10 0xFF Цитата(DmitryR @ Sep 5 2010, 10:26) Вам к... Sep 6 2010, 23:15 Timmy Кроссовер со срезом 300дБ на декаду будет звучать ... Sep 10 2010, 08:37 wolfman Хм, а слушать в машине ТС небось будет мр3... Sep 10 2010, 09:13 0xFF Цитата(Timmy @ Sep 10 2010, 12:37) Кроссо... Sep 10 2010, 13:16 Timmy Цитата(0xFF @ Sep 10 2010, 17:16) вы о КИ... Sep 10 2010, 17:12
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|