Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Руководство пользователя по сигнальным процессорам Sharc

.pdf
Скачиваний:
128
Добавлен:
01.05.2014
Размер:
9.49 Mб
Скачать

DMA 6

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

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

6.3.4.2. Настройка и начало цепочек

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

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

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

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

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

Запомните, что поле адреса в регистре СРх содержит только 17 разрядов. Если адрес записывается прямо в СРх, то бит 17 может конфликтовать с битом PCI. Удостоверьтесь, что обнулили старший бит адреса, а если необходимо, то произведите операцию «И» отдельно с битом PCI.

6.3.4.3. Вставка цепочки

Операция DMA с высоким приоритетом или цепочка операций могут быть вставлены в выполняющуюся цепочку DMA. Когда CHEN=1 и DEN=0, канал DMA находится в режиме «вставка цепочки», в котором новая цепочка операций DMA может быть вставлена в текущую без влияния на текущую передачу по DMA. Новая цепочка вставляется ядром ADSP 2106x, записывающим ТСВ в

201

6 DMA

регистры параметров канала. Этот режим работы идентичен тому, когда CHEN=1 и DEN=1, за исключением того, что после окончания текущей передачи по DMA запрещен автоматический переход к новой цепочке и генерируется запрос прерывания. Этот запрос прерывания не зависит от состояния бита PCI.

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

1.Включить режим вставки цепочки, установив биты CHEN=1, DEN=0 в соответствующем регистре управления DMA.

2.Прерывание DMA укажет на завершение текущей последовательности DMA.

3.Записать значение регистра СРх новой цепочки в позицию СР последнего ТСВ.

4.Установить DEN=1, CHEN=1.

5.Записать начальный адрес первого ТСВ новой цепочки в регистр СР.

Режим «вставка цепочки» не должен устанавливаться как начальный режим работы; он предназначен для использования только в том случае, когда выполняется другая операция DMA.

6.3.5. Прерывания DMA

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

Каждый канал DMA имеет собственное прерывание. Прерывания фиксируются в IRPTL и разрешаются в регистре IMASK. В табл.6.15 показаны в порядке приоритета биты прерываний десяти каналов DMA в регистрах IRPTL и IMASK. Замечание: хотя приоритет обращений каналов внешнего порта может вращаться, приоритеты прерываний всех каналов DMA фиксированы.

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

202

DMA 6

Биты

Адрес вектора1

Имя прерывания Прерывание канала DMA

IRPTL/ IMASK

 

 

 

 

 

 

 

ВЫСШИЙ ПРИОРИТЕТ

10

0x28

SPR0I

0

канал DMA – прием через

 

 

 

SPORT0

11

0x2C

SPR1I

1

канал DMA – прием через

 

 

 

SPORT1

 

 

 

(или буфер 0 линк портов)

12

0x30

SPT0I

2

канал DMA – передача через

 

 

 

SPORT0

13

0x34

SPT1I

3

канал DMA – передача через

 

 

 

SPORT0 (или буфер 1 линк портов)

14

0x38

LP2I

4

канал DMA – буфер 2 линк портов2

15

0x3C

LP3I

5

канал DMA – буфер 3 линк портов2

16

0x40

EP0I

6

канал DMA – буфер 0 внешнего

 

 

 

порта (или буфер 4 линк портов)

17

0x44

EP1I

7

канал DMA – буфер 1 внешнего

 

 

 

порта (или буфер 5 линк портов)

18

0x48

EP2I

8

канал DMA – буфер 2 внешнего

 

 

 

порта2

19

0x4C

EP3I

9

канал DMA – буфер 3 внешнего

 

 

 

порта2

 

 

 

НИЗШИЙ ПРИОРИТЕТ

Таблица 6.15. Векторы прерываний DMA и порядок приоритета

1.Смещение от базового адреса: 0х0002 0000 для таблицы векторов прерываний во внутренней памяти, 0х0040 0000 для таблицы векторов прерываний во внешней памяти.

2.Эти ячейки памяти зарезервированы, не используются в ADSP 21061.

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

Ниже приведены различные состояния, при которых будут генерироваться прерывания каналом DMA или соответствующим ему портом I/O:

203

6 DMA

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

Маска

Цепочка запрещена, текущая последовательность DMA выполнена

IMASK

Цепочка разрешена, текущая последовательность DMA выполнена

IMASK & PCI

Режим «вставка цепочки», текущая последовательность

IMASK

DMA выполнена

 

DMA запрещен и буфер доступен для порта I/O*

IMASK

* бит INTIO должен быть установлен в регистре управления DMACx для внешнего порта

Если маска прерывания равна 1 (т. е. оно не маскировано), то прерывание разрешено и будет подтверждено.

Регистр IMASK не доступен внешним устройствам прямо через внешний порт, т. к. он является одним из универсальных регистров ядра процессора (он не отображен в карте памяти, как регистры IOP). Однако IMASK может быть считан или записан через внешний порт с использованием вектора прерывания в программе обработки для решения этой задачи. Для этих целей может использоваться регистр векторных прерываний VIRPT.

Для определения условия выполнения одиночной последовательности DMA вместо прерываний может использоваться опрос регистра DMASTAT:

1.Чтение DMASTAT.

2.Если оба бита состояния канала сброшены, то последовательность DMA выполнена.

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

6.3.6. Начало и окончание последовательности DMA

Последовательность DMA может начинаться различными способами, в зависимости от того, разрешена или нет цепочка операций DMA. Если цепочка операций не разрешена, то на начало передачи влияет только бит разрешения DMA (DEN).

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

♦ Цепочка операций запрещена, бит DEN переключается из 0 в 1.

204

DMA 6

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

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

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

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

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

Заметим, что как только бит DEN снова будет установлен в 1, последовательность DMA продолжится с того места, где закончилась (только не для цепочки операций).

Для того чтобы начать новую последовательность DMA после того, как текущая завершилась, в вашей программе сначала нужно обнулить бит разрешения DEN, записать новые параметры в регистры II, IM и С, а затем заново установить бит DEN (для цепочки операций DMA это не обязательно).

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

6.4. DMA через внешний порт

В процессорах ADSP 21060 и ADSP 21062 каналами DMA внешнего порта являются каналы 6, 7, 8 и 9, в ADSP 21061 – только 6 и 7. Эти каналы DMA позволяют эффективно передавать данные между внутренней памятью процессора и внешними памятью или устройствами.

6.4.1. Буферы FIFO внешнего порта (EPBx)

6, 7, 8, 9 каналы DMA связаны с буферами FIFO внешнего порта ЕРВ0, ЕРВ1, ЕРВ2, ЕРВ3. Каждый буфер FIFO состоит из шести ячеек памяти. Он имеет два порта – записи и чтения. Каждый порт соединен или с шиной данных внешнего

205

6 DMA

порта (EPD) или с локальной шиной, которая по очереди может соединяться с шиной данных ввода вывода (IOD), шиной данных памяти программы (РМD) или шиной данных памяти данных (DMD) (см. рис. 6.2). Эта схема позволяет записывать данные в буфер FIFO через один порт и в то же время считывать их через другой (передача данных по DMA происходит на полной тактовой частоте процессора).

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

Предостережение: ядро процессора ADSP 2106x не должно пытаться считывать или записывать буфер ЕРВх, когда он задействован в операции DMA, это может привести к разрушению данных, передаваемых по DMA.

Содержимое каждого буфера может быть очищено при записи 1 в бит FLSH соответствующего регистра управления DMACx. Это должно выполняться только тогда, когда DMA запрещен для этого канала. Бит FLSH не фиксируется и всегда считывается как 0. Состояние буфера изменится в следующем цикле. Буфер внешнего порта не должен активизироваться и очищаться в одном и том же цикле.

6.4.1.1. Упаковка данных при DMA через внешний порт

Каждый буфер внешнего порта содержит логическую схему для упаковки 16 или 32 разрядных слов внешней шины в 32 или 48 разрядные слова внутренней шины. Логическая схема упаковки полностью обратима и зависит от состояния бита TRAN в регистре управления DMACx. Т. о., 32 или 48 разрядные внутренние данные могут распаковываться в 16 или 32 разрядные внешние. Режим упаковки определяется битом PMODE в регистре управления DMACx для каждого буфера внешнего порта.

PMODE

Режим упаковки

00

Нет упаковки/распаковки

01Упаковка 16 разрядных данных внешней шины в/из 32 разрядные данные внутренней шины

10Упаковка 16 разрядных данных внешней шины в/из 48 разрядные данные внутренней шины

11Упаковка 32 разрядных данных внешней шины в/из 48 разрядные данные внутренней шины

Буфер внешнего порта может упаковывать данные двумя способами – старшее слово (MSW) первое и младшее слово (LSW) первое. Установка бита MSWF в 1 в регистре управления DMACx определяет упаковку «MSW первое». Это относится и к распаковке. Бит MSWF не действует, когда PMODE=11 или PMODE=00.

206

DMA 6

Упаковка команд, загружаемых в ADSP 2106x по 32 разрядной шине (при PMODE=11), занимает 3 цикла на каждые два слова, как показано ниже. Заметим, что для передачи хост процессора во внешние буферы ЕРВх или из них, бит НРМ регистра SYSCON должен быть установлен в соответствии с разрядностью внешней шины, определяемой PMODE. 32 разрядные данные передаются по линиям 47 16 шины данных. Если было передано нечетное число слов, то буфер упаковки должен быть очищен фиктивной записью, чтобы удалить неиспользуемое слово.

Упаковка 32&разрядного слова в 48&разрядное (внешняя шина«ADSP&2106x):

 

Выводы шины данных 47 32

Выводы шины данных 31 16

1 я передача по DMA

Слово 1, биты 47 32

Слово 1, биты 31 16

2 я передача по DMA

Слово 2, биты 15 0

Слово 1, биты 15 0

3 я передача по DMA

Слово 2, биты 47 32

Слово 2, биты 31 16

Бит MSWF игнорируется при упаковке 32→48 разрядов.

Упаковка команд, загружаемых в ADSP 2106x по 16 разрядной шине, приведена ниже. Бит MSWF определяет, какое 16 разрядное слово будет упаковано первым

– MSW или LSW.

Упаковка 16&разрядного слова в 48&разрядное при MSWF=1 (внешняя шина«ADSP&2106x):

 

Выводы шины данных 31 16

1 я передача по DMA

Слово 1, биты 47 32

2 я передача по DMA

Слово 1, биты 31 16

3 я передача по DMA

Слово 1, биты 15 0

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

6.4.1.2. Состояние упаковки

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

6.4.2. Генерация внешнего и внутреннего адреса

Передача данных по DMA между внутренней памятью ADSP 2106x и внешней памятью требует от контроллера DMA генерации адресов в обоих пространствах памяти. Каналы DMA внешнего порта имеют регистры EI (внешний индекс) и

207

6 DMA

ЕМ (внешний модификатор) для генерации внешнего адреса. Регистр EI обеспечивает адрес внешней памяти для текущего цикла DMA. Его содержимое обновляется значением модификатора в ЕМ для следующего обращения к внешней памяти.

При выполнении упаковки данных для внешних передач по DMA предусмотрена возможность генерировать адреса в регистрах EI и ЕМ со скоростью, отличной от скорости генерации внутренних адресов в регистрах II и IM. По этой причине внутренний и внешний генераторы адреса разнесены друг от друга и регистр ЕС (внешний счетчик) используется в качестве внешнего счетчика слов DMA.

Например, если 16 разрядное устройство считывает данные из внутренней памяти процессора, тогда произойдет две внешних 16 разрядных передачи для каждого 32 разрядного из слова внутренней памяти, и внешний счетчик слов ЕС будет иметь значение вдвое большее, чем внутренний счетчик слов С.

6.4.3. Режимы DMA через внешний порт

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

Биты MASTER, HSHAKE, EXTERN устанавливают режим DMA следующим образом:

M

H E

Режим работы DMA1

0

0 0

Режим ведомого. Запрос DMA генерируется, как только приемный

 

 

буфер не пустой или передающий буфер не полный2.

00 1 Зарезервирован

0

1

0

Режим с квитированием. Для ADSP 21060 и ADSP 21062

 

 

 

 

применяются только буферы EPB1, EPB2, каналы 7 и 8. Для ADSP

 

 

 

21061 применяются только буферы EPB0, EPB1, каналы 6 и 7. Запрос

 

 

 

DMA генерируется, когда выставляется сигнал на линии

.

 

 

 

Передача происходит, когда выставляется сигнал

.2

0

1

1

Внешний режим с квитированием. Для ADSP 21060 и ADSP 21062

 

 

 

применяются только буферы EPB1 и EPB2, каналы 7 и 8. Для ADSP

21061 применяются только буферы EPB0, EPB1, каналы 6 и 7. Идентичен режиму с квитированием, только данные передаются между внешней памятью и внешними устройствами.

208

DMA 6

1 0 0 Режим ведущего. Контроллер DMA будет делать попытку передачи данных всякий раз, как только приемный буфер не пустой или передающий буфер не полный и счетчик DMA не ноль.2 Для ADSP

21060 и ADSP 21062 должен удерживаться высоким

(неактивен), если канал 7 в режиме ведущего, должен удерживаться высоким (неактивен), если канал 8 в режиме ведущего. В ADSP 21061 должен удерживаться высоким (неактивен), если канал 7 в режиме ведущего.

10 1 Зарезервирован

1 1 0 Пошаговый режим ведущего. Для ADSP 21060 и ADSP 21062 применяются только буферы EPB1, EPB2, каналы 7 и 8. Для ADSP 21061 применяются только буферы EPB0, EPB1, каналы 6 и 7. В этом

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

данных по шине происходит, когда выставлены и. Вывод

адреса выполняется как в стандартном режиме ведущего. Никаких внешних схем не требуется, чтобы объединять по «ИЛИ» пары

и , что позволяет производить

обращение к буферу с нулевыми состояниями ожидания без пустых операций. Для управления пошаговым режимом ведущего используются состояния ожидания и сигнал подтверждения (АСК), см. раздел 5.4.4 в главе 5 Память.

11 1 Зарезервирован

1.Когда канал DMA внешнего порта настроен для вывода (т. е. TRAN=1), буфер ЕРВх начнет заполняться сразу после того, как канал DMA станет доступен.

Буфер ЕРВх начнет заполняться, даже если не выставлен сигнал , или чтение буфера DMA в режиме ведомого еще не было произведено.

2.Если данные будут считываться из ADSP 2106x (т. е. TRAN=1), то буфер EPBx будет заполнен, как только бит DEN будет установлен в 1.

6.4.3.1 Режим ведущего

Когда в DMACx установлены MASTER=1, HANDSHAKE=0, EXTERN=0, соответствующий канал DMA работает в режиме ведущего. Это означает, что контроллер DMA будет генерировать внутренние запросы DMA для этого

209

6 DMA

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

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

Замечание: каналы DMA последовательных портов и линк портов не имеют бита управления MASTER и не работают в режиме ведущего.

6.4.3.2. Пошаговый режим ведущего

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

активны. ADSP 2106x отвечает только на запросы со стробами или ;

этот способ позволяет использовать один и тот же буфер для DMA и для ввода вывода ядра процессора без дополнительных внешних устройств. Обращения к памяти в пошаговом режиме ведущего могут быть продлены при помощи сигнала на выводе АСК, запрограммированных состояний

ожидания в регистре WAIT и удержания уровня сигнала на выводе низким.

6.4.3.3. Режим ведомого

Канал DMA устанавливается в режим ведомого, когда биты MASTER, HANDSHAKE, EXTERN в регистре DMACx равны нулю. Это означает, что определенный канал DMA не может независимо начинать передачу данных во внешнюю память. Для того чтобы начать передачу по DMA в или из установленного в режим ведомого ADSP 2106x, внешнее устройство должно сначала считать или записать соответствующий буфер ЕРВх.

Если канал DMA установлен в режим ведомого и направление передачи данных из внутренней памяти во внешнюю, то канал будет автоматически выполнять достаточное количество передач из внутренней памяти, чтобы удерживать буфер ЕРВх полным (запомните, каждый буфер ЕРВх FIFO состоит из 6 ячеек). С другой стороны, если направление передачи из внешней памяти во внутреннюю, то канал DMA не будет начинать передачу по DMA до тех пор, пока буфер ЕРВх не будет иметь истинных данных.

В режиме ведомого регистры EI, EM и ЕС не используются.

210