New (July 2008) manual_1_1

advertisement
16-канальная плата АЦП.
Версия 1.1.i
Игорь Алексеев и Дмитрий Свирида, ИТЭФ, Москва
01.07.2008
Модуль 16-канального АЦП выполнен в формате VME и
предназначен для сбора и накопления информации в режиме без
мертвого времени с калориметрических модулей. Настоящее
описание охватывает вопросы устройства и программирования
модуля и соответствует версии firmware 1.1.
Версия
1.0
1.1
Дата
дек-04
окт-05
1.1.i
июль-08
Таблица изменений
Изменения
Исходная версия
1)
Добавлена память
2)
Убраны биты состояния триггера из ADCCSR
3)
Заменено содержимое слова 3, записываемого по
триггеру. Вместо константы там теперь 32 бита
состояния сигналов на разъемах TOP, BOTTOM, LEFT,
RIGHT и AUX.
Версия для плат с серийными номерами 6-35.
1. Введение
Упрощенная блок-схема платы АЦП приведена на рисунке:
SHAPER #0
ADC
SHAPER #7
ADC
SHAPER #8
ADC
SHAPER #15
SPARTAN II
XC2S100
Ch. #0-7
SPARTAN II
XC2S100
Ch. #8-15
SPARTAN II
XC2S100
Memory &
VME
VME
SDRAM
ADC
Входные сигналы поступают на 16 плат формирователей1, где короткий
сигнал (10-50 нс) переформировывается в более длинный (примерно 400 нс).
Получившиеся сигналы подаются на 10-битный АЦП2, где оцифровываются с
частотой 40 точек в мкс. Оцифрованные данные (160 бит каждый такт 40 МГц)
подаются на две микросхемы программируемой логики (по 80 бит на каждую), в
которых происходит:
 сравнение с заданным поканально порогом и выработка наружу
импульса, если хотя бы один сигнал превышает порог;
 задержка сигнала до 256 тактов 40 МГц на входном FIFO;
 по приходу внешнего триггера данные по всем каналам в пределах
запрограммированного временного окна переносятся в выходное FIFO, с
1
2
ВНИМАНИЕ: платки формирователей ставятся на плату АЦП разъемом J1 вверх.
Использованы микросхемы AD9218 фирмы Analog Devices (www.analog.com).
добавлением 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
Название Значение
MCSR
Биты:
31 – если этот бит установлен, то по триггеру данные будут
автоматически передаваться во встроенную память. Бит
сбрасывается по приходу сигнала конца сброса5. Когда этот
бит установлен невозможен доступ к регистрам 0х40-0x80.
30 – установка этого бита приводит к инициализации
контроллера памяти.
25 – этот бит ставится автоматически по приходу сигнала
конца сброса5.
24 – переполнение буфера триггеров.
10:0 – длина триггера в 32-битных словах. Это число должно
быть равно 5*(<длина окна>+1). Длина окна это биты 15:8
регистра WIN.
Остальные биты зарезервированы.
MADDR Адрес в памяти в 32-битных словах.
MDATA Данные памяти. Запись/чтение приводит к записи/чтению 32битного слова памяти и к автоматическому увеличению
адреса.
MTRIG
Счетчик триггеров контроллера памяти.
ВНИМАНИЕ: переключатель SW1:6 управляет включением/выключением расположенного
на плате кварцевого генератора и должен быть всегда в положении ‘OFF’.
4 Смещение относительно базового адреса модуля.
5 Сигнал конца сброса декодируется как активный уровень триггера длиннее 1 мкс.
3
0x40
0x44
0x48
0x4C
0x50
0x60-0x7C
ADCCSR Биты:
3:0 – для плат с серийными номерами 1-5:
установка усиления для каждой из 4-х микросхем
АЦП. 0 – 1 В пик-пик, 1 – 2 В пик-пик.
3:0 – для плат с серийными номерами 6-35:
бит 0 – установка усиления для всех 4-х микросхем
АЦП. 0 – 1 В пик-пик, 1 – 2 В пик-пик.
бит 1 – полярность смещения рассчитана на
отрицательный сигнал (0) или положительный (1).
биты 3:2 – зарезервированы.
4 – разрешение внутреннего триггера, т.е. выработанный
сигнал о превышении порога автоматически становится
триггером.
5 – разрешение внешнего входа триггера
8 – нет данных (‘1’, когда нет данных в выходном FIFO),
(только чтение)
15 – переполнение выходного FIFO (‘1’), (только чтение)
Остальные биты зарезервированы.
WIN
Биты:
7:0 – глубина входного FIFO;
15:8 – длина окна.
TRIG
Номер триггера (только чтение). Запись любого числа
приводит к сбросу счетчика триггеров и всех FIFO.
DATA
Чтение данных.
TBLK
Биты 7:0 – длительность блокировки внутреннего триггера в
тактах 40 МГц.
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:
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
Download