Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AiPSP_ekzamen_main.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.38 Mб
Скачать

26. Цепочечные dma-пересылки в adsp-2106x. Tcb-блоки. Инициирование и завершение цепочечных dma-пересылок. Контроль состояния цепочечной dma-пересылки

Цепочечные DMA-пересылки в ADSP-2106x

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

Общая идея такова (со слов Хусаинова). В памяти мы создаем некоторый буфер, и в этот буфер фиксированного размера в определенном порядке мы записываем значения, которые должны быть загружены в регистры параметров DMA-пересылки - определяем значения для следующей персылки. Как только пересылка заканчивается в регистре CP должен лежать адрес этого самого буфера. Если цепочечное связывание включено, то из 17 младших разрядов CP берется адрес буфера, который назвается TCB. Из этого буфера начинается загрузка по одному слову значений в параметры DMA-пересылки этого же самого канала. Когда запись завершается, автоматически начинается следующая DMA-пересылка.

Последовательность DMA канала определяется как совокупность передач по DMA, начиная с инициализации регистров параметров и заканчивая уменьшением значения регистра счетчика до нуля. Каждый канал DMA имеет бит разрешения цепочки (CHEN) в соответствующем регистре управления. Для разрешения цепочки операций бит должен быть установлен в 1. Запись нулей в поле адреса регистра указателя цепочки (СР) запрещает цепочку операций DMA.

Когда цепочка операций разрешена, передачи по DMA начинаются с записи адреса памяти в регистр СР. Цепочки операций DMA могут выполняться только внутри одного и того же канала; использование нескольких каналов в одной цепочке операций не поддерживается.

Регистр СР – 18-разрядный, 17 младших бит – поле адреса памяти. Старший бит (бит 17) регистра СР – это бит управления, называемый PCI (программно-управляемые прерывания). Бит PCI определяет, происходит или нет прерывание после выполнения текущей последовательности DMA (в совокупности с битом маскирования прерывания в IMASK). Когда PCI=1 – прерывание разрешено и будет сгенерировано, когда содержимое регистра счетчика достигнет нуля. 0 – прерывания каналов запрещены. Заметим, что бит действует, если разрешена цепочка операций (CHEN=1).

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

TCB-блоки

При выполнении цепочки операций DMA процессор автоматически инициализирует следующую передачу по DMA сразу после того, как все содержимое буфера передано или принято. Регистр указателя цепочки (СР) указывает на адрес во внутренней памяти, где хранится следующий набор параметров DMA. Этот новый набор параметров называется блок управления передачей (TСВ – Transfer Control Block). Контроллер DMA автоматически считывает ТСВ из внутренней памяти и загружает значения в регистры параметров канала, чтобы настроить следующую последовательность DMA. Этот процесс называется загрузкой ТСВ цепочки.

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

Рабочий регистр загружается из регистра СР перед началом загрузки цепочки и декрементируется после того, как каждый регистр загружается. Рабочий регистр позволяет обновлять регистр СР без пересечения с загрузкой текущего регистра. Когда загрузка цепочки выполнена, рабочий регистр загружается новым значением СР. Это позволяет выполнять последовательность цепочек DMA в цикле. Замечание: содержимое рабочего регистра не доступно.

Запрос загрузки ТСВ цепочки происходит также, как для всех других операций DMA. Сигнал запроса загрузки ТСВ фиксируется и удерживается контроллером DMA, пока не станет запросом высшего приоритета. Устройство I/O самостоятельно определяет приоритет и передает ТСВ, как при обычном DMA. Если присутствует много сигналов запроса загрузки цепочки, то первыми передаются ТСВ для каналов DMA с высшим приоритетом. Если канал находится в процессе загрузки цепочки, то процесс не может быть прерван запросом канала с высшим приоритетом.

Инициирование и завершение цепочечных DMA-пересылок

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

1. Расположить все ТСВ во внутренней памяти.

2. Установить биты разрешения DMA DEN=1 и разрешения цепочечной пересылки DMA CHEN=1 в соответствующем регистре управления DMA.

3. Записать последний адрес (т. е. значение адреса в регистре IIx) первого ТСВ в регистр СРх – это начнет цепочку.

Контроллер DMA автоматически инициализируется первым ТСВ, а затем начнет выполнять первую передачу. После того как передача будет выполнена, начнется следующая, если текущий адрес указателя цепочки не нулевой. Этот адрес используется в качестве указателя на следующий ТСВ. Запомните, что поле адреса в регистре СРх содержит только 17 разрядов. Если адрес записывается прямо в СРх, то бит 17 может конфликтовать с битом PCI.

Последовательность DMA начинается, когда происходит одно из следующих событий:

  • Цепочка операций запрещена, бит DEN переключается из 0 в 1 (Это соответственно для нецепочечной пересылки!)

  • Цепочка операций разрешена, DMA разрешен (DEN=1) и в поле адреса регистра СР записывается не нулевое значение (в этом случае сначала происходит загрузка ТСВ цепочки в регистры параметров канала).

  • Цепочка операций разрешена, поле адреса регистра СР ненулевое, текущая последовательность DMA закончилась (снова происходит загрузка ТСВ цепочки).

Последовательность DMA заканчивается, когда происходит одно из следующих событий:

  • Содержимое регистра счетчика уменьшается до нуля (содержимое обоих счетчиков С и ЕС для каналов внешнего порта).

  • (Для нецепочечных!) Цепочка операций запрещена, бит канала DEN переключается из 1 в 0.

  • Если бит DEN становится 0 и цепочка операций разрешена, канал переходит в режим «вставка цепочки» и последовательность DMA продолжается.

Контроль состояния цепочечной DMA-пересылки

По идее через регистр DMASTAT можно смотреть идет ли сейчас пересылка, а также контролировать состояние загрузки параметров DMA-пересылки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]