Розрахунок параметрів виконання алгоритму ШПФ

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Розрахункова робота
Предмет:
Теоретичні основи комп ютерної безпеки

Частина тексту файла (без зображень, графіків і формул):

Завдання Варіант № 12 Розрахувати параметри виконання алгоритму ШПФ з такими вхідними даними: Кількість точок 2048  Основа ШПФ 2  Прорідження часове  Частота роботи процесора  12,0 МГц  Розрядність вхідних даних 24(12+12)  Тип вхідного інтерфейсу SPORT  Тип вихідного інтерфейсу Зовнішня пам'ять   Зміст Вступ 5 1 Теоретичний розділ 6 1.1 Опис швидкого перетворення Фур’є з прорідженням в часі 6 2 Аналіз (розробка) блок-схеми виконання заданої функції обробки сигналів та зображень на заданому типі процесора 9 3 Розрахунковий розділ 11 4 Розробка функціональної схеми 13 5 Розробка програми виконання алгоритму ШПФ 15 Висновки 19 Література 20 2 Аналіз (розробка) блок-схеми виконання заданої функції обробки сигналів та зображень на заданому типі процесора Табл.2.1. Двійково-інверсна перестановка даних Номер Двійкове представлення Двійкова інверсія Двійково-інверсний номер  0 0000 0000 0  1 0001 1000 8  2 0010 0100 4  3 0011 1100 12  4 0100 0010 2  5 0101 1010 10  6 0110 0110 6  7 0111 1110 14  8 1000 0001 1  9 1001 1001 9  10 1010 0101 5  11 1011 1101 13  … … … …  2045 11111111101 10111111111 1535  2046 11111111110 01111111111 1023  2047 11111111111 11111111111 2047  / Рис.2.1 Блок-схема алгоритму 2048-точкового перетворення за основою 2 / Рис.2.2 Граф 2048-точкового ШПФ за основою 2 з прорідженням по часу 3 Розрахунковий розділ 12 2048 2 Т 12,0 24 (12+12) SPORT Зовнішня пам'ять    Частота роботи процесора: , звідси цикл виконання команди: . base – основа базової операції «метелик»; N – к-ть точок вх. перетворення; base=2; N=2048;  – кількість етапів перетворення;  – кількість базових операцій «метелик» на одному етапі;  – кількість базових операцій у всьому перетворенні; ; ;  Для виконання базової операції «метелик» необхідно: 4 операцій множення; 6 операцій додавання; 10 операцій читання з пам`яті: - 2*2=4 (для читання дійсної та уявної частини вхідних відліків); - 3*2=6 (для читання дійсної та уявної частини комплексних коефіцієнтів); 4 операцій запису: - 2*2=4 (для запису дійсної та уявної частини вхідних відліків); В результаті на одну базову операцію припадає 24 операцій: Nна 1 мет=24 (оп). Тривалість виконання обчислення ШПФ:  Тривалість надходження даних у процесор для обробки(SPORT):  – такт надходження даних;  Тривалість виходу даних із процесору (Зовнішня пам'ять): Твих=21нс;  Тривалість надходження даних у процессор, виходу із нього та тривалість обчислення ШПФ:  4 Розробка функціональної схеми / Рис.4.1 Фунціональна схема 5 Розробка програми виконання алгоритму ШПФ Структуру програми, що виконує обчислення за алгоритмом ШПФ можна уявити наступним чином: / Рис.5.1. Узагальнена блок-схема алгоритму Кожен з трьох циклів призначений для правильного визначення номеру відліку в конкретний момент обчислення. Перший цикл визначає номер ярусу, другий – номер базової операції у ярусі, третій – номер відліку у базовій операції. Вводиться масив, що зберігає відліки, в програмі названий matrix, його номер відповідно – N (кількість точок перетворення). Кожен елемент масиву – комплексне число. Інший массив W призначений для зберігання повертаючи множників. На кожну базову операцію припадає 3 повертаючих множника (четвертий фактично дорівнює 1), тому його розмір: 11*2048*3=67584 (11 – кількість ярусів, 2048 – кількість базових операцій в ярусі). Елемент цього масиву є так само комплексним числом. Текст програми, написаної на мові С, поданий нижче N=2048; struct complex { double re; double im; }; complex W[3*N]; complex matrix[N]; int i,imax,j,x1,x2,x3,x4; int f; //номер етапу int p; //номер операції в етапі complex temp1,temp2,temp3,temp4; f=0; for(imax = N-1; imax <=0; imax = (imax+1)/4 – 1) { p=0; for(j = 0; j < N; j = j + (imax+1)*4) { x1 = j + (imax+1)*0; x2 = j + (imax+1)*1; x3 = j + (imax+1)*2; x4 = j + (imax+1)*3; for (i = 0; i <= imax; i++) { temp1.re= matrix[x1+i].re + matrix[x3+i].re*W[n*2048+p*3+1].re – - matrix[x3+i].im*W[n*2048+p*3+1].im + + matrix[x2+i].re*W[n*2048+p*3+0].re – - matrix[x2+i].im*W[n*2048+p*3+0].im + + matrix[x4+i].re*W[n*2048+p*3+2].re – - matrix[x4+i].im*W[n*2048+p*3+2].im; temp1.im= matrix[x1+i].im + matrix[x3+i].re*W[n*2048+p*3+1].im + + matrix[x3+i].im*W[n*2048+p*3+1].re + + matrix[x2+i].re*W[n*2048+p*3+0].im + + matrix[x2+i].im*W[n*2048+p*3+0].re + + matrix[x4+i].re*W[n*2048+p*3+2].im + + matrix[x4+i].im*W[n*2048+p*3+2].re; temp2.re= matrix[x1+i].re - matrix[x3+i].re*W[n*2048+p*3+1].re + + matrix[x3+i].im*W[n*2048+p*3+1].im + + matrix[x2+i].re*W[n*2048+p*3+0].im + + matrix[x2+i].im*W[n*2048+p*3+0].re - - matrix[x4+i].re*W[n*2048+p*3+2].im – - matrix[x4+i].im*W[n*2048+p*3+2].re; temp2.im= matrix[x1+i].im - matrix[x3+i].re*W[n*2048+p*3+1].im - - matrix[x3+i].im*W[n*2048+p*3+1].re - - matrix[x2+i].re*W[n*2048+p*3+0].re + + matrix[x2+i].im*W[n*2048+p*3+0].im - - matrix[x4+i].re*W[n*2048+p*3+2].re + + matrix[x4+i].im*W[n*2048+p*3+2].im; temp3.re= matrix[x1+i].re + matrix[x3+i].re*W[n*2048+p*3+1].re – - matrix[x3+i].im*W[n*2048+p*3+1].im - - matrix[x2+i].re*W[n*2048+p*3+0].re + + matrix[x2+i].im*W[n*2048+p*3+0].im + + matrix[x4+i].re*W[n*2048+p*3+2].re – - matrix[x4+i].im*W[n*2048+p*3+2].im; temp3.im= matrix[x1+i].im + matrix[x3+i].re*W[n*2048+p*3+1].im + + matrix[x3+i].im*W[n*2048+p*3+1].re - - matrix[x2+i].re*W[n*2048+p*3+0].im - - matrix[x2+i].im*W[n*2048+p*3+0].re + + matrix[x4+i].re*W[n*2048+p*3+2].im + + matrix[x4+i].im*W[n*2048+p*3+2].re; temp4.re= matrix[x1+i].re - matrix[x3+i].re*W[n*2048+p*3+1].re + + matrix[x3+i].im*W[n*2048+p*3+1].im - - matrix[x2+i].re*W[n*2048+p*3+0].im – - matrix[x2+i].im*W[n*2048+p*3+0].re - - matrix[x4+i].re*W[n*2048+p*3+2].re + + matrix[x4+i].im*W[n*2048+p*3+2].im; temp4.im= matrix[x1+i].im - matrix[x3+i].re*W[n*2048+p*3+1].im - - matrix[x3+i].im*W[n*2048+p*3+1].re + + matrix[x2+i].re*W[n*2048+p*3+0].re - - matrix[x2+i].im*W[n*2048+p*3+0].im - - matrix[x4+i].re*W[n*2048+p*3+2].re + + matrix[x4+i].im*W[n*2048+p*3+2].im; matrix[x1+i].re = temp1.re; matrix[x1+i].im = temp1.im; matrix[x2+i].re = temp2.re; matrix[x2+i].im = temp2.im; matrix[x3+i].re = temp3.re; matrix[x3+i].im = temp3.im; matrix[x4+i].re = temp4.re; matrix[x4+i].im = temp5.im; } p++; } f++; } Значення imax+1 означає кількість груп, по яких проводиться збірка на конкретному ярусі і приймає значення: 1024, 512, 256,128, 64,32, 16,8, 4, 2, 1. На першому ярусі є 1024 груп операцій по 2 відліка кожна, на другому – 512 груп. Організація змінної j передбачає, що вона буде вибирати групу відліків для базової операції, спираючись на неї визначаються їх адреси змінними х1, х2, х3, х4. Ці адреси зміщуються за певним законом для кожної групи відліків, використовуючи третій цикл, що обробляю вже безпосередньо групу. Змінні temp1, temp2, temp3, temp4 – зберігають тимчасові значення результатів обчислення. Значення f та p визначають адресу повертаю чого множника для даної базової операції.
Антиботан аватар за замовчуванням

24.03.2013 21:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!