Міністерство освіти і науки України
Національний університет «Львівська політехніка»
ІКТА
Кафедра ЕОМ
Курсовий проект
з дисципліни
«Методи, алгоритми та засоби цифрової обробки сигналів та зображень»
на тему:
«Розробка процессора ШПФ»
Завдання
Основне завдання (Варіант №145)
Розробити процесор ШПФ з такими вхідними даними:
Тип процесора
TMS320С6720
Кількість точок
512
Основа ШПФ
2
Прорідження
часове
Розрядність вхідних даних
12(6(Re)+6(Im))
Такт поступлення вхідних даних
40 нс
Час обробки
2.0 мс
Додаткові завдання
Розробити алгоритм обробки зображення:
Заданий алгоритм
збільшення різкості зображення(????????????)
Порівняння характеристик процесорів:
Перший процесор
процесор заданий на курсову роботу
Другий процесор
процесор сімейства intel
Харектеристика для порівняння
система команд
Анотація
В даному курсовому проекті розглянуто спосіб реалізації алгоритму ШПФ за основою 2 для сигнального процессора TMS320С6720 для 512-розрядних вхідних даних з часовим прорідженням, детально описано механізми обчислення швидкого перетворення Фур`є за заданною основою, властивості та основні характеристики процесора, на якому планується реалізація, підраховано часові ресурси для виконання обчислення, створена функціональна схема системи та написана програма, що реалізує вказаний алгоритм ШПФ на заданому процесорі.
Зміст
Вступ
5
1. Теоретичний розділ
6
1.1.Характеристики сигнального процесора TMS320С6720
6
1.2 Опис ШПФ
12
2. Аналіз блок-схеми виконання заданої функції обробки сигналів та зображень на заданому типі процесора
16
3. Розрахунковий розділ
19
4. Розробка функціональної схеми
22
5. Розробка програми виконання заданої функції
25
6.Алгоритм покращення різкості зображення(????????????)
29
7.Порівняння системи команд TMS320С6720 і процесорів intel
33
Висновки
36
Література
37
Вступ
Набір алгоритмів, званих алгоритмами швидкого перетворення Фурьє (ШПФ), включають різноманітні методи зменшення часу обчислення дискретного перетворення Фурьє (ДПФ). Оскільки обчислення ДПФ є основною операцією в більшості задач спектрального аналізу, то використовування ШПФ в деяких що зустрічаються на практиці випадках, дозволяє прискорити обчислення ДПФ в 100 і більш раз в порівнянні з методом прямого обчислення ДПФ, має надзвичайно важливе значення і повинне розглядатися як невід'ємна частина застосування методів цифрової обробки сигналів для спектрального аналізу.
Аналіз Фур'є закладає основи багатьох методів, що застосовуються в області цифрової обробки сигналів (ЦОС). По суті справи, перетворення Фур'є (фактично існує кілька варіантів таких перетворень) дозволяє співставити сигналу, заданому в часовій області, його еквівалентне представлення в частотній області, і навпаки, якщо відома частотна характеристика сигналу, то зворотне перетворення Фур'є дозволяє визначити відповідний сигнал у часовій області.
Крім того, ці перетворення корисні при проектуванні фільтрів. Частотна характеристика фільтра може бути отримана за допомогою перетворення Фур'є його імпульсної реакції. І навпаки, якщо визначена частотна характеристика сигналу, то необхідна імпульсна реакція може бути отримана за допомогою зворотнього перетворення Фур'є над його частотною характеристикою. Цифрові фільтри можуть бути створені на основі їхньої імпульсної реакції, оскільки коефіцієнти фільтра з кінцевою імпульсною характеристикою (КІХ) ідентичні дискретній імпульсній реакції фільтра.
1.Теоретичний розділ
1.1. Характеристики сигнального процесора TMS320С40
1.1.1.Властивості TMS320С6720.
Існують наступні різновиди цього прцесора :
'320C40-60:
33-нс цикл виконання інструкції,
330 MOPS, 60 MFLOPS,
30 MIPS, 384M Bytes/s
'320C40-50:
40-нс цикл виконання інструкції
'320C40-40:
50-нс цикл виконання інструкції
Шість комунікаційних портів
Шестиканальний сопроцесор прямого доступу до пам'ять(DMA)
Одноциклове конвертування чисел з плаваючою комою до стандарту IEEE-754
Одноциклове обчислення :
Програмна сумісність з TMS320C3x
Одноциклове множення у форматі з 40-бітною плаваючою комою і 32-бітним типом з фіксованою комою
Двадцять основних 40-бітних регістрів, вісім допоміжних регістрів, 14 керуючих регістрів а також два таймери
Наявність системи граничного сканування IEEE 1149.1 (JTAG)
0.72 µм CMOS технологічний процес виготовлення кристалу
Програмоване скидання через комунікаційний порт
NMI – немасковані переривання
Кеш програм на кристалі і двоканальна одноциклова оперативна пам'ять для збільшення швидкості роботи системи
'512-байтовий кеш інструкцій
'8 кбайт оперативної пам’яті на кристалі
'Підтримка завантаження 8-, 16-, або 32-бітних програм з пам'ять обо через комунікаційні порти
IDLE2 – програмований таймер зупинки роботи системи
5В живлення
1.1.2.Блок-схема процесора
Рис.1.1: блок – схема процесора TMS320C40
Рис.1.1: блок – схема процесора TMS320C40 (продовження)
1.1.4.Опис виводів
В табл.1.1. використовуються такі позначення для типу виводів:
І -- вхід;
О -- вихід;
Z -- електроживлення;
Таблиця 1.1 Опис виводів
НАЗВА
РОЗРЯДНІСТЬ
ТИП
ОПИС
ГЛОБАЛЬНИЙ ЗОВНІШНІЙ ШИННИЙ ІНТЕРФЕЙС (80 ВИВОДІВ)
D31±D0
32
I / O / Z
Шина даних
DE
1
I
Вмикання шини даних
A30±A0
31
O / Z
Шина адрес
AE
1
I
Вмикання шини адрес
STAT3 ± STAT0
4
O
Сигнал статусу шини
LOCK
1
O
Вимкнення глобальної зовнішньої шини
STRB0
1
O / Z
Звертання по лінії вибірки 0
R/W0
1
O / Z
Читання/запис для LSTRB0
PAGE0
1
O / Z
Вибір сторінки для LSTRB0
RDY0
1
I
Готовність LSTRB0
CE0
1
I
Вмикання LSTRB0, LPAGE0 і LR/W0
STRB1
1
O / Z
Звертання по лінії вибірки 1
R/W1
1
O / Z
Читання/запис для LSTRB1
PAGE1
1
O / Z
Вибір сторінки для LSTRB1
RDY1
1
I
Готовність LSTRB1
CE1
1
I
Вмикання LSTRB1, LPAGE1 і LR/W1
ЛОКАЛЬНИЙ ЗОВНІШНІЙ ШИННИЙ ІНТЕРФЕЙС (80 ВИВОДІВ)
LD31± LD0
32
I / O / Z
Шина даних
LDE
1
I
Вмикання шини даних
LA30± LA0
31
O / Z
Шина адрес
LAE
1
I
Вмикання шини адрес
LSTAT3 ± LSTAT0
4
O
Сигнал статусу шини
LLOCK
1
O
Вимкнення локальної зовнішньої шини
LSTRB0
1
O / Z
Звертання по лінії вибірки 0
LR / W0
1
O / Z
Читання/запис для LSTRB0
LPAGE0
1
O / Z
Вибір сторінки для LSTRB0
LRDY0
1
I
Готовність LSTRB0
LCE0
1
I
Вмикання LSTRB0, LPAGE0 і LR/W0
LSTRB1
1
O / Z
Звертання по лінії вибірки 1
LR / W1
1
O / Z
Читання/запис для LSTRB1
LPAGE1
1
O / Z
Вибір сторінки для LSTRB1
LRDY1
1
I
Готовність LSTRB1
LCE1
1
I
Вмикання LSTRB1, LPAGE1 і LR/W1
ІНТЕРФЕЙС КОМУНІКАЦІЙНОГО ПОРТУ 0 (12 ВИВОДІВ)
C0D7 ± C0D0
8
I / O
Шина даних
CREQ0
1
I / O
Сигнал запиту
CACK0
1
I / O
Сигнл дозволу виконання запиту
CSTRB0
1
I / O
Сигнал вибору комунікаційного порту 0
CRDY0
1
I / O
Сигнал готовності
ІНТЕРФЕЙС КОМУНІКАЦІЙНОГО ПОРТУ 1 (12 ВИВОДІВ)
C1D7 ± C1D0
8
I / O
Шина даних
CREQ1
1
I / O
Сигнал запиту
CACK1
1
I / O
Сигнл дозволу виконання запиту
CSTRB1
1
I / O
Сигнал вибору комунікаційного порту 1
CRDY1
1
I / O
Сигнал готовності
ІНТЕРФЕЙС КОМУНІКАЦІЙНОГО ПОРТУ 2 (12 ВИВОДІВ)
C2D7 ± C2D0
8
I / O
Шина даних
CREQ2
1
I / O
Сигнал запиту
CACK2
1
I / O
Сигнл дозволу виконання запиту
CSTRB2
1
I / O
Сигнал вибору комунікаційного порту 2
CRDY2
1
I / O
Сигнал готовності
ІНТЕРФЕЙС КОМУНІКАЦІЙНОГО ПОРТУ 3 ( 12 ВИВОДІВ )
C3D7 ± C3D0
8
I / O
Шина даних
CREQ3
1
I / O
Сигнал запиту
CACK3
1
I / O
Сигнл дозволу виконання запиту
CSTRB3
1
I / O
Сигнал вибору комунікаційного порту 3
CRDY3
1
I / O
Сигнал готовності
ІНТЕРФЕЙС КОМУНІКАЦІЙНОГО ПОРТУ 4 (12 ВИВОДІВ)
C4D7± C4D0
8
I / O
Шина даних
CREQ4
1
I / O
Сигнал запиту
CACK4
1
I / O
Сигнл дозволу виконання запиту
CSTRB4
1
I / O
Сигнал вибору комунікаційного порту 4
CRDY4
1
I / O
Сигнал готовності
ІНТЕРФЕЙС КОМУНІКАЦІЙНОГО ПОРТУ 5 (12 ВИВОДІВ)
C5D7± C5D0
8
I / O
Шина даних
CREQ5
1
I / O
Сигнал запиту
CACK5
1
I / O
Сигнл дозволу виконання запиту
CSTRB5
1
I / O
Сигнал вибору комунікаційного порту 5
CRDY5
1
I / O
Сигнал готовності
ПЕРЕРИВАННЯ,I/O ПРАПОРЦІ,СКИД, ТАЙМЕР (12 ВИВОДІВ)
IIOF3± IIOF0
4
I / O
Периривання і I / O flags
NMI
1
I
Лінія немаскованого переривання. NMI є читливий по спадаючому фронту сигналу.
IACK
1
O
Дозвіл переривань
RESET
1
I
Сигнал скиду
RESETLOC1±
RESETLOC0
2
I
Тип вектора скиду
ROMEN
1
I
Дозвіл роботи з ПЗП на кристалі
TCLK0
1
I / O
Таймер 0
TCLK1
1
I / O
Таймер 1
СИНХРОНІЗАЦІЯ
(4 ВИВОДІВ)
X1
1
O
Для під’єднання резонатора
X2/ CLKIN
1
I
Для під’єднання резонатора/осицилятора
H1
1
O
H1 синхронізація
H3
1
O
H3 синхронізація
ЖИВЛЕННЯ
(70 ВИВОДІВ)
CVSS
15
I
Земля
DVSS
15
I
Земля
IVSS
6
I
Земля
DVDD
13
I
Живлення
GADVDD
3
I
Живлення
GDDVDD
3
I
Живлення
LADVDD
3
I
Живлення
LDDVDD
3
I
Живлення
SUBS
1
I
Підкладка (заземлюється)
VDDL
4
I
Живлення
VSSL
4
I
Земля
ВІДЛАГОДЖЕННЯ
(7 ВИВОДІВ)
TCK
1
I
Лінія синхронізації для IEEE 1149.1
TDO
1
O / Z
Лінія вихідних даних для IEEE 1149.1
TDI
1
I
Лінія вхідних даних для IEEE 1149.1
TMS
1
I
Лінія встановлення тестування за IEEE 1149.1
TRST
1
I
Лінія скиду для IEEE 1149.1
EMU0
1
I / O
Лінія відлагодження 0
EMU1
1
I / O
Лінія відлагодження 1
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) розбивають на два співвідношення для зазначених вище номерів і одержують основні формули (базові співвідношення) перетворення Фур'є у вигляді
Базові співвідношення вже можна назвати швидким перетворенням Фур'є (ШПФ), тому що число операцій зменшилося. Число множень матеріальних відліків сигналу на комплексне ядро дорівнює . До цього потрібно додати множень комплексних чисел. Число додавань дорівнює
Процес розбиття за схемою базових співвідношень можна продовжувати до тих пір, доки не прийдемо до перетворень Фур'є одиничних відліків (що збігаються із самими відліками). Необхідне число операцій при цьому буде значно менше. У такому вигляді це ШПФ називають ШПФ із проріджуванням за часом.
1.2.2.Алгоритм перетворення
Алгоритм ШПФ можна скласти, спираючи на граф ШПФ при N=8. Зауважимо, що ДПФ з однаковим числом точок на графі розташовані у вигляді стовпців. Пронумеруємо ДПФ у кожнім стовпці цифрами від 0 до 7 (від 0 до N-1 у загальному випадку) зверху вниз. Вихідні значення ДПФ - комплексні числа, які можна зберігати у деякому масиві. Перехід відповідно до базових співвідношень від ДПФ попереднього стовпця до ДПФ із подвоєним числом точок наступного стовпця назвемо кроком перетворення. З огляду на послідовний характер кроків перетворення, вихідні значення ДПФ кожного стовпця можна зберігати в тому самому масиві (це повинен бути масив комплексних чисел). Остаточно масив буде містити результуючі значення ШПФ.
Графи базових співвідношень на кожнім кроці візуально групуються. Групи складаються з окремих графів чи декількох графів, що перетинаються між собою. У прикладі на першому кроці графа є 4 групи, у другому – 2 і на третьому - 1.
Введемо позначення:
- число відліків сигналу, що обробляється, чи число точок перетворення;
v - число кроків перетворення;
step - номер кроку, step = 0,..., v - 1;
group - номер групи графів, group = 0, ..., (group_max - 1), де group_max - число груп (залежить від номера кроку);
іnput - номер ДПФ, вихід якого з'єднаний з верхнім входом графа базового співвідношення;
іnput +add - номер ДПФ, вихід якого з'єднаний з нижнім входом цього графа;
add - різниця відповідних номерів;
pow - ступінь множника повороту (у тексті pow відповідає показнику k в ) .
Змінні зв'язані між собою в такий спосіб:
Ці співвідношення отримані при аналізі графа ШПФ.
Для приведеного графа побудована таблиця, у якій для кожного кроку перетворення занесені індекси і їхні межі зміни, що використані в циклах програми. Нижче приведений алгоритм програми. Його особливість - результат виходить у масиві вхідних даних. Алгоритм побудований для випадку комплексних вхідних даних, як більш загальний випадок.
1.2.3.Алгоритм ШПФ із проріджуванням за часом
Вхідні дані в алгоритмі:
Х(k), k = 0,..., N -1 - масив комплексних вхідних і вихідних даних.
Для k = 0,..., N -1 встановити:
Встановити:
1. Перестановка елементів масиву Х(k).
2. Якщо step = v, перейти до кроку 9.
3. group←0/
4. Якщо group = group_max: step←step+1, add←add * 2,
group_max←group_max/2, перейти до кроку 2.
5. іnput ← group 2step +1.
6. Якщо іnput = group 2step+1+2step: group←group+1, перейти до кроку 4.
7. [Базова операція]
pow ←group_max *<input>2step+1,
t← X(іnput + add) * W(pow +1),
X(іnput +add) ←X(іnput) - t,
X(іnput) ←X(іnput) + t.
8. input←input+1, перейти до кроку 6.
9. Завершення.
1.2.4.Алгоритм двійково-інверсної перестановки
1. k←0.
2. Якщо k = N, то виконання алгоритму припиняється.
3. n← m← 0 (n←0,m←0 ).
4. Якщо m = v : перейти до кроку 7.
5. Якщо біт з номером m (0-ої біт - наймолодший) числа k дорівнює 1,
то n←n + 2v - m - 1.
6. m←m+1, перейти до кроку 4.
7. Якщо k < n : X(k)↔ X(n).
8. k←k+1, перейти до кроку 2.
2. Аналіз (розробка) блок-схеми виконання заданої функції
Оскільки граф 512-точкового ШПФ намалювати важко, то його зручніше представити відповідною блок-схемою. Така блок-схема , що наведена на рис.2.2 , побудована на базі метелика ШПФ , суть перетворення якого детально розкрито в теоретичному розділі даної курсової записки .
Отож метелик перетворення що зображується наступним чином :
буде представлений одним блоком що має такий вигляд :
В нас ШПФ відбувається за 9 кроків згідно формули 4к = N, де к- кількість кроків ШПФ, а N- розрядність ШПФ , що рівна 512. Відповідно в кожному наступному ярусі всі метелики групуються у блоки . Загальна клькість метеликів у кожному з цих блоків удвічі перевищує їх кількість у попередньому ярусі .
Наприкладу , якщо у другому ярусі маємо блоки що їх на рис.2.2 зображено наступним способом :
то він (цей блок) буде містити в собі два метелики , що у відповідності до введених умовних позначень можна відобразити так :
У кожному наступному ярусі об’єднання метеликів буде відбуватися аналогічним чином , а в останньому ярусі всі метелики будуть об’єднані в один блок який буде містити всі 256 метеликів .
Так як згідно завдання потрібно виконати ШПФ з проріджуванням у часі, то ми на вході метелика ставимо схему інверсії , яка з прямого коду нам дає інверсний код слідування біт у адресі. Після використання цієї схеми дані вже можна подати на вхід пертворення.
Як наслідок отримаємо схему виконання алгоритму для швидкого перетворення (тут через неможливість наведення всієї схеми трьома крапками показано аналогічні продовження а трьома крапками в блоці – продовження самого блоку):
Рис.2.2. Блок-схема алгоритму 512-точкового перетворення за основою 2
3.Розрахунковий розділ
3.1. Часові розрахунки
Із опису процесора що наведений в теоретичних відомостях даної курсової записки бачимо що існує три різновиди цього процесора з різною тривалістю виконання команди 33 нс , 40 нс і 50 нс . Для реалізації виберемо найшвидший , одже :
При розрахунках будуть використовуватись відомі співідношення а саме :
кількість етапів перетворення :
кількість базових операцій «метелик» на одному етапі :
кількість базових операцій у всьому перетворенні :
У формулах використано позначення : base – основа базової операції «метелик» , N – кількість точок вхідного перетворення . Відповідно варіанту ці величини набудуть наступних значень :
base=2;
N=512;
Тоді , маючи значення величин base і N , можна обчислити значення вищенаведених формул :
Далі потрібно обчислити скільки процесорного часу витрачається на виконання базової операції метелика . Як відомо всі операції можна поділити на дві категорії операції обчислення ( математичні операції ) і операції роботи з пам’ятю . Тому тут потрібно врахувати два аспекти , які випливають з опису процесора : по-перше всі математичні операції включно з множенням виконуються за один командний цикл , по-друге 8 кбайт пам’яті на кристалі цілком достатньо , як це буде показано нижче , для розміщення даних обчислення і їх результатів
Отож для виконання базової операції «метелик» необхідно:
8 операцій множення;
8 операцій додавання;
8 операцій читання з пам`яті:
- 2*2=4 (для читання дійсної та уявної частини вхідних відліків);
- 2*2=4 (для читання дійсної та уявної частини комплексних коефіцієнтів);
4 операцій запису:
- 2*2=4 (для запису дійсної та уявної частини вхідних відліків);
В результаті на одну базову операцію припадає :
Nна 1 мет=28 (оп)
Тому тривалість виконання обчислення ШПФ:
Крім виконання ШПФ іншою складовою затраченого часу є власне поступлення вхідних даних у процесор , які як вже було сказано будуть зберігатися і опрацьовуватись у пам’яті на кристалі . Тривалість надходження даних у процесор для обробки є заданою і становить :
Тнадх=20нс
Тому можна обчислити загальний час поступлення на обробку всього масиву вхідних даних який як відомо має дійсну і комплексну складову :
Тривалість надходження даних у процесор та тривалість обчислення ШПФ:
Ця величина менша за заданий час обробки: , тому для виконання обчислення достатньо одного процесора . Крім того з метою економії буде достатньо взяти найповільніший різновид цього процесора а саме TMS320С6720-40 командний цикл якого триває не 33нс а 50нс . Це знизить швидкодію перетворення у 1,5 раз тобто перетворення триватиме 0,686328мс але це також достатньо .
3.2. Розрахунок використаної пам’яті
Для розв`язання поставленої задачі необхідно по-перше зберігати на кристалі 128 12-ти розрядних дійсних і уявних значень вхідних відліків . Оскільки процесору зручно виконувати операції з 32-бітними (4-х байтними) даними то тоді можна розрахувати пам’ять як :
(128+128)*4=1024(байт)=1(кбайт).
Так як на 1 операцію метелик необхідно 2 повертаючих множника, кожен з яких містить дійсну та уявну частину, всього є 448 базових операцій, тому 2*2*448=1792 . Отож для зберігання повертаючих множників необхідно ПЗП об`ємом: 1792*4=7168(байт)=7(кбайт).
Після вмикання живлення повертаючі множники перепишуться в ОЗП на кристалі , тому остаточний розмір затраченої пам’яті на кристалі становитиме 1024+7168=8192(байт)=8(кбайт) . Внутрішня ОЗП процесора TMS320C40-40 якраз і є 8кбайт .
Окремо використовуємо завантажувальну пам`ять, де буде зберігатися програма.
Необхідна зовнішня ОЗП розміром 256х32 або 1024х8 для постійного приймання даних, що надходять.
4. Розробка функціональної схеми
4.1. Вибір мікропроцесора
Згідно варіанту завдання було вибрано процесор TMS320С6720-40, тактова частота роботи якого – 40МГц і відповідна тривалість такту – 2*25=50нс (два такти – один командний цикл). На вхід сигнального мікропроцесора надходять такі сигнали:
CLKIN – сигнал синхронізації, що надходить з внутрішнього тактового резонатора;
– глобальний сигнал аппаратного скиду;
A[31:0] – шина адреси;
D[47:0] – шина даних;
– строб читання даних з зовнішнього пристрою у мікропроцесор;
– строб запису даних у зовнішній пристрій з мікропроцесора;
Інші сигнали або не задіяні, або їх використання не розглядається у данному курсовому проекті. Наприклад, виведення оброблених даних на зовні з мікропроцесора є передбаченим каналами прямого доступу до пам`яті DMA і є відповідний фонд часу для здійснення цієї операції.
4.2. Пам’ять завантаження
Це пам’ять типу EPROM, тобто стирання старої інформації та запис нової є можливим, але лише в результаті спеціального процесу, для здійснення якого запам`ятовуючий пристрій виводиться з робочого режиму (читання даних) та проводиться репрограмування (стирання відбувається за допомогою ультрафіолет-тових променів).
В даному проекті цей блок пам`яті використовується для зберігання програми обчислення алгоритму ШПФ.
Дана пам’ять призначена для зберігання програми роботи мікропроцесора.
Після ввімкнення живлення чи програмному скиді (встановлення у початковий стан) програма автоматично завантажується до внутрішньої пам’яті. Цей процес називається початковим завантаженням.
TMS320C40 підтримує три режими початкового завантаження: від EPROM, хост процесора та link-портів. У даному випадку використовується EPROM-режим, при цьому використовуються 48-розрядні інструкції та канал DMA для передачі цих інструкцій до внутрішньої пам’яті. При EPROM-режимі ADSP-21060 читає дані з 8-розрядної зовнішньої EPROM.
Режим початкового завантаження вибирається відповідно до сигналів LBOOT, EBOOT, BMS:
EBOOT LBOOT BMS Booting Mode
1 0 як вихідний EPROM-режим
При EPROM-завантаженні (EBOOT=1) сигнал BMS використовується як вихідний і з’єднуючись з ЕВООТ, утворює сигнал вибору кристалу.
Розмір пам`яті умовно беремо 1024х8.
4.3. Зовнішнє ПЗП
Запам`ятовуючий пристрій типу ROM (призначена тільки для читання) зберігає інформацію, що ніколи не змінюється. Інформація записується у нього при виготовленні на промисловому підприємстві з допомогою шаблона (масок) на завершальному етапі технологічного процесу.
В даному курсовому проекті пам’ять цього типу використовується для зберігання повертаючих множників, її розмір складає 1536х16.
4.4. Зовнішнє ОЗП
Запам`ятовуючий пристрій типу SDRAM (Synchronous Dynamic RAM) є швидкодіючою пам`ятю з високою пропускною здатністю. В ній синхросигналу пам’яті тісно пов`язані з тактовою частотою системи, в ній використовується конвеєризація тракта просування інформації, може застосовуватися багатобанкова структура пам`яті.
Вона використовується для зберігання даних, що надходять у систему зовні від давача сигналу. Її розмір 512х16.
Роботою цієї пам`яті керує безпосередньо вузол керування, а не сигнальний процесор, як для вище описаних блоків пам`яті.
Рис.4.1.Часова діаграма запису у зовнішнє ОЗП
4.5. Розробка керуючого пристрою
Призначення даного вузла – арбітраж доступу до зовнішнього ОЗП між обчислювальним процесором та давачем сигналу.
Рис.4.2. Структура обчислювальної системи
5. Розробка програми виконання алгоритму ШПФ
Структуру програми, що виконує обчислення за алгоритмом ШПФ можна уявити наступним чином:
Рис.5.1. блок-схема алгоритму ШПФ
Кожен з трьох циклів призначений для правильного визначення номеру відліку в конкретний момент обчислення. Перший цикл визначає номер ярусу, другий – номер базової операції у ярусі, третій – номер відліку у базовій операції.
Вводиться масив, що зберігає відліки, в програмі названий matrix, його номер відповідно – N (кількість точок перетворення). Кожен елемент массиву – комплексне число. Інший массив W призначений для зберігання повертаючи множників. На кожну базову операцію припадає 3 повертаючих множника (четвертий фактично дорівнює 1), тому його розмір: 4*64*3=768 (4 - кількість ярусів, 64 - кількість базових операцій в ярусі). Елемент цього масиву є так само комплексним числом.
Текст програми, написаної на мові С, поданий нижче
N=128;
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[