Функционирование DMA-контроллера

Последовательные и линк-порты, а также внешний порт обмениваются данными с внутренней памятью посредством шины данных ввода-вывода (IOD), а адрес во внутренней памяти выставляется на шину адреса ввода/вывода (IOA).

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

Каналы DMA функционируют аналогично генераторам адресов данных ADSP. Каждый канал имеет набор регистров параметров, включая 17-разрядный регистр адреса IIx и 16-разрядный регистр модификатора адреса IMx, которые используются для задания буфера данных во внутренней памяти. После передачи каждого слова данных контроллер DMA прибавляет знаковое значение регистра модификатора к соответствующему индексному регистру и записывает модифицированное значение обратно в индексный регистр для получения адреса следующего DMA-обращения. Адрес, содержащийся в регистре IIx, при выставлении на шину адреса IOA смещается на 0x0002 0000. Таким образом, DMA-контроллер может генерировать адреса во внутренней памяти только в пространстве нормальных слов (тем не менее, 16-разрядные данные могут передаваться путем их упаковки в 32-разрядные значения при DMA-пересылке). Принцип работы адресного генератора DMA проиллюстрирован на рис. 2.

В начале DMA-пересылки индексный регистр IIx должен содержать адрес первого слова буфера данных во внутренней памяти. Количество слов, которое должно быть передано с использованием DMA-канала, определяется значением соответствующего регистра Cx, которое декрементируется каждый раз при передаче очередного слова. По достижении нуля DMA-пересылка считается завершенной и при этом может быть сгенерировано маскируемое прерывание для данного канала[7]. В режиме цепочечной DMA необходимость генерации маскируемого прерывания по завершении DMA-пересылки по данному каналу определяется битом PCI в соответствующем регистре CPx. При отсутствии цепочечного DMA всегда генерируется маскируемое прерывание по завершении DMA-пересылки по данному каналу. Смещение адресов обработчиков прерываний от начала таблицы векторов прерываний для каждого DMA-канала приведено в табл. 3[8].


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: