16-канальная плата АЦП.

Версия 1.1

Игорь Алексеев и Дмитрий Свирида, ИТЭФ, Москва

24.10.2005

Модуль 16-канального АЦП выполнен в формате VME и предназначен для сбора и накопления информации в режиме без мертвого времени с калориметрических модулей. Настоящее описание охватывает вопросы устройства и программирования модуля и соответствует версии firmware 1.1.

Таблица изменений

Версия

Дата

Изменения

1.0

дек-04

Исходная версия

1.1

окт-05

1)  Добавлена память

2)  Убраны биты состояния триггера из ADCCSR

3)  Заменено содержимое слова 3, записываемого по триггеру. Вместо константы там теперь 32 бита состояния сигналов на разъемах TOP, BOTTOM, LEFT, RIGHT и AUX.



1. Введение

Упрощенная блок-схема платы АЦП приведена на рисунке:

Входные сигналы поступают на 16 плат формирователей[1], где короткий сигнал (10-50 нс) переформировывается в более длинный (примерно 400 нс). Получившиеся сигналы подаются на 10-битный АЦП[2], где оцифровываются с частотой 40 точек в мкс. Оцифрованные данные (160 бит каждый такт 40 МГц) подаются на две микросхемы программируемой логики (по 80 бит на каждую), в которых происходит:

·  сравнение с заданным поканально порогом и выработка наружу импульса, если хотя бы один сигнал превышает порог;

·  задержка сигнала до 256 тактов 40 МГц на входном FIFO;

·  по приходу внешнего триггера данные по всем каналам в пределах запрограммированного временного окна переносятся в выходное FIFO, с добавлением 80-битного заголовка. Данные из выходного FIFO могут быть прочитаны по шине VME.

НЕ нашли? Не то? Что вы ищете?

В настоящей версии платы впаяна микросхема памяти (SDRAM) размером 32Мбайт.

2. Доступ по шине VME

Модуль поддерживает только одну моду обмена – 32 бита адреса, 32 бита данных, непривилегированный доступ, что соответствует адресному модификатору VME 0x09. Номер модуля задается с помощью переключателей SW1:1-5[3], расположенных на плате. “ON” – соответствует биту 0, а “OFF” – 1. Базовый адрес вычисляется по формуле: 0xADC16000 + 0x100*N, где N – номер модуля. Формат регистров приведен в таблице:

Адр.[4]

Название

Значение

32-битные регистры в контроллере памяти и VME.

0x00

MCSR

Биты:

31 – если этот бит установлен, то по триггеру данные будут автоматически передаваться во встроенную память. Бит сбрасывается по приходу сигнала конца сброса[5]. Когда этот бит установлен невозможен доступ к регистрам 0х40-0x80.

30 – установка этого бита приводит к инициализации контроллера памяти.

25 – этот бит ставится автоматически по приходу сигнала конца сброса5.

24 – переполнение буфера триггеров.

10:0 – длина триггера в 32-битных словах. Это число должно быть равно 5*(<длина окна>+1). Длина окна это биты 15:8 регистра WIN.

Остальные биты зарезервированы.

0x04

MADDR

Адрес в памяти в 32-битных словах.

0x08

MDATA

Данные памяти. Запись/чтение приводит к записи/чтению 32-битного слова памяти и к автоматическому увеличению адреса.

0x0C

MTRIG

Счетчик триггеров контроллера памяти.

0x10-0x3C

Зарезервированы.

Регистры в контроллерах каналов АЦП. Младшие 16 бит соответствуют каналам #0-7, старшие каналам #8-15. В большинстве случаев в младшие и старшие 16 бит имеет смысл писать одно и тоже. Запись разной длины окна полностью лишена смысла.

0x40

ADCCSR

Биты:

3:0 – установка усиления для каждой из 4-х микросхем АЦП. 0 – 1 В пик-пик, 1 – 2 В пик-пик.

4 – разрешение внутреннего триггера, т. е. выработанный сигнал о превышении порога автоматически становится триггером. Этот режим предназначен исключительно для отладки. Кроме того, этот триггер не попадает на контроллер памяти, поэтому при использовании такого триггера

5 – разрешение внешнего входа триггера

8 – нет данных (‘1’, когда нет данных в выходном FIFO), (только чтение)

15 – переполнение выходного FIFO (‘1’), (только чтение)

Остальные биты зарезервированы.

0x44

WIN

Биты:

7:0 – глубина входного FIFO;

15:8 – длина окна.

0x48

TRIG

Номер триггера (только чтение). Запись любого числа приводит к сбросу счетчика триггеров и всех FIFO.

0x4C

DATA

Чтение данных.

0x50

TBLK

Биты 7:0 – длительность блокировки внутреннего триггера в тактах 40 МГц.

0x60-0x7C

THRS

Поканальный порог для выдачи выходного импульса.

Биты:

9:0 – значение порога

14 – полярность входного сигнала. 0 – положительная, 1 – отрицательная.

15 – включение данного канала (‘1’ – канал включен)

Выходное FIFO организовано по 160 бит, которые вычитываются за 5 32-битных обращений по шине VME. Одно событие занимает число 160-битных слов, равное длине окна плюс одно слово. Первое 160-битное слово FIFO служебное и его формат приведен ниже. Младшие 16 бит относятся к первым 8 каналам, а старшие к следующим 8.

32-битное слово 0, каждая из 16 битных половинок, содержимое регистра TRIG на момент прихода триггера:

15

0

номер триггера

32-битное слово 1, содержимое регистра WIN на момент прихода триггера:

15

8

7

0

длина окна

задержка

32-битное слово 2, содержимое регистра CSR на момент прихода триггера:

15

8

3

2

1

0

переполнение выходного FIFO

выходное FIFO пусто

усиление для пар каналов

32-битное слово 3, биты признаков триггера, защелкнутые по его фронту:

Биты

Разъем

Контакты

0-7

VME P2 (нижний)

C17-C24

8-11

Передняя панель «верхний» (1й сверху)

1, 3, 5, 7

12, 13

Передняя панель «левый» (2й сверху)

1, 3

14, 15

Передняя панель «правый» (3й сверху)

1, 3

16-23

VME P2 (нижний)

C25-C32

24-27

Передняя панель «нижний» (4й сверху)

1, 3, 5, 7

28, 29

Передняя панель «левый» (2й сверху)

5, 7

30, 31

Передняя панель «правый» (3й сверху)

5, 7

32-битное слово 4:

15

0

константа 0xADC1

Каждое следующее 160-битное слово содержит мгновенное значение напряжений для всех 16 каналов. Если прочитать 5 32-битных слов в массив data[5], то будет следующее соответствие данных и каналов:

Канал

Данные

0

((data[0] >> 10) & 0x3F) | ((data[1] & 0x0F) << 6)

1

data[0] & 0x3FF

2

((data[1] >> 14) & 0x03) | ((data[2] & 0xFF) << 2)

3

(data[1] >> 4) & 0x3FF

4

(data[3] >> 2) & 0x3FF

5

((data[2] >> 8) & 0xFF) | ((data[3] & 0x03) << 8)

6

(data[4] >> 6) & 0x3FF

7

((data[3] >> 12) & 0x0F) | ((data[4] & 0x3F) << 4)

8

((data[0] >> 26) & 0x3F) | (((data[1] >>16) & 0x0F) << 6)

9

(data[0] >> 16) & 0x3FF

10

((data[1] >> 30) & 0x03) | (((data[2] >> 16) & 0xFF) << 2)

11

(data[1] >> 20) & 0x3FF

12

(data[3] >> 18) & 0x3FF

13

((data[2] >> 24) & 0xFF) | (((data[3] >>16) & 0x03) << 8)

14

(data[4] >> 22) & 0x3FF

15

((data[3] >> 28) & 0x0F) | (((data[4] >>16) & 0x3F) << 4)

Формат данных, читаемых из памяти в точности совпадает.

3. Передняя панель

На передней панели расположены (сверху вниз):

·  разъем межмодульной связи, предназначенный для выработки триггера по кластеру в калориметре. В текущей версии используется только для запоминания, связанной с триггером статусной информации. Сверху вниз идут: «верхний», «левый», «правый» и нижний». На каждом разъеме первая нога верхняя.

·  6 светодиодов, имеющих следующий смысл:

1.  (верхний) Должен вспыхнуть на 1-2 секунды при включении питания. Если остался гореть работа с модулем невозможна. следует попробовать перевключить питание или нажать на кнопку сброса, расположенную на плате сверху вблизи от передней панели.

2.  Мигает зеленым при доступе через шину VME, мигает красным при приходе триггера.

3.  Мигает зеленым при доступе через шину VME, мигает красным при приходе триггера.

4.  Горит зеленым если есть данные в выходном FIFO каналов 0-7, красным при переполнении.

5.  Мигает зеленым при доступе через шину VME, мигает красным при приходе триггера.

6.  (нижний) Горит зеленым если есть данные в выходном FIFO каналов 8-15, красным при переполнении.

Практически, светодиоды 4 и 6 и 2, 3 и 5 дублируют друг друга.

·  3 разъема “LEMO”:

1.  (верхний) Выход триггера, активный низкий.

2.  Вход триггера, активный высокий.

3.  (нижний) Вход внешней частоты (в настоящей версии не задействован.

Сигналы имеют уровни TTL или LVTTL. Входные сигналы согласованы на 50 Ом. Выход триггера вырабатывается открытым коллектором активным низким и имеет внутри нагрузку 10 кОм на +3.3 В. Рекомендуется на принимающей плате поставить нагрузку 50-100 Ом на +2.0 В. На рисунке приведена простейшая схема выработки триггера с объединением модулей с помощью «проводного или»:

Более правильная схема содержит преобразователи TTL-NIM, с входным согласованием 50 Ом на +2-3 В, логику триггера в стандарте NIM с выработкой блокировки триггеров ближе чем <длина окна>-<задержка>+200нс и преобразователей NIM-TTL. Кроме того в триггер необходимо подмешать сигнал конца сброса – триггерный импульс длительностью 5-10 мкс.

·  Входной 34-контактный разъем. Верхние два контакта и все левые контакты – земля. Правые контакты – сигнальные. Самый нижний контакт – канал 0, следующий – 1 и т. д. Второй сверху контакт – канал 15. В настоящий момент входы согласованы на 100 Ом.

4. Регулировка смещения

Снизу вблизи от входного разъема на плате расположены два подстроечных резистора и две точки для контроля напряжения, предназначенные для задания педесталов. Напряжения выставляются с помощью подстроечных резисторов, так чтобы установить нужный педестал и среднее арифметическое напряжений на контрольных точках было 1 В.

5. Алгоритм программирования

1  Подготовка модуля к работе:

1.1  Сбросить бит 31 в MCSR.

1.2  Запрограммировать регистры ADCCSR, WIN, TBLK и THRS.

1.3  Записать 0 в регистры TRIG, MTRIG и MADDR.

1.4  Запрограммировать MCSR со стоящим старшим битом.

2  Модуль готов к набору данных. В конце сброса нужно:

2.1  Дождаться бита 25 или отсутствия бита 31 или сбросить бит 31 руками.

2.2  Прочитать регистры MADDR, TRIG и MTRIG. Убедиться, что они находятся в правильном соответствии. содержимое MADDR это длина запомненных данных в 32-битных словах.

2.3  Записать 0 в MADDR.

2.4  Прочитать из регистра MDATA запомненные данные.

2.5  Записать 0 в регистры TRIG, MTRIG и MADDR.

2.6  Запрограммировать MCSR со стоящим старшим битом.

2.7  Перейти к пункту 2.1

[1] ВНИМАНИЕ: платки формирователей ставятся на плату АЦП разъемом J1 вверх.

[2] Использованы микросхемы AD9218 фирмы Analog Devices (www. ).

[3] ВНИМАНИЕ: переключатель SW1:6 управляет включением/выключением расположенного на плате кварцевого генератора и должен быть всегда в положении ‘OFF’.

[4] Смещение относительно базового адреса модуля.

[5] Сигнал конца сброса декодируется как активный уровень триггера длиннее 1 мкс.