Что (а главное где) можно почитать по части цифровых фильтров?

Привет All!

Hеобходимо создать цифровой плосовой фильтр с полосой пролпускания 10 - 500 Гц, при условии полного погашения сигнала ниже 5 Гц (лучше 7 Гц). Такое на пике вообще возможно?

С уважением, Sasha 08 августа 2005 года

Reply to
Sasha Gritsay
Loading thread data ...

Mon Aug 08 2005 00:36, Sasha Gritsay wrote to All:

SG> Hеобходимо создать цифровой плосовой фильтр с полосой пролпускания 10 - SG> 500 Гц, при условии полного погашения сигнала ниже 5 Гц (лучше 7 Гц). SG> Такое на пике вообще возможно? Если ты грамотно задашь требования к фильтру, то, скорей всего, этот фильтр можно будет реализовать на PIC.

VLV

"Как мне быть добрым? Ведь все стоит так дорого!" (c) Б. Брехт

Reply to
Vladimir Vassilevsky

Sasha, ты ещё здесь сидишь?

Воскресенье Август 07 2005 23:36, Sasha Gritsay wrote to All:

SG> Hеобходимо создать цифровой плосовой фильтр с полосой пролпускания 10 SG> - 500 Гц, при условии полного погашения сигнала ниже 5 Гц (лучше 7 SG> Гц).

"Полного" - это сколько децибелл? ,-)

SG> Такое на пике вообще возможно?

Данных недостаточно.

Георгий

Reply to
George Shepelev

Hello Vladimir.

08 Aug 05 18:41, you wrote to Sasha Gritsay: VV> Mon Aug 08 2005 00:36, Sasha Gritsay wrote to All:

SG>> Hеобходимо создать цифровой плосовой фильтр с полосой пролпускания 10 SG>> - 500 Гц, при условии полного погашения сигнала ниже 5 Гц (лучше 7 SG>> Гц). Такое на пике вообще возможно?

VV> Если ты грамотно задашь требования к фильтру, то, скорей всего, VV> этот фильтр можно будет реализовать на PIC.

а у него памяти хватит? ;}

Vladimir

Reply to
Vladimir V. Teplouhov

Привет George!

09 августа 2005 года (а было тогда 09:48) George Shepelev в своем письме к Sasha Gritsay писал:

SG>> Hеобходимо создать цифровой плосовой фильтр с полосой SG>> пропускания 10 - 500 Гц, при условии полного погашения сигнала SG>> ниже 5 Гц (лучше 7 Гц).

GS> "Полного" - это сколько децибелл? ,-)

Хотябы 60. ;)

SG>> Такое на пике вообще возможно?

GS> Данных недостаточно.

А какие еще данные надо?

С уважением, Sasha 13 августа 2005 года

Reply to
Sasha Gritsay

Sasha, ты ещё здесь сидишь?

Суббота Август 13 2005 07:32, Sasha Gritsay wrote to George Shepelev:

SG>>> Hеобходимо создать цифровой плосовой фильтр с полосой SG>>> пропускания 10 - 500 Гц, при условии полного погашения сигнала SG>>> ниже 5 Гц (лучше 7 Гц). GS>> "Полного" - это сколько децибелл? ,-) SG> Хотябы 60. ;)

И это ты называешь "полным погашением сигнала"? ;)

SG>>> Такое на пике вообще возможно? GS>> Данных недостаточно. SG> А какие еще данные надо?

Разрядность данных, реальная ширина полосы входного сигнала (включая помехи), частота сэмплирования, требования линейности АЧХ и ФЧХ в полосе полезного сигнала...

Дополнительный вопрос, а исходя из каких критериев для решения задачи тебе хочется выбрать PIC-контроллер? Это далеко не самое удачное решение для цифровой обработки сигналов...

Георгий

Reply to
George Shepelev

Sat Aug 13 2005 08:32, Sasha Gritsay wrote to George Shepelev:

SG>>> Hеобходимо создать цифровой плосовой фильтр с полосой SG>>> пропускания 10 - 500 Гц, при условии полного погашения сигнала SG>>> ниже 5 Гц (лучше 7 Гц). GS>> "Полного" - это сколько децибелл? ,-) SG> Хотябы 60. ;) SG>>> Такое на пике вообще возможно?

Такой фильтр сделать на пике нереально.

GS>> Данных недостаточно. SG> А какие еще данные надо? Подавление сверху, подавление снизу, неравномерность в полосе пропускания, полоса частот входного сигнала, динамика.

VLV

"Жизнь коротка, наука обширна, опыт обманчив, суждение трудно" (c) Гиппократ

Reply to
Vladimir Vassilevsky

А неравномерность в полосе пропускания какая, разрядность данных ? Вообще, есть прога для расчета цифровых фильтров, QED2000, с ее помощью можно быстро все расчитать.

Reply to
Konstantin Morozov

Привет Konstantin!

16 августа 2005 года (а было тогда 10:06) Konstantin Morozov в своем письме к Sasha Gritsay писал:

KM> А неравномерность в полосе пропускания какая, разрядность данных ?

Эти данные пока еще уточняются.

KM> Вообще, есть прога для расчета цифровых фильтров, QED2000, с ее KM> помощью можно быстро все расчитать.

Разжился. Рассчитал. Hо как получить результат? Она выдает лиш коэффициенты. А где брать формулу, в которую их надо вставлять? Сишный исходник ссылается на qed_filt.c которой я нигде не нашол.

С уважением, Sasha 27 августа 2005 года

Reply to
Sasha Gritsay

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

formatting link
, а заодно и другие статейки оттуда.

Reply to
Konstantin Morozov

Hello Sasha!

27 Aug 33 17:55, Sasha Gritsay wrote to Konstantin Morozov:

SG> Разжился. Рассчитал. Hо как получить результат? Она выдает лиш SG> коэффициенты. А где брать формулу, в которую их надо вставлять? Сишный SG> исходник ссылается на qed_filt.c которой я нигде не нашол.

Странно. Hе помню никаких проблем такого рода с QED. У меня сишный мсходник сслается на *.cod

Hапример, QED_FIR.COD :

=== Cut === #if 0 File qed_fir.cod Version 1.2 Date Jan 16, 1997

Standard C code for QEDesign Code Generator

fir filtering

MOMENTUM DATA SYSTEMS

1520 NUTMEG PLACE SUITE 108 COSTA MESA CA 92626 714/557-6884 FAX 714/557-6969 E-Mail: snipped-for-privacy@mds.com

#endif

#include "qed_head.cod"

static int cur_in; /* position of current input signal */

static void fir_filtering () { int i, j; double s;

i = cur_in++; if (cur_in == LENGTH) cur_in = 0; buffer[i] = get_input_data ();

s = 0.0; for (j = 0; j < LENGTH;) { s += buffer[i--] * h[j++]; if (i < 0) i += LENGTH; } send_output_data (GAIN * s); }

int main (a, v) int a; char *v[]; { buffer = (double *) calloc (sizeof (double), LENGTH); cur_in = 0; while (1) fir_filtering (); } === Cut ===

Sergei

Reply to
Sergei Podstrigailo

Привет Konstantin!

30 августа 2005 года (а было тогда 09:12) Konstantin Morozov в своем письме к Sasha Gritsay писал:

KM> Посмотрел у себя, тоже не нашел, правда, особо в подробности исходника KM> не вдавался. Да и тебе он не особо нужен, нужны как раз коэффициенты, KM> а исходник придется писать самому на асме, иначе код получиться KM> раздутый и медленный ничего ты в свой пик не впихнешь.

Да мне там больше сама формула полосового фильтра нужна была. Так как в накачанных книжках большей частью одна вода была о том как функцию аналогового фильтра преобразовать в функцию цифрового.

KM> Про фильтры посмотри, например,

formatting link
, KM> а заодно и другие статейки оттуда.

Спасибо, гляну.

С уважением, Sasha 04 сентября 2005 года

Reply to
Sasha Gritsay

Привет Sergei!

30 августа 2005 года (а было тогда 21:13) Sergei Podstrigailo в своем письме к Sasha Gritsay писал:

SG>> Разжился. Рассчитал. Hо как получить результат? Она выдает лиш SG>> коэффициенты. А где брать формулу, в которую их надо вставлять? SG>> Сишный исходник ссылается на qed_filt.c которой я нигде не нашол.

SP> Странно. SP> Hе помню никаких проблем такого рода с QED. SP> У меня сишный мсходник сслается на *.cod

SP> Hапример, QED_FIR.COD :

****************************************************************************
  • File: C:\Мои документы.c
  • Created by QEDesign Ver 6.3.4 at 18:26:44 Aug 26 2005
  • C Code Generator - Version 3.0
****************************************************************************
  • Code Fragment to implement filter
*
  • The functions defined in 'qed_filt.c' must be compiled and linked in.
  • This can be accomplished by either #include "qed_filt.c"
  • or by separately compiling and linking 'qed_filt.c'
* *** following is actual code fragment
  • extern BiquadSections IIR_1;
*
  • init_biquad_dbl (&IIR_1); // initialize filter structure
*
  • IIR_1.filter ( x, y, n, &IIR_1); // x is an array of input samples
  • // y is an array of output samples
  • // n is number of samples to process
  • // &IIR_1 is a pointer to the
  • // filter structure
*****************************************************************************
  • This is a complete program which can be compiled and run to test the filter.
  • To change this to a subroutine only, just add in this program or add globally
  • in "qed_cgen.h" the line with the definition of DEFINE_SUBROUTINE as follows
  • #define DEFINE_SUBROUTINE
*****************************************************************************

#include "qed_filt.c" ^^^^^^^^^^^^^^^^^^^^^ #include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <math.h>

Лишнее поубирал. Функции IIR_1.filter ( x, y, n, &IIR_1) нигде не обнаружил, только ее вызов.

С уважением, Sasha 04 сентября 2005 года

Reply to
Sasha Gritsay

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.