канальная плата АЦП. 16- Версия 1.2.j Игорь Алексеев и Дмитрий Свирида, ИТЭФ, Москва

advertisement
16-канальная плата АЦП.
Версия 1.2.j
Игорь Алексеев и Дмитрий Свирида, ИТЭФ, Москва
20.05.2014
Модуль 16-канального АЦП выполнен в формате VME и
предназначен для сбора и накопления информации в режиме без
мертвого времени с калориметрических модулей. Настоящее
описание охватывает вопросы устройства и программирования
модуля и соответствует версии firmware 1.1. В дополнение
описана специальная версия firmware для использования модуля
в качестве 16-канальной пересчетки.
Версия
1.0
1.1
1.1.i
1.1.j
1.2.j
Таблица изменений
Изменения
Исходная версия
1)
Добавлена память
2)
Убраны биты состояния триггера из ADCCSR
3)
Заменено содержимое слова 3, записываемого по
триггеру. Вместо константы там теперь 32 бита
состояния сигналов на разъемах TOP, BOTTOM, LEFT,
RIGHT и AUX.
июль-08 Версия для плат с серийными номерами 6-35.
Июнь-12 Исправлена ошибка контроллера памяти, проявляющаяся
только на новых контроллерах VME.
Май-14
Создана специальная версия для пересчеток.
Дата
дек-04
окт-05
1. Введение
Упрощенная блок-схема платы АЦП приведена на рисунке:
S
H
A
P
E
R
#
0 A
D
C S
P
A
R
T
A
N
I
I
X
C
2
S
1
0
0
C
h
.#
0
7
S
H
A
P
E
R
#
7 A
D
C
S
H
A
P
E
R
#
8 A
D
C S
P
A
R
T
A
N
I
I
X
C
2
S
1
0
0
C
h
.#
8
1
5
S
H
A
P
E
R
#
1
5 A
D
C
M
E
S
P
A
R
T
A
N
I
I V
X
C
2
S
1
0
0
M
e
m
o
r
y
&
V
M
E
S
D
R
A
M
Входные сигналы поступают на 16 плат формирователей1, где короткий
сигнал (10-50 нс) переформировывается в более длинный (примерно 400 нс).
Получившиеся сигналы подаются на 10-битный АЦП2, где оцифровываются с
частотой 40 точек в мкс. Оцифрованные данные (160 бит каждый такт 40 МГц)
подаются на две микросхемы программируемой логики (по 80 бит на каждую), в
которых происходит:
1
2
ВНИМАНИЕ: платки формирователей ставятся на плату АЦП разъемом J1 вверх.
Использованы микросхемы AD9218 фирмы Analog Devices (www.analog.com).

сравнение с заданным поканально порогом и выработка наружу
импульса, если хотя бы один сигнал превышает порог;
 задержка сигнала до 256 тактов 40 МГц на входном FIFO;
 по приходу внешнего триггера данные по всем каналам в пределах
запрограммированного временного окна переносятся в выходное FIFO, с
добавлением 80-битного заголовка. Данные из выходного FIFO могут
быть прочитаны по шине VME.
В настоящей версии платы впаяна микросхема памяти (SDRAM) размером
32Мбайт.
2. Доступ по шине VME
Модуль поддерживает только одну моду обмена – 32 бита адреса, 32 бита
данных, непривилегированный доступ, что соответствует адресному
модификатору VME 0x09. Номер модуля задается с помощью переключателей
SW1:1-53, расположенных на плате. “ON” – соответствует биту 0, а “OFF” – 1.
Базовый адрес вычисляется по формуле: 0xADC16000 + 0x100*N, где N – номер
модуля. При обращении к регистрам младшие 16 бит 32-битного слова
относятся к FPGA, контролирующей каналы 0-7, а старшие 16 бит к FPGA,
контролирующей каналы 8-15. Формат регистров приведен в таблице:
Адр.4
0x00
0x04
0x08
0x0C
0x40
Название Значение
MCSR
Биты:
31 – если этот бит установлен, то по триггеру данные будут
автоматически передаваться во встроенную память. Бит
сбрасывается по приходу сигнала конца сброса5. Когда этот
бит установлен невозможен доступ к регистрам 0х40-0x80.
30 – установка этого бита приводит к инициализации
контроллера памяти.
25 – этот бит ставится автоматически по приходу сигнала
конца сброса5.
24 – переполнение буфера триггеров.
10:0 – длина триггера в 32-битных словах. Это число должно
быть равно 5*(<длина окна>+1). Длина окна это биты 15:8
регистра WIN.
Остальные биты зарезервированы.
MADDR Адрес в памяти в 32-битных словах.
MDATA Данные памяти. Запись/чтение приводит к записи/чтению 32битного слова памяти и к автоматическому увеличению
адреса.
MTRIG
Счетчик триггеров контроллера памяти.
ADCCSR Биты:
3:0 – для плат с серийными номерами 1-5:
установка усиления для каждой из 4-х микросхем
АЦП. 0 – 1 В пик-пик, 1 – 2 В пик-пик.
3:0 – для плат с серийными номерами 6-35:
бит 0 – установка усиления для всех 4-х микросхем
АЦП. 0 – 1 В пик-пик, 1 – 2 В пик-пик.
ВНИМАНИЕ: переключатель SW1:6 управляет включением/выключением
расположенного на плате кварцевого генератора и должен быть всегда в положении ‘OFF’.
4
Смещение относительно базового адреса модуля.
5
Сигнал конца сброса декодируется как активный уровень триггера длиннее 1 мкс.
3
0x44
WIN
0x48
TRIG
0x4C
0x50
DATA
TBLK
0x60-0x7C
THRS
бит 1 – полярность смещения рассчитана на
отрицательный сигнал (0) или положительный (1).
биты 3:2 – зарезервированы.
4 – разрешение внутреннего триггера, т.е. выработанный
сигнал о превышении порога автоматически становится
триггером.
5 – разрешение внешнего входа триггера
8 – нет данных (‘1’, когда нет данных в выходном FIFO),
(только чтение)
15 – переполнение выходного FIFO (‘1’), (только чтение)
Остальные биты зарезервированы.
Биты:
7:0 – глубина входного FIFO;
15:8 – длина окна.
Номер триггера (только чтение). Запись любого числа
приводит к сбросу счетчика триггеров и всех FIFO.
Чтение данных.
Биты 7:0 – длительность блокировки внутреннего триггера в
тактах 40 МГц.
Поканальный порог для выдачи выходного импульса.
Биты:
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:
31
0
Биты признаков триггера, защелкнутые по его фронту:
[Frame1]
32-битное слово 4:
15
константа 0xADC1
0
Каждое следующее 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 каналов 815, красным при переполнении.
Практически, светодиоды 4 и 6 и 2, 3 и 5 дублируют друг друга.
3 разъема “LEMO”:
1. (верхний) Выход триггера, активный низкий.
2. Вход триггера, активный высокий.
3. (нижний) Вход внешней частоты (в настоящей версии не задействован.
Сигналы имеют уровни TTL или LVTTL. Входные сигналы согласованы на
50 Ом. Выход триггера вырабатывается открытым коллектором активным
низким и имеет внутри нагрузку 10 кОм на +3.3 В. Рекомендуется на
принимающей плате поставить нагрузку 50-100 Ом на +2.0 В. На рисунке
приведена простейшая схема выработки триггера с объединением модулей с
помощью «проводного или»:
+2.0
50 Ом
Выход триггера
АЦП
АЦП
АЦП
Разветвитель

Более правильная схема содержит преобразователи TTL-NIM, с входным
согласованием 50 Ом на +2-3 В, логику триггера в стандарте NIM с
выработкой блокировки триггеров ближе чем <длина окна><задержка>+200нс и преобразователей NIM-TTL. Кроме того в триггер
необходимо подмешать сигнал конца сброса – триггерный импульс
длительностью 5-10 мкс.
Входной 34-контактный разъем. Верхние два контакта и все левые контакты
– земля. Правые контакты – сигнальные. Самый нижний контакт – канал 0,
следующий – 1 и т.д. Второй сверху контакт – канал 15. В настоящий
момент входы согласованы на 100 Ом.
4. Регулировка смещения
Снизу вблизи от входного разъема на плате расположены два подстроечных
резистора и две точки для контроля напряжения, предназначенные для задания
педесталов. Напряжения выставляются с помощью подстроечных резисторов,
так чтобы установить нужный педестал (~1000 для отрицательных сигналов и
~20 для положительных) и среднее арифметическое напряжений на
контрольных точках было 1 В. Для плат с серийными номерами 1-5 резисторы
просто регулируют соответствующее напряжение, и для правильного смещения
его необходимо каждый раз регулировать при смене усиления или полярности
сигнала. Для плат с серийными номерами 6-35 резисторы устанавливают только
величину смещения. Верхний резистор регулирует для диапазона 1 В пик-пик, а
нижний для диапазона 2 В пик-пик. Нужно настроить оба резистора, после чего
полярность смещения и его величина будут переключаться автоматически в
соответствии с выбором в регистре ADCCSR.
П
одстроечны
е
резисторы
В
ходнойразъем
К
онтрольны
е
точки
Земля
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
5. Особая версия прошивки для работы в качестве
16-канальной пересчетки
В этой версии модуль принимает импульсы ТТЛ по входам разъема
межмодульной связи и считает каждый вход на независимой 40-битной
пересчетке. Минимальная длительность импульса и минимальный интервал
между импульсами составляют один период основной частоты, т.е. 25 нс. Таким
образом, максимальная входная частота — 20 МГц. В самом модуле нет
согласования, соответственно для исключения отражений рекомендуется или
добавить согласующие резисторы на кабель близко от разъема, или
использовать согласование по выходу источника сигнала. По приходу внешнего
триггера происходит запоминание всех значений в блоке триггера, который
может быть прочитан из памяти стандартным способом. Особенности этой
прошивки по сравнению со стандартной приведены ниже:
 светодиоды 3-6 не используются;
 аналоговые входы не используются;
 выходной триггер на вырабатывается;

Длина триггерного блока составляет 25 32-битных слов, соответственно,
для правильной работы в регистре MCSR [BASE + 0] в биты 10:0 должно
быть записано 25;
 регистр ADCCSR [BASE + 0x40] имеет следующее назначение бит:
15 — сброс всех пересчеток;
14 — сброс счетчика триггеров;
9 — разрешение счета пересчеток;
8 — разрешение приема триггеров;
2:0 — выбор пересчетки для прямого считывания.
 Регистр WIN [BASE + 0x44] доступен только по чтению и выдает
значение 4 в качестве длины окна;
 Регистр TRIG [BASE + 0x48] доступен только по чтению, сброс
счетчика триггеров реализован через бит в ADCCSR;
 По адресам [BASE + 0x50] - [BASE + 0x58] расположены регистры
CNTLOW, CNTMID и CNTHIGH соответственно. Через них можно
прочесть мгновенное значение пересчетки, номер которой записан в
младших битах ADCCSR.
 В FIFO событие лежит в виде 5 160-битных слов как и в основной
прошивке. Первое слово служебное и содержит следующие 16-битные
«половинки»:
 номер триггера;
 «длина окна» - всегда 4;
 константа 0;
 константа 0;
 константа 0xADC2.
В четырех следующих словах содержится содержимое пересчеток на момент
прихода триггера. Данные лежат просто последовательно в каждой
«половинке». Т.е. В младшей «половинке» первого 32-битного слова
будут младшие 16-бит пересчетки 0, в следующем слове — следующие
16 бит этой же пересчетки, дальше 8 старших бит пересчетки 0 и
младшие 8 бит пересчетки 1 и т.д.
 Соответствие пересчеток и входных разъемов приведено в таблице:
Номер
Разъем, контакты (нечетные — сигнал, четные - земля)
Младший Spartan II
Старший Spartan II
0
TOP 1,2
BOTTOM 1,2
1
TOP 3,4
BOTTOM 3,4
2
TOP 5,6
BOTTOM 5,6
3
TOP 7,8
BOTTOM 7,8
4
LEFT 1,2
LEFT 5,6
5
LEFT 3,4
LEFT 7,8
6
RIGHT 1,2
RIGHT 5,6
7
RIGHT 3,4
RIGHT 7,8
Download