Організація циклічного буфера в DSP

 

Вхідний контроль:

1 Наведіть приклади використовування режиму обміну ПДП поміж МПС та зовнішніми пристроями.

2 Що таке модульна арифметика?

 

Завдання цифрової обробки сигналів потребують реалізації потокової обробки великих обсягів даних у реальному режимі часу. Це є можливе за високої швидкодії процесора та наявності апаратних засобів інтенсивного обміну із зовнішніми пристроями.

Циклічний буфер слугує за “вікно” заданого розміру, через яке “протягується” задана кількість відліків вхідного сигналу з метою їхнього оброблення в реальному часі.

Циклічний буфер у складі DSP – це обмежена за обсягом пам’ять Х або Y з М комірок, які адресуються за типом непрямого регістрового адресування. Ефективна адреса комірки обчислюється як алгебраїчна сума вмісту регістра адреси Rn, регістра зміщення Nn та регістра модифікації Мn за правилами модульної арифметики. Модульна арифметика забезпечує звернення лише до тих комірок пам’яті, які належать конкретному буферові.

Нижня межа буфера визначається вмістом регістра Rn, а верхня дорівнює (Rn + M – 1), де значення (М – 1) зберігається в регістрі модифікації Мn. Значення нижньої межі, яка називається ще базою адреси (Bs), має мати нулі у k молодших розрядах, k вибирається з умови 2k М; база адреси є кратна до 2k.

Для організації буфера обсягом 5 комірок пам’яті (М = 5) кількість k молодших нульових бітів у базі Bs може становити 3. База Bs може бути 101000 або 111000, тобто бути кратною до 2k. У загальному випадку база вибирається такою, що дорівнює

 

ХХХХ...ХХ 00…0 , де Х = 0 або 1.

 

(16 – k) біт k біт

 

Верхня межа буфера дорівнює Bs + M – 1, а гранична межа – Bs + 2k – 1.

На рис. 15.3 подано організацію циклічного буфера.

 

 
 

 

 


Рисунок 15.3 – Організація циклічного буфера

 

Початкова адреса, тобто вміст регістра Rn може встановлюватись довільно у зазначених межах.

При використовуванні регістра Nn адреса обчислюється за формулою ((Rn ± Nn)mod M. На рис. 15.4 подано виконування команди

MOVE Х0, Х: (RY) + N0

при роботі з циклічним буфером. Згідно з командою, вміст вхідного регістра АЛП даних Х0 пересилається до комірки Х-пам’яті даних за адресою, зазначеною в R0, після чого здійснюється інкрементування адреси на вміст регістра N0 з використовуванням арифметики за mod M. Всі адреси зазначено в десятковій системі числення; циклічний буфер має обсяг 90 комірок з базою Bs = 128, верхньою межею 217 та граничною межею 255.


 

 

 


Рисунок 15.4 – Використовування арифметики за модулем М

 

Кількість молодших нульових бітів у базі вибрано з умови 2k ≥ 90, тоді k = 7. Bs = 128 (крайнє 2k). Верхня межа становить 128 + 90 = 217. Гранична межа становить 128 + 27 – 1 = 255; комірки з 218 по 255 повного буфера не використовуються і можуть використовуватись для інших цілей. Після першого виконання команди початкова адреса інкрементується на 15 і вміст R0 дорівнює 180. При подальшому інкрементуванні адреси вміст R0 послідовно стає 195 та 210. При черговому інкрементуванні адреса циклічного буфера могла б стати 225 і вийти за верхню межу буфера. Модульна арифметика примушує вміст R0 залишатися усередині буфера, тобто (R0) = 225 – 90 = 135.

 

Контрольні питання:

1 Як вибирається початкова адреса в межах циклічного буфера?

2 У якій пам’яті, Х або Y, може бути зорганізовано циклічний буфер?

3 В який спосіб визначаються верхня та нижня межі циклічного буфера?

 


Контрольні питання підвищеної складності:

1 З якою метою у DSP використовується циклічний буфер?

2 Організуйте у пам’яті циклічний буфер обсягом сім комірок.

3 Вкажіть значення нижньої, верхньої та граничної межі в пам’яті циклічного буфера.

4 Покажіть, як спрацьовує модульна арифметика при обчисленні адреси пам’яті у межах циклічного буфера?