Міністерство освіти і науки України
Національний університет «Львівська політехніка»
ІКТА
Кафедра ЕОМ
Курсовий проект
з дисципліни
«Методи, алгоритми та засоби цифрової обробки сигналів та зображень»
на тему:
«Розробка процесора ШПФ»
Завдання
Варіант № 141
Розробити процесор ШПФ з такими вхідними даними:
Тип процесора
TMS320С25
Кількість точок
32
Основа ШПФ
2
Прорідження
Часове
Розрядність вхідних даних
16(8+8)
Час обробки
0.8 мс
Анотація
В даному курсовому проекті розглянуто спосіб реалізації алгоритму ШПФ за основою 2 для сигнального процессора TMS320С25 для 16-розрядних вхідних даних з часовим прорідженням, детально описано механізми обчислення швидкого перетворення Фур`є за заданною основою, властивості та основні характеристики процесора, на якому планується реалізація, підраховано часові ресурси для виконання обчислення, створена функціональна схема системи та написана програма, що реалізує вказаний алгоритм ШПФ на заданому процесорі.
Зміст
Вступ
1. Теоретичний розділ
1.1.Характеристики сигнального процесора TMS320С25
1.2 Опис ШПФ
2. Аналіз блок-схеми виконання заданої функції обробки сигналів та зображень на заданому типі процесора
3. Розрахунковий розділ
4. Розробка функціональної схеми
5. Розробка програми виконання заданої функції
6. Шляхи підвищення швидкодії МП
7. Аналіз об’єму пристроїв керування і пристроїв обробки
Висновки
Література
Вступ
Аналіз Фур'є закладає основи багатьох методів, що застосовуються в області цифрової обробки сигналів (ЦОС). По суті справи, перетворення Фур'є (фактично існує кілька варіантів таких перетворень) дозволяє співставити сигналу, заданому в часовій області, його еквівалентне представлення в частотній області, і навпаки, якщо відома частотна характеристика сигналу, то зворотне перетворення Фур'є дозволяє визначити відповідний сигнал у часовій області.
Крім того, ці перетворення корисні при проектуванні фільтрів. Частотна характеристика фільтра може бути отримана за допомогою перетворення Фур'є його імпульсної реакції. І навпаки, якщо визначена частотна характеристика сигналу, то необхідна імпульсна реакція може бути отримана за допомогою зворотнього перетворення Фур'є над його частотною характеристикою. Цифрові фільтри можуть бути створені на основі їхньої імпульсної реакції, оскільки коефіцієнти фільтра з кінцевою імпульсною характеристикою (КІХ) ідентичні дискретній імпульсній реакції фільтра.
1.Теоретичний розділ
Характеристики сигнального процесора TMS320С25
1.1.1.Призначення TMS320С25.
TMS320С25 - високопродуктивний цифровий процесор обробки сигналів, що базується на модифікованій гарвардській архітектурі. У цій архітектурі використовуються два простори пам'яті - для програм і для даних зі своїми шинами адреси і даних. По шині даних пам'яті програм з програмної пам'яті пересилаються коди команд і безпосередні операнди. По шині даних пам'яті даних пересилаються дані від всіляких модулів процесора (АЛП, масиву додаткових адресних регістрів і ін.) в пам'ять даних і навпаки. Є команди обміну даними між пам'яттю програм і пам'яттю даних.
У C25 підтримується високий рівень паралелізму. Так, поки дані обробляються в АЛП, в арифметичному пристрої допоміжних регістрів може проводитися інкремент або декремент вмісту цих регістрів.
1.1.2.Властивості ТMS320c25.
Основні характеристики ТMS320c25:
тривалість командного циклу - 50/25 нс (час виконання одиночної команди);
продуктивність - 20 MIPS (мільйонів операцій в секунду);
внутрішнє ОЗП типу SARAM (пам'ять з одиночним доступом) - 9К × 16 біт;
внутрішня пам'ять програм типу ROM - 2К × 16 біт;
1056 ×16 біт - внутрішнє ОЗП подвійного доступу типу DARAM;
224К - максимальний простір зовнішньої пам'яті, що адресується (64К програма, 64К дані, 64К ввід/вивід і 32К глобальні дані);
32-розрядний арифметико-логічний пристрій (ALU), 32-розрядний акумулятор (ACC), і 32-розрядний буфер акумулятора (ACCB);
16-розрядний паралельний логічний пристрій (PLU);
16 × 16- розрядний паралельний помножувач з 32-розрядним регістром результату;
8-рівневий апаратний стек;
зсувачі даних від 0 до 16 розрядів (управо і вліво) і інкрементний 64-розрядний зсуваючий пристрій;
64К паралельних портів вводу/виводу, 16 з яких відбиті на пам'ять;
наявність біт-інверсної адресації (bit-reversed index-addressing mode) для виконання БПФ.
Функціональна блок-діаграма TMS320С25 представлена на рис.1, містить основні блоки і показує маршрути даних в процесорі. Архітектура процесора включає дві основні шини: шину программ, яка передає командні коди і безпосередні операнди з програмної пам'яті і шину даних, що сполучає різні пристрої, такі як арифметико-логічнийпристрій (ALU) і файл допоміжних регістрів з пам'яттю даних. Разом шини програм і даних можуть одночасно подавати співмножники з внутрикристальной пам'яті даних і внутрішньої або зовнішньої пам'яті програм на обидва входи помножувача для забезпечення повнопоточного одноциклового множення або множення/накопичения.
Рис.1 Блок-діаграма внутрішніх апаратних засобів TMS320С25
Таблиця 1. Опис виводів
Назва сигналу
Тип
Призначення
A15-0
І/O/Z
Зовнішня шина адрес (Extrenal Bus Address). Вихідна шина, що використовується для адресування зовнішньої пам'яті і периферійних пристроїв.
D15-0
І/O/Z
Зовнішня шина даних (Extrenal Bus Data). Двонаправлена шина даних .
DS
O/Z
Cигнал вибору простору пам’яті даних.
( активний при низькому рівні)
IS
O/Z
Cигнал вибору пристрою вводу/виводу.
( активний при низькому рівні)
PS
O/Z
Cигнал вибору простору пам’яті програм.
( активний при низькому рівні)
STRB
I/O/Z
Cигнал стробування входу/виходу і DMA.
( активний при низькому рівні)
READY
І
Cигнал готовності зовнішнього пристрою.
R / W
І/O/Z
Cигнал читання/запису
RD
O/Z
Cигнал дозволу читання.
( активний при низькому рівні)
WE
О/Z
Cигнал дозволу запису.
( активний при низькому рівні)
BIO
І
Cигнал управління інструкцією переходу.
( активний при низькому рівні)
HOLD
І
Cигнал активізації стану утримання (режим прямого доступу до пам’яті ).
( активний при низькому рівні)
HOLDА
O/Z
Cигнал підтвердження стану зохоплення шини (режим прямого доступу до пам’яті ).
( активний при низькому рівні)
BR
І/O/Z
Cигнал запиту шини дани, входу/виходу .
( активний при низькому рівні)
IAQ
O/Z
Cигнал стробу виконання інструкції.
( активний при низькому рівні)
IACK
O/Z
Cигнал підтвердження переривання.
( активний при низькому рівні)
INT 1-4
І
Вихід зовнішніх переривань 1-4.
(активні при низькому рівні)
NMI
І
Вихід немаскованого переривання .
(активний при низькому рівні)
RS
І
Cигнал скиду.
( активний при низькому рівні)
XF
O
Вивід прапорця стану.
CLKOUT1
O/Z
Cигнал генератора машинного циклу
CLKMD1-2
І
Cигнал вибору режимів тактування 1і 2
CLKIN2
І
Вивід підключення зовнішнього генератора
X2/CLKIN
І
Вивід підключення кварцового резонатора / вхід зовнішньої синхронізації
X1
O
Вивід підключення кварцового резонатора
CLKR
І
Вхід синхросигналу прийому по послідовному порту
CLKX
І/O/Z
Вивід синхросигналу передачі по послідовному порту
DR
І
Вхід даних послідовного порту
DX
O/Z
Вихід даних послідовного порту
FSR
І
Cигнал cтарт-імпульсу прийому по послідовному порту
FSX
І/O/Z
Cигнал cтарт-імпульсу передачі по послідовному порту
TCK
І
Вхід сигналу тактової синхронізації операцій тестової логіки(Test Clock). Асинхронні такти для сканування границь JTAG.
TMS
І
Вибір тестового режиму(Test Mode Select). Використовується для контролю тестовим кінцевим автоматом.
TDI
І
Вхід тестових даних(Test Data Input). Забезпечує послідовні дані на пристрій JTAG сканування.
TDO
O/Z
Вихід тестових даних(Test Data Output). Забезпечує видачу послідовних даних при скануванні JTAG.
TRST
І
Тестовий скид(Test Reset). Сигнал початкової установки вузла сканування.
EMU0
O
Стан емуляції(Emulation Status). Задає стан процесу емуляції.
МP/MC
I
Вибір режиму мікропроцесор/мікрокомп'ютер
Центральний арифметико-логічний пристрій (CALU)
Центральний арифметико-логічний пристрій (CALU або блок обробки
даних) процесора TMS320С25 містить 16-розрядний зсувний регістр що масштабується, 16 × 16-розрядний паралельний помножувач, 32-розрядний
арифметико-логічний пристрій (ALU), 32-розрядний акумулятор (АСС), 32-розрядний буфер акумулятора (ACCB) і додаткові зсувні регістри на виходах акумулятора і помножувача. Цей підрозділ описує пристрої обчислювальній секції процесора і їх функції. Під час виконання типових команд CALU мають місце наступні дії:
1) дані вибираються з пам'яті по шині даних
2) дані пересилаються через масштабуючий зсувний регістр в ALU, де виконуються арифметичні операції
3) результат переміщається в акумулятор.
На один вхід ALU дані завжди поступають з акумулятора, а на іншій можуть подаватися з регістра результату (PREG) помножувача, буфера акумулятора (ACCB) або з масштабуючого сдвигового регістра, що завантажується з пам'яті даних або акумулятора (ACC).
Процесор TMS320C25 виконує арифметичні команди, використовуючи 32-разрядные АЛП і акумулятор. АЛП - універсальний арифметичний модуль, який оперує 16-розрядними операндами (безпосередніми або з пам'яті) або/і 32-розрядними з помножувача або акумулятора. Акумулятор використовується для зберігання результатів, що поступають з АЛП, а також для введення другого операнда в АЛП. 32-розрядний акумулятор розділений на дві частини (старше слово - біти 31:16 і молодше - біти 15:0). Передбачені команди для збереження старшого і молодшого слів вмісту акумулятора в пам'яті. Для швидкого тимчасового збереження вмісту акумулятора є 32-розрядний буфер акумулятора.
На додаток до основного АЛП є паралельний логічний модуль (ПЛП), який виконує логічні операції над даними, не роблячи впливу на вміст акумулятора. ПЛП спрощує порозрядну установку, очищення і тестування, використовувані при управлінні і при операціях над регістрами.
Апаратний помножувач виконує перемножування двох 16-розрядних слів із здобуттям 32-разрядного результату за один командний цикл. Помножувач складається з трьох елементів: власне помножувача, регістра результату (product register PREG) і тимчасового регістра (TREG0). 16-разрядный TREG0 зберігає множник, 32-разрядный PREG містить результат множення. Залежно від використовуваних команд значення множника може бути завантажене з пам'яті даних, пам'яті програм або безпосередньо з команди. Апаратний помножувач дозволяє процесору ефективно виконувати основні операції обробки сигналів, такі як згортка, кореляції, фільтрацію.
8-рівневий апаратний стек служить для зберігання вмісту програмного лічильника при виконанні процедур і підпрограм обробки переривань. При перериваннях регістри (ACC, ARCR, INDX, PMST, PREG, ST0, ST1, TREGs) поміщаються в однорівневий стек і витягуються з нього при поверненні з переривання, що надає можливість перемикати контекст без втрати часу.
1.2. Опис ШПФ.
1.2.1.Опис швидкого перетворення Фур’є з прорідженням в часі
Дискретний матеріальний сигнал у вигляді кінцевої часової послідовності x(nТ) запишемо як x(nТ), де - число відліків, N – число відліків, T - період дискретизації.
N - точкове дискретне перетворення Фур'є (ДПФ) задається формулою:
де X(k) - частотний k-ий відлік чи k-а спектральна складова сигналу (визначає вихідну частотну послідовність, спектр сигналу),
комплексна експонента, W- ядро перетворення.
При зміні значення n*k на величину кратну N ядро не змінюється (у силу періодичності синуса і косинуса). Тобто ядро по верхньому індексу є періодичною функцією з періодом N. Тому замість добутку n*k можна вставити залишок від ділення його на N , тобто (n*k) mod N. Cпектральна функція X(k) також має період N по аргументу k.
Число множень дійсних відліків сигналу на комплексне ядро в (1) дорівнює N2, а число додавань комплексних чисел - (N -1)N. Кількість цих операцій різко зростає із збільшенням N і приводить до занадто великого часу перетворення.
ДПФ стало широко застосовуватися після винаходу швидких алгоритмів, в основі яких лежить принцип зведення багатоточкового перетворення до малоточкового. Один з них (що став уже класичним) називається ШПФ із проріджу-ванням за часом. Цей алгоритм отриманий за умови, якщо N є ступенем числа 2, тобто , де ν - ціле число, ν≥0.
Основні формули перетворення, до яких ми прийдемо, виходять при розбивці суми в (1) на дві суми, що містять відліки з парними і непарними номерами
Власне кажучи ця операція являє собою зміну порядку сумування (перегрупу-вання доданків), від якого сума не міняється.
Можна записати , . З врахуванням цього (2) прийме вигляд:
Зауважимо, що суми в (3) являють собою N/2 - точкові ДПФ часових відліків з парними номерами в першій сумі, і непарними номерами в другій сумі.
Позначимо, згідно з [1],
X(k) = Xν(k) - ДПФ усіх вхідних відліків дискретного сигналу,
вхідних відліків з парними номерами (перше число в нижньому індексі дорівнює ν - 1, а друге - парному числу (нулю)) ,
вхідних відліків з непарними номерами (друге число в нижньому індексі дорівнює непарному числу (одиниці)).
З урахуванням введених позначень одержимо коротку форму запису (3)
Спектри і є періодичними функціями з періодом N/2 (у ядрі перетворення замість N стоїть N/2). Величина називається повертаючим множником і володіє наступною цікавою властивістю
Ця властивість надає при обчисленні з номерами k від N/2 до (N -1) використовувати відповідні значення раніше обчислених з номерами від 0 до (N/2 -1) (потрібно тільки змінити знак).
За звичай формулу (4) розбивають на два співвідношення для зазначених вище номерів і одержують основні формули (базові співвідношення) перетворення Фур'є у вигляді
Базові співвідношення вже можна назвати швидким перетворенням Фур'є (ШПФ), тому що число операцій зменшилося. Число множень матеріальних відліків сигналу на комплексне ядро дорівнює . До цього потрібно додати множень комплексних чисел. Число додавань дорівнює
Процес розбиття за схемою базових співвідношень можна продовжувати до тих пір, доки не прийдемо до перетворень Фур'є одиничних відліків (що збігаються із самими відліками). Необхідне число операцій при цьому буде значно менше. У такому вигляді це ШПФ називають ШПФ із проріджуванням за часом.
Для пояснення процесу розбиття розглянемо більш детально, приклад ШПФ при .
Позначимо оператор ДПФ визначених вхідних відліків через F і запишемо відповідності між символами ДПФ, введеними вище, і цим оператором.
Зв'язок між ДПФ із великим і меншим числом точок відповідно до базових співвідношень записується в такий спосіб:
Роботу ШПФ можна пояснити графічно, якщо базові співвідношення, записані в дуже короткій формі
або зобразити графом
Верхній стрілці відповідає додавання, а нижній - віднімання. Попередньо bm-1 домножається на множник повороту WN.
Використовуючи вищенаведене і розташовуючи символи ДПФ у впорядковано-му вигляді, зобразимо ШПФ геометрично за допомогою графа.
Рис.1.2.1. Граф ШПФ із проріджуванням за часом при N=8
Відзначимо, що відліки вхідної послідовності переходять у відповідні ДПФ нульового рівня відповідно до інверсії їхній двійкових номерів (операція називається перестановкою вхідних відліків). Наприклад, десятковий номер 4|10 у двійковому вигляді запишеться як 100|2. Інверсія числа 100|2 (у прочитанні з права на ліво) запишеться як 001|2 = 1|10. Таким чином, вхідний відлік під номером 4 співпаде з першим ДПФ X0,1(0). Перестановку для всіх відліків можна показати стрілками переходу: 0 → 0, 1 → 4, 2 → 2, 3 → 6, 4 → 1, 5→ 5, 6 → 3, 7 → 7.
Рис.1. Направлений граф алгоритму ШПФ за основою два з часовимпрорідженням для N=32 (а) та його базові операції:проста (б); поворот вектора (в).
Аналіз та розробка блок-схеми виконання заданої функції обробки сигналів та зображень.
Алгоритм базової операції ШПФ за основою 2 і проріджування за частотою можна представити у вигляді
А'1 = А1 + A2 W1,
A'2 = A1 - A2 W1,
де A'1, A'2 - результати базової операції; А1, А2 - вхідні відліки; W1 - комплексний коефіцієнт; j- уявна одиниця, верхній знак перед j відповідає прямому, нижній - оберненому ШПФ.
ReA'1 = ReA1 + Re(A2W1) = ReA1 + ReA2ReW1 – ImA2ImW1 ,
ІмA'1 = j( ImA1 + ReA2ImW1+ImA2ReW1),
ReA'2 = ReA1 - ReA2ReW1 + ImA2ImW1,
ІмA'2 = j( ImA1 - ReA2ImW1-ImA2ReW1),
Для виконання базової операції вимагається виконати 8 операції множення і 8 додавання.
Рис 5. «Метелик» алгоритму ШПФ з прорідженням по часу
Рис 6. Блок-схема 32-точкового перетворення за основою 2
3.Розрахунковий розділ
Частота роботи процесора: , звідси цикл виконання команди: .
base – основа базової операції «метелик»;
N – кількість точок вхідного перетворення;
base=2;
N=32;
– кількість етапів перетворення;
– кількість базових операцій «метелик» на одному етапі;
– кількість базових операцій у всьому перетворенні;
Для виконання базової операції «метелик» необхідно:
12 операцій множення;
22 операцій додавання;
14 операцій читання з пам`яті:
- 4*2=8 (для читання дійсної та уявної частини вхідних відліків);
- 3*2=6 (для читання дійсної та уявної частини комплексних коефіцієнтів);
8 операцій запису:
- 4*2=8 (для запису дійсної та уявної частини вхідних відліків);
В результаті на одну базову операцію припадає 56 операцій: Nна 1 мет=56 (оп)
Тривалість виконання обчислення ШПФ:
Тривалість надходження даних у процесор для обробки:
Тнадх=80нс – такт надходження даних;
Тривалість надходження даних у процесор та тривалість обчислення ШПФ:
Ця величина менша за заданий час обробки: , тобто для виконання обчислення достатньо одного процесора.
Процесор TMS320С25 має внутрішнє 1056-слівне ОЗП подвійного доступу (ДОЗП). ДОЗП розділено на три независимі вибираних блоки пам'яті: 512-слів даних або програм B0, 512-слів даних B1 і 32-слова даних B2.
Блоки B1 і B2 завжди конфігуровані в пам'ять даних; а блок B0 може бути програмно конфігурований як в пам'ять даних, так і в програм. ДОЗУ може бути конфігуровано одним з двох способів:
- все 1056 слів конфігуровано в пам'ять даних;
Для розв`язання поставленої задачі необхідно 32×2×2=128 слів по 16 розрядів. 128х16=27х16. Бо треба зберігати як вхідну послідовність так і вихідну Тобто внутрішньої ОЗП цілком вистачає.
Для зберігання повертаючих множників необхідно ПЗП об`ємом: 160х16,
оскільки на 1 операцію метелик необхідно 1 повертаючий множник, який містить дійсну та уявну частину, всього є 80 базових операцій, розрядність операндів є 16. Тому 1*2*80=160.
Окремо використовуємо завантажувальну пам`ять, де буде зберігатися лістінг програми.
Рис 7. Ділянка пам`яті внутрішньої ОЗП, що приймає участь в обробці
4. Розробка функціональної схеми
4.1. Вибір мікропроцесора
Згідно варіанту завдання було вибрано процесор TMS320С25, тактова частота роботи якого – 40МГц і відповідна тривалість такту – 25нс. На вхід сигнального мікропроцесора надходять такі сигнали:
– сигнали підключення зовнішнього сигналу синхронізації;
– глобальний сигнал аппаратного скиду;
– сигнал зовнішнього маскованого переривання;
- вибір режиму роботи мікропроцесор/мікрокомп'ютер;
Вихідними та двонапрямленими сигналами по відношенню до мікропроцесора є:
– сигнал вибору кристалу мікросхеми завантажувальної пам`яті і памяті програм;
A[15:0] – шина адреси;
D[15:0] – шина даних;
– строб читання даних з зовнішнього пристрою у мікропроцесор;
– строб запису даних у зовнішній пристрій з мікропроцесора;
– сигнали вибору кристалу зовнішнього ПЗП та зовнішнього ОЗП;
- вхід синхросигналу прийому по послідовному порту;
- вхід даних послідовного порту;
- вивід старт-імпульсу прийому по послідовного порту;
- вивід синхросигналу передачі по послідовному порту;
- вивід даних послідовного порту;
- вивід старт-імпульсу передачі по послідовного порту;
Інші сигнали або не задіяні, або їх використання не розглядається у данному курсовому проекті. Наприклад, виведення оброблених даних на зовні з мікропроцесора є передбаченим каналами прямого доступу до пам`яті DMA і є відповідний фонд часу для здійснення цієї операції.
4.2. Пам’ять завантаження
Процесор TMS320С25 містить 2К х 16-розрядне внутрішнє, програмоване ПЗП (лише для читання).
Це пам’ять типу EPROM, тобто стирання старої інформації та запис нової є можливим, але лише в результаті спеціального процесу, для здійснення якого запам`ятовуючий пристрій виводиться з робочого режиму (читання даних) та проводиться репрограмування (стирання відбувається за допомогою ультрафіолетових променів).
Ця пам'ять використовується в основному для зберігання програми початкового завантаження (boot loader) яка забезпечує декілька різних варіантів закачування призначеного для користувача програмного коду у велике внутрішнє ОЗП. Якщо при скиданні на вході МС / MP був встановлений низький рівень (режим мікрокомпютер), то процесор почне виконувати програмний код, що міститься у внутрішньому ПЗП. Як тільки програма користувача буде завантажена у внутрішнє ОЗП, внутрішнє ПЗП може бути видалене з простору пам'яті програм шляхом програмної установки біта МС / MP в одиницю (регістр PMST). Якщо при скиданні на вході МС / MP встановити високий рівень (режим мікропроцесор), виконуватиметься програма, розташована у зовнішній пам'яті. Відзначимо, що зміна сигналу на вході МС / MP актуально лише під час скидання, а надалі не робить жодного впливу на відповідний біт.
В даному проекті цей блок пам`яті використовується для зберігання програми обчислення алгоритму ШПФ, тому на вході МС / MP має бути встановлений низький рівень тоді внутрішнє ПЗП буде доступним (режим мікрокомпютера).
4.3. Зовнішнє ПЗП
Запам`ятовуючий пристрій типу ROM (призначена тільки для читання) зберігає інформацію, що ніколи не змінюється. Інформація записується у нього при виготовленні на промисловому підприємстві з допомогою шаблона (масок) на завершальному етапі технологічного процесу.
В даному курсовому проекті пам’ять цього типу використовується для зберігання повертаючих множників, її розмір обґрунтований у вищенаведеному розділі і складає 160×16 біт .
4.4. Внутрішнє ОЗП
Процесор TMS320С25 має внутрішнє 1056-слівне ОЗП(DARAM) подвійного доступу (ПОЗП). ПОЗУ розділено на три незалежні вибірні блоки пам'яті: 512-слів даних або програм B0, 512-слів даних B1 і 32-слова даних B2.
Блоки B1 і B2 завжди конфігуровані в пам'ять даних; а блок B0 може бути
програмно конфігурований як в пам'ять даних, так і в програм. ПОЗП може бути
конфігуровано одним з двох способів:
всі 1056 слів конфігуровано в пам'ять даних;
544 слова конфігуровані в пам'ять даних і 512 слова конфігуровані в
пам'ять програм.
ПОЗП здатне реально збільшити швидкість роботи процесора. Завдяки
роздільним шинам адреси читання і адреси запису і роздільним шинам даних для читання і для запису, TMS320С25 здатний прочитувати з, і писати в ПОЗП в одному і тому же машинному циклі. Необхідно відзначити, що процесор працює в чотирьох рівневому конвеєрі. При цьому читання дані відбувається в третій, а запис даних в четвертій стадії конвеєра. Тому друга інструкція читання даних виконується одночасно з першою інструкцією запису даних.
В даному проекті цей блок пам`яті сконфігурований як 1056 слів памяті даних в яких містяться вхідна 32-точкова послідовність і результат обчисленого ШПФ.
Процесор TMS320С25 містить 9K × 16-бітний внутрішній оперативний пристрій одинарного доступу(SARAM), що запам'ятовує (ОЗП). Вибірка програмної коди з області зовнішньої пам'яті вимагає в кращому разі одного додаткового машинного циклу. Замість цього код може бути завантажений у велике внутрішнє ОЗП і потім виконаний на повній швидкості.
ОЗУ може бути програмно конфігуроване одним з трьох способів:
все ОЗУ конфігуроване в пам'ять даних;
все ОЗУ конфігуроване в пам'ять програм;
ОЗУ конфігуроване одночасно в пам'ять даних і в пам'ять програм.
ОЗУ розбите на блоки: чотири по 2K-слів і один 1К-слів. ЦПУ підтримує паралельний доступ до цих блоків ОЗУ. Якщо інструкція читання і запису звертається одночасно до різних блоків ОЗУ, логіка доступу розподіляє запити так щоб забезпечити обмін протягом одного машинного циклу. В разі одночасного звернення в один і той же блок потрібний додатковий машинний цикл.
В даному проекті цей все ОЗУ сконфігуроване в пам'ять програм в яку завантажується програма обробки з ПЗП початкового завантаження.
Рис 8. Карта розподілу пам'ять ТMS320c50
Розробка структурної схеми пристрою
Для побудови структурної схеми пристрою необхідно проаналізувати стадії проходження сигналу: від вхідної послідовності до кінцевого результату. На першому етапі вже шістнадцять бітове значення ми маємо зберегти в пам’яті для подальшої обробки. На другому етапі, коли всі 128 числа буде записано - керування отримує процесор, який виконує ДКП та видає результат, також необхідно врахувати, що при обчисленні ДКП необхідно значення вагових коефіцієнтів. Для зменшення обрахунків, а відповідно і часу загального обрахунку процесором, значення вагових коефіцієнтів, вже попередньо-обраховані, будуть знаходитись у постійному запам’ятовуючому пристрої.
Отже проаналізувавши всі етапи ми можемо виділити наступні структурні одиниці: пристрій керування(ПК) для формування керуючих сигналів та адреси комірки пам’яті в яку необхідно записати число, оперативний запам’ятовуючий пристрій(RAM), постійний запам’ятовуючий пристрій(ROM), процесор(CPU), схема початкового встановлення пристрою(R) та схема синхронізації(S). Отриману схему зображено на рис. 6.
Рис. 6 – структурна схема пристрою
Розробка пристрою керування
Пристрій керування в нашому проекті має виконувати наступні функції:
формувати адресу комірки пам’яті, в яку необхідно записати число;
формувати сигнал завершення запису до пам’яті;
Розглянемо реалізацію кожної функції окремо.
В пристрою керування використовується 3 синхронних лічильника, включені каскадно. На вхід (+1) першого лічильника подаються тактові імпульси (SYN). Лічильники дораховують до 128і скидаються в «0». Формується сигнал , який повідомляє процесор про завершення передачі даних в пам’ять.
На виході лічильників використовуються 3 буфери, які відділяють шину адресу і даних процесора від вхідних даних і сформованих адрес лічильником.
Опис роботи функціональної схеми
Робота схеми починається після того, як сигнал скидання переходить в стан логічного „0”. Зовні подаються сигнали стробу(STRB = «1»), запису даних(WR = «1») і самі дані(DATA). Буфери готові до передачі даних і адрес до пам’яті. Коли лічильник дорахує до 4096 він сформує сигнал завершення передачі даних і скине лічильники в «0». Буфери по сигналу стробу відєднаються від шини даних і адреси.
Для вибірки потрібної пам’яті (ПЗП чи ОЗУ) використовується дешифратор адреси (DC), який керується сигналом A21(див табл. 2).
Табл. 2
А21
Пам’ять
0
ПЗП
1
ОЗП(2)
Процесор отримавши сигнал завершення передачі почне зчитувати дані з ОЗУ(1) і виконує Дискретне косинусне перетворення, причому записуючи проміжні дані в ОЗУ(2). Після завершення перетворення процесор формує вихіднй сигнал, який оповіщає зовнішній пристрій про початок передачі нових пакетів даних. Після цього починається новий цикл обробки сигналу.
5. Розробка програми виконання алгоритму ШПФ
Структуру програми, що виконує обчислення за алгоритмом ШПФ можна уявити наступним чином:
Рис 9. Узагальнена блок-схема алгоритму
Кожен з трьох циклів призначений для правильного визначення номеру відліку в конкретний момент обчислення. Перший цикл визначає номер ярусу, другий – номер базової операції у ярусі, третій – номер відліку у базовій операції.
Вводиться масив, що зберігає відліки, в програмі названий matrix, його номер відповідно – N (кількість точок перетворення). Кожен елемент массиву – комплексне число. Інший массив W призначений для зберігання повертаючи множників. На кожну базову операцію припадає 1 повертаючий множник.
Текст програми, написаної на мові С, поданий нижче.
#include "stdafx.h"
#include "Lab2_FFT.h"
#include "Lab2_FFTDlg.h"
#include <math.h>
#include <string.h>
struct my_W {
double ReW;
double ImW;
};
struct my_x {
double Rex;
double Imx;
};
struct my_X {
double ReX;
double ImX;
};
// CLab2_FFTDlg dialog
CLab2_FFTDlg::CLab2_FFTDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLab2_FFTDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLab2_FFTDlg)
m_met = 0;
m_Time_FFT = 0;
m_N = 32;
} struct my_W W[32];
struct my_x x[32];
struct my_x save_start_x[32];
CTime Timers = CTime::GetCurrentTime();
int sec = Timers.GetSecond();
const double pi=3.14159;
for(int i=0;i<m_N/2; i++)
{ W[i].ReW = cos(2*pi*i/m_N);
W[i].ImW = -sin(2*pi*i/m_N);
}
for(int n=0;n<m_N; n++)
{
x[n].Rex = 0;
for(int k=0;k<=(m_N/2-1);k++)
{
x[n].Rex += sin(2*pi*n*k/m_N);
}
x[n].Rex = x[n].Rex /m_N*2;
save_start_x[n].Rex = x[n].Rex; // save start data for output at the end of the program
x[n].Imx = 0;
save_start_x[n].Imx = x[n].Imx; // save start data for output at the end of the program
}
int st=0,f;
f=m_N;
do { f/=2; st++;} // kilkist vukon obch na jarusah
while (f!=2);
int met=0;
for(int steps=st;steps>=st-5;steps--)
{
if (steps==st)