Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KP_MZOS_14.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.49 Mб
Скачать

1. 2. 4. Обчислювальна ефективність алгоритму шпф з проріджуванням за часом

Алгоритм з проріджуванням за часом на кожному рівні вимагає N комплексних множень і додавань. При N = 2L кількість рівнів розкладання - об'єднання рівно L, Таким чином загальна кількість операцій множення і додавання дорівнює L*N.

Розглянемо у скільки разів алгоритм ШПФ із проріджуванням за часом ефективніше ДПФ. Для цього розглянемо коефіцієнт прискорення K відношення кількості комплексних множень і додавань при використанні ДПФ і БПФ, при цьому врахуємо що L=log2(N):

разів.

(9)

У таблиці 1 наведено необхідну кількість операцій Mоп для алгоритму ДПФ при різному N=2Lі при використанні ШПФ із проріджуванням за часом.

Таблиця 1. Порівняння кількості операцій.

L

4

6

8

10

12

N

16

64

256

1024

4096

Mоп ДПФ

256

4096

65536

1048576

16777216

Mоп ШПФ

64

384

2048

10240

49152

K, Раз

4

10,7

32

102,4

341

З таблиці 1 добре видно, що використання ШПФ призводить до суттєвого зменшення необхідної кількості обчислювальних операцій. Так наприклад при N = 1024 ШПФ вимагає в 100 разів менше операцій ніж ДПФ, а при N = 4096 у 341 разів! При цьому дуже важливо, що виграш у продуктивності тим більше, чим більше розмір вибірки N. Так, наприклад при N=216виграш складе 216 /16 = 212 = 4096 разів.

2. Розрахунковий розділ

2. 1. Розрахунок часу виконання

Для розрахунку часу виконання алгоритму ШПФ на процесорі tms320dm365 потрібно визначити кількість операцій додавання, множення та читання/запису з/до пам’яті однієї операції «метелик». На рис. 5 наведено базову операцію “метелик” ШПФ за основою 2 з прорідженням по часу.

Рис. 5. Метелик ШПФ за основою 2 з прорідженням по часу

Формули обчислення метелика:

X’1 = X1 + X2*W

X’2 = X1 – X2*W

Розклад формул для обчислення метелика на дійсну та уявну частину:

X’1 = ( ReX1 + jImX1 ) + ( ReX2 + jImX2 )

X’2 = ( ReX1 + jImX1 ) – ( ReX2 + jImX2 ) * ( ReW – jImW )

W = e-j(2πnk/N) = cos ( ) – j sin ( )

ReW ImW

Re X’1 = Re X1 + Re X2

Re X’2 = ReW (Re X1 – Re X2) + ImW (Im X1 – Im X2)

Im X’1 = Im X1 + Im X2

Im X’2 = ReW (Im X1 – Im X2) – ImW (Re X1 – Re X2)

X’1 = (Re X1 + jIm X1) + (Re X2 + jIm X2) * (ReW + jImW) = Re X1 + Im X1 + Re X2 * Re W + Re X2 * ImW + Re W * Im X2 + Im X2 * ImW

X’2 = (Re X1 + jIm X1) – (Re X2 + jIm X2) * (Re W + jImW) = Re X1 + Im X1 – Re X2 * Re W – Re X2 * ImW – Re W * Im X2 – Im X2 * ImW

Re X’1 = Re X1 + Re X2 * ReW + ReW * Im X2 + Re X2 * ImW = Re X1 + Re W (Re X2 + Im X2) + Re X2 * ImW

Re X’2 = Re X1 – Re X2 * ReW – ReW * Im X2 – Re X2 * ImW = Re X1 – ReW (Re X2 + Im X2) – Re X2 * ImW

Im X’1 = Im X1 - Re W * Im X2 - Re X2 * ImW – Im X2 * ImW = Im X1 ImW (Re X2 + Im X2) – Re W * Im X2

Im X’2 = Im X1 + Re W * Im X2 + Re X2 * ImW + Im X2 * ImW = Im X1 + ImW (Re X2 + Im X2) + Re W * Im X2

Операції:

  1. Додавання – 12

  2. Множення – 8

  3. Читання з пам'яті – 6

  4. Запис в пам’ять – 4

Загальна кількість операцій – NОП = 30.

Загальна кількість операцій визначається за формулою:

(10)

Nзаг = * log22048 = 1024 * 11 = 11 264 операцій

Для виконання кожного метелика потрібно 30 операцій, кожна операція виконується за 1 такт процесора, то загальний час обчислення ШПФ (ТзагШПФ) буде:

ТзагШПФ = NЗАГ * NОП * ТВІ, де

ТВІ – час виконання однієї інструкції (1/FПРОЦ);

ТзагШПФ = 11 264 * 30 * (1/400*106) = 0,845 мс

Час завантаження даних у процесор через Flash-PSD4256G6V визначається за формулою:

ТЗАВ = (2*N*R)*(1/F), де

R – розрядність даних

ТЗАВ = (2*2048*8)*(1/40*106) = 0,82 мс

Час отримання даних з процесора через UART (115,2 Кбіт/с):

ТОТР = (2*2048*8)*(1/115,2*103) = 2,8 мкс

Загальний час виконання алгоритму ТЗАГ = 0,845*10-3 + 0,82*10-3 + 2,8*10-6 = 1,67мс

ТЗАГ задовольняє умову завдання – 2,45 мс < 2,8 мс. Для виконання алгоритму достатньо одного процесора. Нижче наведена часова діаграма роботи системи.

Рис. 6. Часова діаграма роботи процесора

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