Некоммерческое акционерное общество

АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ

Кафедра «Электроника»

 

 

 

СИГНАЛЬНЫЕ ПРОЦЕССОРЫ

Методические указания к выполнению лабораторных работ для студентов специальности 5B071900 – Радиотехника, электроника и телекоммуникации

 

 

 

Алматы 2011

СОСТАВИТЕЛИ: С.Н.Петрищенко, Мусапирова Г.Д. Сигнальные процессоры. Методические указания к выполнению лабораторных работ для студентов специальности 5B071900 – Радиотехника, электроника и телекоммуникации. - Алматы: АУЭС, 2011. – 37 с.

 

Методические указания содержат краткие теоретические справки, рабочие задания к четырем лабораторным работам по эффектам квантования и по основам программирования на языке ассемблера симулятора и 16-разрядного сигнального процессора TMS320. Дана методика проведения и обработки данных, приведен перечень рекомендуемой литературы и контрольные вопросы.

Ил. 3, табл. 10, библиогр. –  7 назв.

 

Рецензент: канд.тех.наук, проф. С.В.Коньшин

 

Печатается по плану издания некоммерческого акционерного общества «Алматинский университет энергетики и связи» на 2011 г.     
      
 

 

© НАО «Алматинский университет энергетики и связи», 2011 г.

1       Лабораторная работа

 

Исследование эффектов квантования в цифровых цепях

 

Цель работы:

исследовать влияние квантования сигналов и коэффициентов в цифровых цепях, использующих арифметику с фиксированной запятой.

 

1.1   Краткая теоретическая справка

 

В цифровых цепях отсчеты входных х(n) и выходных у(n) сигналов, коэффициенты передаточных функций и результаты выполнения арифметических операций представляются b-разрядными двоичными числами в соответствии с разрядностью регистров. Такое приближенное представление чисел называют квантованием.

Под m = b+1 понимается совокупность знакового разряда и b разрядов модуля числа (число значащих разрядов).

Шагом квантования Q называют модуль разности между соседними уровнями квантования q i+1   и  qi :

 

.

 

Для беззнаковых чисел, представляемых в регистрах, шаг квантования определяется как , что соответствует значению младшего числового разряда при Q = const.

В цифровой обработке рассматриваются числа, по модулю не превосходящие единицу:

 

.

 

При квантовании используются два способа приближения чисел: округление и усечение. В случае усечения ошибка усечения еу(п) не превосходит шага квантования:

 

 и .

 

В случае округления ошибка округления не превосходит половины шага квантования и меньше ошибки усечения:

 

   и    .

В связи с этим в  аналого-цифровых преобразователях и в цифровых процессорах обработки сигналов обычно применяется округление.

Источниками ошибок квантования являются:

-       аналого-цифровое преобразование аналогового сигнала

-       арифметические операции с цифровым сигналом

-       перезапись из аккумулятора в память данных;

-       квантование коэффициентов передаточных функций.

Для линейных моделей процессов аналого-цифрового преобразования и умножения математическое ожидание ошибки квантования , а дисперсия ошибок квантования:

 

.

 

В логарифмическом масштабе мощность шума ошибок квантования приблизительно равна:

 

 

Следовательно, увеличение (уменьшение) разрядности АЦП или регистра умножителя на единицу уменьшает (увеличивает) дисперсию шума на выходе АЦП или умножителя на 6 дБ.

Определим влияние квантования входного сигнала на выходной шум цифровой цепи, полагая, что коэффициенты и арифметические операции реализуются точно. Выходной шум, как реакция дискретной цепи, имеющей импульсную характеристику   h(n), на входной шум , определяется по формуле:

 

.

 

Максимальные ошибки квантования входного (при округлении) и выходного сигнала определяются по формулам:

 

,

 

.

 

Дисперсия составляющей выходного шума из-за  АЦП имеет вид:

 

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

 

,

 

а дисперсия этого шума формулой:

 

,

 

где L - количество умножителей.

Максимальная ошибка и дисперсия шума квантования на выходе цифровой цепи первого порядка определяются как суммы соответствующих вышеуказанных составляющих:

 

,

 

,

 

где - импульсная характеристика цепи первого порядка.

Максимальная ошибка квантования на выходе цифровой цепи второго порядка определяется как:

 

,

 

где - импульсная характеристика от выхода i – го умножителя до выхода цепи.

Общий шум на выходе звена второго порядка для всех i = 1,2,…,L  определяется следующей формулой:

 

,

где - импульсная характеристика цепи второго порядка.

Для некоторых входных сигналов ошибка квантования на выходе цепи зависит от самого сигнала. В результате могут появляться незатухающие колебания, которые получили название предельных циклов низкого и высокого уровней.

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

Причиной другого типа колебаний является переполнение регистров сумматоров. Такие колебания являются периодическими. Для предупреждения возможного переполнения прибегают к масштабированию сигналов - такому ограничению их значений, чтобы на выходе любого i-го узла суммирования результат не превышал единицы, то есть .

Это обеспечивается введением масштабирующих множителей (коэффициентов) на входах системы или на выходах умножителей:

 

,

 

гдe fi (n) - импульсная характеристика от входа цепи (от источника сигнала) до выхода i-го сумматора при i = 1,2,… 

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

 

1.2   Контроль подготовленности к работе:

 

-  открыть папку Lab 5 и запустить файл Lw_5;

-  ввести номер группы, номер бригады и фамилии членов бригады и  подтвердить правильность ввода регистрационной информации после наведения курсора на слово ДА и нажатия на клавишу Enter;

- ответить на пять вопросов, подтверждая правильность ответа наведением курсора на правильный ответ и клавишей Enter;

- по заданным разрядностям АЦП ввести в таблицу 1.1 рассчитанные по точным формулам шаг квантования АЦП, дисперсию и мощность шума входного сигнала;

 


Таблица 1.1

Разрядность

 

3

 

5

 

8

 

16

Шаг квантования

0,125

0,03125

0,0039

0,000015

Дисперсия шума

0,0013

0,000081

0,000001

0

Мощность шума

- 28,85

- 40,89

- 58,95

- 107,11

 

- ввести в таблицу 1.2 рассчитанные для рекурсивной цепи первого порядка с параметрами ; ;  и QАЦП = 0,0039 максимальную ошибку, дисперсию и мощность шума АЦП при условии точного выполнения операции умножения для разрядности АЦП, равной 8;

 

Таблица 1.2

0,0039

0,007813

0,000003

- 55,37

 

- ввести в таблицу 1.3 рассчитанные для той же цепи максимальную ошибку, дисперсию и мощность собственного шума при условии точного представления входного сигнала для разрядности АЦП, равной 12;

 

Таблица 1.3

12

2,441e-4

4,883e-4

1,135e-8

- 79,45

 

- ввести в таблицу 1.4 суммарные дисперсию и мощность шума квантования на выходе цепи;

 

 Таблица 1.4

8

12

2,914e-6

- 55,35

 

- вводить расчетные значения параметров нажатием на клавишу Enter и на слово НЕТ, подтверждая отсутствие ошибок.

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

 

1.3   Выполнение лабораторной работы

 

 1.3.1 Исследование эффектов квантования входного сигнала:

- при входном сигнале  и разрядности АЦП получить графики цифрового и дискретного сигналов, а также графики ошибок квантования ;

- зарисовать графики для  ;

- записать мощность шума  в указанных четырех случаях.

1.3.2 Исследование влияния квантования сигналов:

-  исследовать влияние квантования входного сигнала на выходной шум (арифметические операции выполняются точно) в цепи первого порядка при  и , для чего, при и записать в таблицу 1.5 значения дисперсии и мощности шума ;

- при разрядности регистров = 8 и 12 получить значения дисперсии и мощности шума  и записать их в таблицу 1.5;

- исследовать суммарный шум квантования на выходе цепи первого порядка, для чего при =5 и 8 ( = 8 и 12 для каждого случая) получить дисперсию и и записать в таблицу 1.5.

 

Таблица 1.5

 

5

Точно

 

 

 

 

 

 

8

Точно

 

 

 

 

 

 

Точно

8

 

 

 

 

 

 

Точно

12

 

 

 

 

 

 

5

 

8

 

 

 

 

 

 

12

 

 

 

 

 

 

8

8

 

 

 

 

 

 

12

 

 

 

 

 

 

 

1.3.3 Исследование предельных циклов в цифровых цепях:

-  исследовать предельные циклы в цепи первого порядка при , для чего:

а) самостоятельно задать на экране значение ; для положительного и отрицательного  при округлении и усечении результата записать, с какого отсчета начинаются предельные циклы и значение амплитуд предельных циклов;

б) определить, при какой разрядности регистров   (начиная от ) амплитуда колебаний предельного цикла оказывается незначительной (составляет не более 60 дБ, то есть 1/1000 от максимального значения выходного сигнала); зарисовать диаграммы, записать параметры;

в) проследить изменение амплитуды колебаний предельного цикла при полученной в пункте (б) разрядности с увеличением значения ; записать не менее трех результатов.

1.3.5 Исследование влияния коэффициента масштабирования

Для исследования коэффициента масштабирования на выходной сигнал и собственный шум в цепях первого порядка необходимо:

а) получить коэффициент масштабирования для заданной цепи;

б) сравнить выходные сигналы при отсутствии масштабирования и при рассчитанном коэффициенте , зарисовать диаграммы;

в) умножить коэффициенты числителя передаточной функции на коэффициент масштабирования  при точном представлении входного сигнала и , получить и .

1.3.6 Исследование влияния квантования коэффициентов

Исследовать влияние квантования коэффициентов  цифровой цепи на ее характеристики при округлении коэффициентов до 4, 6 и 8 разрядов:

- получить и зарисовать АЧХ и ФЧХ звена первого порядка .

Значения коэффициентов звеньев и отклонение АЧХ  в дБ от идеальной записать в таблицу 1.6.

 

Таблица 1.6

B

 

 

Цепь первого порядка

Точно

 

 

8

 

 

6

 

 

4

 

 

 

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

 

1.4.1 Объяснить причины и указать источники шумов квантования в цифровых цепях.

1.4.2 Дать характеристику квантованию с округлением и усечением. Привести примеры.

1.4.3 Дать характеристики ошибкам и шумам квантования входного сигнала (АЦП).

1.4.4 Дать характеристики ошибкам и шумам квантования результатов умножения.

1.4.5 Дать характеристики ошибкам, обусловленным квантованием коэффициентов передаточной функции.

1.4.6 Объяснить причины появления шума на выходе цепи, формируемого только за счет квантования входного сигнала, и влияние на его величину импульсной характеристики и разрядности АЦП.

1.4.7 Объяснить происхождение собственного шума цифровой цепи и его влияние на величину коэффициентов передаточной функции.

1.4.8 Объяснить природу суммарного шума квантования на выходе цифровой цепи.


 

2       Лабораторная работа

 

Исследование программ на симуляторе сигнального процессора

 

Цель работы: получить практические навыки в подготовке и исследовании простейших программ программ для работы на симуляторе сигнального процессора TMS320С50.

 

2.1   Краткая теоретическая справка

 

Процесс подготовки исполняемых программ для сигнального процессора TMS320C50 можно разделить на три этапа:

1)  создание модуля-файла, например, sim.asm с исходным текстом программы, написанным на языке ассемблера;

2) трансляция полученного файла для создания объектного файла, например, sim.obj , а также листинга  sim.lst, производится в режиме MS DOS   путем набора в командной строке следующей команды:

dspa.exe - lcs  sim.asm;

3) если в программе sim нет ошибок, то нужно произвести операцию компоновки и получить выходной файл, например, sim.out и файл sim.map, набрав  команду вида:          

dsplnk.exe  sim.cmd.

В данной работе используется готовый файл sim.asm,  который  состоит из нескольких частей, в каждой из которых реализуется некоторая операция.

В таблице 2.1 представлена карта размещения в памяти данных переменных, используемых в программе.

 

Таблица 2.1

Переменная

Адрес ячейки памяти данных (Hex)

Начальное значение  переменной (Hex)

Х

0800

1

Y

0801

3

Z

0802

0

X1

0803

4

Y1

0804

5

Z1

0805

0

X2

0806

0a

Y2

0807

0b

Z2

0808

0с

 

Ниже представлен текст программы sim:

; Программа выполнения простейших операций на TMS320C50

 

.version

50

 

 

.mmregs

 

; Разрешение использования ;символьных ;имен  регистров процессора.

; Задание значений переменных в памяти данных

 

.data

 

 

X

.word

1

; Начальное значение  Х

 

Y

.word

2

; Начальное значение  Y

 

Z

.word

0

; Начальное значение Z

 

X1

.word

4

; Начальное значение  Х1

 

Y1

.word

5

; Начальное значение Y1

 

Z1

.word

0

; Начальное значение Z1

 

X2

.word

0ah

; Начальное значение Х2

 

Y2

.word

0bh

; Начальное значение Y2

 

Z2

.word

0ch

; Начальное значение Z2

 

; Резервирование области памяти размером 6 ячеек

 

.bss

M1,6

; Символический адрес ;первой  ячейки М1

; Таблица векторов прерывания

 

.sect                 “ Vectors “

RESET

B

START

; Начальная строка таблицы ;векторов прерывания – ;переход к основной программе

 

;      Основная программа

             .text

START

LDP

#0

; Указатель страницы памяти данных

 

OPL

#04h,PMST

; Задать значение регистра PMST

 

CLRC

OVM

; Запретить режим переполнения

 

SPM

0

; Установить нулевой сдвиг PREG

L1:

 

 

 

 

LDP

#X

;Указать на страницу памяти, хранящую Х

 

LACC

X

;Загрузить в АCC содержимое ячейки Х

 

ADD

Y

;Прибавить к АСС содержимое ячейки Y

 

ADD

#5

;Прибавить к АСС непосредственное ;слагаемое

 

SACL

Z

;Сохранить содержимое младшего слова АСС в ячейке Z

 

L2:

 

 

 

 

LDP

#X1

;Указать на страницу памяти, хранящую Х1

 

LT

X1

;Загрузить в T-регистр содержимое ячейки ;Х1

 

MPY

Y1

;Перемножить Х1 и Y1. Результат в РREG

 

SPL 

Z1

;Сохранить содержимое младшего слова ;PREG в ячейке Z1

L3:

 

 

 

 

LDP

#X1

;Указать на страницу памяти, хранящую Х2

 

LACC

Y1

;Загрузить в АCC содержимое ячейки Х2

 

SUB

X1

;Вычесть из АСС содержимое ячейки Y2

 

SACL

Z2

;Сохранить содержимое младшего слова ;АСС в ячейке Z2

L4:

 

 

 

 

LDP

#X

;Указать на страницу памяти, хранящую Х

 

LACC

Z1

;Загрузить в АCC содержимое ячейки Z1

 

SACL

X

;Сохранить содержимое младшего слова ;АСС в ячейке X

L5:

 

 

 

 

LDP

#Y2

;Указать на страницу памяти, хранящую Y

 

MAR

*,AR0

; Сделать активным регистр AR0

 

LAR

AR0,Y2

;Загрузить в АR0 содержимое ячейки Y2

L6:

 

 

 

 

LDP

#Z

;Указать на страницу памяти, хранящую Х

 

LAR

AR6,#Z

;Загрузить в АR6 адрес ячейки Z

L7:

 

 

 

 

LDP

#Y2

;Указать на страницу памяти, хранящую Y2

 

LACC

#07fffh

;Загрузить в АCC число 7fff (Hex)

 

SACL

Y2

;Сохранить содержимое младшего слова ;АСС в ячейке Y2

 

SACB

 

;Сохранить содержимое АСС в ACCB

 

SAMM

AR1

;Сохранить содержимое АСС в регистре ;AR1

 

B

L9

;Безусловный переход к фрагменту

;программы с меткой L9

L8:

 

 

 

 

LDP

#X

;Указать на страницу памяти, хранящую X

 

ZAP

 

;Обнулить АСС и регистр PREG

 

LT

X

;Загрузить в регистр Т  переменную X

 

MPY

X1

;Умножить X на X1, результат в регистре ;PREG

 

LTA

Y

; Загрузить в регистр Т  переменную Y, ;предыдущее произведение из PREG

;добавляется в ACC

 

MPY

Y1

;Умножить Y на Y1 результат в регистре ; ;PREG

 

LTA

Z

;Загрузить в регистр Т  переменную Z, ;предыдущее произведение из PREG

;добавляется в ACC

 

MPY

Z1

;Умножить Z на Z1 результат в регистре ;PREG

 

APAC

 

;предыдущее произведение из PREG

;добавляется в ACC

 

SACL

X2

;Сохранить содержимое младшего слова

;АСС в ячейке X2

 

B

START

;Переход к началу программы для  ;повторения

 

.end                                    

 

; Конец программы

 

 

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

Таким образом,  на основе объектного файла sim.obj, полученного после трансляции, и под управлением sim.cmd, программой компоновщика  dsplnk.exe формируется выходной файл sim.out, который будет использоваться при работе с программой симулятора. Программа компоновщика формирует также таблицу реально полученного распределения памяти sim.map.  Этот файл позволяет контролировать инициализацию начальных адресов и количество ячеек памяти, используемых для хранения программы и данных в процессоре, а также правильность расположения и соединения секций программы.

Симулятор (имитатор) предназначен для программной имитации работы процессора TMS320C50 и  отладки программ, предназначенных для выполнения на данном процессоре. Имитатор выполняет программы  не в реальном масштабе времени. При выполнении программы в нем возможен контроль, а также модификация (изменение) состояния основных регистров процессора и содержимого  памяти при тех или иных операциях.

Программа симулятора SIM5X обладает дружественным интерфейсом и позволяет вводить основные команды, управляющие работой, как в командной строке, так и посредством манипулятора “мышь”, используя экранное меню. Симулятор позволяет загружать и выполнять файлы, полученные в результате трансляции и компоновки программы, написанной на языке ассемблера.

 Графическая панель, формируемая программой симулятора, организована по оконному типу и дает возможность:

-     загружать исполняемые программы и просматривать их дизассемблерную версию;

-     выделять, перемещать и менять размеры окон;

-     выполнять программы в пошаговом режиме и контролировать их выполнение, следя за изменениями, происходящими с содержимым регистров и областей памяти процессора;

-      задавать точки останова при выполнении программы;

-     вводить различные команды через командное меню, посредством клавиатуры или “мышью”;

-     контролировать время выполнения программ.

После запуска программы симулятора на экране монитора появляются  четыре окна:

1) окно DISASSEBLY - для отлаживания текста дизассемблированной программы;

2)  окно СРU - для отражения состояния аккумулятора процессора (ACC) и его буфера (ACCB), регистра результата умножения (PREG), программного счетчика (PC),  регистрового файла, состоящего из восьми вспомогательных регистров (AR1 – AR0) и индексного регистра (INDX), регистров состояния (ST0, ST1 и PMST) и других регистров;

3) окно MEMORY – для отражения памяти процессора;

4) окно COMMAND – для введения разных команд процессора.

 

2.2   Порядок выполнения работы

 

2.2.1 Войдите в папку DSP-2 и запустите симулятор SIM.5X. На экране монитора должны появиться окна графического интерфейса, отражающих состояние основных элементов архитектуры процессора. Изучите состав и расположение этих окон.

2.2.2 Измените размер любого окна при помощи “мыши”, захватив курсором правый нижний угол окна и перемещая его в нужном направлении.

2.2.3 Переместите какое - либо окно. Это можно сделать, подведя курсор и “ухватив”  “мышью” верхний край рамки выбранного окна.

2.2.4 Выйдите из программы симулятора, набрав в командном окне команду QUIT.

2.2.5 Повторите операцию загрузки симулятора и загрузите файл с исполняемой программой sim, предназначенной для изучения простейших операций.  Для загрузки исполняемой программы используйте  меню LOAD, выбрав в ней команду LOAD. В открывшимся окне наберите имя файла исполняемой программы с расширением и нажмите клавиши Enter и F8.

2.2.6 Выведите на экран в окне MEMORY содержимое ячеек памяти, где хранятся переменные Х,Y,Z,X1,Y1,Z1,X2,Y2,Z2, начиная с адреса 0800.  Для этого нужно набрать в командном окне команду:

mem 0x0800@data.

2.2.7 Откройте окно просмотра WATCH, позволяющее в отдельно создаваемом окне  просматривать содержание не всех регистров процессора или данной области памяти, а лишь заданных. Выведете в окне WATCH значения переменных Z,X2,Y2,Z2, используемых для хранения промежуточных значений, а также значения регистров AR0,AR5,AR6 и ACC в форматах х (шестнадцатеричный) и d (десятичный).

Для этого, в пункте меню WATCH  выберете команду ADD и наберите в открывшемся окне:

для переменных:

- адрес (в строке Expression), например, *0х0806;

- имя переменной (в строке Label), например, х2;

- формат вывода (в строке Format), например, x или d

для регистров:

- имя регистра, например, AR6;

- формат вывода, например, x или d.

При отсутствии указания формата по умолчанию используется шестнадцатеричный формат. Удаление переменной или регистра из окна Watch производится выбором стоки Delete в пункте меню Watch и указанием индекса (номера строки в окне) удаляемой переменной. Удалите из окна переменную Z и регистр AR5.

3.2.9 Выполните программу в пошаговом режиме, используя пункт меню STEP или F8. Проследите за изменением содержимого регистров процессора и ячеек памяти данных, хранящих переменные, при выполнении каждой команды. Проследите за соответствием результатов ожидаемым.

3.2.10 Для возврата к состоянию с исходным содержимым  программы необходимо выйти из программы и загрузиться вновь.

3.2.11 Запустите программу на выполнение командой RUN или клавишей F5. При этом программа будет выполняться до тех пор, пока не будет остановлена нажатием клавиши  Esc..  Команда, на которой остановится программа,  будет случайным. При автоматическом выполнении программы содержимое выводимой на экран информации не изменяется и произошедшие изменения можно увидеть только после остановки выполнения программы.

  3.2.12 Для останова программы при автоматическом выполнении в любом нужном пользователю месте в ней могут быть установлены точки останова. При останове можно проконтролировать изменения переменных и содержимого регистров и памяти  после выполнения определенных команд. Установить точку останова в нужном месте программы можно, поместив на нее курсор и нажав левую кнопку мыши. При этом выбранная строка программы в окне DISSASEMBLE будет подсвечена. В программе может быть установлено много точек останова. Выполнение программы между точками останова происходит при выполнении команды RUN (или нажатии клавиши F5). Для снятия точки останова нужно снова установить курсор в нужном месте программы  и нажать левую кнопку мыши.

Установите в программе несколько точек останова в местах меток программы и проверьте правильность ее выполнения.

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

3.2.14 Измените содержимое ячеек памяти Х,Y,Z,X1,Y1,Z1,X2,Y2,Z2, занеся в них начальные значения.

3.2.15 Выполните первые 10 команд программы. Для этого наберите команду STEP 10. Проследите за изменением значений программного счетчика до и после выполнения команды STEP 10, а также ячеек памяти данных и затем вернитесь в начало программы с помощью команды RESTART.

3.2.16 Выполните часть программы с начала до метки L3,  набрав команду GO 0х0050 (где 0x0050 адрес команды, соответствующей метке L3), и проследите за произошедшими изменениями в окнах CPU, WATCH и MEMORY.

3.2.17 Вернитесь в начало программы командой RESTART.

3.2.18 При работе с программой симулятора можно измерить время выполнения программы в тактах (периодах) основной частоты работы процессора. Для этого необходимо  вывести  в окне WATCH значение регистра clk. Регистр clk правильно отражает время выполнения программы между двумя точками останова. Для измерения времени выполнения нужного фрагмента программы необходимо в начале и в конце этого фрагмента установить точки останова, выполнить программу до начала фрагмента (команда RUN) и затем выполнить команды программы до конца фрагмента (снова команда RUN).

Измерьте время выполнения основной части программы, учитывая, что цикл команды исследуемого процессора равен 50 нс.

Подобным образом можно проверять правильность выбора программы с точки зрения решения  поставленной задачи.

3.2.19 Выйдете из программы симулятора, набрав в командной строке QUIT.

По результатам лабораторной работы отчет не составляется. В конце работы проводится защита. При ответах на вопросы необходимо подтвердить навыки, полученные при работе с симулятором.

 

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

 

2.3.1 Поясните команды запуска программы на выполнение. Для чего может использоваться каждый из режимов запуска?

2.3.2 Поясните назначение основных регистров процессора и их место в памяти процессора.

2.3.3 Для чего используются точки останова при выполнении программы? Чем отличается пошаговый режим выполнения программ от других режимов? В каких форматах  могут быть представлены числа в окнах имитатора?

2.3.4 Как сохранить содержимое выбранной области памяти?

2.3.5 Как в окне MEMORY вывести информацию о содержимом ячеек памяти данных, начиная с адреса 0200?

2.3.6 Создайте окно просмотра WATCH  и выведите в нем информацию о содержимом ячейки Z2.

2.3.7 Проделайте операцию перемножения чисел 8  и 3. Выполните также эту  операцию, используя программу SIM.

2.3.8 Проделайте операцию сложения чисел  0FF и 9. Выполните также эту  операцию, используя программу SIM.

 

3       Лабораторная работа

 

Представление данных в процессорах с фиксированной запятой

 

Цель работы: изучение форматов представления целых, дробных, положительных и отрицательных чисел в цифровом процессоре обработки сигналов TMS320C50.

 

3.1   Краткая теоретическая справка

 

Система команд процессора с фиксированной запятой TMS320С5x ориентирована на обработку двоичных чисел, представленных в дополнительном коде, который позволяет представлять как положительные, так и отрицательные числа при знаковом старшем бите. 

При представлении чисел с фиксированной точкой в зависимости от ее положения используют целые или дробные числа. Максимальный диапазон представления целых чисел определяется количеством используемых разрядов при абсолютной погрешности, равной единице, а дробных – плюс-минус единица ( ± 1), абсолютная погрешность которых определяется количеством используемых разрядов в дробной части.

В 16-разрядных процессорах TMS320С5x шина данных 16-ти разрядная, а аккумулятор (АСС) - 32-х разрядный. Целочисленная арифметика позволяет представлять большие числа, но создает проблемы с сохранением результата в 16-ти разрядной ячейке памяти. При использовании дробной арифметики 32-х разрядный аккумулятор позволяет увеличить точность вычислений и уменьшить накопление ошибки. Для сохранения результата в 16-ти разрядной ячейке памяти используются старшие разряды аккумулятора. При этом потеря точности несущественна, так как младшие разряды аккумулятора содержат шум округлений.

На рисунке 3.1 показано соответствие исходных дробных чисел и двоичных чисел в процессоре в дополнительном коде.

Рисунок 3.1

 

Формат представления дробных чисел определяется как формат Q15 (15 –  число значащих разрядов справа от разделитель­ной точки). Промежуточные значения вычисляемых дробных величин на выходе умножителя и АЛУ могут быть представлены в других форматах, в частности, Q31 или Q30.

Чтобы записать исходное дробное число в формате Q15 процессора его необходимо умножить на 32768, отбросить дробную часть и перевести в 16-ричную систему (в дополнительном коде, если исходная дробь отрицательна). Ассемблер позволяет производить эти вычисления при выполнении трансляции программы.

Для перевода результата вычислений, произведенных в процессоре, из формата Q15 в обычный вид необходимо проделать обратные преобразования:

1)     Перевести число из 16-ричной системы в десятичную.

2)     Разделить полученное число на 32768.

Операции алгебраического сложения/вычитания чисел в дополнительном коде как беззнаковых чисел выполняются в АЛУ по правилам обычной двоичной арифметики.

Операция умножения выполняется в аппаратно реализованном специализированном узле — умножителе. Умножитель реализует алгоритм умножения двоичных чисел в дополнительном коде.

При умножении целых чисел результат содержится во всех 32 разрядах. Если необходимо ограничиться при умножении целых чисел одним словом (например, для запоминания в ячейке ЗУ), то умножать нужно числа, величина которых не превышает 28, и результат будет находиться в младшем слове регистра P.

При умножении дробных чисел в формате Q15 старшее слово 32- разрядного регистра P, в котором находится результат, является его округленным значением в формате Q14 (с двумя знаковыми разрядами) с отброшенными младшими значащими разрядами.

Таким образом, в зависимости от того, какие числа перемножаются, результат может находиться или в старшем, или в младшем слове регистра P.

Возможны два варианта решения ликвидации «лишних» знаковых разрядов:

1) сдвигом на один бит влево содержимого аккумулятора, если необходимо сохранить в памяти его старшее слово;

2)  путем сдвига содержимого регистра P влево.

Второй вариант сдвига можно осуществить сдвигателем P-регистра, который управляется 2-х разрядным регистром РМ, расположенным в регистре управления  ST1. Содержимое РМ можно менять командой SPM c указанием величины сдвига влево на 1 или 4 разряда или вправо на 6 разрядов. РМ устанавливается в 0 после общего сброса или командой SPM 0.

Если установить режим сдвига на 1 бит влево, то при сохранении в аккумуляторе содержимого Р- регистра формат представления чисел в аккумуляторе будет Q31 (при умножении чисел в формате Q15).

Режим расширения знака процессора определяется состоянием бита SXM (Sign Extension Mode), который расположен в регистре состояния процессора. Он показывает, использовать расширение знака или нет.

Установка бита выполняется командами:

SETC         SXM       ; SXM =1 - установка бита (АЛУ оперирует с числами в дополнительном коде).

CLRC SXM       ; SXM = 0 - сброс бита (АЛУ оперирует с беззнаковыми числами).

После общего сброса процессора бит SXM установлен в 1.

Двоичное представление дробных чисел в дополнительном коде имеет следующие особенности: если к (+1) в двоичном коде прибавить 1/32767, получится –1, т. е. число кардинально изменяется: вместо большого положительного становится большим отрицательным.

В процессоре TMS320C50 бит контроля переполнения OV (Overflow) располагается в регистре состояния и устанавливается в случае, когда величина в аккумуляторе переходит границу между большими положительными и отрицательными числами, а также в случае, если осуществлен перенос в 33-ий, несуществующий бит.

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

Режим работы с переполнением или без определяется значением бита OVM регистра состояния ST1. При значении 1 происходит работа в режиме с переполнением, при значении 0 — без переполнения.

Значение бита OVM, равное 0, может быть установлено командой ROVM или CLRC OVM, значение 1 — командой SOVM или SETC OVM.

Ниже приведен пример стандартной конфигурации регистров состояния процессора для организации процедуры его инициализации.

 

SETC        SXM    ; разрешить использовать дополнительный код

CLRC       OVM   ; разрешить переполнение

SPM          1          ; осуществить сдвиг на 1 бит влево при копировании

                              ; Р – регистра в аккумулятор

 

3.2   Порядок выполнения работы

 

3.2.1 Скопируйте в свою рабочую папку файлы:

-     sim5x.exe  - программа имитатора;

-     alias.bat     - файл с набором макрокоманд имитатора;

-     siminit.cmd – управляющий файл для имитатора;

-     lab3.asm   - исходный текст программы;

-      lab3.cmd – командный файл компоновки;

 

3.2.2 Выполните трансляцию и компоновку программы lab3.asm.

Для трансляции наберите в командной строке  команду:

dspa.exe      -lsc     lab3.asm

Для компоновки наберите в командной строке  команду:

dsplnk.exe           lab3.cmd

3.2.3      Запустите имитатор процессора, набрав  команду sim5x.exe 

При этом автоматически загрузится программа лабораторной работы lab3.out, файл с макрокомандами alias.bat и текстовый файл lab3.txt с указанием   некоторых команд, используемых в лабораторной работе.

3.2.4      Выполните работу, следуя указаниям, приведенным ниже.

Пункты указаний выделяются метками, одинаковыми с метками разделов программы, к которым данные пункты относятся. В тексте указаний частично повторяются команды программы. Изучение проводится на примере вычислений следующих выражений:

 

Y = (I*I) + (IL*IL) + (ILL*ILL) - для целых чисел,

= (A*B) + (C*D) + (E*F) – для дробных чисел.

 

Выражения вычисляются путем последовательного накопления входящих в них произведений. Перед переходом к выполнению работы необходимо выполнить вычисление точных значений выражений. Используемые значения коэффициентов приведены ниже в таблице TABLE. При использовании дробных чисел их значения нормируются к единице, которой соответствует величина 32768.

3.2.5      Размещение переменных и констант в памяти.

.bss   A,13

B                .set    A+1

C                .set    B+1

D                .set    C+1

E                 .set    D+1

F                 .set    E+1

X                .set    F+1

I                  .set    X+2

IL               .set    I+1

ILL             .set    IL+1

Y                .set    ILL+1

 

3.2.6      Таблица значений констант, размещенных в памяти программ

            *  32768 соответствует единице

 

TABLE       .word 32768*9/10, 32768*8/10, 32768*7/10; A=0.9, B=0.8, C=0.7

                   .word 32768*6/10, 32768*-1, 32768*4/10    ; D=0.6, E=-1.0, F=0.4

                   .word 32768*0,0,5,100                      ; X=0, XA=0, I=5, IL=100

                   .word 1000,0,0                                  ; ILL=1000, Y=0, Y+1=0

 

3.2.7      Перепись констант из памяти программ в память данных

.sect  "Vectors"

RESET       B       M1

        .text

M1:

*  Перепись констант из памяти программ в память данных в зарезервированное место

        LAR     AR1,#A

        MAR     *,AR1

LACC    #TABLE

        RPT     #12

        TBLR    *+

 

Наберите команду mem 0x200. Выполните команду Go INT. При этом должна быть выполнена часть программы до метки INT и  в памяти данных появятся переписанные константы из памяти программ.

3.2.8 Работа с целыми числами в младших разрядах аккумулятора. Вычисление выражения   Y = (I*I) + (IL*IL) + (ILL*ILL).

INT:

        LDP     #A    ;указатель страницы памяти на размещение A

        ZAC             ; (ACC)=0

        SACL    Y+1     ; сохранение младших разрядов ACC - ACCL

        LT      I

        MPY     I          ; (P)=I*I

        LTA     IL      ; (ACC)=I*I

        SACL    Y+1     ; сохранение ACCL

        MPY     IL        ; (P)=IL*IL

        LTA     ILL     ; (ACC)=I*I+IL*IL

        SACL    Y+1     ; сохранение  ACCL

        MPY     ILL      ; ILL*ILL

        APAC            ; (ACC)=(I*I)+(IL*IL)+(ILL*ILL)

        SACL    Y+1     ; сохранение младшего слова ACCL

        SACH    Y       ; сохранение старшего слова ACCH

 

Выполните фрагмент программы до метки FLOAT1 по шагам.

Сравните результаты вычисления всех частичных сумм и последнего результата с точными значениями, полученными при  ручном расчете. Обратите внимание, что ошибка появляется при переполнении младшего слова ACC после прибавления третьего произведения.

3.2.8      Работа с дробными числами. Вычисление выражения

                            X = (A*B) + (C*D) + (E*F).

1) Влияние опции режима переполнения OVM

а) Отсутствие сдвига результата вычисления при передаче его из ACC в ЗУ

 

FLOAT1:    

LDP     #A

       SPM     0       ; PM = 0

       CLRC  OVM     ; OVM = 0

       CALL    Q31 ; вызов п/программы вычисления X

FLOAT2:

       SETC  OVM     ; PM = 0, OVM = 1

       CALL    Q31 ; вызов п/программы вычисления X

 

* Подпрограмма вычисления X без свига на 1 разряд при передаче из ACC в ЗУ

Q31:

        ZAC

        SACH    X

        LT      A

        MPY     B

        LTA     C

        SACH    X

        MPY     D

        LTA     E

        SACH    X

        MPY     F

        APAC

        SACH    X

        RET

        .end

 

б) наличие сдвига результата вычисления при передаче его из ACC в ЗУ

FLOAT3:

        LDP     #A

        SPM     0       ; PM = 0

        CLRC OVM     ; OVM  0

        CALL    Q30          ; вызов п/программы вычисления X

FLOAT4:

        SETC OVM     ; PM = 0, OVM = 1

        CALL    Q30          ; вызов п/программы вычисления X

* Подпрограмма вычисления X со свигом на 1 разряд при передаче из ACC в ЗУ

 

Q30:

        ZAC             ; (ACC)=0

        SACH    X+1,1      ; сохранение старшего слова ACC со сдвигом на 1 разряд

        LT      A       ; (T)=A

        MPY     B     ; (P)=A*B

        LTA     C     ; (T)=C  (ACC)=A*B

        SACH    X,1 ; сохранение старшего слова ACC со сдвигом на 1 разряд

        MPY     D     ; (P)=C*D

        LTA     E      ; (T)=E   (ACC)=A*B+C*D

        SACH    X,1 ; сохранение старшего слова ACC со сдвигом на 1 разряд

        MPY     F     ; (P)=E*F

        APAC          ; (ACC)=A*B+C*D+E*F

        SACH    X,1 ; сохранение старшего слова ACC со сдвигом на 1 разряд

        RET

 

2) влияние опции РМ - сдвига результата умножения  при передаче из регистра P в АЛУ при отсутствии сдвига общего результата при передаче из ACC в ЗУ

FLOAT5:

        SPM     1       ; PM = 1

        CLRC OVM        ; OVM = 0

        CALL    Q31          ; вызов п/программы вычисления X

 

FLOAT6:

        SETC OVM   ; OVM = 1

        CALL    Q31          ; вызов п/программы вычисления X

 

Выполнить по шагам фрагменты программ до  метки SXM. Результаты выполнения команд процессора (результаты вычислений) занесите в таблицу. В неё заносятся значения всех частичных сумм и последнего результата в зависимости от опций и сдвига; сравните результаты с точными расчетами. Значения частичных сумм и последнего результата в десятичном виде можно просмотреть в окне Watch.

3) влияние опции режима расширения знака SXM на выполнение операций в младшем  слове ACC. При SXM=0 числа считаются беззнаковыми, при SXM=1 числа считаются знаковыми в дополнительном коде.

 

 * SXM=0

        CLRC SXM

        ZAC

        SUB     #5      ; (ACC)=0-5

        ZAC

        SUB     #(-5)   ; (ACC)=0-(-5)

        LACC    #(-5)        ; загрузка в ACC числа

        ADD     #6      ; (ACC)=-5+6

         LACC    #(-5)       ; загрузка в ACC числа

        SUB     #(-6)   ; (ACC)=-5-(-6)

*  SXM=1

        SETC SXM

        ZAC

        SUB     #5      ; (ACC)=0-5

        ZAC

        SUB     #(-5)   ; (ACC)=0-(-5)

*        LACK  #(-5)        ; загрузка в ACC числа

          LACC  #(-5)

 

        ADD     #6      ; (ACC)=-5+(6)

*        LACK    #(-5)      ; загрузка в ACC числа

            LACC      #(-5)

        SUB     #(-6)   ; (ACC)=-5-(-6)

HALT:

        NOP

 

 Таблица 3.1

 

PM

 

OVM

Сдвиг при записи в память

Промежуточные и последние результаты

Примечания

Точные

ACC

Память

0

0

0

0.72

1.14

0.74

 

 

 

0

1

0

 

 

 

 

0

0

1

 

 

 

 

0

1

1

 

 

 

 

1

0

0

 

 

 

 

1

1

0

 

 

 

 

 

Таблица 3.2

SXM

Операция

Результат

     0

 

 

  1

 

 

 

3.3  Содержание отчета

 

3.3.1 Текст программы с подробными комментариями.

3.3.2 Таблицы 3.1.и 3.2., содержащие состояния регистров PM, SXM, OVM и результаты работы программы.

3.3.3 Выводы по результатам сравнения точных значений, полученных при ручном расчете и значений, полученных в результате выполнения  программы.

 

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

 

3.4.1 Поясните последовательность перевода двоичного положительного числа в двоичное отрицательное число.

3.4.2 Поясните запись “короткого” числа в “длинный” регистр.

3.4.3 Переведите в двоичный код следующие числа: 3; -3; 30; -30; 100; 64; -65; -87.

3.4.4 Почему после выполнения умножения мы сохраняем старшее слово аккумулятора?

3.4.5 Зачем при сохранении старшего слова аккумулятора мы применяем сдвиг влево на 1 разряд?

3.4.6 Что означает “формат Q15”?

3.4.7 Чем определяется точность представления целых двоичных чисел?

3.4.8 Чем определяется точность представления дробных двоичных чисел?

3.4.9 Что произойдет, если к 1 в формате Q15 прибавить 1?

3.4.10 Что произойдет, если из 0 в формате Q15 вычесть 1?

  

4       Лабораторная работа

 

Реализация основных операций цифровой обработки сигналов на процессоре TMS320с5x, работающем в реальном времени

 

Цель работы: ознакомление с отладочной платой DSK и изучение ее работы для реализации на процессоре TMS320C50 основных операций цифровой обработки сигналов в реальном масштабе времени.

 

4.1  Краткая теоретическая справка

 

Для более успешного освоения работы цифрового сигнального процессора TMS320C50 фирма Texas Instruments выпустила плату Digital Starter Kit (DSK), которая является учебным инструментом при выполнения экспериментов с использованием процессора для обработки цифровых сигналов в реальном масштабе времени. Плата включает:

- процессор с фиксированной точкой TMS320C50;

- программируемое ПЗУ (PROM), объемом  32 Кб;

- интерфейс соединения с компьютером через порт RS232;

- аналоговый интерфейс на базе схемы АЦП/ЦАП TLC32040;

- интерфейс эмуляции.

Внутри кристалла процессора имеется оперативная память (ОЗУ), которая позволяет размещать по 10К памяти программ и данных. Схема АЦП/ЦАП  предназначена для аналогового ввода-вывода через микрофон, динамик или наушники и подключена к последовательному порту процессора. Опорная частота этой схемы задается таймером процессора и равна 10 Мгц,.

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

Графическая панель организована по оконному типу и дает возможность:

-     загружать исполняемые программы и просматривать их дизассемблерную версию в окне DISASSEBLY;

-     выполнять программы в пошаговом и автоматическом (непрерывном)  режимах, контролировать их выполнение, следя за изменениями, происходящими с содержимым регистров и областей памяти процессора;

-     задавать точки останова при непрерывном выполнении программы.

Основной операцией цифровой обработки сигналов является задержка сигнала на определенное количество отсчетов m (на время m / Fd, где Fd – частота дискретизации), которая встречается во всех алгоритмах цифровой фильтрации. Существуют два варианта её программной реализации:

1) Организуется массив памяти, в который записываются отсчёты, причем запись и считывание отсчётов осуществляется всё время по одним и тем же адресам, т.е. точки входа и выхода линии задержки ( Z-m ) остаются постоянными, а перемещаются (сдвигаются) данные между ячейками памяти, имитируя прохождение сигнала в реальной физической линии задержки.

2) Организуется массив памяти, в который записываются отсчеты, но при этом перемещаются точки входа и выхода линии задержки, т.е. циклически изменяются адреса записи и считывания в пределах выделенного массива. Такой массив называется циклическим буфером (ЦБ). При этом способе данные внутри памяти не перемещаются. Это существенно снижает требования к производительности процессора за счет ликвидации большого количества операций по перемещению данных.

При всех вариантах реализации линии задержки размер требуемой области памяти определяется количеством задерживаемых отсчетов, т.е. длиной линии задержки.

В TMS320C50 имеются механизмы аппаратной организации двух циклических буферов.  Использование циклических буферов, как отдельный вид адресации данных, рассмотрено в лабораторной работе №5.

Приведем пример реализации цифровой цепи, содержащей только линию задержки, структурная схема которой приведена на рисунке 4.1.

 

 

Рисунок 4.1

 

Уравнение вход-выход этой цепи имеет следующий вид:

 

.

 

Ниже приведена программа, реализующая структурную схему, представленную на рисунке 4.1.

 

; Программа        LAB6_1.ASM

                   .version 50

                   .mmregs

LENGTH   .set    5                                    ;определение длины буфера

                    sect   "BUFFER"

BUFFER    .space  LENGTH*5            ; резервирование места для циклического буфера

               .data

ONE           .word   07FFFh

X                 word   0

Y                .word   0

                   .text

* организация буфера

       LDP      #0

                   SPLK    #BUFFER,CBSR1                            ;начальный адрес буфера

                   SPLK    #(BUFFER+LENGTH-1),CBER1    ;конечный адрес буфера

                   LAR     AR1,#BUFFER                                  ;указатель буфера

                   SPLK    00001001b,CBCR                             ;разрешение буфера

                   MAR     *,AR1                           ;установка текущего вспомогательного регистра

* очистка буфера

               ZAP

                RPT        #(LENGTH-1)

                   SACL    *+

* формирование начального значения сигнала в ячейке X

               LDP     #X

               LACC    ONE

               SACL    X

* линия задержки

BEGIN       LACC    *                                                        ;чтение выходного сигнала

               SACL    Y                                                        ;запись выходного сигнала

               LACC    X                                                          ;чтение входного сигнала

               SACL    *+                                         ; запись входного сигнала в линию задержки

* изменение сигнала

                      ROR                 ; уменьшение сигнала в 2 раза путем сдвига вправо

       SACL    X              ; сохранение нового значения входного сигнала

       ZAP             ; обнуление ACC

               B       BEGIN

                  .end

 

Линия задержки организована следующим образом. Адрес считывания выходного сигнала линии и адрес записи входного сигнала один и тот же на каждом  периоде обращения к линии. Из  ячейки линии сначала производится считывание выходного сигнала, и так как это значение больше не потребуется, затем в эту же ячейку производится запись   очередного входного отсчета. Считывание этого отсчета будет  произведено через m (length) периодов обращения к линии, т.е. с задержкой на время  m / Fd . После записи входного отсчета производится модификация адреса.

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

При реализации алгоритмов ЦОС, возникает проблема масштабирования сигнала, так как возможны ошибки, связанные с переполнением, например, при сложении (результат сложения превышает 1).

Для ослабления уровня входных отсчетов цифровой цепи их нужно умножить на коэффициент масштабирования, который определяется как величина, обратная максимуму АЧХ этой цепи. Например, если масштабный множитель с именем GAIN = 0,5, то  в программе  он указывается как 16-ричное число 0,5∙32768 = 4000h.

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

.

Уравнение, описывающее сложение прямого и задержанного сигналов , имеет вид:

,

где length - длина линии задержки, выраженная в количестве отсчетов, на которое задерживается сигнал. 

Рассмотрим пример реализации цепи, содержащей линию задержки, два умножителя и сумматор, тогда уравнение вход-выход цепи имеет вид:

.

Структурная схема такой цепи приведена на рисунке 4.2. В данном примере реализуется сложение входного отсчета, умноженного на весовой коэффициент g0,  с отсчетом, задержанным на length тактов и умноженным на весовой коэффициент g1.

 

 

Рисунок 4.2

 

Программа, реализующая структурную схему на рисунке 4.2, приведена ниже:

 

; Программа lab6_3.asm

                   .version        50

                   .mmregs

LENGTH    .set            7000

                   .data

* задание параметров для схемы АЦП/ЦАП

TA              .word   18

RA              .word   18

TB              .word   36           

RB              .word   36           

AIC_CTR   .word   29h

FLAG         .word   0

* резервирование места для циклического буфера (линии задержки)

                   .sect           "BUFFER"

                   .bss            BUFFER,LENGTH

* начальные присваивания значений констант и переменных

X                          .word           0

Y                          .word           0

G0                        .word           32768*34/100   ; 02B85h

G1                        .word           32768*125/1000  ; 01000h

                   .include        "init.asm"   ; включение файла настойки АЦП/ЦАП

BEGIN:

* настройка режимов

                     LDP     #0

                     CLRC    OVM

                     SPM     0

                      SPLK    #12h,IMR

* очистка линии задержки

                       LAR     AR1,#BUFFER

                       LAR     AR2,#(LENGTH-1)

                       MAR     *,AR1

                       ZAP

                       CLEAR   SACL    *+,AR2

                       BANZ    CLEAR,*-,AR1

                       CLRC    INTM

* организация циклического буфера

                       SPLK    #BUFFER,CBSR1

                       SPLK    #(BUFFER+LENGTH-1),CBER1

                       LAR     AR1,#BUFFER

                       SPLK    00001001,CBCR

                       MAR     *,AR1

                       LDP     #FLAG

                       BEG:    BIT     FLAG,15     ; ожидание прерывания от АЦП

                       BCND    BEG,NTC

                       XPL     #1,FLAG                ; изменение признака прихода прерывания

* основная программа

                       LDP     #X

                       ZAP                          ; очистка ACC и регистра P

                       LT      X                    ; загрузить Х в Т-регистр

                       MPY     G0                ; реализация X(n)*G0

                       APAC                       ; (ACC)+X(n)*G0

                       LT      *                     ; загрузка в Т сигнала с выхода линии

                       MPY     G1                ; реализация X(n-m)*G1

                       APAC                       ; Y(n)=X(n)*G0+X(n-m)*G1

                       SACH    Y,1                       ; сохранение выходного сигнала в Y

                       ZAP                          ; обнуление ACC

                       LACC    X,14                      ; загрузка в ACC сигнала X

                       SACH    *+,1                      ; запись в линию задержки

                        B       BEG                ; переход к ожиданию следующего отсчета

 

* подпрограмма обработки прерывания приемника

RECEIVE:

                        LAMM    DRR

                        LDP     #X

                        SACL    X

                        LACC    Y

                        AND     #0FFFCh

                        SAMM    DXR

                        LDP     #FLAG

                        XPL     #1,FLAG

                        RETE

                         .end

 

В программу с помощью директивы .include включается файл init.asm, который содержит команды настройки схемы АЦП/ЦАП. Программа предназначена для использования в реальном масштабе времени.

 

4.2   Порядок выполнения работы

 

4.3.1 Ознакомиться и подробно прокомментировать в письменном виде тексты программ LAB6_1.ASM и LAB6_3.ASM.

4.3.2 Модифицировать исходный текст программы LAB6_3.ASM в соответствии со своим вариантом задания. Варианты задания приведены в таблице 4.1.

       

Таблица 4.2

Номер варианта

m

G0

G1

1

40

0,5

0,25

2

97

0,25

0,5

3

63

0,125

0,5

продолжение таблицы 4.2

4

58

0,25

0,25

5

75

0,5

0,5

6

68

0,25

0,125

7

93

0,125

0,5

8

79

0,5

0,125

9

65

0,25

0,5

10

84

0,125

0,25

 

4.3.3 Создать свой рабочий каталог Lab_6 и скопировать в него файлы транслятора и компоновщика dspa.exe и dsplnk.exe, а также файлы lab6_1.asm, lab6_1.cmd (рабочие программы) и dsk5d.exe (программа – отладчик платы ).

4.3.4 Произвести трансляцию и компоновку  программы Lab6_1.asm.

4.3.5 Включить питание платы и загрузить в неё  программу dsk5d.exe.

4.3.6 В программе - отладчике загрузить программу Lab6_1.out  (команды L C , имя файла).

4.3.7                        Установить в окне MEMORY начальный адрес 300h для наблюдения за изменением содержимого кольцевого буфера входного и выходного сигнала (команды D  M   A   300).

4.3.8      Установить точку останова выполнения программы по адресу 0a16h (команды B   A   a16  номер точки останова 0).

4.3.9 Запустить программу на выполнение таким образом, чтобы после каждого периода выполнения (обращения к линии задержки) программа останавливалась на введенной точке останова (клавиша F5).

4.3.10 При каждой остановке особое внимание следует обратить на изменение входного сигнала (адрес 306h), выходного сигнала (адрес 307h), изменение данных внутри линии задержки. Для реализации линии задержки используются ячейки буфера. Они должны последовательно заполняться сигналом, первое значение которого сначала 1 (7FFFh), а затем уменьшается в два раза при каждом шаге.  Обратите также внимание на изменение указателя адреса AR1, т.е. изменение адреса входа и выхода линии задержки. Выходной сигнал, отличный от 0.  появится только после заполнения линии задержки, т.е. через 5 периодов. Это и есть величина задержки.

4.3.11 Изменить в исходном тексте программы величину задержки и повторить эксперимент.

4.3.12 Скопировать в свой рабочий каталог Lab_6 файлы lab6_3.asm, lab6_3.cmd (рабочие программы) и dsk5L.exe (программа –загрузчик  платы ).

4.3.13 Внести в текст программы изменения в соответствии со своим вариантом задания и произвести трансляцию и компоновку  программы lab6_3.asm.

4.3.14 Для прослушивания прямого и задержанного сигнала выход платы (OUT) подключить к линейному входу звуковой карты компьютера (вход синего цвета). К входу зеленого цвета подключить наушники (белый провод) или динамик. К входу платы (IN) подключить кабель с оголенным концом.  Имитацией входного сигнала будет «треск», появляющийся в наушниках при прикосновении к оголенной части провода.

4.3.15 Включить питание платы и загрузить в неё выполняемую программу lab6_3.out., для чего в командной строке DOS набрать команду:

dsk5l.exe     lab6_3.out

Программа dsk5l.exe     загружает в плату   программу lab6_3.out     и автоматически запускает её на выполнение, о чем появляется сообщение на экране. Остановка выполнения программы производится клавишей ESC.

4.3.16  Прослушать в наушниках прохождение прямого и задержанного сигналов (задержка входного сигнала). Для более четкой фиксации задержки нужно в программе увеличить длину линии задержки, чтобы ее приращение было порядка 1000, и снова запустить программу на выполнение. Убедиться в эффекте «ЭХО».

 

4.4  Содержание отчета

 

4.4.1 Результаты работы программ.

4.4.2 Выводы по результатам.

 

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

 

4.5.1 Какие способы организации линии задержки существуют, в чем их принципиальное отличие?

4.5.2     Поясните принцип организации линии задержки на сигнальном процессоре TMS320C50.

4.5.3     Как задать циклический буфер?

4.5.4     Как реализуется операция уменьшения уровня сигнала?

4.5.5     Как реализуется операция увеличения сигнала?

4.5.6     Приведите фрагмент программы, реализующей уравнение .

4.5.7     Приведите фрагмент программы, реализующей уравнение .

4.5.8     Приведите фрагмент программы, реализующей уравнение .

4.5.9     Приведите фрагмент программы, реализующей уравнение .

 

 

Список литературы 

1. Солонина А.И., Улахович Д.А., Яковлев Л.А. Алгоритмы и процессоры цифровой обработки сигналов – СПб.: БХВ - Петербург, 2001. - 464 с.

2. Лэй Э. Цифровая обработка сигналов для инженеров и технических специалистов: практическое руководство. – М.: ООО «Группа ИДТ», 2007. – 336 с.

3. Айфичер Эммануил, Джервис Барри. Цифровая обработка сигналов: практический подход. - М.: Издательский дом «Вильямс», 2004.- 992 с.

4.Бойко В.И., Гуржий А.Н. и др. Схемотехника электронных систем. Микропроцессоры и микроконтроллеры. – СПб.: БХВ – Петербург, 2004. – 464 с.

5. Гольденберг Л.М. и др. Цифровые устройства и микропроцессорные системы. Задачи и упражнения: учебное пособие.- М.: Радио и связь,  1992.-256 с.

6. Петрищенко С.Н. Конспект лекций для магистрантов по специальности 5М0719 – Радиотехника, электроника и телекоммуникации. – Алматы:АИЭС, 2009. – 36 с.

7.Солонина А.И., Улахович Д.А., Арбузов С.М. и др. Основы цифровой обработки сигналов: курс лекций. – СПб.: БХВ - Петербург, 2005. - 768 с.

 

Содержание 

1 Лабораторная работа  

3

2  Лабораторная работа

11

3 Лабораторная работа

19

4 Лабораторная работа  

27

Список литературы 

36

 

                                                            Сводный план 2011 г., поз 200.