# Тетрада TEST_CTRL

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

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

Назначение | Управление формированием и проверкой тестовой последовательности
Модификация | 1
Версия | 1.3
ID | 0x4F
ID_MOD | 1

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

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

Название | Разрядность | Описание
STATUS | 16 | Регистр состояния
DATA | 64 | Регистр данных
CMD_ADR | 10 | Регистр косвенного адреса
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 | Используются на верхнем уровне ПЛИС
0x0A | MODE2
0x0B | MODE3
0x0C |  |
0x0D |  |
0x0E |  |
0x0F | MUX_CTRL | Управление мультиплексором
0x10 |  |
0x11 |  |
0x12 |  |
0x13 |  |
0x14 |  |
0x15 |  |
0x16 |  |
0x17 |  |
0x18 |  |
0x19 |  |
0x1A | TEST_GEN_CNT1 | Счётчик разрешения работы TEST_GEN
0x1B | TEST_GEN_CNT2 | Счётчик паузы TEST_GEN
0x1C | TEST_CHECK_CTRL | Управление узлом TEST_CHECK
0x1D | TEST_CHECK_SIZE | Размер блока для узла TEST_CHECK
0x1E | TEST_GEN_CTRL | Управление узлом TEST_GEN
0x1F | TEST_GEN_SIZE | Размер блока для узла TEST_GEN

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

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

* - Значения определяются в конкретной прошивке ПЛИС.

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

Номер | Название | Описание
0x210 | TEST_CHECK_BL_RD_L | Число принятых блоков
0x211 | TEST_CHECK_BL_RD_H
0x212 | TEST_CHECK_BL_OK_L | Число правильных блоков
0x213 | TEST_CHECK_BL_OK_H
0x214 | TEST_CHECK_BL_ERROR_L | Число ошибочных блоков
0x215 | TEST_CHECK_BL_ERROR_H
0x216 | TEST_CHECK_TOTAL_ERROR_L | Общее число ошибок
0x217 | TEST_CHECK_TOTAL_ERROR_H
0x218 | TEST_CHECK_ERROR_ADR | Адрес слова в памяти результата
0x219 | TEST_CHECK_ERROR_DATA | Слово данных из памяти результата
0x21A | TEST_GEN_BL_WR_L | Число переданных блоков
0x21B | TEST_GEN_BL_WR_H
0x21C |  |
0x21D |  |
0x21E |  |
0x21F |  |
0x220 | FREQ0 | Измеряемая частота 0
0x221 | FREQ1 | Измеряемая частота 1
0x222 | FREQ2 | Измеряемая частота 2

## Описание

Тетрада TEST_CTRL предназначена для формирования и проверки тестовой последовательности. Структурная схема тетрады представлена на рисунке.

В состав тетрады входят следующие узлы:

- TEST_CHECK - узел проверки входной тестовой последовательности
- TEST_GEN - узел формирования тестовой последовательности
- MUX - мультиплексор выбора выходной тестовой последовательности

> Тестовая последовательность представляет собой набор блоков.
> Размер блока задаётся кратным размеру 4 килобайта
> (512 слов по 64 бита)
> Первое 64-х разрядное слово в блоке содержит сигнатуру и порядковый номер.
> 31..0 - сигнатура 0xA5A50123
> 63..32 - порядковый номер блока
> Содержимое блока зависит от его порядкового номера в последовательности.
> Содержимое блока:
> 0 - Бегущая единица по 64-м разрядам
> 1 - Бегущий ноль по 64-м разрядам
> 2 - Бегущая единица с инверсией по 64-м разрядам
> - Чётные номера слов - бегущая единица по 64-м разрядам
> - Нечётные номера - инверсия предыдущего слова
> 3 - Бегущий ноль с инверсией по 64-м разрядам
> - Чётные номера - бегущий ноль по 64-м разрядам
> - Нечётные номера - инверсия предыдущего слова
> 4 - Бегущая единица в блоке
> Номер слова сравнивается с номером блока (сравниваются восемь младших разрядов)
> При совпадении - в слово записывается бегущая 1.
> Остальные слова - значение ноль.
> 5 - Бегущий ноль а в блоке
> Номер слова сравнивается с номером блока (сравниваются восемь младших разрядов)
> При совпадении - в слово записывается бегущий 0.
> Остальные слова - значение 0xFFFFFFFFFFFFFFFF.
> 6,7 - Счётчик по 64-м разрядам
> - Чётные номера - значение счётчика
> - Нечётные номера - инверсия предыдущего слова
> 8,9 - Псевдослучайная последовательность
> Формируется М-последовательность по 64 разрядам.
> Начальное значение - 1
> Слово формируется сдвигом на один разряд влево.
> В младший разряд слова записывается значение x[63] xor x[62]
> Для режима счётчика и псевдослучайной последовательности начальное значение
> формируется при инициализации тестовой последовательности.
> Для остальных режимов - при инициализации проверки блока.

Узел

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

Узел TEST_GEN формирует тестовую последовательность.

Узел MUX позволяет выбрать один из источников для выходной тестовой последовательности.

Регистр TEST_RES указывает на наличие узлов в тетраде.

Тетрада позволяет опеределить значения трёх частот. Для измерения используются регистры FREQ0, FREQ1, FREQ2. Сигналы, подключённые к входам измерения частоты определяются на верхнем уровне ПЛИС. Регистр MODE1 может использоваться для выбора измеряемой тактовой частоты. Описание регистра MODE1 приводится на верхнем уровне ПЛИС.

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

Описание общих регистров управления приводится в документе RG040006 reg_common.htm

### Регистры 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
15..9 | - | Не используются

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

### Регистр DATA

Бит | Название | Описание
63..0 | D | Данные

Формат слова и расположение слов в регистре зависят от источника данных.

### Регистр MUX_CTRL

Бит | Название | Описание
3..0 | MUX | Источник для выходной последовательности: 0000 - входная последовательность 0001 - TEST_GEN - узел формирования тестовой последовательности

Управление выходным мультиплексором.

### Регистр TEST_CHECK_CTRL

Бит | Название | Описание
0 | RESET | 1 - сброс узла
3..1 | - |
4 | - |
5 | START | 1 - разрешение работы
6 | - |
7 | FIX_MODE | 1 - фиксированный тип блока
11..8 | BLOCK_MODE | Номер типа блока при FIX_MODE=1
15..12 | - |

Управление узлом TEST_CHECK - проверка тестовой последовательности.

### Регистр TEST_CHECK_SIZE

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

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

### Регистр TEST_GEN_CTRL

Бит | Название | Описание
0 | RESET | 1 - сброс узла
3..1 | - |
4 | - |
5 | START | 1 - разрешение работы
6 | CNT_MODE | 1 - разрешение работы счётчиков TEST_GEN_CNT1, TEST_GEN_CNT2
7 | FIX_MODE | 1 - фиксированный тип блока
11..8 | BLOCK_MODE | Номер тип блока при FIX_MODE=1
14..12 | - |
15 | RDY | 1 - принудительная установка готовности FIFO

Управление узлом TEST_GEN - формирование тестовой последовательности.

### Регистр TEST_GEN_SIZE

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

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

### Регистр TEST_GEN_CNT1

Бит | Название | Описание
15..0 | CNT | Число тактов разрешения работы

### Регистр TEST_GEN_CNT2

Бит | Название | Описание
15..0 | CNT | Число тактов паузы в работе TEST_GEN

### Регистры TEST_CHECK_BL_RD_L, TEST_CHECK_BL_RD_H

Бит | Название | Описание
15..0 | CNT | Число принятых блоков

Регистры содержат число принятых блоков. Регистр TEST_CHECK_BL_RD_L содержит младшее слово, регистр TEST_CHECK_BL_RD_H содержит старшее слово.

### Регистры TEST_CHECK_BL_OK_L, TEST_CHECK_BL_OK_H

Бит | Название | Описание
15..0 | CNT | Число правильно принятых блоков

Регистры содержат число правильно принятых блоков. Регистр TEST_CHECK_BL_OK_L содержит младшее слово, регистр TEST_CHECK_BL_OK_H содержит старшее слово.

### Регистры TEST_CHECK_BL_ERROR_L, TEST_CHECK_BL_ERROR_H

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

Регистры содержат число принятых блоков с ошибками. Регистр TEST_CHECK_BL_ERROR_L содержит младшее слово, регистр TEST_CHECK_BL_ERROR_H содержит старшее слово.

### Регистры TEST_CHECK_TOTAL_ERROR_L, TEST_CHECK_TOTAL_ERROR_H

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

Регистры содержат общее число ошибок. Регистр TEST_CHECK_TOTAL_ERROR_L содержит младшее слово, регистр TEST_CHECK_TOTAL_ERROR_H содержит старшее слово.

### Регистры TEST_CHECK_ERROR_ADR

Бит | Название | Описание
3..0 | ADR_WORD | Номер слова
7..4 | NUM_ERROR | Номер ошибки
15..8 | - |

Регистр содержит адрес для доступа к памяти результата. Поле NUM_ERROR содержит номер ошибки. Поле ADR_WORD содержит адрес 16-ти разрядного слова в памяти результата.

### Формат слова в памяти результата

ADR_WORD | Название | Описание
0 | DATA_IN[15..0] | Принятое слово из тестовой последовательности
1 | DATA_IN[31..16]
2 | DATA_IN[47..32]
3 | DATA_IN[63..48]
4 | DATA_EXPECT[15..0] | Ожидаемое слово в тестовой последовательности
5 | DATA_EXPECT[31..16]
6 | DATA_EXPECT[47..32]
7 | DATA_EXPECT[63..48]
8 | ADR[15..0] | Адрес внутри блока
9 | ADR[31..16]
10 | BLOCK[15..0] | Номер блока
11 | BLOCK[31..16]

Регистр содержит адрес для доступа к памяти результата. Поле NUM_ERROR содержит номер ошибки. Поле ADR_WORD содержит адрес 16-ти разрядного слова в памяти результата.

### Регистры TEST_CHECK_ERROR_DATA

Бит | Название | Описание
15..0 | DATA | Слово из памяти результата

Регистр содержит слово из памяти результата соответствующее адресу из регистра TEST_CHECK_ERROR_ADR.

### Регистры TEST_GEN_BL_WR_L, TEST_GEN_BL_WR_H

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

Регистры содержат число переданных блоков. Регистр TEST_GEN_BL_WR_L содержит младшее слово, регистр TEST_GEN_BL_WR_H содержит старшее слово.

### Регистры FREQ0, FREQ1, FREQ2

Бит | Название | Описание
15..0 | FREQ | Значение тактовой частоты

Значение младшего разряда поля FREQ равно 100 кГц. Значение тактовой частоты определяется как FREQ * 100 кГц.

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

1.0 | 12.09.2007 | Базовая версия
1.3 | 11.06.2008 | Добавлены регистры измерения частоты FREQ0 - FREQ2