Professional Documents
Culture Documents
С.М.Вовк
Дніпропетровськ
2017
2
Лабораторна робота 1
3. Натисніть OK для закриття вікна New Session та повернення до вікна Session List.
4. Вкажіть на нове ім'я сесії (цільової платформи), яке повинне бути виділено
кольоровою смугою, та натисніть кнопку Activate. Примітка: якщо Activate не натиснути, то
знову буде повідомлення про невідповідність сесії.
Після цих дій вікно Session List зачинеться, а завантажувальний файл dotprodc.dxe
автоматично завантажиться до сигнального процесора та буде готовим до запуску з точки
входу в головну функцію main().
5. Прогляньте інформацію у відкритих вікнах, причому:
- вікно Output на сторінці Console вміщує повідомлення про стан сесії налагодження. В
даному випадку VisualDSP++ повідомляє, що завантаження файлу dotprodc.dxe успішно
завершено;
- вікно Disassembly показує асемблерний код програми;
- червоний кружок та жовта стрілка з'явилися в місці старту програми. Червоний кружок
вказує, що точка зупину встановлена на цій інструкції, а жовта стрілка вказує, що
процесор зупинено на цій інструкції. Коли VisualDSP++ завантажує С-програму, він
автоматично встановлює дві точки зупину: одну - на початку і одну - в кінці коду
програми.
6. В меню Settings оберіть Breakpoints для прогляду точок зупину, що встановлені в
програмі. VisualDSP++ відобразить в вікні Breakpoints всі встановлені точки зупину.
Для даного прикладу встановлені наступні точки зупину:
at main + 0x4
at __lib_prog_term
Діалогове вікно Breakpoints дозволяє бачити, додавати та видаляти точки зупину. В
вікні Disassembly та в вікні редактора також можна додати або видалити точки зупину,
вказуючи мишею на відповідний рядок коду.
7. Натисніть OK або Cancel для закриття вікна Breakpoints.
Запуск програми. Для запуску програми dotprodc слід натиснути кнопку Run ( )
або вибрати в меню Debug пункт Run. В цьому випадку VisualDSP++ обчислює добуток та
відображає на сторінці Console у вікні Output наступні результати:
6
Dot product [0] = 13273595
Dot product [1] = –49956078
Dot product [2] = 35872518
6. В меню Tools оберіть Expert Linker, а потім Save, для того щоб зберегти змінений
файл. Потім закрийте вікно Expert Linker.
- Якщо не зберегти файл і потім перебудувати проект, VisualDSP++ побачить, що
був змінений файл і збереже його автоматично.
Перебудова та запуск dot_product_asm. Для запуску dot_product виконайте наступні
дії:
1. Побудуйте проект, виконавши одну з цих дій:
- Натисніть кнопку Build Project на панелі інструментів.
- В меню Project оберіть Build Project.
- В кінці побудови у вікні Output на вкладинці Build відобразиться повідомлення:
“Build completed successfully.”
- VisualDSP++ завантажить програму, запустить main і відобразить вікна Output,
Disassembly і вікно редактора.
2. Натисніть кнопку Run для запуску dot_product_asm.
- Програма обчислює три скалярні добутки і відображає результати у Console вікна
Output. Коли програма зупиняє виконання, повідомлення “Halted” з’являється в
рядку стану (внизу головного вікна VisualDSP++). Результати, показані нижче,
ідентичні результатам одержаним раніше.
Dot product [0] = 13273595
Dot product [1] = –49956078
Dot product [2] = 35872518
- Після введення кожного набору даних, натисніть Add для додавання набору даних
до списку Data sets в лівій частині діалогового вікна.
- Діалогове вікно Plot Configuration повинно зараз нагадати рис. 3.
4. Натисніть OK для того, щоб застосувати зміни і відкрити вікно графіка з цими
наборами даних.
- Вікно графіка зараз відображає два масиви. За замовченням, симулятор ініціалізує
пам’ять нулями, тому набір даних Output відображається як одна горизонтальна
лінія.
Примітка: зміна розмірів вікна графіка змінює масштаб осей x та y.
5. Натисніть правою кнопкою миші на вікні графіка і оберіть Modify Settings. На
сторінці General в групі Options виберіть Legend і натисніть OK для відображення
поля умовних позначень.
11
Запуск програми FIR і перегляд даних. Для запуску програми FIR і перегляду даних
необхідно:
1. Натисніть F5 або натисніть кнопку Run панелі інструментів для того, щоб програма
відпрацювала.
- Коли програма зупиниться, результати FIR фільтра будуть знаходитись у
вихідному масиві. Два набори даних відображені у вікні графіка (рис. 4).
Зараз виконайте наступні кроки для того, щоб подивитись на характеристику FIR фільтра у
частотній області.
1. В меню View оберіть Debug Windows, потім Plot, і потім New для того, щоб відкрити
діалогове вікно Plot Configuration.
2. Задайте графік частотної характеристики фільтра, заповнюючи групи Plot і Data Setting
наступним чином:
1) В групі Plot визначіть такі значення:
- В полі Type виберіть Line Plot зі списку.
- В полі Title наберіть Filter Frequency Response.
2) В групі Data Setting задайте наступні значення:
- В полі Name наберіть h.
- В полі Memory наберіть BLACKFIN Memory.
- В полі Address оберіть h.
- В полі Count наберіть 8.
- В полі Stride – 1.
- В полі Data оберіть short.
3. Натисніть Add для додавання набора даних у поле Data sets.
4. Натисніть OK для того, щоб застосувати зміни і відкрити вікно графіка з цим набором
даних.
5. Натисніть правою кнопкою миші у вікні графіка і оберіть Modify Settings, щоб відкрити
діалогове вікно Plot Settings.
13
6. Натисніть на вкладку Data Processing для відображення сторінки Data Processing.
Заповніть цю сторінку наступним чином:
1) В полі Data Sets оберіть h.
2) В полі Data Process оберіть FFT Magnitude.
3) В полі Sample rate (Hz) наберіть 10000.
4) Натисніть OK для закриття сторінки Data Processing.
- VisualDSP++ виконує швидке перетворення Фур’є (FFT) на вибраному
наборі даних та дозволяє переглянути графік частотної характеристики
фільтра (рис. 6).
Цей графік показує, що низькочастотний FIR фільтр обрізає усі частотні компоненти вище
4000 Гц. Коли застосовується низькочастотний фільтр до вхідного сигналу, то результуючий
сигнал не має виходу вище, ніж 4000 Гц.
Завантаження та профілювання FIR програми. Для завантаження FIR програми
виконайте наступні дії:
1. Закрийте усі відкриті вікна крім вікон Disassembly та Output.
2. З меню File оберіть Load Program або натисніть Load на панелі інструментів.
Відкриється діалогове вікно Open a Processor Program.
3. Оберіть FIR програму для завантаження наступним чином:
1. Відкрийте папку Analog Devices і оберіть:
VisualDSP 4.0\Blackfin\Examples\Tutorial\fir
2. Потім оберіть підпапку Debug.
3. Оберіть FIR.DXE для завантаження програми.
- Якщо VisualDSP++ не відкрив вікно редактора, то натисніть правою
кнопкою миші у вікні Disassembly і оберіть View Source.
Відкриття вікна Profiling. Для відкриття Linear Profiling Results виконайте наступні
дії:
1. З меню Tools оберіть Linear Profiling, а потім New Profile.
Вікно Linear Profiling Results відкривається без будь-яких даних.
2. Натисніть на область заголовка вікна профілювання і потім перетащіть вікно у
верхню частину головного вікна VisualDSP++.
Вікно Linear Profiling Results спочатку порожнє. Linear profiling виконується коли
запускається FIR програма. Після виконання програми і збору даних, це вікно
відображає результати сесії профілювання.
Збір та дослідження лінійного профілювання даних.
1. Натисніть F5 або кнопку Run на панелі інструментів для запуску програми.
- Коли програма зупиниться, результати лінійного профілювання з’являться у
вікні Linear Profiling Results.
2. Дослідження результатів сесії лінійного профілювання.
- Вікно Linear Profiling Results поділено на 2 частини по 3 колонки в кожній.
14
- Ліва частина вікна відображає результати профілювання даних. Можна
побачити проценти від повного використаного часу на виконання функції або
адреси.
- Подвійне натискання на рядку з функцією дозволяє відобразити вихідний файл,
який містить цю функцію. Наприклад, подвійне натискання на функції fir
відображає вихідний асемблеровський файл (fir.asm) в правій частині вікна
(рис. 7).
Практична частина
Завдання 1. В середовищі VisualDSP++ виконати розробку програми, яка виводить
привітальне повідомлення "Hello World" з указівкою поточного часу та прізвища розробника
цієї програми.
Завдання 2. В середовищі VisualDSP++ написати програму на мові С для обчислення
суми 1000 дійсних чисел, які йдуть від 0 з кроком 0.01, виконати її на базі процесора x86 та
на базі ADSP-BF533 EZ-KIT Lite і порівняти швидкості обчислень. Для порівняння
швидкості рекомендується обчислення виконати 1000 разів шляхом застосування
зовнішнього циклу.
Завдання 3. В середовищі VisualDSP++ написати програму на мові С, яка виконує
чотири основні арифметичні операції (додавання, віднімання, множення та ділення) над
операндами типу float. Виконати дослідження алгоритмів роботи підпрограм дійсної
арифметики сигнального процесора ADSP-BF533, поданих відповідними кодами на мові
Assembler, а саме: __float32_add, __float32_sub, __float32_mul, __float32_div.
16
Контрольні питання
1. Як відкрити та побудувати проект?
2. Як встановити сесію налагодження і змінити цільову платформу?
3. Скільки точок зупину встановлюється автоматично під час завантаження С-програми?
4. Як проглянути встановлені в програмі точки зупину, додати або видалити деякі з них?
5. Як виконати запуск програми на виконання?
6. Де відображаються результат компіляції, інформація про помилки та результати роботи
програми?
7. Як створити новий проект?
8. Як додати існуючі файли до проекту?
9. Які опції проекту дозволяє визначити діалогове вікно Project Options?
10. Для чого потрібен LDF-файл?
11. Як створити новий LDF-файл?
12. Як підключити нову секцію до проекту?
13. Як виконати завантаження програми?
14. Які поля необхідно заповнити при додаванні нового набору даних для побудови графіка?
15. Як відобразити графік даних в часовій області?
16. Як відобразити графік даних в частотній області?
17. Як відобразити частотну характеристику фільтра?
18. Як збільшити певну область на графіку або переглянути певне значення в поточному
наборі на графіку?
19. Для чого необхідно лінійне профілювання даних?
20. Як відкрити вікно результатів лінійного профілювання?
21. Що відображає кожний із стовбців вікна результатів лінійного профілювання?
Завантаження проекту.
Відкрийте проект VisualDSP++. Для цього:
1. Запустіть VisualDSP++ та підключіть сесію ADSP-BF533 simulator.
2. Відкрийте проект PgoExample.dpj.
- Цей проект містить С файл PgoExample.c. Під час виконання програми дані
читаються з адреси та підраховуються кількості парних та непарних значень.
Цей підрахунок здійснюється в інструкції if...then...else. Якщо більшість
прочитаних значень є непарними, то програма буде витрачати більше часу в
переході then... Якщо більшість значень парна, то програма буде витрачати
більше часу в переході else... Звичайно, компілятор не має інформації, який
перехід буде виконуватись частіше. Але використовуючи PGO, компілятор
може визначати, який перехід виконується частіше, і оптимізувати наступну
побудову.
Примітка: цей проект також містить сценарії Visual Basic, які демонструють як
використовувати VisualDSP++ Automation API, щоб виконати PGO.
- Три файли даних використовуються як вихідні для С програми. Ці текстові
файли містять списки значень.
Dataset_1.dat має 128 парних значень (50%) та 128 непарних значень
(50%).
Dataset_2.dat має 192 парних значень (75%) та 64 непарних значень
(25%).
Dataset_3.dat має 256 парних значень (100%) та 0 непарних значень
(0%).
18
- Для перегляду цих файлів, виберіть команду Open з меню File в VisualDSP++.
Два можливих значення в цих трьох файлах або 0x01, або 0x02. Кожний файл
містить 256 значень.
- Припускається, що ця програма буде використовуватись у реальних
обчисленнях і що можна очікувати подібний розподіл значень, як реальні вхідні
дані.
- Розглядаючи С код і потенціальні входи, легко можна помітити, що виконувана
програма буде витрачати більше часу в переході else..., ніж в переході then...Без
використання PGO компілятор не може зробити той самий висновок. За
замовченням, буде очікуватись, що then... перехід виконується частіше і код
буде скомпільований без оптимізації часу виконання.
3. Замініть значення за замовченням поля Data set name на ім’я, яке більше описує.
Оскільки перший файл даних містить рівну кількість парних та непарних значень, то
задайте ім’я типу 50% Even – 50% Odd.
4. Визначить ім’я вихідного файлу Output filename (де оптимізаційна інформація
утворена цим набором даних буде збережена). Оптимізаційна інформація зберігається
в файлі з розширенням .PGO.
- Задайте ім’я файлу dataset_1.pgo. Файл буде збережений в директорії проекту.
Для збереження файлу в іншому місці задайте повний шлях до файлу. Можна
використовувати Command line arguments для більшого контролю набора
даних.
- Для більшої інформації про аргументи командної строки див. VisualDSP++ 4.0
C/C++ Compiler and Library Manual for Blackfin Processors.
Приєднання вхідного потоку
На цьому кроці приєднується вхідний потік до набору даних.
1. Натисніть кнопку New для відкриття діалогового вікна Edit PGO Stream (рис. 2.4).
21
3. В групі Destination Device визначається, куди посилаються дані від вхідного потоку.
Заповніть цю групу як зазначено в табл. 2.2.
Поле/Контроль Дія/Значення
Це поле дозволяє визначити периферійний пристрій в іншому
Processor процесорі як пристрій адресата. В даному випадку підключається
однопроцесорна сесія, тому це поле не активно.
Це поле дозволяє вибрати будь-який пристрій потоку, який
підтримується платформою симулятора як приймач. Пристрої
можуть включати адресу пам’яті або різні зовнішні пристрої.
Device Доступні пристрої залежать від процесора, який використовується.
Для докладної інформації див. апаратне керівництво по
відповідному процесору. Програма читає вхідні потоки з пам’яті,
тому залиште це поле таким як воно є.
Визначте, куди в пам’ять вхідні дані будуть відправлені. Оскільки
Address програма читає дані з адреси 0xFFD00000 (наведено в
PgoExample.c), то введіть це значення.
4. Натисніть OK для повернення в діалогове вікно Edit Data Set. Діалогове вікно з
конфігураційним набором даних повинно відповідати рис. 2.6.
23
Якщо створені набори даних відповідають тим, які зображені на рис. 2.7, то набори
даних необхідні для оптимізації програми були створені.
9. Натисніть ОК для збереження наборів даних і закриття діалогового вікна.
Заголовок містить основну інформацію, таку як ім’я проекту, розташування і коли звіт
був згенерований. Також вказується рівень оптимізації (який визначається бігунком у
діалоговому вікні Manage Data Sets, рис. 2.2) і середнім результатом. Average result – різниця
між загальними кількостями циклів до і після оптимізації на всьому процесі виконання.
Примітка: Average result може трохи відрізнятись від результату, показаного на рис.
2.8.
Заголовок супроводжується інформацією відносно кожного набору даних (рис. 2.9).
Файлова інформація, яка включає ім’я файлу Data Set, ім’я файлу Input stream і ім’я
файлу PGO output, перераховується спочатку. Потім відображаються результати оптимізації.
Кількість циклів, необхідних для виконання початкової побудови з цими наборами даних
(Before optimization) супроводжується кількістю циклів, необхідних для роботи з цим
набором даних при оптимізованій побудові (After optimization). Помітимо, що кількість
циклів може змінюватись на різних машинах.
Нарешті, перераховується різниця процентів між двома побудовами (Result). Додатній
процент показує, що оптимізована побудова виконалась швидше, ніж початкова побудова.
Розділ Execution Output відображається спочатку (рис. 2.10).
26
#include “btc.h”
BTC_MAP_BEGIN
sizeof(AudioData))
BTC_MAP_END
- Вікно BTC Memory відображає BTC дані в реальному часі. Дані читаються з
платформи, коли IDDE видає запит читання, і записуються, коли значення
редагується у вікні BTC Memory. Можна коректувати швидкість, з якою IDDE
запитує дані, змінюючи частоту оновлення.
2. Натисніть правою кнопкою миші у вікні BTC Memory для відображення меню (рис.
2.17).
8. У вікні графіка FFT In введіть ім’я файлу таке як Sample.bin в текстовому полі.
9. Запустіть програму.
- Обидва графічні вікна повинні відобразити дані, які утворюють графік в реальному
масштабі часу.
Практична частина
Завдання 1. В середовищі VisualDSP++ виконати розробку програми, яка обчислює
кількість парних та непарних добутків пар першого і останнього, другого і передостаннього і
т.д. елементів даних для файлів dataset_1.dat, dataset_2.dat, dataset_3.dat і виводить результати
обчислень. Після цього необхідно:
1) виконати оптимізацію програми за допомогою режиму Profile-Guided Optimization,
побудувавши найшвидшу програму;
2) виконати оптимізацію програми за допомогою режиму Profile-Guided Optimization,
побудувавши найменшу за розміром програму;
3) порівняти часи виконання та кількості циклів для п.п.1-2;
4) пояснити одержані в п.п.1-2 результати.
Для виконання завдання використати режим симуляції (ADSP-BF5xx Single Processor
Simulator) роботи сигнального процесора середовищем VisualDSP++.
Завдання 2. Ознаймитися з роботою фонового каналу телеметрії на основі наведених
вище прикладів шляхом завантаження проектів Btc_AsmDemo та BTC_fft.
39
Контрольні питання
1. Для чого потрібен режим Profile-Guided Optimization.
2. У файлі з яким розширенням зберігаються дані профілювання і де вказується ім’я
цього файлу.
3. Як змінити відношення швидкості роботи програми до її розміру і як створити
найшвидшу програму за рахунок її розміну або найменшу за розміром за рахунок її
швидкості.
4. Як створити новий набір даних.
5. Для чого необхідно приєднувати вхідний PGO потік при створенні набору даних.
6. Як приєднувати або редагувати вхідний PGO потік.
7. Як створити новий набір даних з вже існуючого.
8. Поясніть, для чого потрібне кожне з полів діалогового вікна Edit PGO Stream.
9. Як виконати оптимізацію програми для режиму Profile-Guided Optimization.
10. В якому форматі і де зберігається звіт результатів PGO оптимізації. Яка інформація
наводиться у звіті.
11. Де й яка інформація виводиться ще про результати PGO оптимізації.
12. Що дозволяє робити фоновий канал телеметрії.
13. Що необхідно зробити для додавання BTC до DSP додатку.
14. Де і як визначаються канали BTC в коді програми.
15. За допомогою яких команд ініціалізується BTC та виконується опитування BTC.
16. Де можна розташувати цикл опитування BTC і чим визначається його розташування в
програмі.
17. Що відображає вікно BTC Memory.
18. Що дозволяє робити діалогове вікно Auto Refresh Settings і для чого потрібна кожна
опція цього вікна.
19. Як виконати запис BTC даних каналу у файл і відобразити записані дані у вікні
графіка.
20. Як виконати конвертування записаних у файл BTC даних з бінарного формату в
ASCII формат.
КОНТРОЛЕР
ТЕСТУВАННЯ СТОРОЖОВИЙ
І ЕМУЛЯЦІЯ JTAG ПОДІЙ /
ТАЙМЕР ЯДРА ТАЙМЕР
ГОДИННИК
СТАБІЛІЗАТОР РЕАЛЬНОГО ЧАСУ
НАПРУГИ
КОНТРОЛЕР
DMA
ПОСЛІДОВНІ
ПОРТИ (2)
Команда
Ядро Пам’ять L1
процесора Завантаження даних (внутрішня
Домен тактового пам’ять)
сигналу ядра (CCLK) Завантаження даних
Збереження даних
Домен тактового
сигналу системи (SCLK) Шина DMA
ядра (DCB)
Контролер Шина
DMA зовнішнього
доступу
Зовнішня (EAB)
шина DMA
(DEB)
Шина периферійного
доступу (PAB)
EBIU
void Init_Sport0(void)
{
// Установка регістрів конфігурації прийому (SPORT0_RCR1, SPORT0_RCR2)
*pSPORT0_RCR1 = RFSR; //RFSR, Receive Frame Sync Required
(Вимога //кадрової синхронізації прийому): 1 –
кадрова //синхронізація прийому потрібна для
кожного //слова
*pSPORT0_RCR2 = SLEN_32; //Довжина слова послідовного порту –
//32 біти (SLEN_32 описів у файлі
//Talkthrough.h)
Компандування
Компандування (companding, скорочення від COMpressing (стиск) і exPANDing
(розширення)) – це процес логарифмічного кодування й декодування з метою зменшення
числа біт переданих даних. Послідовні порти ADSP_2106x підтримують два найпоширеніші
алгоритми компандування: за µ-законом та A-законом. Процесор компандує дані відповідно
до специфікації MKKTT (CCITT) G.711. Тип компандування може обиратися незалежно для
кожного послідовного порту.
Коли компандування дозволено, дійсним значенням регістра SPORTx_RX є вирівняне
за правою границею, доповнене за знаком розширене значення восьми прийнятих молодших
бітів (LSB). Запис у регістр SPORTx_RX викликає стиск 16-розрядного значення до восьми
LSB (доповнених за знаком до розміру переданого слова) і запис у внутрішній регістр
передачі. Незважаючи на те, що максимальні довжини слів, підтримувані стандартами
компандування, становлять 13 (при компандуванні за A-законом) або 14 (при компандуванні
за µ-законом), можуть використовуватися слова довжиною до 16 бітів. Якщо модуль
величини слова перевищує припустиме максимальне значення, воно автоматично
стискається до максимального позитивного або негативного значення. При компандуванні не
підтримуються слова, довжина яких перевищує 16 бітів.
void Init_DMA(void)
{
// Установка DMA1 для прийому
//Регістр PERIPHERAL_MAP визначає відповідність каналів DMA периферійним
//пристроям: визначає периферійний пристрій, пов’язаний з каналом DMA, і те, чи
є //канал каналом DMA периферійного пристрою або каналом DMA типу
“пам’ять-//пам’ять”.
*pDMA1_PERIPHERAL_MAP = 0x1000; //канал DMA1 периферійного
//пристрою, прийом Sport0
void Enable_DMA_Sport0(void)
{
// Дозволяє DMAs
//DMA_EN, DMA Channel Enable (Дозвіл каналу DMA): 1 - дозволяє роботу
//каналу DMA
*pDMA2_CONFIG = (*pDMA2_CONFIG | DMAEN);
*pDMA1_CONFIG = (*pDMA1_CONFIG | DMAEN);
ВНУТРІШНІЙ
ГЕНЕРАТОР
СИГНАЛУ
СИНХРОНІЗАЦІЇ
SPI
ЛОГІКА SPI-ІНТЕРФЕЙСУ
РЕГІСТР ЗСУВУ
Розглянемо функцію Init1836() модуля Initialize.cpp, яка встановлює SPI порт для
конфігурації AD1836 (Вміст масиву sCodec1836TxRegs відправлено на декодер):
48
void Init1836(void)
{
int i;
int j;
static unsigned char ucActive_LED = 0x01;
// Дозвіл PF4
*pSPI_FLG = FLS4;
// Установка DMA5
//Регістр PERIPHERAL_MAP визначає відповідність каналів DMA периферійним
//пристроям: визначає периферійний пристрій, пов’язаний з каналом DMA, і те, чи
є //канал каналом DMA периферійного пристрою або каналом DMA типу
“пам’ять-//пам’ять”.
*pDMA5_PERIPHERAL_MAP = 0x5000; //канал DMA5 периферійного
//пристрою SPI
// 16-бітні передачі
*pDMA5_CONFIG = WDSIZE_16;
// Початковий адреса буфера даних
*pDMA5_START_ADDR = sCodec1836TxRegs;
// Значення лічильника внутрішнього циклу
*pDMA5_X_COUNT = CODEC_1836_REGS_LENGTH;
// Інкремент адреси внутрішнього циклу
*pDMA5_X_MODIFY = 2;
ПРОЦЕСОРА
КОНТРОЛЕР ЗОВНІШНЬОЇ ШИНИ
КОНТАКТНІ ПЛОЩАДКИ
(EBC)
КОНТРОЛЕР
АСИНХРОННОЇ
ПАМ’ЯТІ
(AMC)
КОНТРОЛЕР
SDRAM
(SDC)
void Init_EBIU(void)
{
//Установка регістрів управління банками асинхронною пам’яттю
(EBIU_AMBCTL0, //EBIU_AMBCTL1)
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0x7bb07bb0;
//Установка регістра глобального керування асинхронною пам’яттю (EBIU_AMGCTL)
*pEBIU_AMGCTL = 0x000f;
}
Обробка подій
У процесорі реалізований дворівневий механізм керування подіями. Контролер подій
процесора складається із двох рівнів: контролера подій ядра (CEC, Core Event Controller) і
контролера переривань системи (SIC, System Interrupt Controller). Контролер переривань
системи (SIC) процесора разом з контролером подій ядра (CEC) призначає пріоритети й
управляє всіма перериваннями системи. SIC забезпечує відображення багатьох джерел
периферійних переривань на впорядковані за пріоритетами входи переривань загального
призначення ядра. Це відображення є програмованим; крім того, індивідуальні джерела
переривання можуть маскуватися в SIC.
51
Контролер переривань системи (SIC)
Контролер переривань системи забезпечує відображення подій багатьох периферійних
джерел переривань у входи переривань CEC загального призначення з упорядкованими
пріоритетами. Хоча в процесорі реалізоване відображення за замовчуванням, користувач
може змінювати відповідності між перериваннями ядра й системи й пріоритети переривань
записом відповідних значень у регістри призначення переривань (IAR, Interrupt Assignment
Registers).
void Init_Sport_Interrupts(void)
{
//Регістри призначення переривань системи (SIC_IARx) управляють відносним
//пріоритетом периферійних переривань, що може бути встановлений шляхом
//призначення периферійному перериванню відповідного рівня переривання ядра
//загального призначення.
// Установка пріоритету переривання DMA1 (прийом Sport0) рівня переривання
IVG9 //(значення 2 у регістрі SIC_IAR1)
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xffffff2f;
*pSIC_IAR2 = 0xffffffff;
Практична частина
Завдання 1. На основі програми C_Talkthrough в середовищі VisualDSP++ виконати
розробку програми, яка здійснює підсилення амплітуди звукових даних у 2 рази.
Завдання 2. Розробити програму, яка виконує фільтрацію шумової компоненти для
заданого фрагменту звукових даних шляхом застосування відповідного цифрового фільтра
(структуру та параметри фільтра визначає викладач).
Завдання 3. Розробити програму, яка здійснює підсилення верхніх частот звукових
даних.
Контрольні питання
1. Дайте перелік периферійних пристроїв системи сигнального процесора серії Blackfin.
2. Який периферійний пристрій використовується для обробки відеопотоків даних?
3. Який периферійний пристрій використовується для обробки звукових потоків даних?
4. Для чого використовуються послідовні порти?
5. Як працює послідовні порти?
6. Якого значення може досягати частота сигналу тактової синхронізації послідовних
портів?
7. Чому дорівнює довжина слова при передачі даних послідовними портами?
8. Що таке компандування даних?
9. В чому полягає компандування за A-законом та за µ-законом?
10. Що дозволяє робити контролер DMA?
53
11. Які є типи передачі даних може виконувати контролер DMA?
12. Якими каналами DMA підтримуються периферійні пристрої?
13. Для чого призначений порт послідовного периферійного інтерфейсу?
14. Як організований SPI-інтерфейс?
15. Як взаємодіють ведучий і ведомий пристрої SPI-каналу?
16. Що забезпечує інтерфейс зовнішньої шини?
17. Чим керується інтерфейс зовнішньої шини?
18. На яких внутрішніх шинах процесора функціонує інтерфейс зовнішньої шини?
19. Як виконується обробка подій у сигнальному процесорі?
20. Для чого потрібен контролер переривань системи?