Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: FIR 8000-20000 taps (коэффициентов)
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Страницы: 1, 2
0xFF
Доброго времени суток, уважаемые господа!

Собственно ТЗ:

Необходимо реализовать FIR floating point или Fixed Point особенность задачи- фильтр очень длинный. Другие типы фильтров не интересуют.
  • 24 bit input
  • коэффициенты минимум 24 bit лучше float хотябы single precision
  • длина 8000-20000 taps
  • выход без округления.
  • частота сэмплирования 50-200 кГц

Прошу ващего совета: на чём это всё делать?
Также выносится на обсуждение Алгоритм вычисления: ВЛОБ или через FFT - IFFT
К посту прикладываю интересную статью вранцузов biggrin.gif . Да и ещё проект не комерческий. Так что использования opencores или free lib, LOW COST тех решения приветсвуются!!
andrew_b
Цитата(0xFF @ Sep 2 2010, 10:24) *
Необходимо реализовать FIR floating point или Fixed Point особенность задачи- фильтр очень длинный.
А вы не думали над тем, чтобы заменить один фильтр высокого порядка каскадным соединением фильтров более низких порядков?
DmitryR
Цитата(0xFF @ Sep 2 2010, 10:24) *
[*] 24 bit input
[*] коэффициенты минимум 24 bit лучше float хотябы single precision
[*] длина 8000-20000 taps
[*] выход без округления.
[*] частота сэмплирования 50-200 кГц

20000 taps умножаем на 200 кГц и получаем необходимость выполнить 4 миллиарда умножений 24*24 в секунду. Для DSP наверное многовато. Для FPGA, если вести работу на 200 МГц потребуется всего 20 умножителей. В терминах FPGA, где умножители 18*18 это будет 80 умножителей для single precision или 180 умножителей для double precision. Можно пытаться на старших Циклонах делать, если не получится - на Virtex-5 SXT.
rv3dll(lex)
у виртех 5 умножитель18*25
0xFF
Цитата(andrew_b @ Sep 2 2010, 09:50) *
А вы не думали над тем, чтобы заменить один фильтр высокого порядка каскадным соединением фильтров более низких порядков?


Да имменно по этому поводу привёл статью. Там как раз исследуется вопрос оптимального разбиения на низкие порядки. Но насколько я вижу для DSP более подходит FFT

Цитата(DmitryR @ Sep 2 2010, 10:19) *
20000 taps умножаем на 200 кГц и получаем необходимость выполнить 4 миллиарда умножений 24*24 в секунду. Для DSP наверное многовато. Для FPGA, если вести работу на 200 МГц потребуется всего 20 умножителей. В терминах FPGA, где умножители 18*18 это будет 80 умножителей для single precision или 180 умножителей для double precision. Можно пытаться на старших Циклонах делать, если не получится - на Virtex-5 SXT.

Насколько я понимаю в случае использования FPGA придётся и внешнюю RAM подключать, так как на внутренних блоках хранение всех промежуточных данных и коэффициентов врядли реализуемо? Не станет ли разрядность шины данных RAM узким местом?

4миллиарда это если классический FIR, оправдано ли использовать FFT подход на FPGA или другие более быстрые методы расчёта FIR на FPGA?


Цитата(rv3dll(lex) @ Sep 2 2010, 10:29) *
у виртех 5 умножитель18*25


что уже плохо.

Интересно сколько стоит 4 GFLOPS на FPGA? Вроде как в моём случае это как раз те самые 4 млрд.
DmitryR
Цитата(0xFF @ Sep 2 2010, 11:35) *
Насколько я понимаю в случае использования FPGA придётся и внешнюю RAM подключать, так как на внутренних блоках хранение всех промежуточных данных и коэффициентов врядли реализуемо? Не станет ли разрядность шины данных RAM узким местом?

Поставите к каждому умножителю свой блок памяти на коэффиценты и все. Память там имеет два порта по 36 бит, работает как минимум не медленнее умножителя, а количество самих блоков памяти сравнимо с количеством умножителей.

Цитата(0xFF @ Sep 2 2010, 11:35) *
что уже плохо.

Их можно группировать и получать хоть double precision, я в первоначальных расчетах это учел и указал.

Цитата(0xFF @ Sep 2 2010, 11:35) *
Интересно сколько стоит 4 GFLOPS на FPGA? Вроде как в моём случае это как раз те самые 4 млрд.

В районе пятисот долларов я думаю получится.
rv3dll(lex)
я вот никак не смог запустить фильтр на 400 мегагерц. пришлось на 200 остановиться( ресурсов хватило и ладно.
des00
делайте IIR, на флоатовском тигровом шарике
DmitryR
Мне кажется что он может во-первых не успеть, а во-вторых оказаться подороже чем FPGA.
alex_os
Если не секрет, для чего такой монстроидальный фильтр нужен ?

По поводу возможной реализации, Тут кто-то выкладывал хорошую статейку название что-то вроде
Spectral Masking FIR. В двух словах суть метода длинный FIR filter с передаточной функцией H(z),
представляется в виде каскадного соединения фильтров H(z) = A(z^n) * B(z). Фильтр "А" очень
длинный, но его коэффициенты в основном нули. Фильтр "В" значительно более короткий.



0xFF
Цитата(des00 @ Sep 2 2010, 11:32) *
делайте IIR, на флоатовском тигровом шарике


IIR не подходит. ФЧХ не устраивает

Цитата(alex_os @ Sep 2 2010, 15:07) *
Если не секрет, для чего такой монстроидальный фильтр нужен ?

По поводу возможной реализации, Тут кто-то выкладывал хорошую статейку название что-то вроде
Spectral Masking FIR. В двух словах суть метода длинный FIR filter с передаточной функцией H(z),
представляется в виде каскадного соединения фильтров H(z) = A(z^n) * B(z). Фильтр "А" очень
длинный, но его коэффициенты в основном нули. Фильтр "В" значительно более короткий.


Фильтр предназначен для очень резкого разделения частот. Давление порядка 300 дб.

Вы наверное иммели ввиду эту статью?
MKS
Цитата(alex_os @ Sep 2 2010, 15:07) *
...
По поводу возможной реализации, Тут кто-то выкладывал хорошую статейку название что-то вроде Spectral Masking FIR.
....

Подробное описание этой методики есть в книге Ljiljana Milić. Multirate Filtering for Digital Signal Processing: MATLAB Applications глава 10.
blackfin
Цитата(0xFF @ Sep 2 2010, 18:16) *
Фильтр предназначен для очень резкого разделения частот. Давление порядка 300 дб.

Для этого все промежуточные вычисления нужно делать как минимум с 300/6.02=50 битной точностью.. rolleyes.gif
DS
Цитата(blackfin @ Sep 2 2010, 20:23) *
Для этого все промежуточные вычисления нужно делать как минимум с 300/6.02=50 битной точностью.. rolleyes.gif


Еще лучше представить себе физический процесс с различием в размахе составляющих в 10^15 в полосе 50 - 200 КГц. ИМХО, автора надо отправлять учить школьную физику и уточнять постановку задачи.
0xFF
Цитата(DS @ Sep 2 2010, 19:55) *
Еще лучше представить себе физический процесс с различием в размахе составляющих в 10^15 в полосе 50 - 200 КГц. ИМХО, автора надо отправлять учить школьную физику и уточнять постановку задачи.

в школе Дискретные Цифровые Системы, вроде пока ещё не преподают...

Физический процес - звуковой сигнал. Цель проекта - активный кроссовер для разделения частот, не PC based.
Фильтр должен работать на заранее выбранной фиксированной частоте сэмплирования. Остановимся на 3х: 41, 96, 192 кГц. Задача фильтра обработать окно длинной 0.1 сек., соответсвенно по т Котельникова в идеале фильтруемые частоты 10 - 21,5 кГц и выше... , . Коэффициенты фильтра должны быть не фиксированные, то есть считываться из какой-то RAM. Если я ещё что-то упускаю, уточню ещё раз.

Один из самых важных вопросов ФПГА или DSP, например, TI floating point серрии С6000 ( TMS320C6745)?. Очень интересуют готовые корки либы и тп....

... Что то я начинаю склоняться больше к DSP
alex_os
Цитата(MKS @ Sep 2 2010, 20:12) *
Подробное описание этой методики есть в книге Ljiljana Milić. Multirate Filtering for Digital Signal Processing: MATLAB Applications глава 10.

Немножко не то.
Читать Interpolated FIR и далее. Кажется ув. vadkudr выкладывал толковую статью на эту тему здесь на электрониксе, но чего -то не могу найти.

2 0xFF 300 дБ это круто! Жутко интересно, что это за процесс фильтруется ? Явно это ни какая не радиотехника smile.gif.
upd: прочитал выше про кроссовер (честно говоря не очень понимаю что это и для чего это нужно ) , но остается главный вопрос как могут получится 300 дБ на звуке !?
DS
Цитата(alex_os @ Sep 2 2010, 22:32) *
upd: прочитал выше про кроссовер (честно говоря не очень понимаю что это и для чего это нужно ) , но остается главный вопрос как могут получится 300 дБ на звуке !?


Да и вообще в электрическом сигнале.
0xFF
Цитата(alex_os @ Sep 2 2010, 21:32) *
Немножко не то.
Читать Interpolated FIR и далее. Кажется ув. vadkudr выкладывал толковую статью на эту тему здесь на электрониксе, но чего -то не могу найти.

2 0xFF 300 дБ это круто! Жутко интересно, что это за процесс фильтруется ? Явно это ни какая не радиотехника smile.gif.
upd: прочитал выше про кроссовер (честно говоря не очень понимаю что это и для чего это нужно ) , но остается главный вопрос как могут получится 300 дБ на звуке !?


-300 dB/на декаду вот что я имел ввиду,т.е крутизна спада АЧХ,а отношение полосы пропускания к подавлению может лежать в пределах 150dB.

DmitryR
Цитата(blackfin @ Sep 2 2010, 20:23) *
Для этого все промежуточные вычисления нужно делать как минимум с 300/6.02=50 битной точностью.. rolleyes.gif

А это double precision как раз. DSP точно не успеет - у них пиковая производительность где-то 4 GMACs, но single precision.
0xFF
Цитата(DmitryR @ Sep 3 2010, 09:25) *
А это double precision как раз. DSP точно не успеет - у них пиковая производительность где-то 4 GMACs, но single precision.


Спасибо за информацию, значит пока остановимся на VIRTEX. В наличие есть XC2VP30 - следующий EVO Board XUP2VP. Подойдёт вместо 5 SXT серии? На борту есть DDR2 память, Ethernet 100 Mbit.

Следующий список вопросов
  • Посоветуйте Генератор FIR на HDL с более гибкими настройками xilinx FIR 3.2 не подходит у него макс ширина коэф 18 бит
  • Есть ли ещё какой хороший тул по синтезу и верификации фильтров кроме Matlab Filter Design Toolbox, Вроде xilinx accel DSP когда-то позволял делать верификацию между Float и Fixed системами, но он вроде тоже потом стал опираться на Matlab.
  • На Open Cores есть проект FIRGen/MultGen - насколько он генерит синтезибельный код?


Заранее всем откликнувшимся - спасибо rolleyes.gif
des00
Цитата(0xFF @ Sep 3 2010, 01:53) *
Следующий список вопросов

что то мне подсказывает, что такой фир нужно будет писать ручками, а вот утаптывать ножками %)
DS
Цитата(DmitryR @ Sep 3 2010, 09:25) *
А это double precision как раз. DSP точно не успеет - у них пиковая производительность где-то 4 GMACs, но single precision.

А АЦР откуда он возьмет ?
VladimirB
Цитата(0xFF @ Sep 3 2010, 10:53) *
Спасибо за информацию, значит пока остановимся на VIRTEX. В наличие есть XC2VP30 - следующий EVO Board XUP2VP. Подойдёт вместо 5 SXT серии? На борту есть DDR2 память, Ethernet 100 Mbit.

Следующий список вопросов
  • Посоветуйте Генератор FIR на HDL с более гибкими настройками xilinx FIR 3.2 не подходит у него макс ширина коэф 18 бит
  • Есть ли ещё какой хороший тул по синтезу и верификации фильтров кроме Matlab Filter Design Toolbox, Вроде xilinx accel DSP когда-то позволял делать верификацию между Float и Fixed системами, но он вроде тоже потом стал опираться на Matlab.
  • На Open Cores есть проект FIRGen/MultGen - насколько он генерит синтезибельный код?


Заранее всем откликнувшимся - спасибо rolleyes.gif


1) MATLAB (Filter Design Tolbox -> HDL Compiler)
2) всегда пользовался чистым матлабом, АссельДСП уж больно навороченная и глючная тулза.
3) хз

Если запустите на 200МГц то вроде ваш виртекс2 подойдёт. У него 136 умножителей 18х18, что позволит реализовать 34 умножителя 36х36 и фильтр 34000 порядка с входной частотой данных 200кГц при тактовой 200МГц.

Единственно нужно помаксимуму конвейезировать ваш фильтр (галочка в Matlab HDL Compiler есть помнится), чтобы он запустился на 200МГц при достаточно большой загрузке ПЛИС.

З.Ы. понмится у нас ребята в особенно тяжёлых случаях писали свой фильтр путём ручного соединения и ручной настройки генериками DSP48 блоков.
DmitryR
Цитата(VladimirB @ Sep 3 2010, 11:22) *
1) MATLAB (Filter Design Tolbox -> HDL Compiler)
2) всегда пользовался чистым матлабом, АссельДСП уж больно навороченная и глючная тулза.

Я честно говоря в сомнении что MatLab сможет сделать такой фильтр в HDL. Писать его скорее всего придется руками, а вот проверить можно будет действительно против модели в MatLab.

Цитата(VladimirB @ Sep 3 2010, 11:22) *
Если запустите на 200МГц то вроде ваш виртекс2 подойдёт. У него 136 умножителей 18х18, что позволит реализовать 34 умножителя 36х36 и фильтр 34000 порядка с входной частотой данных 200кГц при тактовой 200МГц.

Да, только как мы выяснили выше тут понадобится double precision, а не 36*36, поэтому хватит его в лучшем случае на 100 кГц частоты. Но для упрощенной модели сойдет.
alex_os
Самый простой способ сделать такой чудовищный фильтр - это взять комп. с современным Inteloвским процессором. Взять хорошее FFT и вполне
потянет. Вот люди меряли -20ms на преобразование размером 2^20 ccылка


p.s. но наверняка можно сделать проще и дешевле, ибо супер вычислитель для звукового фильтра это крайне подозрительно, сразу на ум приходят аудиофилы с их золотыми проводами и серебряными конденсаторами smile.gif.

0xFF
Цитата(alex_os @ Sep 3 2010, 12:28) *
Самый простой способ сделать такой чудовищный фильтр - это взять комп. с современным Inteloвским процессором. Взять хорошее FFT и вполне
потянет. Вот люди меряли -20ms на преобразование размером 2^20 ccылка


p.s. но наверняка можно сделать проще и дешевле, ибо супер вычислитель для звукового фильтра это крайне подозрительно, сразу на ум приходят аудиофилы с их золотыми проводами и серебряными конденсаторами smile.gif.


Ну их в баню со с их золотом.

Да я подискал пару PC based систем вот например BruteFIR, или есть такие же решения на CUDE от nVidia.
DS
Цитата(0xFF @ Sep 3 2010, 14:32) *
Ну их в баню со с их золотом.

А чем, простите, Ваши 150 или 300 Дб отличаются от их золота? Вы про шумы, в частности, тепловые, слышали когда-нибудь ? А также про всякие неприятности с оцифровкой высокоточных сигналов ?
0xFF
Цитата(DS @ Sep 3 2010, 16:03) *
А чем, простите, Ваши 150 или 300 Дб отличаются от их золота? Вы про шумы, в частности, тепловые, слышали когда-нибудь ? А также про всякие неприятности с оцифровкой высокоточных сигналов ?


Я прекрасно понимаю соотношение качество-простота реализации и совсем не подымал этого вопроса. Да, бесспорно, можно воспользоваться FIR 18 bit с длинной 20-500 и в 95% задач это устраивает. Вот, например, при разработке Atomic Force микроскопа стояла задача измерения частоты изгиба контилевера (при изгибе менялось сопротивление подложки). Контилевер обладал так же ещё микро пьезо актуатором для реализации коллебаний (полуконтактный метод сканирования). Все измерения проводились в микро вольт области. После мостовой схемы измерения сопротивления с очень термостабильными резисторами, стоял аналоговый усилителем ina с коэф усиления 100-1000, дальше АЦП от Аналога. В итоге измеряемая разрядность сигнала оставалась к сожалению порядка 10-12 бит,а всё остальное шум. Вот в таком случае применять фир с флоатом и в тысячи taps для выделения основной резонансной частоты глупо. Я надеюсь это яркий пример про тепловые шумы и оцифровку сигналов в пару 10 кГц? или вы ещё сомневаетесь?

P.S. если вам не нравиться постановка задачи или ещё что, не нужно обвинять меня в некомпетентности! ок, вам за 50 и вы перечитали уже всё и на личном опыте уже всё знаете,всё пробовали, так вот я и обратился сюда чтобы не тратить 50 лет чтобы ответить на несколько вопросов. Будьте более дружелюбны!
DS
Вы все-таки изложите физическую постановку вопроса про свои 300 Дб. Поскольку, как мне сдается, что Вы в постановке задачи ошиблись порядков на 10. Для того, чтобы такой фильтр имел смысл, у Вас сигналы должны быть Мегавольтные, оцифровываться годами, чтобы не было искажения спектра из-за конечной длины последовательности, и все это с точностью до тепловых шумов.
Пока из постановки задачи видно, что Вы собираетесь вытащить отсутствующую в исходном сигнале информацию. Этим же занимаются и аудиофилы с золотыми проводками.
В той задаче, что Вы сейчас описали, вообще основная проблема будет в аналоговом фильтре перед АЦП, а какой Вы там после АЦП фильтр поставите, малозначимо. На результат будет влиять в пределах 10%.
0xFF
Цитата(DS @ Sep 3 2010, 20:12) *
На результат будет влиять в пределах 10%.

В итоге получится цифровой штангельциркуль laughing.gif

Теперь о теме
Есть желание поставить хороший звуковой активный фильтр для 2каналов и саба в автомобиль. Нормальные процессоры (с цифровым входом хотябы), которые продаются стоят хороших денег>500. Есть Вариант Behringer crossover не дорого но громоздко. PC систему не хотелось бы.

Цель проекта: своими руками из подручных материалов

Сделать проект полностью цифровой системы воспроизведения (эту задачу отдадим проигрывателям)-> передачи (например SPDIF)->обработки->передачи (SPDIF) ->усиления звука. На автомобильных форумах подобную тему подымать смысла нет, у аудиофилов тоже (сами знаете их отношение к цифре). А вот на родном электрониксе она уживается лучше всего.

В итоге есть задача для этого топика - наиболее компактно и чесно решить задачу разделения 3х частотных диапазонов (низкие средние и высокие) и последующей коррекции АЧХ и ФЧХ каждого диапазона с учётом каждого динамика. Самая предельная задача - это реализация на FPGA или DSP N штук разных фильтров, самым критичным из которых выступает фильтр низких частот 20 -200 Гц с постоянной фазой (FIR) и с наиболее крутым спадом. Изначально считаем, что звуковой сигнал имеет 24 бит. Частота дискретизации 96 кГц.

Проект не комерческий и, повторяю, не аудиофильский, потому должен помещаться в один чип для обработки и кучке приёмо-передатчиков. Всё остальные куски задачи не для этого топика.

P.S. надеюсь теперь дискусия пойдёт живее и продуктивней
soldat_shveyk
Немного добавлю ко всему вышеизложенному.

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.


0xFF
Цитата(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 на один фильтр)

petrov
И зачем такие крутые срезы нужны? Динамики разделяются аналоговыми фильтрами, а неравномерности АЧХ и заодно акустика помещения компенсируется адаптивным фильтром, микрофон только хороший нужен.
0xFF
Цитата(petrov @ Sep 3 2010, 23:16) *
И зачем такие крутые срезы нужны? Динамики разделяются аналоговыми фильтрами, а неравномерности АЧХ и заодно акустика помещения компенсируется адаптивным фильтром, микрофон только хороший нужен.

Потому что аналоговый фильтр даёт -10Дб на декаду и нелинейный разворот по фазе, вопрос декада это сколько Гц? А вот саб динамик например имеет рабочий диапазон - 20-200Гц. Вот и поставьте фильтр на 20 Гц и тогда к 200 вы получите 10 Дб, а на всём диапазоне подавления неравномерно смещённую фазу
alex_os
Цитата(0xFF @ Sep 3 2010, 21:52) *
В итоге есть задача для этого топика - наиболее компактно и чесно решить задачу разделения 3х частотных диапазонов (низкие средние и высокие) и последующей коррекции АЧХ и ФЧХ каждого диапазона с учётом каждого динамика. Самая предельная задача - это реализация на FPGA или DSP N штук разных фильтров, самым критичным из которых выступает фильтр низких частот 20 -200 Гц с постоянной фазой (FIR) и с наиболее крутым спадом. Изначально считаем, что звуковой сигнал имеет 24 бит. Частота дискретизации 96 кГц.


О! ну наконец-то какие-то конкретный цифирьки прорисовываются! Давайте в студию АЧХ самых крутых коммерческих фильтров данного применения. Готов спорить, что нету в них ни одного виртекса ни даже циклона или стратикса smile.gif.

p.s. конечно ни кто не запрещает сделать фильтр хоть со склоном 500 дБ на октаву и 1000 дБ в полосе подавления, но остается
главный вопрос - ЗАЧЕМ такой фильтр нужен !?
petrov
Цитата(0xFF @ Sep 3 2010, 23:48) *
Потому что аналоговый фильтр даёт -10Дб на декаду и нелинейный разворот по фазе, вопрос декада это сколько Гц? А вот саб динамик например имеет рабочий диапазон - 20-200Гц. Вот и поставьте фильтр на 20 Гц и тогда к 200 вы получите 10 Дб, а на всём диапазоне подавления неравномерно смещённую фазу


Не вижу никаких проблем, во всех многополосных акустических системах динамики имеют сильно перекрывающиеся и слабо спадающие частотные диапазоны, главное сильной неравномерности не допустить при проектировании, адаптивный фильтр исправит и АЧХ и ФЧХ и никаких сумашедших порядков не потребуется, задачка как раз для тигрового шарика.
alex_os
Цитата(0xFF @ Sep 3 2010, 23:48) *
Потому что аналоговый фильтр даёт -10Дб на декаду и нелинейный разворот по фазе, вопрос декада это сколько Гц? А вот саб динамик например имеет рабочий диапазон - 20-200Гц. Вот и поставьте фильтр на 20 Гц и тогда к 200 вы получите 10 Дб, а на всём диапазоне подавления неравномерно смещённую фазу

Почитайте чего-нибудь про фильтры. Фильтр первого порядка дает 20 дБ на декаду. Фильтр Nго порядка, дает спад N*20 дБ на декаду.
Эти децибелы асимптотические, т.е. в переходной полосе склон еще круче.

upd: А вообще, petrov как всегда прав, тут проблема не сделать очень крутой фильтр а сделать такой фильтр который будет оптимально
согласован с акустической системой.
0xFF
Цитата(petrov @ Sep 4 2010, 00:03) *
Не вижу никаких проблем, во всех многополосных акустических системах динамики имеют сильно перекрывающиеся и слабо спадающие частотные диапазоны, главное сильной неравномерности не допустить при проектировании, адаптивный фильтр исправит и АЧХ и ФЧХ и никаких сумашедших порядков не потребуется, задачка как раз для тигрового шарика.

Расскажите подробнее про адаптивный фильтр. Вы намекаете на корреукцию в реальном времени или Оффлайн?



Цитата(alex_os @ Sep 4 2010, 00:03) *
Почитайте чего-нибудь про фильтры. Фильтр первого порядка дает 20 дБ на декаду. Фильтр Nго порядка, дает спад N*20 дБ на декаду.
Эти децибелы асимптотические, т.е. в переходной полосе склон еще круче.

upd: А вообще, petrov как всегда прав, тут проблема не сделать очень крутой фильтр а сделать такой фильтр который будет оптимально
согласован с акустической системой.

Тоесть вы предлагаете использовать IIR 3-4 порядка в цифре? Я надеюсь вы не предлагаете настроить аналоговый фильтр на операционных усилителях?
petrov
Цитата(0xFF @ Sep 4 2010, 00:06) *
Расскажите подробнее про адаптивный фильтр. Вы намекаете на корреукцию в реальном времени или Оффлайн?


Один раз настроите, в реальном времени из-за посторонних шумов не реально будет такое делать.

Теория в замечательной книге
Уидроу Б.,Стринз С.
Адаптивная обработка сигналов.
http://lord-n.narod.ru/walla.html#uidrouAOC
0xFF
Цитата(petrov @ Sep 4 2010, 00:19) *
Один раз настроите, в реальном времени из-за посторонних шумов не реально будет такое делать.

Теория в замечательной книге
Уидроу Б.,Стринз С.
Адаптивная обработка сигналов.
http://lord-n.narod.ru/walla.html#uidrouAOC


СТР 13 из вашей книги "Адаптация в обработке сигналов — автоматическое изменение параметров фильтров в завимости от изменившихся условий." В вашем случае это называется синтез, или в простонародье настройка

alex_os
Цитата(0xFF @ Sep 4 2010, 00:16) *
Расскажите подробнее про адаптивный фильтр. Вы намекаете на корреукцию в реальном времени или Оффлайн?




Тоесть вы предлагаете использовать IIR 3-4 порядка в цифре? Я надеюсь вы не предлагаете настроить аналоговый фильтр на операционных усилителях?


Я ничего не предлагаю , я пытаюсь заронить зерно сомнения в необходимости 300 дБ на декаду smile.gif. А iir или fir это кому как нравится, мне тоже больше фиры нравятся хотя я знал человека который делал аналоговый фильтр на операционниках 12го порядка (это было во времена когда
еще пытались сделать отечественный CD проигрыватель smile.gif ). Еще видел в успешном коммерческом изделии iir кажется 22го порядка (в цифровом
виде, float precision).
petrov
Цитата(0xFF @ Sep 4 2010, 00:22) *
"Адаптация в обработке сигналов — автоматическое изменение параметров фильтров в завимости от изменившихся условий." В вашем случае это называется синтез, или в простонародье настройка


Смените акустическую систему или машину или параметры уйдут, заново запустите процесс адаптации, в рабочем режиме будет не перестраиваемый FIR фильтр согласованный с вашей акустикой.
0xFF
Цитата(alex_os @ Sep 4 2010, 00:26) *
Я ничего не предлагаю , я пытаюсь заронить зерно сомнения в необходимости 300 дБ на декаду smile.gif. А iir или fir это кому как нравится, мне тоже больше фиры нравятся хотя я знал человека который делал аналоговый фильтр на операционниках 12го порядка (это было во времена когда
еще пытались сделать отечественный CD проигрыватель smile.gif ). Еще видел в успешном коммерческом изделии iir кажется 22го порядка (в цифровом
виде, float precision).

За зерно спасибо. Могу сказать одно остановился на процессоре sharc от analog. на нём хочу решить задачу 6ти FIR максимальной длинны, пока вроде укладывается в 8000 taps. Думаю что экономически будет выгоднее Virtex, хотя 05.gif

Цитата(petrov @ Sep 4 2010, 00:30) *
Смените акустическую систему или машину или параметры уйдут, заново запустите процесс адаптации, в рабочем режиме будет не перестраиваемый FIR фильтр согласованный с вашей акустикой.


Есть интересная штука от ALPINE называется PXI-H990, фильтры там толи Чебышева, толи батерворда, точно не скажу, но вроде как - 48 dB обеспечивают. Так вот там фильтры вроде как адаптивные и адаптируют АЧХ в реальном времени. А то что вы предлагаете называется настройкой, которую можно выполнить посредством того же CoolEdit(он кстати и коэфициенты фильтров генерит,даже во float)снимая АЧХ ФЧХ системы и затем откоректировать многополосным эквалайзером (в системах что так популярно рекламируют этих полос порой всего 5ть) ... поверьте так и будет с этими FIRами....или вы думали я собирался просто так байты гонять а фильтры настраивать методом генерации случайных чисел? wink.gif
petrov
Цитата(0xFF @ Sep 4 2010, 00:51) *
Есть интересная штука от ALPINE называется PXI-H990, фильтры там толи Чебышева, толи батерворда, точно не скажу, но вроде как - 48 dB обеспечивают. Так вот там фильтры вроде как адаптивные и адаптируют АЧХ в реальном времени. А то что вы предлагаете называется настройкой, которую можно выполнить посредством того же CoolEdit(он кстати и коэфициенты фильтров генерит,даже во float)снимая АЧХ ФЧХ системы и затем откоректировать многополосным эквалайзером (в системах что так популярно рекламируют этих полос порой всего 5ть) ... поверьте так и будет с этими FIRами....или вы думали я собирался просто так байты гонять а фильтры настраивать методом генерации случайных чисел? wink.gif


Методом адаптивной обработки сигналов вы можете получить в месте прослушивания плоскую АЧХ и линейную ФЧХ или вам что-то другое нужно?
0xFF
Цитата(petrov @ Sep 4 2010, 00:58) *
Методом адаптивной обработки сигналов вы можете получить в месте прослушивания плоскую АЧХ и линейную ФЧХ или вам что-то другое нужно?

Да я не спорю что есть адаптивные фильтры, я говорю, что то что вы называете адаптацией = называется СИНТЕЗ БЕЗ УЧЁТА ВОЗМУЩАЮЩИХ ВОЗДЕЙСТВИЙ, а компенсацией возмущений занимаются регуляторы, наблюдатели и тп которые основываются на МОДЕЛЯХ системы. Так вот ваш способ приведенный выше, имеет своё название СИНТЕЗ системы С КОНКРЕТНЫМИ ЗАДАННЫМИ ПАРАМЕТРАМИ, которые вы идентифицируете посредством измерений с помощью микрофона.
Да и наконец самое важное наличие обратной связи,время адаптации - важные параметры?. Может вы мне пытаетесь про Калман Наблюдатель/Фильтр рассказать в применении для фильтрации зашумлённого сигнала? Так я пока такой вопрос не задавал.
Про линейность вы очень правильно заметили, иммено из-за этого и фильтры такие. Качество динамиков, места их расположение и др параметры не относящиеся к мат вычислениям прошу не приводить. Я не об этом тут тему поднял.
petrov
Цитата(0xFF @ Sep 4 2010, 01:08) *
Да я не спорю что есть адаптивные фильтры, я говорю, что то что вы называете адаптацией = называется СИНТЕЗ БЕЗ УЧЁТА ВОЗМУЩАЮЩИХ ВОЗДЕЙСТВИЙ, а компенсацией возмущений занимаются регуляторы, наблюдатели и тп которые основываются на МОДЕЛЯХ системы. Так вот ваш способ приведенный выше, имеет своё название СИНТЕЗ системы С КОНКРЕТНЫМИ ЗАДАННЫМИ ПАРАМЕТРАМИ, которые вы идентифицируете посредством измерений с помощью микрофона.
Да и наконец самое важное наличие обратной связи,время адаптации - важные параметры?. Может вы мне пытаетесь про Калман Наблюдатель/Фильтр рассказать в применении для фильтрации зашумлённого сигнала? Так я пока такой вопрос не задавал.
Про линейность вы очень правильно заметили, иммено из-за этого и фильтры такие. Качество динамиков, места их расположение и др параметры не относящиеся к мат вычислениям прошу не приводить. Я не об этом тут тему поднял.


Простите каша какая-то... Вы что хотите сделать? Килотаповые фильтры ведь не самоцель?
0xFF
Цитата(petrov @ Sep 4 2010, 01:26) *
Простите каша какая-то... Вы что хотите сделать? Килотаповые фильтры ведь не самоцель?

Простите но каша у вас.... цель построить отличный фильтр для низких частот... я жду ваших предложений...
petrov
Цитата(0xFF @ Sep 4 2010, 01:30) *
Простите но каша у вас.... цель построить отличный фильтр для низких частот...


Удачи...

Цитата(0xFF @ Sep 4 2010, 01:30) *
я жду ваших предложений...


Увы они вам не нужны...
0xFF
Цитата(petrov @ Sep 4 2010, 01:37) *
Удачи...



Увы они вам не нужны...


Жаль.... Библиотека ЛордН довольно интересна, и это действительно одно из самых лучших постов за весь топик
DmitryR
Цитата(0xFF @ Sep 4 2010, 01:08) *
Качество динамиков, места их расположение и др параметры не относящиеся к мат вычислениям прошу не приводить. Я не об этом тут тему поднял.

Вам как раз и пытаются объяснить, что вы напрасно не об этом подняли тему. Потому что конечная ваша цель - получить некоторое (условно) качество звука. С учетом разрядности в 24 бита, а также ограничений других компонент системы никто не будет в состоянии услышать разницу между системой, в которой применены фильтры с подавлением в 300 дБ (как вы хотите) и системой , в которой подавление у фильтров составляет 80 дБ. А так как здесь люди сосредоточены на решении реальных задач, а не на конструировании сферических тел в вакууме - вам об этом и говорят.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.