Телефонуйте » (+38) 096 227 41 41


Метою лабораторної роботи є побудова системи цифрової обробки сигналів (ЦОС) звукового діапазону частот на базі цифрового сигнального процесора (ЦСП)

.
Основа ЦОС полягає в тому, що фізичний сигнал (неперервний у часі такий як: напруга, струм тощо) перетворюється в послідовність чисел, які потім підлягають обробці в обчислювальному пристрої. Оброблений цифровий сигнал, при необхідності, може бути перетворений назад у напругу або струм.

Вихідний фізичний сигнал є функцією часу. Такі сигнали називаються аналоговими (analog), значення яких можна визначити в будь-який момент часу.

Послідовність чисел, що представляє сигнал при ЦОС, є дискретним рядом (dіscrete serіes). Числа, що становлять послідовність, є значеннями сигналу в окремі моменти часу і називаються відліками сигналу (samples). Відліки беруться через рівні проміжки часу Т, які називаються періодом дискретизації (або інтервалом, кроком дискретизації – sample tіme). Сигнал, дискретний у часі, але не квантований за рівнем, називається дискретним (dіscrete tіme sіgnal). Сигнал, дискретний у часі та квантований за рівнем, називається цифровим (dіgіtal sіgnal). Обчислювальні пристрої, призначені для обробки сигналів можуть оперувати тільки з цифровими сигналами.

Узагальнена схема цифрової обробки сигналів може бути представлена таким чином:

Аналоговий фільтр, включений до АЦП, називається фільтром захисту від накладення спектрів або антиелайзінrовим фільтром. Він використовується для придушення частотних компонент вище частоти Найквіста, які б викликали накладення спектрів при дискретизації. Аналоговий фільтр, розташований після ЦАП, називається фільтром відновлення. Він теж призначений для придушення частотних компонент вище половини частоти дискретизації і може компенсувати ефекти застосування фіксатора нульового порядку.

На вхід подається аналоговий сигнал. Його часова дискретизація та квантування здійснюється в аналого-цифровому перетворювачі АЦП (Analog to Dіgіtal Converter ADC) Процеси квантування та дискретизації незалежні і виконуються на базі однієї  мікросхеми. Вихідним сигналом АЦП є послідовність чисел, які надходять у цифровий процесор для подальшої обробки. Процесор виконує всі необхідні операції над вхідними даними, які можуть зберігатися у внутрішній пам'яті процесора та використовуватися в подальших обчисленнях. Результатом роботи процесора є нова послідовність чисел, що надходить на вхід ЦАП (Dіgіtal to Analog  converter)  для одержання  неперервного в часі сигналу.  Напруга на виході ЦАП має східчасту структуру (як це показано на рис.) і перетворюється до гладкої функції за допомогою фільтру.

Операції аналого-цифрового перетворення підпорядковуються теоремі дискретизації Шеннона-Найквіста, в якій говориться про те, що для наступного відновлення частота дискретизації аналогового сигналу повинна бути не менш чим у два рази вище максимальної частоти його спектральних складових. При дискретизації з меншою частотою виникають спектральні спотворення. У реальних системах, частота дискретизації завжди береться вище подвоєної частоти Найквіста через не ідеальність фільтрів нижніх частот антиелайзінrових ланцюгів,  для запобігання накладання  й  перекручування. Наприклад, для оцифрування аудіо сигналу використовується частота не 40 кГц., а 44.1  кГц.  У багатьох високоякісних системах для більш точного відтворення сигналу в діапазоні від 20 Гц до 20 кГц, використовується більш висока частота дискретизації - 48 кГц.

Найпоширенішою формою цифрового представлення сигналу є імпульсна-кодова модуляція (ІКМ) рис.1, при якій амплітуда аналогового сигналу кодується на кожному інтервалі дискретизації певним цифровим рівнем:

Формат даних з виходу АЦП представлений у вигляді доповнення до двох 16-, 24-, 32-розрядними словами. В залежності від полярності вхідного сигналу можна отримати  наступні значення цифрових вибірок сигналу на виході АЦП:

У таблиці 1 наведено схему кодування амплітуд вхідного сигналу для 16-розрядного АЦП,  з якими на базі цифрового процесора можливе виконання подальших операцій.

Таблиця 1

Як видно з таблиці, вихідний код АЦП може бути досить просто використаний як формат з фіксованою комою для виконання математичних операцій на базі ЦСП. Перший біт вихідного коду є знаковим, всі інші біти (залежно від розрядності АЦП) відображують величину амплітуди аналогового сигналу у додатковому коді.

Побудова систем цифрової обробки сигналів на базі цифрового сигнального процесора

Перейдемо  до практичної  реалізації системи  ЦОС. Для цього розглянемо фільтрацію неперервного аналогового сигналу звукового  діапазону частот з використанням цифрового сигнального процесора.

Підключення аудіо-АЦП до процесора можна виконати за допомогою McBSP порт:

Багатоканальний буферний послідовний порт (McBSP) є надзвичайно гнучким послідовним портом. McBSP підтримує численні стандарти і можливості: AICs, SPI, AC97, ST-BUS, T1, Codecs, u-Law/A-Law, IIS, IOM-2 тощо. McBSP - це повнодуплексний синхронний послідовний порт. ЦПУ або EDMA можуть читати і записувати дані регістрів даних, які відображені в пам'яті (DRR, DXR).


Блок-схема

Часто розробники використовують 24-розрядний кодек AIC23 Codec (90db SNR ADC, 100db SNR DAC) з  частотами дискретизації (8K, 16K, 24K, 32K, 44.1K, 48K, 96K), Multiple Digital transfer widths (16-bits, 20-bits, 24-bits, 32-bits). Для з’єднання використовується два порти McBSP для настройки AIC23 і передачі даних, відповідно. McBSP0  підключається до керуючих регістрів AIC23. McBSP1 використовується для передачі даних до АЦП / ЦАП. Можна використовувати один McBSP для управління AIC23, але оскільки доступно кілька McBSP, то використання двох портів спрощує розробку:

Стерео-аудіо сигнал надходить на вхід мікросхеми через лівий  і  правий вхідні канали, а потік цифрових даних послідовно видається через вихідний порт даних, що зазвичай   підключається  до відповідного послідовного порта процесора,  як це показано на  функціональній схемі вище.

Після короткого огляду особливостей побудови системи перейдемо до методів обробки сигналів на даній платформі та представлення даних у процесорі.

Особливості представлення даних

Існує  досить велика кількість способів представлення даних у цифровому сигнальному процесорі. Як правило, для обробки звуку використовуються дві архітектури  процесорів  з фіксованою й плаваючою крапкою. Процесори з фіксованою комою підтримують цілочисельну й  дробову арифметику та зазвичай працюють з 16, 24 і 32 - розрядними даними. Процесори з плаваючою крапкою мають більш високу продуктивність і підтримують 32- або 64-розрядні дані з плаваючою крапкою. Процесор C6678 підтримує цілочисельну й дробову арифметику.  

Методи обробки неперервних сигналів

Існує достатня кількість   методів   подання   даних   до обчислювача  цифрового  сигнального  процесора.    Наприклад,    основна  програма  може безупинно  опитувати  регістри    даних      порту,      але      оскільки      такі   пересилання      приводять      до      не  ефективності  використання   ядра   процесора,   вони   застосовуються   досить   рідко.   Найбільш ефективним є використання в процесорі  механізму прямого доступу до пам'яті (DMA)  для пересилання  даних  із  зовнішнього  інтерфейсу  до  пам’яті    процесора.  Подібна операція відбувається  у  фоновому режимі  без  втручання   ядра  процесора.    Ресурси  ядра  використовуються  лише  в  процесі  настроювання DMA  і  при  виділенні  буфера  обміну  даними  в  пам'яті,   а  також  в  обробці переривань по  завершенню передачі даних інформаційного буфера.

Блокова обробка та обробка окремих відліків

У практиці ЦОС існують  два  підходи  по  обробці  неперервного  в  часі сигналу - обробка окремих відліків та блокова обробка.  У першому випадку  процесор  обробляє   дані    в  міру    їх  надходження, і в    кожному  періоді дискретизації  здійснює  обробку  поточного  відліку.    Подібним  чином можлива  реалізація  більшості  цифрових  фільтрів,  оскільки  ефективна затримка в часі при цьому менше, ніж при блоковій обробці.

У другому випадку перед обробкою даних необхідно заповнити буфер певної довжини. У міру надходження кожного відліку не потрібно викликати  підпрограму      обробки,   тому   непродуктивні      витрати      значно  скорочуються.      Крім      цього,      багато   процесорів   для    вбудованих  систем  містять   кілька   обчислювальних  вузлів   (наприклад,   множників  або  АЛП),   що   дозволяє   обробляти блоки даних паралельно. Більшість стандартних бібліотек цифрової обробки сигналів, підтримуваних вбудованими компіляторами засобів розробника на базі сигнальних процесорів,  вже  орієнтовані на блокову обробку даних. Для того щоб уникнути одночасних звертань ядра та контролера DMA до  одного     елемента      пам'яті      в      системах,      із      блоковою      обробкою   даних,   необхідно використовувати схему з подвійною буферизацією:.

У  цій  схемі  для  роботи  з  буфером,  який  виділяється  у  пам'яті довжиною  N,    створюється  здвоєний  буфер  довжиною  2N.    Для двонаправлених систем необхідне створення  двох буферів довжиною 2N.  У той  час  поки  ядро  обробляє  буфер  іn1  і  поміщає  результат  у  буфер  out1, контролер  DMA  заповнює  буфер  іn0  і  передає  дані  з  out0.  Як  тільки контролер DMA  закінчує працювати з лівими половинами здвоєних буферів,  він починає заповнювати іn1 і передавати дані з out1, а ядро переходить до обробки даних з   іn0 і  заповненню out0.  У  системах реального часу обробка  блоку  не  повинна займати   більше   часу,   чим  затрачає   контролер  DMA  на   пересилання  половини здвоєного буфера.

Для даного приклада побудови системи обробки сигналів,  до складу якої  входять  аудіокодек  і  сигнальний  процесор ,    потік,  переданий по цифровому   каналу,   за допомогою  протоколу   хх містить   дані   декількох   каналів, які   мультиплексуются   в   одну   передавальну  лінію    даних.      У      цьому     випадку  необхідно  додатково  реалізувати підпрограму вибору даних потрібного каналу.

Базові операції ЦОС. Фільтрація та алгоритми.

Обробка      сигналів      на      основі      цифрових      обчислювальних   пристроїв  орієнтована  на  три  фундаментальні  операції:    сума,  множення  та  затримка  в   часі.    За    допомогою    цих      операцій      можна   здійснити   достатню   кількість операцій і алгоритмів ЦОС. 

Цифрові      фільтри    широко      використовуються   в      будь-яких   системах   для   ослаблення сигналу на певних частотах.  Кожний з фільтрів може  бути  реалізований  у  вигляді  фільтра  з      скінченною  імпульсною   характеристикою      (СІХ)      або      фільтра     з     нескінченною  імпульсною характеристикою  (НІХ).  На  рис.8  представлені  структурні  схеми  фільтра з кінцевою й нескінченною імпульсною характеристикою.

Вихідний  сигнал  СІХ  -  фільтра  визначається  сумою  поточного  та попереднього  відліків  сигналу,    помноженим  на  відповідні  коефіцієнти фільтра.    Рівняння,  що  описують  його  роботу,  яке  також  називається  "згорткою",  наведене  на  рис.8.  У  цьому  записі  х  -  вхідний  вектор,  у  - вихідний вектор, h - масив коефіцієнтів фільтру (імпульсна характеристика системи).  Згортка  -  настільки  розповсюджена  операція  в  обробці мультимедійних  даних,  що  в  багатьох  процесорах  реалізоване  виконання команди  множення   накопичення   (МАС)      одночасно      з      декількома   звертаннями до пам'яті (читанням і записом) за один такт.

На відміну від СІХ - фільтрів, вихідний сигнал яких залежить тільки від вхідних відліків,  вихідний сигнал НІХ - фільтрів залежить як від вхідних так і від вихідних відліків   у   попередні   моменти   часу.   Структура   НІХ   -  фільтра   й   різницеве рівняння, що описує його роботу наведені вище на рис.8.

Виконання лабораторної роботи

Як відомо з курсів ОТК та СПРТ по відомій імпульсній характеристиці лінійної системи, у часовій області, можна знайти сигнал на виході всієї системи y(t) шляхом обчислення інтеграла:

де функцією   x(t)  представлений сигнал на вході лінійної системи,  а  h(t) є   імпульсною   характеристикою   системи.  У  частотній   області   всі   обчислення зводяться до визначення:

де  H(f)  - частотна характеристика системи,  X(f)  - перетворення Фур'є вхідного  сигналу  x(t).  У  першому  випадку  обчислення  зводяться  до визначення інтеграла згортки, у другому   випадку – обчислення   зворотного   перетворення      Фур'є      від     добутку  частотної характеристики  системи  на спектр вхідного сигналу.

У даній роботі розглянемо знаходження сигналу на виході системи,  у часовій  області,   по      відомій   імпульсній   характеристиці   системи (фільтра). Імпульсну  характеристику  фільтра  одержимо  шляхом проектування в середовищі Fіlter Desіgn & Analysіs Tool - Matlab,   у   якій   можливе     створення     необхідного    фільтра,     із    заданими  частотними параметрами  та  одержання відліків  імпульсної  характеристики  в  заданому форматі.

У  роботі  використовуємо  блокову  обробку  даних,   при  якій послідовність вхідних відліків ділиться на блоки (секції) заданого розміру. Кожний  із  цих  блоків  піддається  фільтрації  окремо.

Існують 2 методи блокової обробки сигналів: метод  перекриття  з  підсумовуванням (overlap-add) та перекриття  з  накопиченням  (overlap-save).  Алгоритм  overlap-add  наступний:

·    вхідний сигнал розбивається на блоки довжиною N відліків
·    фільтрація  кожного  блоку  здійснюється  незалежно.  Довжина вихідного сигналу становить при цьому  N+M-1  відлік,  де  М - довжина імпульсної характеристики фільтра
·    блоки   вихідного   сигналу   поєднуються,   при   цьому   крайні  М-1  відліків перекриваються й підсумовуються


Приклад   блокової   обробки   сигналу   методом  перекриття   з додаванням

У  методі  перекриття  з  накопиченням  (overlap-save)  вхідний  сигнал  розбивається  на  блоки, розміром N=L+M-1, де М – довжина імпульсної характеристики. Кожен блок вхідної послідовності містить N елементів з яких, перші М-1 елементів з попереднього блоку, а L елементів з вхідної послідовності. Для першого блоку перші М-1елементів встановлюються в «0».

Для   реалізації   фільтра   на   основі   сигнального   процесора   можна використати функцію DSPF_sp_fir_gen бібліотеки dsplib.  Дана  функція  виконує блочну  фільтрацію вхідного  сигналу   по  відомій імпульсній характеристиці фільтра методом overlap-save. Для неї необхідно “nh” коефіцієнтів фільтра, “ny” вихідних виборок і “nh+ny-1” вхідних виборок. Коефіцієнти розміщуються в масиві “h” в зворотному порядку {h(nh-1), ... , h(1), h(0)}, а масив “x” починається з x(-nh+1) і закінчується в x(ny-1). Функція обчислює y(0) до y(ny-1) використовуючи формулу^

y(n) = h(0)*x(n) + h(1)*x(n-1) + ... + h(nh-1)*x(n-nh+1),

де n = {0, 1, ... , nr-1}.

Опис даної функції виглядає в такий спосіб.

Прототип функції:

    void DSPF_sp_fir_gen(const float * restrict x, const float * restrict h,
                        float * restrict y, int nh, int ny)


Параметри

        x      Вказівник на вхідний масив. Масив має мати  ny + nh - 1 елементів.
        h      Вказівник на масив коефіцієнтів фільтра. Масив має мати nh елементів
                заданих в зворотному порядку: {h(nh - 1), ..., h(1), h(0)}.
                Вирівняні по подвійному слову (double-word aligned).
        y       Вихідний масив. Має мати ny елементів.
        nh    Кількість елементів у масиві коефіцієнтів.
                Повинно ділитися на 4 і бути більшим 0.
        ny    К-ількість елементів у вихідному масиві коефіцієнтів.
                Повинно ділитися на 4 і бути більшим 0.

Програмний приклад використання даної функції наведений нижче.

Створення проекту в середовищі

1.    Запустіть CCS.
2.    Створіть пустий проект File->New->CCS Project (приклад в лабораторній 3).
3.     Створіть файл командного сценарію компонувальника .cmd (linker command script). Виберіть File->New->File, введіть ім'я файлу і натисніть Finish (приклад в лабораторній 3). 
4.    Перед тим, як писати код для проекта, потрібно прописати шляхи до файлів бібліотеки dsplib, де знаходяться функції цифрової обробки сигналів: Adaptive Filtering, Correlation, Fast Fourier Transform, Filtering and convolution, Matrix.
Виберіть Project->Properties, має відкритися вікно властивостей проекту. Виберіть Include Options і додайте наступний шлях в «Add dir to #include search path...»

5.    Виберіть File Search Path з секції C6000 Linker. Додайте в секцію Include library файл dsplib.ae66 (ELF, little-endian).
6.    Добавте шлях в секцію Add <dir> to library

7.    У файл main.c  вставити наступний код:

#include <stdlib.h>
#include <math.h>
#include <inc/dsplib.h>

// бібліотека з коефіцієнтами фільтру з МатЛабу
#include "fdacoefs.h"

/* Команда вибору пам*яті для даних */
//#pragma DATA_SECTION(in_s , " .EXT_RAM")


/* Global definitions */
/* Розмір масиву для відліків сигналу */
#define N 256
/* Розмір блоку сигналу для фільтрації */
#define NF 64
/* блоку для фільтрації N/NF  */
#define NB 4

/* вирівнювання даних має бути подвійне слово  4 / або 8 */
#define AL 4

/* масив відліків вхідного сигналу та вихідного */
#pragma DATA_ALIGN(in_signal,AL) // вирівнювання
float   in_signal [N]; // для заповнення сигналом
#pragma DATA_ALIGN(out_signal,AL) // вирівнювання
float   out_signal [N]; // після блочної фільтрації

#pragma DATA_ALIGN(in_s, AL) // вирівнювання по 4 байти - 2 слова
float   in_s [NF+BL-1]; // блок для фільтрації

/* масив відліків блоку вихідного сигналу */
#pragma DATA_ALIGN(out_s,AL)
float   out_s [NF];

/*
    Функція генерує сигнал певної частоти і записує відліки в масив
*/
void generateInput () {
    int   i;
    float FreqSample, sinWaveMag;
    int FreqSignal;

    /* частота  дискретизації Hz*/
    FreqSample = 48000;

    /* Амплітуда сигналу */
    sinWaveMag = 2;

    /* частота  сигналу Hz*/
    FreqSignal = 2000;

    /* генерування сигналу */
    for (i = 0; i < N; i++) {
        in_signal[i]  = sinWaveMag * cos(2*3.14*i * FreqSignal /FreqSample)+
                sinWaveMag * cos(2*3.14*i *(3*FreqSignal) /FreqSample) ;
    }

}

/*
    Функція робить зворотній масив коефіцієнтів
*/
void reverseCoef () {
    int   i;
    float ftmp;

    for (i = 0; i < BL/2; ++i) {
        ftmp = B[i];
        B[i] = B[BL-i-1];
        B[BL-i-1] = ftmp;
    }

}


int main(void) {
    int i;
    /* Generate the input data */
    generateInput();

    /* Call FIR routine
    Ф-ія DSPF_sp_fir_gen виконує фільтрацію по вхідному масиву x з масивом коефіцієнтів h.
    Результат зберігається в вихідному масиві y.

    Прототип функції:
    void DSPF_sp_fir_gen(const float * restrict x, const float * restrict h,
                        float * restrict y, int nh, int ny)

    Parameters
            x    Вказівник на вхідний масив. Масив має мати  ny + nh - 1 елементів.
            h    Вказівник на масив коефіцієнтів фільтра. Масив має мати nh елементів
                  заданих в зворотному порядку: {h(nh - 1), ..., h(1), h(0)}.
                  Вирівняні по подвійному слову (double-word aligned).
            y    Вихідний масив. Має мати ny елементів.
            nh    К-ть елементів у масиві коефіцієнтів.
                Повинно ділитися на 4 і бути більшим 0.
            ny    К-ть елементів у вихідному масиві коефіцієнтів.
                Повинно ділитися на 4 і бути більшим 0.
     */
    /* Функція обертає масив коефіцієнтів*/
    reverseCoef();

    // реалізація блочної фільтрації
    for (i = 0; i<NB;++i ){
    // заповнюємо блок відліками сигналу на позицію від BL-1. (М-1 по протоколу)
        memcpy(in_s+BL-1, in_signal +i*NF, NF*sizeof(float) );

        // відправляємо блок на фільтрацію
        DSPF_sp_fir_gen(in_s, B, out_s, BL, NF);

        // забираємо дані з фільтрації
        memcpy(out_signal + i*NF, out_s, NF*sizeof(float) );

        // заповнюємо перших М-1 елементів відліками з блоку in_s
        memcpy(in_s, in_s +NF, (BL-1)*sizeof(float) );
    }
    i=0;// breakpoint

    return 0;
}
 
8.    Згенеруйте файл  з коефіцієнтами фільтра fdacoefs.h за допомогою Матлаб ( детальніше описано нижче). Та скопіюйте його в папку проекту. Приведіть до наступного виду

/* масив коефіцієнтів фільтру */
//   3000-4000  fs - 48000  FNCH

#define BL  120

#pragma DATA_ALIGN(B,4)
float B[BL] = {
  0.0003507045622, 0.002501267241,0.0006540759932,0.0007511136937,0.0003277491778,
  -0.0002071336639,-0.0008052025805,-0.001325771329,-0.001631640363,-0.001611498883,
   -0.00121349073,-0.0004674817319,0.0005098520778, 0.001528034569, 0.002356633078,
   0.002775464673, 0.002625521272,  0.00185636268,0.0005533285439,-0.001063382253,
  -0.002669354202,-0.003898929805,-0.004420161713,-0.004018807318,-0.002659876132,
  -0.0005221717292, 0.002017289167, 0.004440936726, 0.006190626882, 0.006786023267,
   0.005943503696, 0.003663133131,0.0002660950704,-0.003637436777,-0.007245092653,
  -0.009715909138,  -0.0103494646, -0.00875740312,-0.004988131113, 0.000427467312,
   0.006525272038,  0.01205677353,  0.01571552828,  0.01640681736,  0.01350627653,
    0.00705696363,-0.002141946927,  -0.0125771137, -0.02220967412,   -0.028774295,
   -0.03016592748, -0.02481400408, -0.01202216279, 0.007840250619,  0.03328223154,
      0.061847426,  0.09042271227,   0.1156633496,   0.1344887018,   0.1445406675,
     0.1445406675,   0.1344887018,   0.1156633496,  0.09042271227,    0.061847426,
    0.03328223154, 0.007840250619, -0.01202216279, -0.02481400408, -0.03016592748,
     -0.028774295, -0.02220967412,  -0.0125771137,-0.002141946927,  0.00705696363,
    0.01350627653,  0.01640681736,  0.01571552828,  0.01205677353, 0.006525272038,
   0.000427467312,-0.004988131113, -0.00875740312,  -0.0103494646,-0.009715909138,
  -0.007245092653,-0.003637436777,0.0002660950704, 0.003663133131, 0.005943503696,
   0.006786023267, 0.006190626882, 0.004440936726, 0.002017289167,-0.0005221717292,
  -0.002659876132,-0.004018807318,-0.004420161713,-0.003898929805,-0.002669354202,
  -0.001063382253,0.0005533285439,  0.00185636268, 0.002625521272, 0.002775464673,
   0.002356633078, 0.001528034569,0.0005098520778,-0.0004674817319, -0.00121349073,
  -0.001611498883,-0.001631640363,-0.001325771329,-0.0008052025805,-0.0002071336639,
  0.0003277491778,0.0007511136937,0.0006540759932, 0.002501267241,0.0003507045622
};


9.    Побудуйте проект та загрузіть програму в процесор.
10.    Отримайте результати та порівняйте їх з результатами, що зображені нижче. Вони повинні співпадати.

Результати

Вхідний сигнал:

Спектр вхідного сигналу:

Вихідний сигнал:

Спектр вихідного сигналу:

Як видно з результатів реалізовано ФНЧ.

Розрахунок коефіцієнтів фільтру за допомогою FDATool MatLab

Розробити цифровий фільтр - значить отримати його коефіцієнти. У даній лабораторній роботі розглядається СІХ-фільтр (FIR - finite impulse response).

Розрахунок коефіцієнтів і дослідження частотних і часових характеристик СІХ -фільтра проводиться за допомогою програми Matlab - FDATool. Вона дозволяє проектувати СІХ -фільтри і будувати всі необхідні характеристики: АЧХ (Magnitude Response), ФЧХ (Phase Response), графік груповий затримки (Group Delay), графік фазової затримки (Phase Delay), імпульсну характеристику (Impulse Response), перехідну характеристику (Step Response), карту нулів і полюсів (Pole / Zero Plot).

При розробці цифрового фільтра частотної селекції вихідними даними є:

-    частота дискретизації (sampling frequency) -  fд (в FDATool – Fs);
-    частоти зрізу смуги пропускання (Bandpass frequency) – fс1 (В FDATool - Fpass) і частоти зрізу зони
-    непрозорості (Bandstop frequency) – fс2 (це справедливо для НЧ і режекторного фільтра; для ВЧ ісмугового фільтра частоти зрізу міняються місцями) (в FDATool - Fstop);
-    допустимий рівень нерівномірності АЧХ в смузі пропускання (Bandpass ripple) - ε1доп (в FDATool - Apass);
-    допустимий рівень бічних пелюсток АЧХ в зоні непрозорості (Bandstop ripple) - ε2доп (в FDATool - Astop).

Високий порядок фільтра вимагає великих обчислювальних витрат і необхідних ресурсів ємності оперативної пам'яті. Однак чим більше порядок N, тим ближче реальні частотні характеристики до ідеальних.

1. Запустіть Matlab.
2. Відкрийте програму FDATool. Введіть команду >> fdatool у вікні Command Window або виберіть іконку як на рисунку.

3. У головному вікні програми виберіть:

-    тип проектованого фільтру ( «Lowpass» - НЧ, «Highpass»- ВЧ, «Bandpass» - смуговий, «Bandstop» -режекторний);
-    метод проектування: метод рівнохвильової апроксимації (Equiripple - «Parks-McClellan» (Паркса-Мак-Клеллана));
-    прапорець розрахунок мінімального порядку фільтра;
-    одиниці вимірювань і параметри частотної вибірковості бажаної АЧХ фільтра.
(приклад представлений на рисунку нижче).

4. Розрахуйте проектований фільтр, натиснувши кнопку Design Filter.
5. Перегляньте його характеристики.

6. Збережіть коефіцієнти фільтра та підключіть їх до програми в середовищі СSS.
Для збереження коефіцієнтів фільтра для середовища CSS зручно користуватися програмою Generate C header, яка створить заголовочний файл з коефіцієнтами потрібного типу даних. Далі цей файл потрібно підключити в проект програми в середовищі CSS.

Примітка. Для збереження коефіцієнтів проектованого фільтру необхідно в меню File (Файл) головного вікна програми FDATool, вибрати вкладку Export ... (Експорт ...). При цьому відкриється діалогове вікно, вигляд якого зображений на рис.

Для збереження коефіцієнтів фільтра в робочій області Matlab, необхідно в випадаючому списку вибрати рядок Workspace (Робоча область). При цьому в нижній частині вікна вказується ім'я змінної містить масив з коефіцієнтами. Для збереження коефіцієнтів фільтра в файлі, необхідно в випадаючому списку вибрати рядок Coefficient File (ASCII) (Файл коефіцієнтів). При цьому в нижній частині вікна вказується формат даних, в якому будуть представлені коефіцієнти. при підтвердженні збереження коефіцієнтів (натисканням кнопки ОК) викликається стандартне діалогове вікно збереження файлу, в якому необхідно вказати шлях і ім'я файлу. Розширення файлу * .fcf. Файл є текстовим і може бути відкритий будь-яким текстовим редактором.

Завдання

1.    Згенерувати сигнал - «Сума 4 гармонік», для дослідження проходження сигналу через
фільтр, задавши суму гармонік таким чином, щоб дві частоти входили в смугу пропускання фільтра, а дві частоти не входили в смугу пропускання фільтра. Сума гармонійних коливань належить звуковому діапазону частот. Частота дискретизації 48 кГц. Частоти гармонік довільні.
2.    Розробити цифровий фільтр,   відповідно до попереднього завдання, у середовищі Matlab -  Fіlter Desіgn & Analysіs Tool.  Сформувати файл  коефіцієнтів  фільтра,  для  подальшого використання у середовищі CSS. Фільтр може бути ФНЧ, ФВЧ, режекторний та смуговий.
3.    Запустити  програму  на  виконання.  
4.    Побудуйте спектри сигналів. Зафіксуйте результати, зберігши всі графіки. Зробіть висновки.
5.    Змінити алгоритм блочної фільтрації для блоку розміром 128 елементів.
6.    Порівняти результати роботи написаної власноруч функції згортки та бібліотечної функції.  
7.    Представити  всі  необхідні результати, згідно індивідуального завдання.

Домашнє завдання

1.    Розробити НІХ фільтр. Та реалізувати його в програмі для ЦСП.  Вибір фільтру та його характеристик довільний. Результати фільтрації представити на графіках.

Література

1.    Бичков В.Є. Лабораторна робота №5. Основи цифрової обробки сигналів у вбудованих системах.

2.      https://www.youtube.com/watch?v=gulQfZPcnw8

3.    http://processors.wiki.ti.com/index.php/C674x_DSPLIB#Installation

4.    http://www.ti.com/lit/ug/sprueb8b/sprueb8b.pdf

Новини

  • SDR в IoT

    iotSDR пропонує платформу розробок для IoT-радіо та мережевих доменів. На платі два передавачі Microchip AT86RF215, для вводу-виводу модему на Xilinx ZYNQ SoC, приймач GNSS MAX2769 для GPS, Galileo, BieDou та Glonass. Плата сумісна з ПЗ GNURadio SDR. Дозволяє розробити протоколи фізичного рівня LoRa, SigFox, WightLess, Bluetooth, BLE, 802.15.4, ZigBee тощо для IoT, або шлюз IoT через TheThingsNetwork, LPWAN або Google Thread. Пам'ять EEPROM: 1x AT24MAC602 , flash-пам'ять: 1x QSPI 128 Мб, RAM: 256 MБ DDR3,слот для Micro SD карти, входи/виходи: 2x 8-бітних інтерфейси PL, інтерфейс 8-бітного PS, Gigabit Ethernet, USB 2.0 (USB3310), USB 2.0 (CP2104), 2x SMA RF-роз'єми для приймача діапазонів IoT, 2x SMA RF-роз'єми для приймача 2,4 ГГц , RF-роз'єм приймач GNSS, FPGA-роз'єм JTAG для програмування. Розміри плати: 76,2 мм x 101,6 мм.

     

    in Новини

Записатися на курс