# Общие регистры тетрад

Индекс документа: RG040006 Версия документа: 1.3

## Состав регистров

### Прямые регистры

Название | Разрядность | Описание
STATUS | 16 | Регистр состояния
DATA | * | Регистр данных
CMD_ADR | 10 | Регистр косвенного адреса
CMD_DATA | 16,* | Регистр косвенных данных

Адреса и способ доступа к прямым регистрам определяется базовым модулем.
Число разрядов регистра DATA определяется конкретной тетрадой.
Непосредственные регистры, доступ к которым производится через регистр CMD_DATA, могут иметь число разрядов больше 16.

### Командные регистры

Номер | Название | Описание
Общие регистры
0 | MODE0 | Регистр управления
1 | IRQ_MASK | Разрешение прерываний
2 | IRQ_INV | Инверсия условия прерывания
3 | FMODE | Выбор источника тактовой частоты
4 | FDIV | Делитель тактовой частоты
5 | STMODE | Регистр синхронизации
6 | CNT0 | Счётчик начальной задержки
7 | CNT1 | Счётчик принимаемых слов
8 | CNT2 | Счётчик пропускаемых слов
Индивидуальные регистры
9 | MODE1 | Регистр управления MODE1
0x0A | MODE2 | Регистр управления MODE2
0x0B | MODE3 | Регистр управления MODE3
0x0C | SFLAG_PAE | Установка уровня срабатывания флага PAE
0x0D | SFLAG_PAF | Установка уровня срабатывания флага PAF
0x0E | PRT_MODE | Режим претриггера
0x0F | TL_MODE | Режим формирования заголовка
0x10 | CHAN1 | Выбор канала
0x11 | CHAN2 | Выбор канала
0x12 | FORMAT | Выбор формата данных
0x13 | FSRC | Выбор источника тактовой частоты на субмодуле
0x14 | FDVR | Выбор коэффициента деления тактовой частоты
0x15 | GAIN | Выбор коэффициента усиления
0x16 | INP | Управление входами субмодуля
0x17 | CONTROL1 | Регистр управления субмодулем
0x18 0x1F | - | Резерв

Командные регистры предназначены для управления ресурсами тетрады. Командные регистры доступны для записи и для чтения. При записи в регистр также производится запись в теневое ОЗУ, при чтении данные читаются из ОЗУ. Начальное значение всех регистров 0. После сброса не происходит обнуление теневого ОЗУ. При программном сбросе тетрады требуется записать 0 во все командные регистры тетрады.
Общие регистры существуют во всех тетрадах. Если функция, которую выполняет регистр, не требуется, то регистр в тетраде не реализуется.
Состав и назначение индивидуальных регистров определяется конкретной тетрадой. В данном документе приводится рекомендуемый состав регистров тетрады.

### Константы

Номер | Название | Описание
0x100 | ID | Идентификатор тетрады
0x101 | ID_MOD | Модификатор тетрады
0x102 | VER | Версия тетрады
0x103 | TRES | Ресурсы тетрады
0x104 | FSIZE | Размер FIFO
0x105 | FTYPE | Тип FIFO
0x106 | PATH | Подключение тетрады
0x107 | ID_NUM | Номер экземпляра тетрады
0x108 | PFSIZE | Размер FIFO претриггера
0x109 0x11F | - | Индивидуальные константы тетрад

Константы предназначены для хранения информации о параметрах тетрады. Значения констант хранятся в ПЗУ ПЛИС.

### Непосредственные регистры

Номер | Название | Описание
0x200 | FLAG_CLR | Сброс флагов в регистре STATUS
0x208 | ADC_OR | Регистр переполнения АЦП
0x209 | PRT_STATUS | Регистр состояния претриггера
0x20A | PRT_CNTL | Номер слова в котором произошло событие старта. Младшие разряды.
0x20B | PRT_CNTH | Номер слова в котором произошло событие старта. Старшие разряды.
0x20C | TL_ADR | Регистр адреса заголовка
0x20D | TL_DATA | Регистр данных заголовка

Непосредственные регистры предназначены для реализации дополнительных регистров управления и состояния.

## Описание регистров

### Регистр STATUS, IRQ_MASK, IRQ_INV

Бит | Название | Описание
0 | CMD_RDY | 1 - готовность к выполнению команды
1 | RDY | 1 - готовность FIFO
2 | EF | 0 - FIFO пустое
3 | PAE | 0 - FIFO почти пустое
4 | HF | 0 - FIFO заполнено наполовину
5 | PAF | 0 - FIFO почти полное
6 | FF | 0 - FIFO полное
7 | OVR | 1 - запись в полное FIFO
8 | UND | 1 - чтение из пустого FIFO
9 | ERR | 1 - ошибка доступа к регистрам
10 | START | 1 - разрешение работы тетрады
11 | OR | 1 - переполнение в одном из каналов АЦП
12 15 | - | Индивидуальные флаги тетрад

Регистр STATUS показывает текущее значение флагов.
Регистр IRQ_MASK показывает разряды регистра STATUS, по которым будет формироваться прерывание. Значение 1 в разряде регистра IRQ_MASK разрешает формирование прерывания от соответствующего разряда регистра STATUS.
Регистр IRQ_INV определяет инверсию условия прерывания. Значение 0 в разряде регистра IRQ_INV определяет формирование прерывания по значению 1 в разряде регистре STATUS.
Значение 1 в разряде регистра IRQ_INV определяет формирование прерывания по значению 0 в разряде регистра STATUS.

Уровни срабатывания флагов FIFO определяются конкретной тетрадой и прошивкой ПЛИС.
Флаги переполнения и недогрузки FIFO (OVR, UND) сбрасываются при сбросе FIFO.

Флаг ERR устанавливается в 1 если зафиксирована ошибка доступа к регистрам.
Флаг START устанавливается в 1 если разрешён сбор данных.
Флаг OR устанавливаются в 1 если зафиксировано переполнение хотя бы в одном из каналов АЦП.

В разряды 12..15, а также при необходимости и в разряды 10,11 могут добавляться индивидуальные биты состояния тетрады. Для сброса флагов рекомендуется использовать регистр FLAG_CLR.

### Регистр DATA

Регистр DATA предназначен для организации потока данных. Наиболее часто подключается к FIFO, однако возможны и другие варианты подключения. Число используемых разрядов определяется конкретной тетрадой.

### Регистр CMD_ADR

Бит | Название | Описание
7..0 | REG | Номер регистра
9..8 | GROUP | Группа регистров: 00 - командные регистры 01 - константы 10 - непосредственные регистры 11 - резерв

Регистр CMD_ADR определяет номер косвенного регистра, к которому будет производится обращения через регистр CMD_DATA.

### Регистр CMD_DATA

Бит | Название | Описание
15..0 | CMD_DATA | Данные косвенного регистра

Через регистр CMD_DATA производится обращение к косвенным регистрам.

### Регистр MODE0

Бит | Название | Описание
0 | RST | Тетрада MAIN: 1 - сброс ПЛИС Остальные тетрады: 1 - сброс тетрады
1 | FIFO_RST | 1 - сброс FIFO
2 | IRQ_EN | 1 - разрешение формирования прерываний от тетрады
3 | DRQ_EN | 1 - разрешение формирования запроса DMA от тетрады
4 | MASTER | Тетрада MAIN: 1 - работа модуля в режиме MASTER 0 - работа модуля в режиме SLAVE Остальные тетрады: 1 - работа тетрады в режиме SINGLE
0 - работа тетрады в режиме SLAVE
5 | START | 1 - программный старт
6 | ADM_MSYNC | Выбор источника тактовой частоты: 1 - источник на субмодуле 0 - источник выбирается FMODE[GEN]
7 | RT | 1 - включить циклический режим работы FIFO
8 | CNT0_EN | 1 - разрешение работы счётчика CNT0
9 | CNT1_EN | 1 - разрешение работы счётчика CNT1
10 | CNT2_EN | 1 - разрешение работы счётчика CNT2
11 | - | Резерв
13..12 | DRQ_FLAG | Выбор источника запроса DMA: 00 - PAE=1 для FIFO ввода, PAF=1 для FIFO вывода 01 - RDY=1 10 - HF=0 для FIFO ввода, HF=1 для FIFO вывода 11 - резерв
14 | - | Резерв
15 | EXTFIFO_EN | 1 - переключение тетрады в режим работы с внешним FIFO. Если такой поддержки тетрада не имеет, то содержимое поля не имеет значения.

Регистр MODE0 предназначен для реализации общего управления тетрадой.

Бит RST=1 приводит с сбросу всех регистров тетрады. Командные регистры устанавливаются в 0. При сбросе, после формирования RST=1, необходимо во все командные регистры прописать значение 0. Это необходимо для приведения в исходное состояние теневого ОЗУ.

Бит RT=1 включает циклический режим работы FIFO. Этот режим поддерживается для тетрад вывода данных. Бит RT=1 должен быть установлен после записи всего массива данных в FIFO и перед разрешением вывода данных.

### Регистр STMODE

Бит | Название | Описание
4..0 | MSTART | Выбор сигнала старта
5 | - | Резерв
6 | START_INV | 1 - инверсия сигнала старта
7 | TRIGSTART | 1 - триггерный старт
12..8 | MSTOP | Выбор сигнала останова при триггерном старте
13 | - | Резерв
14 | STOP_INV | 1 - инверсия сигнала останова
15 | START_AUTO | 1 - режим сбора с автоматическими перезапуском

Поля MSTART, MSTOP выбирают источник старта и останова из сетки сигналов старта, которая определяется ПЛИС. Описание сетки сигналов приводится в описании конкретной прошивки ПЛИС.

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

### Регистр FMODE

Бит | Название | Описание
4..0 | GEN | Выбор источника тактовой частоты
14..5 | - | Резерв
15 | START_RST | 1 - сброс счётчика делителя тактовой частоты

Поле GEN выбирает источник тактовой частоты из сетки частот, которая определяется ПЛИС. Описание сетки частот приводится в описании конкретной прошивки ПЛИС. Выбор источника через регистр FMODE производится для тетрады, которая установлена в режим MASTER или SINGLE и MODE0[ADM_MSYNC]=0.
При установке START_RST=1, при возникновении условия старта производится сброс счётчика делителя тактовой частота. Это позволяет привязать фазу тактового сигнала к событию старта. Приостановка сбора данных по счётчикам CNT0, CNT2 не сбрасывает счётчик делителя тактовой частоты.
Для отдельных тетрад назначение разрядов и выбор источника может изменяться.

### Регистр FDIV

Бит | Название | Описание
15..0 | CMD_DATA | Данные косвенного регистра

Регистр FDIV определяет коэффициент деления тактовой частоты. Минимальный коэффициент деления 1. Максимальный 0.

### Регистр CNT0

Бит | Название | Описание
15..0 | CNT0 | Счётчик начальной задержки

Регистр счётчика начальной задержки. При разрешении MODE0[CNT0_EN]=1, разрешение работы будет задержано на значение CNT0. Если работа счётчика запрещена, то разрешение работы будет сразу после возникновения условия старта.

### Регистр CNT1

Бит | Название | Описание
15..0 | CNT1 | Счётчик принимаемых данных.

Регистр счётчика принимаемых данных. При разрешении MODE0[CNT1_EN]=1, разрешение работы будет выдано только на число тактов CNT1. Если разрешена работа счётчика CNT2, то разрешение работы будет заблокировано на число тактов CNT2 и далее цикл разрешения и запрета будет повторяться. Если работа счётчика запрещена, то будет произведён только один цикл разрешения работы.
Если работа счётчика CNT1 запрещена, то разрешение работы будет сразу после возникновения условия страта и разрешения по счётчику CNT0.

### Регистр CNT2

Бит | Название | Описание
15..0 | CNT2 | Счётчик пропускаемых данных

Счётчик определяет число тактов, на которое снимается сигнал разрешение работы.

### Регистр ID

Бит | Название | Описание
15..0 | ID | Идентификатор тетрады

Регистр определяет уникальный идентификатор тетрады.

### Регистр ID_MODE

Бит | Название | Описание
15..0 | ID_MODE | Модификатор тетрады

Регистр определяет модификатор исполнения тетрады. Тетрада может быть разработана в различных исполнениях, например с различной шириной и размером FIFO. С использованием или без использования счётчиков CNT0..CNT2 и т.д. Одновременно могут использоваться несколько тетрад с различным модификатором.

### Регистр VER

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

Регистр определяет версию тетрады. Поле V0 изменяется при незначительных изменениях алгоритма работы, исправлении ошибок. Поле V1 изменяется при изменении состава регистров или существенных изменениях алгоритма работы.

### Регистр TRES

Бит | Название | Описание
3..0 | - | Резерв
4 | FIFO_IN | 1 - тетрада имеет FIFO для чтения данных процессором
5 | FIFO_OUT | 1 - тетрада имеет FIFO для вывода данных из процессора
6 | SFLAG_E | 1 - тетрада может устанавливать уровень срабатывания флага PAE FIFO тетрады
7 | SFLAG_F | 1 - тетрада может устанавливать уровень срабатывания флага PAF FIFO тетрады
8 | PRETRIG | 1 - тетрада поддерживает работу в режиме претриггера
9 | EXTFIFO | 1 - тетрада поддерживает внешнее FIFO
15..10 | - | Резерв

Регистр определяет ресурсы тетрады.

### Регистр FSIZE

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

Регистр определяет число слов в FIFO. Если значение регистра 0, а в регистре TRES указано наличие FIFO, то размер FIFO должен определятся по другим источникам.

### Регистр PFSIZE

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

Регистр определяет число слов в FIFO претриггера. Если значение регистра 0, то претриггер реализован на базе основного FIFO тетрады.

### Регистр FTYPE

Бит | Название | Описание
7..0 | SIZE | Число разрядов шины данных FIFO, подключённых к локальной шине

Регистр определяет ширину FIFO со стороны локальной шины.

### Регистр PATH

Бит | Название | Описание
7..0 | IN | Подключение входа данных тетрады
15..8 | OUT | Подключение выхода данных тетрады

Регистр определяет подключение FIFO тетрады.

### Коды полей IN, OUT регистра PATH

Значение | Название | Описание
0 | - | Не подключено
1 | LB | Локальная шина
2 | ADM | Разъём ADM
3 | DAC0 | ЦАП0
4 | DAC1 | ЦАП1
5 | DAC01 | ЦАП0 и ЦАП1
6 | PIOX | Разъём PIOX
7 | - | Резерв
23..8 | TRDx | Тетрада x, x - 7..0

### Регистр ID_NUM

Бит | Название | Описание
15..0 | CNT | Номер экземпляра тетрады

Регистр определяет номер экземпляра тетрада. Если в прошивке ПЛИС находятся две тетрады с одним ID, то у них будут разные значения ID_NUM. У первой тетрады значение 1, у второй тетрады значение 2.

### Индивидуальные регистры

В данном разделе приведены сведения о предполагаемом назначении регистров тетрады. Точное назначение регистров приводится в описании конкретной тетрады или в описании конкретной прошивки ПЛИС.

MODE1 | Модификация потока данных. Используется для переключения выхода или входа потока данных. Назначение регистра может быть разным для одной тетрады, реализованной на разных базовых модулях. Если регистр используется, то его описание приводится в описании конкретной прошивки ПЛИС.
В некоторых тетрадах в этом регистре реализован выбор каналов и управление субмодулем.
MODE2, MODE3 | Дополнительные регистры управления. Рекомендуется использовать для управления ресурсами базового модуля.
SFLAG_PAE | Установка уровня срабатывания флага почти пустого FIFO. Реализуется для некоторых тетрад.
SFLAG_PAF | Установка уровня срабатывания флага почти полного FIFO. Реализуется для некоторых тетрад.
PRT_MODE | Регистр управления режимом претриггера.
TL_MODE | Регистр управляет записью заголовка в блок данных.
CHANL | Выбор канала данных. Выбираются каналы 0-15.
CHANH | Выбор канала данных. Выбираются каналы 16-31. Для субмодулей с числом каналов до 16 регистр не реализуется.
FORMAT | Выбор формата данных. В этом регистре производится включение восьми разрядной упаковки данных. Возможно применение других форматов, например преобразование в формат с плавающей точкой.
FSRC | Выбор источника тактовой частоты на субмодуле. Этот регистр используется для тех субмодулей, которые имеют схему формирования тактовой частоты.
FDVR | Выбор коэффициента деления тактовой частоты на субмодуле. Этот регистр используется для тех субмодулей, которые имеют схему формирования тактовой частоты.
GAIN | Выбор коэффициента передачи. Значение 0 в регистре выбирает наименьший коэффициент передачи (максимальный входной сигнал)
INP | Выбор режима входа. В этом регистре находятся управления закрытым и открытым входом АЦП, выбор входного сопротивления входа и т.д.
CONTROL1 | Дополнительный регистр управления субмодулем. В этом регистре находятся дополнительные биты управления, которые не попадают в стандартные регистры. Например в этом регистре могут находится биты включения удвоения тактовой частоты, переключения входов АЦП и т.д.
FLAG_CLR | Сброс флагов регистра STATUS. Этот регистр используется для сброса индивидуальных флагов в регистре STATUS. Запись в регистр сбрасывает флаги в регистре STATUS.
ADC_OR | Регистр переполнения АЦП. Чтение регистра возвращает маску каналов, в которых произошло переполнение. Запись в регистр сбрасывает соответствующие биты переполнения.
PRT_STATUS | Регистр состояния претриггера. Указывает номер отсчёта в слове при котором произошло событие старта.
PRT_CNTL | Номер слова в считанном массиве при котором произошло событие старта. Младшие разряды.
PRT_CNTH | Номер слова в считанном массиве при котором произошло событие старта. Старшие разряды.
TL_ADR | Регистр адреса заголовка.
TL_DATA | Регистр данных заголовка.

ЗАО "Инструментальные Системы"