Разработка цифрового БИХ-фильтра нижних частот Чебышева 2-го типа. Вариант 9, страница 5

                                                         A=a+A;

                                           }

                            y[n]=B-A;

return y[n];

}           

 WINAPI Thread_filter(LPVOID)                      // отдельный поток для фильтрации сигнала

{

short OS(short x[],int n, short m1[],short m2[]);  // определение функции расчета выходного

                                                                                         //сигнала  с фильтра 2-го порядка

short s,s_1;                        //определение переменных для подсчета временного интервала фильтрации

s = GetTickCount();         // получение значения счетчика времени

for(int n=0;n<N;n++)        // фильтрация входного сигнала

              {

                            exit1[n]=OS(x,n,X1,Y1);

                            exit2[n]=OS(exit1,n,X2,Y2);

                            exit3[n]=OS(exit2,n,X3,Y3);

                            exit4[n]=OS(exit3,n,X4,Y4);

                            exit5[n]=OS(exit4,n,X5,Y5);

                            exit6[n]=OS(exit5,n,X6,Y6);

                            exit7[n]=OS(exit6,n,X7,Y7);

                            exit8[n]=OS(exit7,n,X8,Y8);

                }

s_1 = GetTickCount() - s; // вычисление времени фильтрации входного сигнала в миллисекундах

              cout<<endl;

              cout<<"N="<<N;

              cout<<endl;

              cout<<"General time to filtering : ";

              cout<<s_1<<" ms"<<endl;

              cout<<"Time to filtering ones sample: ";

              cout<<(s_1*1000)/N<<"mcs"<<endl;

              return 0;             

}

void main()

{

unsigned long ThreadId;                 // определение идентификатора потока

              for(int j=0;j<N;j++)

              {

              x[j]=2*cos(2*pi*12000*Td*j)+cos(2*pi*9500*Td*j);// расчет гармонического входного сигнала

              }

CreateThread(NULL,0,Thread_filter,x,0,&ThreadId);             // создание и запуск потока для начала

                                                                                               //фильтрации сигнала

getch();

}

Для анализа быстродействия вычисления выходного сигнала используется функция API GetTickCount(), которая возвращает количество миллисекунд, прошедших с начала ра­боты. Перед циклом вычисления выходного сигнала переменной s присваива­ется значение GetTickCount(), а по завершению цикла еще раз вызывается функция GetTickCount() и по разности между ее значением и значением переменной s определя­ется время вычисления цикла.

Этот метод дает только приблизительную оценку времени вы­числения цикла. Эта оценка зависит от таких факторов как конфигурация компьютера и занятость системных ресурсов компьютера, на котором выполняется программа. Например, на компьютере с процессором  Pentium 4, 2.41 ГГц, 512 Мб ОЗУ можно вычислить время выполнения N отсчетов и  рассчитать время обработки одного отсчета. Оно в режиме реального времени будет равно отношению времени  обработки всех отсчетов(t) к количеству отсчетов N. Т.е. Т=t/N. Будем варьировать число отсчетов N и пронаблюдаем, что произойдет со временем t и T.

Результаты:

N

t

T

2000

70 мс

35 мкс

5000

172 мс

34.4 мкс

10000

367 мс

36.7 мкс

20000

710 мс

35.5 мкс

50000

1850 мс

37  мкс

Заключение

В результате выполнения данной работы был спроектирован БИХ-фильтр нижних частот Чебышева 2-го типа, который удовлетворяет заданной спецификации:   

§  Граничная частота полосы пропускания – 10 кГц,

§  Граничная частота  полосы задерживания– 11  кГц,

§  Минимальное ослабление в полосе задерживания – 60  дБ,

§  Неравномерность передачи в полосе пропускания – 1 дБ,

§  Частота дискретизации – 50  кГц.  

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

В результате, удалось разработать фильтр с дос­таточно хорошей АЧХ (очень малые отклонения АЧХ от 0 в полосе задерживания, неравномерность в полосе пропускания удовлетворяет заданной). Минимальный порядок фильтра получился–16. ФЧХ фильтра – нелинейна, далека от иде­альной. Также была получена последовательная (каскадная) форма реализации цифрового фильтра, которая представляет собой каскадное соединение (в данном случае) 8-х фильтров 2-ого порядка. АЧХ  исходного и каскадного фильтров совпадают.

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

Список литературы

1. Голышев Н.В., Щетинин Ю.И. Теория и обработка сигналов: Учеб. пособие. – Новосибирск: Изд-во НГТУ, 1998. – Ч.2. – 115  с.

2. Голышев Н.В., Щетинин Ю.И. Задачник – практикум по теории и обработке сигналов: Учеб. пособие. – Новосибирск: Изд-во НГТУ,  2001. – 80  с.

3. Сергиенко А.Б. Цифровая обработка сигналов. – СПб.: Питер, 2003. – 604 с.: ил.

4. Курс лекций по дисциплине «Теория и обработка сигналов», преподаватель доц. Щетинин Ю.И. Учебный год: 2008