Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБ_ЦОС.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1 Мб
Скачать
☆

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 фільтра, графіки, схеми, тези відповідей на контрольні питання і висновки. При необхідності, відповіді на питання можна шукати в Інтернету. Звіти в електронному виді і ксерокопії до захисту не приймаються.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]