| Назначение | Управление каналом FIFO |
| Модификация | 1 - только режим автоинициализации |
| Версия | 1.0 |
| ID | 0x18 |
| Номер | Название | Описание | |
|
Константы |
|||
| 0 | BLOCK_ID | 0x1018 | Идентификатор блока управления |
| 1 | BLOCK_VER | 0x0100 | Версия блока управления |
| 2 | FIFO_ID | 0x3400 | Идентификатор FIFO |
| 3 | FIFO_NUMBER | * | Номер FIFO |
| 4 | RESOURCE | 0x0002 | Поддерживаемые режимы работы |
| 5 | |||
| 6 | |||
| 7 | |||
| Командные регистры | |||
| 8 | DMA_MODE | Режим работы контроллера DMA | |
| 9 | DMA_CTRL | Управление контроллером DMA | |
| 0x0A | BLOCK_CNT | Число блоков для передачи | |
| 0x0B | |||
| 0x0C | |||
| 0x0D | |||
| 0x0E | |||
| 0x0F | |||
|
Непосредственные регистры |
|||
| 0x10 | STATUS | Регистр состояния | |
| 0x11 | FLAG_CLR | Регистр сброса флагов | |
| 0x12 | |||
| 0x13 | |||
| 0x14 | PCI_ADRL | Адрес на PCI шине. Младшее слово | |
| 0x15 | PCI_ADRH | Адрес на PCI шине. Старшее слово | |
| 0x16 | |||
| 0x17 | LOCAL_ADR | Адрес на локальной шине | |
| 0x18 | |||
| 0x19 | |||
| 0x1A | |||
| 0x1B | |||
Блок PE_EXT_FIFO предназначен для управления двунаправленным FIFO. Направление обмена устанавливается в регистре DMA_CTRL и в дескрипторе блока автоинициализации.
Алгоритм работы в режиме автоинициализации:
Для останова DMA передачи необходимо записать 0 в регистр DMA_CTRL.
Для временной остановки работы канала DMA необходимо установить бит PAUSE в регистре DMA_CTRL, для возобновления работы достаточно сбросить бит PAUSE.
| № | Название | Описание |
| 0 | DS0 | Дескриптор 0 - описание блока данных |
| 1 | DS1 | Дескриптор 1 - описание блока данных |
| 62 | DS62 | Дескриптор 62 - описание блока данных |
| 63 | NEXT_BLOCK | Следующий блок дескрипторов |
Адрес дескриптора должен быть выровнен на границу 512 байт.
| Байт | Название | Описание |
| 0 | A1 | Адрес, байт 1 |
| 1 | A2 | Адрес, байт 2 |
| 2 | A3 | Адрес, байт 3 |
| 3 | - | Резерв, должен быть 0 |
| 4 | CMD | Команда дескриптора |
| 5 | S1 | Размер, байт 1 Бит 0 определяет направление передачи: 0 - передача из HOST в ADM 1 - передача из ADM в HOST |
| 6 | S2 | Размер, байт 2 |
| 7 | S3 | Размер, байт 3 |
Адрес блока должен быть выровнен на границу страницы, при
этом всегда байт 0 адреса равен нулю и не представлен в регистре.
Размер передаваемого блока должен быть кратен размеру страницы, при этом байт 0
размера всегда равен нулю и не представлен в регистре.
| Бит | Название | Описание |
| 0 | JUMP_NEST_DS | 1 - переход к следующему дескриптору |
| 1 | JUMP_NEXT_BLOCK | 1 - переход к следующему блоку |
| 2 | JUMP_DS0 | 1 - переход к дескриптору 0 |
| 3 | ||
| 4 | EOT | 1 - требование сформировать флаг EOT (End-Of-Transfer) |
| 5 | ||
| 6 | ||
| 7 |
Если ни один из битов JUMP_* не установлен, то канал DMA завершает работу.
Установленный бит JUMP_NEXT_BLOCK означает, что следующее слово содержит адрес блока дескрипторов.
| Байт | Название | Описание |
| 0 | A1 | Адрес, байт 1 |
| 1 | A2 | Адрес, байт 2 |
| 2 | A3 | Адрес, байт 3 |
| 3 | - | Резерв, должен быть 0 |
| 4 | SIG | Сигнатура 0x4953 |
| 5 | ||
| 6 | CRC | Контрольная сумма |
| 7 |
| Бит | Название | Описание |
| 11..0 | ID | Идентификатор блока управления |
| 15..12 | MOD | Номер модификации блока управления |
| Бит | Название | Описание |
| 7..0 | V0 | Поле V0 |
| 15..8 | V1 | Поле М1 |
Номер версии записывается в виде: V1.V0
| Бит | Название | Описание |
| 11..0 | SIZE | Размер FIFO |
| 15..12 | TYPE | Направление передачи 1 - FIFO работает на чтение 2 - FIFO работает на запись |
Регистр FIFOx_ID предназначен для идентификации канала
FIFO, x - номер FIFO.
Значение 0 означает отсутствие FIFO.
Поле SIZE показывает размер FIFO
в 32-х разрядных словах.
| Бит | Название | Описание |
| 15..0 | SIZE | Размер FIFO |
Регистр FIFO_NUMBER содержит порядковый номер FIFO внутри прошивки.
| Бит | Название | Описание |
| 0 | NON_SG_MODE | 1 - поддержка работы без автоинициализации |
| 1 | SG_MODE | 1 - поддержка работы в режиме автоинициализации |
| 2 | CNT_MODE | 1 - поддержка счётчика блоков |
| 15..3 | - |
Регистр RESOURCE содержит информацию о поддерживаемых режимах работы
| Бит | Название | Описание |
| 0 | SG_MODE | 1 - работа в режиме автоинициализации, 0 - без автоинициализации |
| 1 | DEMAND_MODE | 1 - работа по запросам |
| 2 | DIRECT | 1 - передача ADM->HOST, 0 - передача HOST->ADM |
| 3 | ||
| 4 | ||
| 5 | DMA_INT_ENABLE | 1 - разрешение формирования прерываний по флагу EOT |
| 15..6 | - |
| Бит | Название | Описание |
| 0 | DMA_START | 1 - запуск канала DMA |
| 1 | DMA_STOP | не используется |
| 2 | ||
| 3 | PAUSE | 1 - приостановка обмена |
| 4 | RESET_FIFO | 1 - сброс внутреннего FIFO канала DMA |
| 5 | ||
| 15..6 | - |
| Бит | Название | Описание |
| 31..0 | CNT | Число блоков для передачи |
Регистр определяет число блоков размером 4 килобайта, которые будут переданы по каналу DMA. Значение 0 означает передачу бесконечного числа блоков.
В данной модификации не используется.
| Бит | Название | Описание |
| 3..0 | DMA_STATUS | Резерв |
| 4 | DMA_EOT | 1 - завершение однократного DMA или блока с разрешённым прерыванием в цепочечном режиме |
| 5 | DMA_SG_EOT | 1 - завершение DMA в режиме автоинициализации |
| 6 | DMA_INT_ERROR | 1 - пропуск блока |
| 7 | INT_REQ | 1 - запрос прерывания |
| 8 | DSC_CORRECT | 1 - блок дескрипторов правильный |
| 9 | ||
| 10 | ||
| 11 | ||
| 15..12 | SIG | Сигнатура, установлено значение 0x0A |
| Бит | Название | Описание |
| 3..0 | - | Не используются |
| 4 | DMA_EOT | 1 - сброс STATUS[DMA_EOT] |
| 15..5 | - | Не используются |
Запись в регистр приводит к сбросу флага EOT в регистре STATUS. Требуется только одна запись.
| Бит | Название | Описание |
| 31..0 | - | адрес |
Регистры PCI_ADRL, PCI_ADRH содержат адрес блока на шине PCI. Регистр PCI_ADRL содержит младшее слово 64-х разрядного адреса, регистр PCI_ADRH содержит старшее слово 64-х разрядного адреса. В настоящее время регистр PCI_ADRH не используется.
| Бит | Название | Описание |
| 31..0 | ADR | Адрес на локальной шине |
Регистр определяет адрес на локальной шине к которому будут формироваться запросы на передачу данных.
| 1.0 | 14.05.2009 | Базовая версия |