Назначение | Управление каналом 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 | Базовая версия |