Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Пример проблемного кода при организации цикла по арифметическому условию

Фурье-преобразование сигнала | Формирование пакетов данных | Оценка необходимой разрядности | Критерии выбора языка программирования и средств разработки ПО | Оптимизация по результатам профилирования. | Операции с битами системных регистров для Core Processor | Регистры флагов | Цепочечные DMA-пересылки в ADSP-2106x | Организация взаимодействия между процессорным ядром и портами при вводе/выводе данных. | Структура и принципы функционирования последовательных портов в ADSP-2106x. Форматы данных, передаваемых через последовательные порты ADSP-2106x. |


Читайте также:
  1. Boot (англ. загрузка. Пример: основной загрузочный сектор) -вирусы
  2. D.1. Примеры уязвимостей
  3. I. ОБЩИЕ ПОЛОЖЕНИЯ. ОСОБЕННОСТИ ОРГАНИЗАЦИИ ОБРАЗОВАТЕЛЬНОГО ПРОЦЕССА
  4. I. ОБЩИЕ ПРАВИЛА, ПРИМЕНЯЕМЫЕ К МОТОЦИКЛАМ УЧАСТНИКОВ СОРЕВНОВАНИЯ.
  5. III. После этого раненую конечность лучше всего зафиксировать, например, подвесив на косынке или при помощи шин, что является третьим принципом оказания помощи при ранениях.
  6. Quot;Правило четырех недель " и его связь с рыночными циклами
  7. SWOT- анализ на примере ветеринарной аптечной сети.

0x100: R1 = 2; R5 = 6;

0x101: DO EndLoop UNTIL EQ;

0x102: R5 = R5 + 1;

0x103: EndLoop: R1 = R1 - 1;

0x104:...

В данном случае имеется 2 инструкции, которые относятся к одному вычислительному блоку – АЛУ, соответственно меняют его флаги. В итоге получится следующая ситуация: На второй итерации в начале такта при выполнении 103 инструкции проверяется флаг AZ – он не установлен (операции с нулевым результатом не было). Принимаем решение об еще одной итерации. Далее вычитаем из R1 единицу, получаем R1 = 0, устанавливается флаг AZ = 1. После этого выполняется еще одна итерация и 102 инструкция сбрасывает флаг AZ, так как ее результат ненулевой. Далее принимаем решение идти на еще одну итерацию, так как AZ не установлен. R1 будет равен теперь -1. Больше AZ установиться не сможет, и мы получаем бесконечный цикл.

Бороться с такой ситуацией можно, используя явную проверку условия выхода из цикла с помощью IF и jump на инструкцию за циклом. Причем jump нужно использовать с флагом la (loop abort). Это позволяет не только попасть на инструкцию вне цикла, но и корректно завершить цикл, т.е. вытолкнуть все необходимые значения из стеков.

 

20. Кэш инструкций. Структура и функционирование. Возможности управления обновлением кэша. Примеры повышения/понижения эффективности выполнения кода с учетом работы кэша.

 

Кэш инструкций – ассоциативный кэш с местом для хранения 32-х инструкций, «прозрачный» для программиста. Процессор кэширует только те инструкции, выборка которых из PM-памяти конфликтует с обращением к данным в PM:

PC => 0x101: R1 = R2 + R3, R2 = PM(I8,M9);

Decode => 0x102: R4 = 0;

Fetch => 0x103: R5 = R2*R4;

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

Кэш имеет 32 элемента(размер 32 слова). Элемент состоит из пары регистров, содержащих команду и ее адрес. Каждый элемент имеет бит «истинности», который установлен, если элемент содержит истинную команду.

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

Элементы разделены на 16 наборов (пронумерованных от 0 до 15), содержащих по два элемента каждый – элемент 0 и элемент 1. Каждый набор имеет бит LRU (LRU – Least Recently Used), значение которого указывает, какой из двух элементов содержит последнюю из недавно используемых команд (1=элемент 1, 0=элемент 0).

Выбор набора осуществляется по младшим 4 битам адреса инструкции. В поле Address хранятся только старшие 20 битов адреса инструкции. Бит LRU (Least Recently Used) – показывает более редко используемую инструкции в наборе (кандидат на замещение новой инструкцией). Бит Valid Bit показывает наличие реальных данных в каждой строке набора. Кэш может быть заморожен (бит CAFRZ в регистре MODE1) или выключен (бит CADIS в регистре MODE1).

Адрес любой возможной команды отображается в один из наборов в кэше, используя 4 младших бита адреса в качестве номера набора. Когда процессору необходимо выбрать команду из кэша, он использует 4 младших бита адреса как индекс определенного набора. Внутри этого набора он проверяет адреса двух элементов на наличие необходимой команды. Если команда обнаружена, происходит удачное обращение к кэшу. Бит LRU обновляется, если необходимо обозначить элемент, который не содержит необходимую команду. Если ни один элемент в наборе не содержит необходимой команды, происходит неудачное обращение к кэшу. В этом случае новая команда и ее адрес загружаются в последний из недавно использованных элементов набора, адрес которого определяется 4 младшими битами адреса. Бит LRU переключается для того, чтобы указать, что сейчас другой элемент в наборе является последним недавно использованным. Поскольку команды отображаются в набор с использованием 4 младших бит их адреса, нет необходимости хранить эти биты в кэше; 4 младших бита являются номером набора, в котором команда была сохранена. Фактически в элементе кэша хранятся только биты 23-4.

0x0100: LCNTR=1024, DO tight UNTIL LCE;

0x0101: R0=DM(I0,M0), PM(I9,M9);

0x0102: R1 = R0-R15;

0x0103: IF EQ CALL sub;

0x0104: F2 = FLOAT R1;

0x0105: F3 = F2 * F2;

0x0106: tight: F3 = F3 + F4;

...

0x0200: sub: R1 = R13;

0x0201: R14 = PM(I9,M9);

0x0202: R6 = R6 + 1;

0x0203: R7 = PASS R12;

...

0x0211: PM(I9,M9) = R12;

0x0212: R4 = R4-1;

0x0213: R7 = R5+R6;

...

0x021F: rts;

Три инструкции, выполняющие обращение к PM-памяти и вызывающие конфликт доступа к памяти. Кэшируемые инструкции (0xYYY3), попадают в один набор (№ 3) кэша, что приводит к постоянному замещению самой «старой» инструкции на новую. Как следствие – кэш неэффективен.

Решение – сдвинуть сегменты в памяти друг относительно друга, чтобы «проблемные» инструкции приходились на разные наборы кэша.

Фиксация кэша запрещает любые изменения его содержимого – неудачное обращение к кэшу не будет приводить к сохранению в кэше новой команды. Отключение кэша полностью останавливает его работу; все выборки команды, вызывающие конфликт с обращением к данным памяти программы, задерживаются. Эти функции управляются битами CADIS (кэш включен/выключен) и CAFRZ (фиксация кэша) в регистре MODE2:

Бит MODE2 Имя Функция

4 CADIS Отключение кэша

19 CAFRZ Фиксация кэша

После сброса кэш обнулен, не содержит никаких команд, не зафиксирован и включен.

21. Обработка прерываний: общая последовательность действий. Таблица прерываний. Маскирование прерываний. Регистры, программного секвенсора, используемые при обработке прерываний.

Общая последовательность действий

Вызов обработчика прерываний Программным секвенсором

1. Распознавание и защелкивание сигнала прерывания

2. Вычисление адреса обработчика прерывания

3. Помещение адреса возврата в стек PC Stack

4. Помещение в стек состояния значений регистров ASTAT и MODE1 (для внешних прерываний, прерываний от таймера и VIRPT)

5. Переход на обработчик прерывания

6. Изменение состояния регистра IMASKP

Возврат из обработчика прерываний

1. Выталкивание из стека PC Stack адреса возврата

2. Выталкивание из стека состояния значений в регистры ASTAT и MODE1 (для внешних прерываний, прерываний от таймера и VIRPT)

3. Переход на адрес возврата

4. Изменение состояния регистра IMASKP

Таблица прерываний

Каждый вектор прерывания отделен 8 ячейками памяти. Адреса в таблице представляют собой смещения относительно базового адреса. Для таблицы векторов прерываний во внутренней

памяти базовый адрес – 0x0002 0000; для таблицы векторов прерываний во внешней памяти базовый адрес – 0x0040 0000.

Таблица векторов прерываний может размещаться во внутренней памяти по адресу 0x0002 0000 (начало блока 0) или во внешней памяти по адресу 0x0040 0000. Если внутренняя память ADSP_2106x загружается из внешнего источника, то таблица векторов прерываний будет расположена во внутренней памяти. Однако если ADSP_2106x не загружается (используется память вне кристалла), то таблица векторов должна размещаться во внешней памяти.

Маскирование прерываний

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

Маскирование прерываний задается битами в регистре IMASK. Биты в IMASK точно соответствуют битам регистра IRPTL. Например, бит 10 в IMASK маскирует или разрешает то же самое прерывание, которое фиксируется битом 10 в IRPTL.

Если бит в IMASK установлен в 1, то прерывание не маскировано.

Если бит установлен в 0, прерывание маскировано.

После сброса процессора все прерывания, кроме прерывания сброса и прерывания EP0I для 6 канала DMA внешнего порта (бит 16 в регистре IMASK), маскированы. Прерывание сброса всегда немаскировано. Прерывание EP0I автоматически демаскируется после сброса, если ADSP_2106x загружается из EPROM или из хост_процессора.

Регистры, программного секвенсора, используемые при обработке прерываний

Регистры прерываний

IRPTL – регистр защелкивания прерываний. Содержит «1» в битах, соответствующих тем прерываниям, которые уже произошли, но еще не были обработаны (не вызван обработчик). Во время обработки прерывания соответствующий ему бит в IRTPL в конце каждого такта сбрасывается в «0», т.е. повторно прерывание не может быть защелкнуто (исключение – использование JUMP (CI)).

IMASK – регистр маски прерываний («1» – вызов обработчика прерывания разрешен, «0» - вызов обработчика прерывания запрещен). По умолчанию все прерывания, кроме прерывания сброса, запрещены.

IMASKP – регистр «указателя временной маски прерываний». Используется для отображения вызванных обработчиков прерываний.

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

Управление прерываниями

Бит IRPTEN (регистр MODE1) – глобальное разрешение прерываний.

Бит NESTM (регистр MODE1) – разрешение/запрещение режима вложенности прерываний.

 

 

22. Отличия работы процессора при разрешенных и запрещенных вложенных прерываниях.

Запрет вложенных прерываний

Режим запрета вложенных прерываний (бит NESTM=0)

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

В регистре IMASKP не может быть установлено одновременно более двух битов.

Возможность вызова обработчика конкретного прерывания определяется значением соответствующего бита в регистре IMASK.

Разрешение вложенных прерываний

Режим разрешения вложенных прерываний (бит NESTM=1)

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

В регистре IMASKP может быть установлено одновременно несколько битов, каждый из которых соответствует вызванному, но не завершенному обработчику. Бит с наивысшим приоритетом в IMASKP соответствует активному обработчику, остальные – приостановленным обработчикам.

Возможность вызова обработчика конкретного прерывания определяется путем формирования временной маски прерывания по значениям регистров IMASK и IMASKP по следующему правилу: из регистра IMASK во временную маску копируются разряды, начиная с № 0 и заканчивая тем разрядом, в котором находится самая старшая «1» в регистре IMASKP. Остальные разряды временной маски (в т.ч. тот, в котором в IMASKP стоит самая старшая «1») сбрасываются в «0».

Принудительный выход из обработчика прерывания

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

...

JUMP (PC, 3), (DB, CI);

...

...

...

RTS (LR);

Команда JUMP (CI) сбрасывает соответствующие биты в регистрах IRPTL и IMASKP, выталкивает верхнее слово из стека статуса и превращает обработчик прерывания в обычную подпрограмму.

Выход из такого «обработчика-подпрограммы» осуществляется командой RTS (рекомендуется использовать модификатор (LR), т.к. вызов обработчика мог произойти внутри тела цикла).

23. Организация работы с таймером. Программные прерывания. Внешние прерывания.

Организация работы с таймером

Процессоры семейства ADSP-21000 имеют программируемый интервальный таймер, который может генерировать периодические прерывания. Программируется таймер записью в два универсальных 32-разрядных регистра: TPERIOD (регистр периода) и TCOUNT (регистр счетчика). Таймер декрементирует TCOUNT в каждом тактовом цикле. Когда значение TCOUNT становится нулевым, таймер генерирует два прерывания таймера (высокого и низкого приоритета) и автоматически перезагружает TCOUNT значением из TPERIOD.

Содержимое регистра TPERIOD задает частоту прерываний от таймера: количество циклов между прерываниями равно TPERIOD+1.

Запуск и останов таймера осуществляется управлением битом TIMEN в регистре MODE2: если TIMEN=1, то таймер включен, иначе – выключен. Перед включением таймера необходимо инициализировать оба регистра TPERIOD и TCOUNT.

 

Обработка внешних и программных прерываний

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

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

Режим чувствительности для каждого входа IRQ3-0 определяется соответствующим битом в регистре MODE2.

Инициирование программного (пользовательского) прерывания выполняется установкой одного из битов 24-31 в регистре IRPTL. ADSP-21000 обслуживает это прерывание аналогично другим видам прерываний.

Программные прерывания

Процессор ADSP2106x поддерживает программные прерывания, которые эмулируют выполнение прерывания, но активизируются программой, а не аппаратурой. При установке одного из битов 2831 в регистре IRPTL либо по команде BIT SET, либо путем записи в IRPTL генерируется программное прерывание. Процессор переходит к соответствующей программе обработки прерывания, если это прерывание не маскировано и все прерывания разрешены.

 

24. Понятие и назначение DMA-пересылок в ADSP-2106x. Направления пересылок. Каналы DMA. Принципы функционирования DMA-контроллера ADSP-2106x. Генерация прерываний DMA-контроллером.

Понятие и назначение DMA-пересылок в ADSP-2106x

Механизм прямого доступа к памяти (Direct Memory Access, DMA) обеспечивает передачу целых блоков данных между внешними устройствами, внешней памятью, последовательными или линк-портами ADSP-21060 и внутренней памятью. DMA-контроллер освобождает процессорное ядро от выполнения операций по пересылке данных и функционирует параллельно и независимо от него.

 

Направления пересылок

DMA-контроллер может выполнять следующие виды обмена данными:

- внутренняя память ↔ внешняя память или отображаемое во внешнюю память периферийное устройство;

- внутренняя память ↔ внутренняя память другого ADSP-2106x;

- внутренняя память ↔ хост-процессор;

- внутренняя память ↔ последовательный порт ввода/вывода;

- внутренняя память ↔ линк-порт ввода/вывода;

- внешняя память ↔ внешнее периферийное устройство.

 

Каналы DMA

В ADSP-21060 имеются 10 DMA-каналов, с каждым из которых связан собственный буфер данных. Шина для передачи данных одна, а каналов 10, поэтому работает схема приоритетов. Самый приоритетный канал – 0, менее приоритетный – 9.

Номер DMA-канала Буфер данных Описание
  RX0 Последовательный порт SPORT0, прием
  RX1 (или LBUF0) Последовательный порт SPORT1, прием (или линк-буфер № 0)
  TX0 Последовательный порт SPORT0, передача
  TX1 (или LBUF1) Последовательный порт SPORT1, передача (или линк-буфер № 1)
  LBUF2 Линк-буфер № 2
  LBUF3 Линк-буфер № 3
  EPB0 (или LBUF4) FIFO-буфер № 0 внешнего порта (или линк-буфер № 4)
  EPB1 (или LBUF5) FIFO-буфер № 1 внешнего порта (или линк-буфер № 5)
  EPB2 FIFO-буфер № 2 внешнего порта
  EPB3 FIFO-буфер № 3 внешнего порта

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

В последовательном порте есть 2 независимые аппаратные части, одна нацелена жестко на прием, другая – на передачу. Поэтому существует 2 буферных регистра – один, связанный с приемом rx (read), второй с передачей – tx (transmit). Пересылку данных через последовательный порт невозможно приостановить, это связанно с тем, что АЦП выдает отсчеты через равные промежутки времени, и, если мы не успеваем обработать отсчет, и поступает новый, вновь поступивший затирает старый отсчет и происходит потеря данных, что недопустимо. Поэтому приоритет каналов, работающих с последовательными ортами, наиболее высокий.

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

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

Замечание! На данном этапе примем, что линк-порты и линк-буферы - это одно и то же, но на самом деле это не так. Все подробности в вопросе о линк портах (29).

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

Принципы функционирования DMA-контроллера ADSP-2106x.

Основное назначение DMA-контроллера – выполнение двух типов пересылок: пересылки блоков данных через внешний порт и пересылки блоков данных через порты ввода/вывода (т.е. линк-порты и последовательные порты).

Обмен блоками данных через внешний порт заключается в пересылке данных между внутренней и внешней памятью. В регистры управления соответствующим каналом DMA-контроллера заносятся адреса буферов во внутренней и внешней памяти, их размеры и величина инкремента адреса (по аналогии с генераторами адреса данных DAGx), а также направление передачи данных. DMA-пересылка начинается автоматически после разрешения канала и продолжается до тех пор, пока не будет передан или принят весь буфер данных.

При DMA-пересылках через порты ввода/вывода передаются данные, которые поступают в ADSP или которые необходимо передать вовне через последовательные или линк-порты. При этом задаются адрес и размеры буфера во внутренней памяти, а также величина инкремента адреса. Направление пересылки определяется направлением передачи данных самого порта ввода/вывода. Когда данные принимаются в порт, они автоматически передаются во внутреннюю память, а когда они должны передаваться через порт – автоматически выбираются из внутренней памяти.

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

Внешние устройства могут участвовать в DMA-пересылках двумя способами: записывать или читать какой-либо DMA-буфер или выставлять сигнал с запросом DMA (DMARx) и ожидать обработки.

 

Генерация прерываний DMA-контроллером.

Каждый из внешних портов, последовательных и линк-портов имеет в своем главном регистре управления бит разрешения DMA (DEN). Если DMA-канал порта включен и разрешен, данные, получаемые этим портом, автоматически передаются во внутреннюю память, а передаваемые – выбираются из внутренней памяти и помещаются в буфер данных порта. По завершении DMA-пересылки блока данных (при достижении счетчиком соответствующего DMA-канала значения 0) может быть сгенерировано прерывание. DMA-прерывания, как и все остальные прерывания, защелкиваются и маскируются в регистрах процессорного ядра IRPTL и IMASK.

 

25. Регистры параметров, управления и статуса DMA-пересылок в ADSP-2106x. Приоритеты каналов DMA. Схемы изменения приоритетов. Возможности контроля хода выполнения DMA-пересылок процессорным ядром. Флаги состояния DMA-пересылок (буферов портов).

Регистры параметров, управления и статуса DMA-пересылок в ADSP-2106x

 

Регистры параметров

Регистры, управляющие работой и конфигурацией DMA-операций, являются частью отображаемого в память набора регистров процессора ввода/вывода, доступ к которым осуществляется путем чтения или записи соответствующих адресов памяти. Для того, чтобы прочитать значение регистра - надо прочитать внутреннюю память по определенному адресу. С каждым регистром связан определенный адрес памяти. Записывать по тому же адресу. В заголовочном файле прописаны все константы с адресами, соответствующими именам регисторов. Полный перечень регистров управления DMA-пересылками приведен в табл. 1.

Таблица 1

Имя регистра Кол-во битов Назначение
EPB0, EPB1, EPB2, EPB3   Внешние FIFO-буферы 0...3
DMAC6   Регистр управления DMA-канала № 6 (буфер № 0 внешнего порта или линк-буфер № 4)
DMAC7   Регистр управления DMA-канала № 7 (буфер № 1 внешнего порта или линк-буфер № 5)
DMAC8   Регистр управления DMA-канала № 6 (буфер № 2 внешнего порта)
DMAC9   Регистр управления DMA-канала № 6 (буфер № 3 внешнего порта)
DMASTAT   Регистр статуса каналов DMA
II0, IM0, C0, CP0, GP0, DB0, DA0 16-18 Регистры параметров DMA-канала № 0 (прием через последовательный порт SPORT0)
II1, IM1, C1, CP1, GP1, DB1, DA1 16-18 Регистры параметров DMA-канала № 1 (прием через последовательный порт SPORT1 или линк-буфер № 0)
II2, IM2, C2, CP2, GP2, DB2, DA2 16-18 Регистры параметров DMA-канала № 2 (передача через последовательный порт SPORT0)
II3, IM3, C3, CP3, GP3, DB3, DA3 16-18 Регистры параметров DMA-канала № 3 (передача через последовательный порт SPORT1 или линк-буфер № 1)
II4, IM4, C3, CP4, GP4, DB4, DA4 16-18 Регистры параметров DMA-канала № 4 (линк-буфер № 2)
II5, IM5, C5, CP5, GP5, DB5, DA5 16-18 Регистры параметров DMA-канала № 5 (линк-буфер № 3)
II6, IM6, C6, CP6, GP6, EI6, EM6, EC6 16-32 Регистры параметров DMA-канала № 6 (буфер внешнего порта № 0 или линк-буфер № 4)
II7, IM7, C7, CP7, GP7, EI7, EM7, EC7 16-32 Регистры параметров DMA-канала № 7 (буфер внешнего порта № 1 или линк-буфер № 5)
II8, IM8, C8, CP8, GP8, EI8, EM8, EC8 16-32 Регистры параметров DMA-канала № 8 (буфер внешнего порта № 2)
II9, IM9, C9, CP9, GP9, EI9, EM9, EC9 16-32 Регистры параметров DMA-канала № 9 (буфер внешнего порта № 3)

Регистры параметров DMA-пересылки начинатся с 7 строчки. Они характеризуются буквой типа самого регистра и номером канала DMA-пересылки. Для всех каналов один из главных параметров - адрес массива во внутренней памяти, с которым необходимо взаимодействовать (читать или писать) - это регистр II. IM - регистр модификатора. С - регистр счетчика, определяет сколько пересылок нужно сделать до завершения текущей DMA-пересылки. CP - указатель цепочки, содержит адрес, который указывает на описание блока параметров для следующей DMA-пересылки. GP - регистр общего назначения - может использоваться, если необходимо определить например идентификатор текущей DMA-пересылки. Он не используется DMA-контроллером. DB и DA для двумерной пересылки. А регистры EI, EM, EC имеют тот же смысл, что и II, IM, C, но используются для описания буфера во внешней памяти.

Регистры управления

Каждый DMA-канал внешнего порта имеет собственный регистр управления. Назначение битов в регистрах DMAC6…DMAC9 приведено в табл. 2.

 

Таблица 2


Дата добавления: 2015-11-16; просмотров: 79 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Флаги аккумулирующих сравнений| Регистры управления DMA-пересылками через линк-порты

mybiblioteka.su - 2015-2024 год. (0.024 сек.)