- •До лабораторних та самостійних робіт з дисципліни
- •3.1 Короткі теоретичні відомості 23
- •4.2 Порядок виконання роботи 35
- •1 Вивчення основ роботи з пакетом для математичних і інженерних розрахунків matlab
- •1.1 Робочий простір системи matlab і її командне вікно
- •1.2 Створення протоколу сеансу роботи в пакеті matlab
- •1.3 Основи програмування в matlab
- •1.3.1 Файл-сценарій
- •1.3.2 Створення м-функий
- •1.4 Порядок виконання роботи
- •1.6 Контрольні питання
- •2 Розрахунок низькочастотного фільтру
- •2.1 Короткі теоретичні відомості
- •2.2 Порядок виконання роботи
- •2.4 Контрольні питання
- •3 Моделювання низькочастотного фільтра
- •3.1 Короткі теоретичні відомості
- •3.2 Порядок виконання роботи
- •3.4 Контрольні питання
- •4 Розробка програми цифрової фільтрації для цифрових процесорів обробки сигналів сімейства adsp-21xx
- •4.1 Короткий опис середовища розробки
- •4.2 Порядок виконання роботи
- •Int dm in [total]; // Буфер вибірок вхідного сигналу
- •Int dm out [total]; // Буфер відгуку фільтра
- •4.4 Контрольні питання
- •5 Вивчення основ обробки зображень у системі «matlab»
- •5.1 Методичні вказівки до роботи
- •5.2 Порядок виконання роботи
- •Література
4.2 Порядок виконання роботи
Запустите Visual DSP++.
Закрийте усі вікна, крім вікон Disassembly і Output.
Виконаєте команду Session New Session головного меню Visual DSP++. З'явиться вікно вибору цільової платформи розробки.
Рисунок 21 – Вибір сесії
Таблиця 6 – Настроювання сесії
Настроювання |
Значення |
Опис |
Debug target |
ADSP-218x Family Simulator |
Отладчик програми – симулятор ЦПОС ФТ ADSP-218X |
Platform |
Simulation |
Платформа – моделювання |
Processor |
ADSP-2181 |
Мікропроцесор – ADSP-2181 |
Session name |
ADSP-2181 Simulation |
Назва сесії – ADSP-2181 Simulation |
Створіть новий документ і введіть програму цифрової фільтрації (листинг 3).
Листинг 3 – Програма цифрової фільтрації
#include <stdio.h>
#include <filters.h>
#include <stdlib.h>
#include <math.h>
#define TOTAL 512 // Кількість вибірок сигналу
#define TAPS 187 // Порядок фільтра
#pragma align 16
int pm coefs [TAPS] =
{
/* Коефіцієнти фільтра. Десяткові значення формат 1.15
};
#pragma align 512
Int dm in [total]; // Буфер вибірок вхідного сигналу
#pragma align 512
Int dm out [total]; // Буфер відгуку фільтра
int dm state [TAPS+1]; // Черга FIR фільтра
int dm i;
void main ()
{
srand (taps); // Ініціалізація датчика ПСЧ
for (і=0; і<TOTAL; і++)
{
in[i] = rand (); // Заповнення буфера in
out[i] = 0; // Ініціалізація буфера out
if (і<TAPS+1)
state[i] = 0; // Ініціалізація черги фільтра
}
for (i=0; i<TOTAL; i++)
{ // Обчислення відгуку FIR фільтра
out[i] = fir (in[i], coefs, state, TAPS);
}
}
Функція fir () реалізує цифровий фільтр із кінцевою імпульсною характеристикою. Її прототип:
#include <filters.h>
int fir(int sample, int pm coeffs[], int dm state[], int taps);
Функція fir
Реалізує FIR-фільтр, визначений коефіцієнтами і лінією затримки, зміст яких визначається при виклику. Обчислюється реакція фільтра на вхідні дані. Характеристики фільтра (смуга пропущення, смуга відсікання і т.д.) залежать від значень коефіцієнтів і порядку фільтра, що передаються зухвалою програмою. Параметр sample містить целочисленное вхідне значення FIR-фільтра. Параметр taps указує порядок FIR-фільтра і довжину масиву coeffs[]. У масиві coeffs[] зберігаються коефіцієнти FIR-фільтра в зворотному порядку. Наприклад, в елементі coeffs [0] зберігається коефіцієнт з індексом taps-1. Масив coeffs[] розташований у пам'яті програм, що дозволяє одною командою зчитувати два операнда з різних областей пам'яті мікропроцесора. Масив state[] містить покажчик на лінію затримки. Останній елемент лінії затримки записується в масив state[] двічі: на початку і наприкінці масиву. Тому довжина масиву state[] на одного більше порядку FIR-фільтра. Кожен FIR-фільтр описується власним масивом state[], зміст якого не можна змінювати. Перед першим викликом функції fir масив state[] повинний бути инициализирован нулями. Масив state[] повинний зберігатися в циклічному буфері, інакше функція не буде працювати. Параметри sample, coeffs[] і state[] повинні бути представлені в дробовому форматі 1.15. Вихідний формат операндов зберігається. Якщо необхідно одержати FIR-фільтр, що оперує з цілими числами (формат 16.0), значення, що виходять на виході функції, необхідно поділяти на два / зрушувати вправо на один розряд. Функція fir не повертає коду помилки.
Скопіюйте значення
коефіцієнтів фільтра який був спроектований
при виконанні лабораторної роботи №2.
з
файлу (result.txt.)
Результат редагування збережете у файл
fir_model.c.
Створіть новий проект і додайте в нього файл fir_model.c.
У меню View виберіть команду Debug Windows and Plot New. У діалоговому вікні Plot Configuration задайте набори даних (табл. 7). Клацніть OK.
Таблиця 7 – Вхідні і вихідні дані
Поле |
Вхідні дані |
Вихідні дані |
Опис |
Name (ім'я) |
Input |
Output |
Набір даних |
Memory (пам'ять) |
DM |
DM |
Пам'ять даних |
Address (адреса) |
IN |
OUT |
Адреса збігається з назвою масивів вхідних і вихідних даних. |
Count (кількість) |
512 |
512 |
Загальне число елементів 260, але графік будується по першим 128 |
Stride (крок) |
1 |
1 |
Дані розміщені в пам'яті послідовно |
Data (тип даних) |
int |
int |
Целочисленные дані |
Клацніть правою кнопкою миші у вікні Plot і виберіть команду Modify Settings, щоб відкрити діалогове вікно Plot Settings. Виберіть вкладку Data processing (обробка даних).
Рисунок 22 – Вкладка Data processing вікна Plot Settings
У поле Data Sets виберіть набір даних Input. У поле Data Process виберіть спосіб обробки даних FFT Magnitude (спектр сигналу).
У поле Data Sets виберіть набір даних Output. У поле Data Process установите FFT Magnitude.
У поле Sample rate уведіть значення частоти дискретизації – 9600 Гц.
Клацніть OK. Тепер усе готово для виконання моделювання і налагодження.
Запустите компіляцію проекту. Якщо під час компіляції не було виявлено помилок, то запустите отладчик, натиснувши <F5>.
Наприкінці роботи у вікні Plot буде одночасно показаний спектр вхідного і вихідного сигналу.
4.3 Зміст звіту
Звіт по лабораторній роботі повинний містити результати, отримані в ході її виконання: тексти програм, значення коефіцієнтів FIR фільтра, графіки, схеми, тези відповідей на контрольні питання і висновки. При необхідності, відповіді на питання можна шукати в Інтернету. Звіти в електронному виді і ксерокопії до захисту не приймаються.
