Блок PE_EXT_FIFO

Версия документа: 1.0

Общие сведения

Назначение Управление каналом 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 размера всегда равен нулю и не представлен в регистре.

Слово CMD - команда дескриптора

 Бит  Название  Описание
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 означает, что следующее слово содержит адрес блока дескрипторов.

NEXT_BLOCK - Следующий блок дескрипторов

 Байт  Название  Описание
0 A1  Адрес, байт 1
1 A2  Адрес, байт 2
2 A3  Адрес, байт 3
3 -  Резерв, должен быть 0
4 SIG  Сигнатура 0x4953
5
6 CRC Контрольная сумма
7

 

 

 

Описание регистров блока PE_EXT_FIFO

Регистр BLOCK_ID

 Бит  Название  Описание
11..0 ID  Идентификатор блока управления
15..12 MOD  Номер модификации блока управления

Регистр BLOCK_VER

 Бит  Название  Описание
7..0 V0  Поле V0
15..8 V1  Поле М1

Номер версии записывается в виде: V1.V0

 

Регистр FIFO_ID

 Бит  Название  Описание
11..0 SIZE  Размер FIFO
15..12 TYPE  Направление передачи
   1 -
FIFO работает на чтение
   2 - FIFO работает на запись

Регистр FIFOx_ID предназначен для идентификации канала FIFO, x - номер FIFO. Значение 0 означает отсутствие FIFO.
Поле SIZE показывает размер FIFO в 32-х разрядных словах.

Регистр FIFO_NUMBER

 Бит  Название  Описание
15..0 SIZE  Размер FIFO

Регистр FIFO_NUMBER содержит порядковый номер FIFO внутри прошивки.

 

Регистр RESOURCE

 Бит  Название  Описание
0 NON_SG_MODE 1 - поддержка работы без автоинициализации
1 SG_MODE 1 - поддержка работы в режиме автоинициализации
2 CNT_MODE 1 - поддержка счётчика блоков
15..3 -

Регистр RESOURCE содержит информацию о поддерживаемых режимах работы

 

 

Регистр DMA_MODE

 Бит  Название  Описание
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 -

 

Регистр DMA_CTRL 

 Бит  Название  Описание
0 DMA_START  1 - запуск канала DMA
1 DMA_STOP  не используется
2
3 PAUSE  1 - приостановка обмена
4 RESET_FIFO  1 - сброс внутреннего FIFO канала DMA
5
15..6 -

 

Регистр BLOCK_CNT

 Бит  Название  Описание
31..0 CNT  Число блоков для передачи

Регистр определяет число блоков размером 4 килобайта, которые будут переданы по каналу DMA.  Значение 0 означает передачу бесконечного числа блоков.

В данной модификации не используется.

 

 

 

Регистр STATUS

 Бит  Название  Описание
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

 

 

Регистр FLAG_CLR

 Бит  Название  Описание
3..0 -  Не используются
4 DMA_EOT  1 - сброс STATUS[DMA_EOT]
15..5 -  Не используются

Запись в регистр приводит к сбросу флага EOT в регистре STATUS. Требуется только одна запись.

 

Регистры PCI_ADRL, PCI_ADRH

 Бит  Название  Описание
31..0 -  адрес

Регистры PCI_ADRL, PCI_ADRH содержат адрес блока на шине PCI. Регистр PCI_ADRL содержит младшее слово 64-х разрядного адреса, регистр PCI_ADRH содержит старшее слово 64-х разрядного адреса. В настоящее время регистр PCI_ADRH не используется.

 

Регистр LOCAL_ADR

 Бит  Название  Описание
31..0 ADR  Адрес на локальной шине

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

 

 

 

Список версий

1.0 14.05.2009 Базовая версия