Цифровые методы обработки сигналов в реальном масштабе времени (Лабораторная работа № 5), страница 2

·  параллельная структура (рис. 5.1), когда фрагменты находятся в разных ветвях программы. Для поочередного входа в нужную ветвь потребуется флаг (управляющий символ), для хранения которого придется занять регистр. Зато можно обойтись одним счетчиком циклов;

·  последовательная структура (рис. 5.2), когда циклические участки программы выполняются по очереди. Каждый участок нуждается в своем счетчике, зато флаг не потребуется.


Сложность алгоритма генерации отсчёта зависит от вида генерируемой функции. Задания содержат самые простые функции. Горизонтальные линейные участки (y = const) могут быть получены с помощью операции LDI (загрузка константы). Наклонные линейные участки (y = kt) в простейших случаях (k=1) формируются операциями INC (увеличение на 1) или DEC (уменьшение на 1).  Для получения более крутых участков (k > 1) подходят операции ADI и SUI (прибавление или вычитание константы).

Рисунок 5.1 - Параллельная структура алгоритма


Рисунок 5.2 - Последовательная структура алгоритма

Экспоненциальная функция  y = 1 - exp(-t/t) является откликом на поступление единичного скачка на вход интегрирующей RC-цепи. Её цифровая реализация может быть получена с помощью алгоритма рекурсивного фильтра НЧ  1-го порядка:

Y := Y + (X-Y) * B.

Значения B = 0.5, 0.25... легко получить путем сдвига на 1, 2... разряда вправо.  Постоянная времени такой функции:

t = RC » dt/B.

На входе фильтра нужно создать перепад уровней (например, для нарастающей функции из X=0 в X=15). В условиях полного использования диапазона положительных значений величин алгоритм имеет вид:

      Для перепада 0/15

Для перепада 15/0

H := 15 - Y 

H := Y ;            { H := -(0 - Y) }

IF H=0 GOTO Lbl ;

IF H=0 GOTO Lbl ;

P := H/2 ;

P := H/2 ;

P := P + 1 ;

P := P + 1 ;

Y := Y + P ;

Y := Y - P ;

Lbl: . . . . . . .

Lbl:  . . . . . . . .

Обход по H=0 и поправка P:=P+1 устраняют зону нечувствительности, возникающую из-за округления P в операции сдвига P:=H/2.

Одной из задач является увязка во времени формирования отсчётов с переключением ветвей.  Простейшим вариантом их синхронизации может быть формирование отсчета из текущего состояния счетчика циклов.

Когда основа программы есть, и генерация отсчетов обеспечена, остается уточнить детали. Нужно продумать вопросы стыковки отрезков функции, используя числовые примеры.  При обнаружении несоответствия на один шаг достаточно бывает поменять местами формирование и вывод отсчета, способ изменения или проверки состояния счетчика и т.п.

Вывод отсчетов функции должен происходить через отрезки времени фиксированной длины. Это правило может нарушаться из-за неодинаковой длины фрагментов программы и не идентичности хода программы в местах переключения. Чтобы число тактов, затрачиваемых на выполнение программы, для любого отсчета оставалось неизменным, следует одинаково организовывать циклы и вставлять для выравнивания пустые операции (NOP). Другой вариант имеем, когда период следования отсчётов задан внешним генератором, подключенным к входу ZA СУАМ, а в конце программы имеется команда STOP. В этом случае вывод полученного отсчета располагают на неменяющемся расстоянии от начала программы.

Последовательность разработки программы состоит из нескольких этапов, результат каждого из них оформляется документально.

На начальном этапе производятся осмысление физического содержания задачи, принятие принципиальных решений, и получают алгоритм в обобщённом виде как на рис. 5.1 или 5.2, т.е. без учета системы команд микропроцессора.

На втором этапе производят детализацию (разукрупнение) алгоритма с тем, чтобы один элемент графического алгоритма соответствовал одной микрокоманде конкретного МП.  На рис. 5.3 приведен пример оформления детализированного алгоритма для случая генерации прямоугольных импульсов вида "меандр".

После размещения величин в регистрах следует еще раз изобразить алгоритм, используя взамен обозначений физических величин обозначения регистров, в которых они хранятся, а условия разветвления на соответствующие им признаки.  Далее производится выбор микрокоманд с использованием таблиц 3.6 и 4.6. Некоторые микрокоманды показаны на рис. 5.3. Назначение адресов можно начать с нуля (ORG 0); полезно воспользоваться метками, представляющими собой символические обозначения адресов.


Рисунок 5.3 - Схема алгоритма генерации колебаний                          прямоугольной формы

На третьем этапе получают микропрограмму в мнемокодах. Для этого, используя правила оформления программ на языке ассемблера, выписывают выбранные микрокоманды в порядке следования адресов при движении по ветвям "нет".

На четвертом этапе микропрограмма транслируется (переводится в цифровые коды).  Более детально отдельные этапы разработки программы и наборы микроопераций и микроинструкций были описаны в п. 3.2 работ № 3 и 4.

7. Контрольные вопросы

7.1. Каковы преимущества цифровой генерации сигналов по сравнению с аналоговой.

7.2. Сопоставьте достоинства и недостатки метода аппроксимации и табличного метода цифровой генерации сигналов.

7.3. Как перейти от цифрового представления сигнала к аналоговому представлению?

7.4. Чем определяется максимальная частота генерируемых в МПУ сигналов?

7.5. Как обеспечить заданную частоту генерируемых сигналов?

7.6. Каковы особенности работы МПУ в реальном масштабе времени?

7.7. Какие факторы влияют на получение одинаковой длины двух участков генерируемой функции?