ЛР1(в) > Використання Code Composer Studio: Підключення файлів вводу/виводу, Мова GEL
Статьи по теме
- ЛР4 > Реалізація дискретного перетворення Фур’є на процесорі С55х
- ЛР3(а) > Робота цифрового сигнального процесору з даними у форматі з фіксованою точкою: квантування даних
- ЛР3(б) > Робота ЦСП з даними у форматі з фіксованою точкою: переповнення, насичення акумулятора, квантування коефіцієнтів
- ЛР2 > Основи програмування мовою асемблер процесора TMS320C55х
- ЛР1(б) > Використання Code Composer Studio: Відладка програми
- ЛР1(а) > Використання Code Composer Studio: Створення програми та підключення плати TMS320VC5510DSK
Тема: Підключення зовнішніх файлів для введення та виведення даних, особливості використання мови GEL для розширення можливостей Code Composer Studio
Пробні точки – корисний інструмент при відпрацюванні розроблених алгоритмів. Вони дозволяють виконувати динамічну симуляцію операцій введення та виведення даних з/до зовнішніх пристроїв. Коли виконання програми досягає пробної точки, середовище CCS зчитує вказану кількість даних з файлу на головному ПК у пам’ять ЦСП, або записує оброблені дані до файлу на головному ПК. В наступному завданні розглядається спосіб встановлення пробної точки для передачі даних з програми у зовнішній файл.
-
Встановіть пробну точку в кінці циклу while{ }, у рядку розташування закритої фігурної дужки:
while(l)
{
… …
} /*<-set probe point on this line*/
(в даному місці програми вихідні дані готові для переміщення). Для цього, встановіть курсор на даному рядку програми та виберіть команду Toggle Probe Point в панелі інструментів. Синя позначка з лівого боку рядка покаже, що пробна точка встановлена (див. Рис.1.4.).
– Виберіть команду File
File I/O, відкриється діалогове вікно підключення зовнішнього файлу. Перейдіть до закладки File Output. Натисніть кнопку Add File та введіть ім’я вихідного файлу exp_out.dat, потім виберіть Open. В полі Address вкажіть ім’я вихідної змінної out_buffer, в полі Length вкажіть 40 – довжина блоку даних для переміщення. Така кількість даних буде виводитися до зовнішнього файлу при кожному проходженні програмою пробної точки. Тепер натисніть кнопку Add Probe Point для прив’язки пробної точки з вихідним файлом exp_out.dat, як показано на рис.1.5.
Рис.1.5. Підключення зовнішнього файлу: а) встановлення адреси та довжини блоку даних; б) з’єднання пробної точки з зовнішнім файлом.
– У вікні Probe Point виберіть пробну точку (розташована у 32 рядку програми). З випадаючого меню у вікні Connect To, виберіть FILE OUT:…exp_out.dat. Натисніть кнопку Replace. Підтвердіть вибір кнопкою ОК, та вийдіть з діалогового вікна підключення зовнішнього файлу.
-
Запустіть програму на виконання. Через деякий час зупиніть програму. За допомогою команди File
Open відкрийте файл exp_out.dat, використовуючи вбудований редактор середовища CCS. Для перегляду чи редагування отриманого файлу можна використовувати інші редактори. Формат заголовку зовнішнього файлу даних (перший рядок файлу) показаний на рис.1.6. Дані відображаються у шістнадцятковому форматі з використанням відповідного синтаксису.
Рис.1.7. Формат заголовка файлу CCS.
Приклад фрагменту зовнішнього файлу, поданий нижче, має наступне значення:
1651 1 а8 1 28
0×01Е0
0×03С0
0×05А0
0×0740
0×08С0
0×0А00
0×0В20
0×0ВЕ0
– дані збережені в шістнадцятковому форматі, розміщувалися за початковою адресою 0×a8 на сторінці пам’яті даних, кожен збережений блок містить 40 (0×28h) значень змінних. Якщо потрібно використати пробну точку для підключення зовнішнього файлу з вхідними даними, то у цьому файлі повинен використовуватися той же формат для заголовку.
Використання мови GEL
Середовище CCS використовує мову GEL для розширення своїх можливостей. GEL – це корисний засіб для створення налаштувань робочого простору з метою покращення зручності перевірки проекту.
Відкрийте редактор середовища CCS, та створіть файл, представлений нижче:
menuitem “Gain_Control”
slider Gain(1,0×20,1,1,gainParam)
{
Gain =gainParam;
}
Збережіть файл під назвою Gain.gel. Завантажте цей файл за допомогою команди FileLoad GEL. Винесіть панель інструментів Gain, вибравши команду GEL
Gain_ControlGain. Запустіть програму на виконання в режимі анімації, та перевірте можливість зміни коефіцієнту підсилення за допомогою панелі інструментів Gain, рухаючи повзунок вгору та вниз.
Завдання для самостійної роботи
А. Перевірити вплив шуму на представлення сигналу.
1. Додати до вихідного сигналу випадковий сигнал (шум). Приклад такої програми надається нижче:
#include <stdlib.h>
#define BUF_SIZE 40
const int sineTable[BUF_SIZE]=
{0x0000,0x000f,0x001e,0x002d,0x003a,0x0046,0x0050,0x0059,
0x005f,0x0062,0x0063,0x0062,0x005f,0x0059,0x0050,0x0046,
0x003a,0x002d,0x001e,0x000f,0x0000,0xfff1,0xffe2,0xffd3,
0xffc6,0xffba,0xffb0,0xffa7,0xffa1,0xff9e,0xff9d,0xff9e,
0xffa1,0xffa7,0xffb0,0xffba,0xffc6,0xffd3,0xffe2,0xfff1 };
int in_buffer[BUF_SIZE];
int out_buffer[BUF_SIZE];
int Gain, Noise;
void main()
{
int i, j;
Gain = 0x20;
Noise = 0;
while (1) { /* <- set profile point on this line */
for (i = BUF_SIZE – 1; i >= 0; i–) {
j = BUF_SIZE – 1 – i;
out_buffer[j] = 0;
in_buffer[j] = 0;
}
for (i = BUF_SIZE – 1; i >= 0; i–) {
j = BUF_SIZE – 1 – i;
in_buffer[i] = sineTable[i]; /* set breakpoint */
in_buffer[i] = 0 – in_buffer[i];
out_buffer[j] = Gain * in_buffer[i] + (rand() / (float)RAND_MAX * Noise);
}
} /* <- set probe and profile point on this line */
}
2. Додати керування рівнем шуму за допомогою GEL-файлу. Приклад такої програми надається нижче:
menuitem “Gain_Control”
slider Gain(1, 0x20, 1, 5, gainParam)
{
Gain = gainParam;
}
menuitem “Noise_Control”
slider Noise(0, 1000, 1, 100, noiseParam)
{
Noise = noiseParam;
}
3. Запустити програму на виконання. Перевірити вплив співвідношення сигнал/шум на вихідну форму сигналу.
Б. Додати до сигналу постійну складову. Створити елемент керування постійною складовою сигналу.
В. Додати до сигналу інший сигнал (гармонійний, трикутний або прямокутний). Створити елементи керування співвідношенням амплітуд сигналів.