Версия 3. 10.03.2009 ЦИФРОВОЙ РЕГИСТРАТОР ФОРМЫ ИМПУЛЬСНЫХ СИГНАЛОВ ADC200ME-PCI Техническое описание Институт Ядерной Физики СО РАН Новосибирск 2009 Назначение и параметры модуля Двух канальная мезонинная плата в стандарте PMC ADC200ME-PCI предназначена для регистрации в цифровом виде формы импульсных сигналов с длительностью, начиная от нескольких десятков наносекунд. Оба канала тактируются синхронно. Ввиду очень большого объёма буферной памяти модуль не содержит делителя внешней тактовой частоты. Длительность регистрируемого процесса при внутреннем тактировании 200 МГц может достигать 1,048,576•5нс = 5.24 мс. Предусмотрено внешнее тактирование (вход “Timer”). Достижение высоких точностных характеристик для высокоскоростных АЦП достаточно проблематично без специальных мер. Поэтому в мезонинные платы встроен прецизионный калибратор, позволяющий измерить смещение нуля и ошибку масштаба на каждом диапазоне и откорректировать измерения программным образом. Основные свойства ADC200ME-PCI: два канала с синхронным тактированием; разрядность - 12 бит; буферная память 1,048,576×(2×12 бит) многостраничная организация памяти; внутреннее таймирование 200 МГц внешнее таймирование 50 – 200 МГц внутренний/внешний триггер; встроенный ЦАП для калибровки; входное сопротивление 50 Ом / 1кОм. Рис.1. Внешний вид ADC200ME-PCI. Характеристики мезонинной платы ADC200ME Количество каналов 2 синхронных Разрядность 12 бит Эффективная разрядность на частоте 50 МГц ???????? Формат буферной памяти Внутренняя частота таймирования 12 бит }•1,048,576 слов 12 бит 200 МГц Внешняя частота таймирования 50 – 200 МГц Полоса частот (0.7) входного сигнала 512мВ, 1024мВ 2048мВ, 4096мВ, 0 100 МГц – типовое Задержка аналогового тракта ????????? нс - типовое Сдвиг нуля без калибровки ?????? LSB – max. Сдвиг нуля с калибровкой ?????? LSB – max. Ошибка масштаба преобразования без калибровки ??????% – типовое Ошибка масштаба преобразования с калибровкой ??????% – типовое Задержка внешнего сигнала таймирования ????? нс - типовое Величина Jitter’а при внутренней частоте таймирования ?????? пикосекунд Сопротивление входов InA / InB на землю 49.7 Ом 0.2% 998 Ом 0.2% Диапазоны входных сигналов моде Сопротивление входа “Timer” на землю (см. подробности в разделе « Синхронизация ADC200ME») Сопротивление входа “Trigger” на землю (см. подробности в разделе « Синхронизация ADC200ME») Перепад сигнала на входе “Timer” min / max (см. подробности в разделе « Синхронизация ADC 200ME») Пороги срабатывания по входу “Timer” (см. подробности в разделе « Синхронизация ADC 200ME») 50 Ом 5% 10 кОм 5% 50 Ом 5% 10 кОм 5% Перепад сигнала на входе “Trigger” min / max 0 3В / 30В 30В Токи, потребляемые мезонином +3.3 B +5.0 B +12 В 0.25В / 3В 0 В, +1.5В ???А ???А ???А Передняя панель Вид передней панели показан на рисунке 1. Назначение элементов передней панели: Светодиод “↔” – индикация обращения контроллера к соответствующей мезонинной плате; Светодиод “!” – индикация запроса прерывания: загорается при выставлении платой запроса и гаснет, когда запрос снят; Разъём TIMER – SMA-тип, вход сигнала таймирования от внешнего источника; положительный перепад напряжения инициирует преобразование в код и запись одного слова данных в память. Разъём TRIGGER – SMA-тип, положительный импульс на этом входе стартует процесс регистрации в режиме однократной записи либо останавливает её в режиме «Самописец». InA / InB – SMA-тип, входы регистрируемых сигналов. Структурная схема и функционирование ADC200ME На рисунке 2 показана структурная схема платы – мезонина. В состав ADC200ME входят два одинаковых и синхронно работающих тракта аналого-цифрового преобразования, каждый из которых включает в себя усилитель с программируемым коэффициентом усиления, собственно АЦП и блок буферной памяти. Кроме того, общими узлами платы являются ЦАП калибровки, интерфейс, логика управления и таймирования, цепи синхронизации. Рис.2. Структурная схема ADC200ME. С помощью джампера JX можно установить входное сопротивление канала 49.7 Ом, либо 998 Ом. Прецизионное входное сопротивление даёт возможность при необходимости добавить входной делитель с точным коэффициентом передачи. Усилитель с программируемым коэффициентом позволяет выбрать один из четырёх диапазонов входного сигнала. АЦП в моменты отсчётов преобразует мгновенные значения сигналов в 12-разрядный цифровой код, который записывается и хранится в буферной памяти. Моменты отсчётов задаются схемой таймирования. Возможен программный выбор внутреннего таймирующего генератора 200 МГц, либо внешнего источника сигналов таймирования, подключаемого к входу “Timer”. Параметры таймирующих сигналов варьируются в широких пределах (см. подробности в разделе «Синхронизация ADC200ME. Перед началом работы должны быть определены данные, которые следует записать в регистры модуля. Модуль может находиться в двух состояниях: в состоянии останова (Run=0) и в состоянии регистрации. В состоянии останова следует выполнять процедуры чтения данных из памяти, калибровки (PC), а также любые операции с внутренними регистрами. Единственным исключением является запись 1 в разряд HLT регистра управления и контроля CSR (см. ниже) для остановки процесса регистрации и перевода прибора в состояние, аналогичное начальному после включения питания. Переход из состояния останова в состояние регистрации (запись процесса) инициируется положительным фронтом сигнала, подаваемым на вход "TRIGGER" на передней панели, либо записью соответствующего слова данных в CSR. Данные обоих каналов записываются синхронно в ОЗУ, имеющем формат 24бита*1Мслово. Память имеет станичную организацию. Параметры страницы задаются двумя регистрами: регистром начального адреса регистрации и регистром длины страницы. При записи данных от АЦП память адресуется через счётчик текущего адреса памяти, который работаeт в автоинкрементном режиме. Существует возможность организовать непрерывную циклическую перезапись памяти данных (режим "Самописец"). Этот режим полезен в сторожевых системах, когда возникновение события, подлежащего регистрации, непредсказуемо во времени. Начало регистрации происходит при записи соответствующего слова данных в CSR. Остановить запись в режиме "Самописец" можно двумя способами: сигналом "TRIGGER" по передней панели либо сбросом в 0 бита REC регистра CSR. Адрес, в котором остановлена запись, может быть определён с помощью чтения текущего адреса памяти. После перехода в состояние останова могут быть прочитаны данные из памяти. Описание регистров I/O и памяти ADC200ME Внимание! Данные при работе с регистрами и памятью должны быть 32 разрядными. При записи незначащие старшие биты отбрасываются, а при чтении ”обнуляются”. Регистр управления и контроля (CSR) – Адрес I/O – 08h (BAR 0 – I/O) Данный регистр предназначен для установки, инициации и останова режимов работы ADC200ME. Он содержит 20 разрядов, доступных для чтения и записи (кроме бита AD04). Разряд AD00 Название RUN* Назначение Разрешение/запуск регистрации Запись 1 в этот разряд разрешает прохождение импульсов Trigger (при STM=1) или стартует регистрацию (при STM=0). По окончании регистрации одной страницы бит автоматически сбрасывается в 0. Принудительная запись 0 в этот бит до окончания регистрации переводит модуль в режим останова, причём записанные данные будут недостоверны. Сброс модуля в начальное состояние AD01 HLT Запись HLT=1: останавливает регистрацию и записывает: RUN=0 PC=0 Fn=0 REC=0 Внешний Trigger AD02 STM AD03 Fn AD04 BUSY AD05 PM Запись 1 разрешает команды старт/стоп только от внешних источников, поданных на вход “Trigger”. Запись в этот бит заблокирована, если RUN=1 или PC=1 или REC=1 Мода таймирования: от внешнего генератора (Fn=1); от внутреннего генератора 200 МГц (Fn=0) Запись в этот бит заблокирована, если RUN=1 или PC=1 или REC=1 BUZY=1 – идёт процесс измерения (бит доступен только для чтения) Организация памяти: многостраничная (PM=1) одностраничная (PM=0) Запись в этот бит заблокирована, если RUN=1 или PC=1 или REC=1 Инициация калибровки; AD06 PC* AD07 REC* AD08 AD09 AD10 AD11 Ch_A Ch_B по окончанию калибровки PС сбрасывается в 0. Запись “0” в этот бит до окончания калибровки переводит модуль в режим останова, причём данные будут недостоверны. Режим «Самописец». REC=1 устанавливает режим и стартует регистрацию. Останавливается регистрация внешним Trigger’ом или записью REC=0 Выбор диапазона входных напряжений канала «A» Выбор диапазона входных напряжений канала «B». См. продолжение ↓ AD08 0 1 0 1 AD09 0 0 1 1 CH_A ±4В ±2В ±1В ±0.5В AD10 0 1 0 1 AD11 0 0 1 1 CH_B ±4В ±2В ±1В ±0.5В (продолжение) AD12 ERR_LN AD13 ERR_PN AD14 ERR_PC AD15 ERR_OF Ошибка длины страницы. ERR_LN = 1 если длина страницы =0. Ошибка количества страниц. ERR_PN = 1 если количество страниц =0. Ошибка при принудительной остановке калибровки. Ошибка переполнения памяти. ERR_OF = 1 возникает при переполнении памяти в одностраничном и многостраничном режимах. AD16 ÷ Резерв AD19 * Наличие «1» хотя бы в одном бите - RUN, PC, REC – блокирует запись в два других. ** Биты ошибок доступны только по чтению. Сброс производится взводом HLT. Регистр начального адреса регистрации - Адрес I/O – 00h (BAR 0– I/O) Регистр содержит 20 бит и определяет адрес ячейки памяти, начиная с которой будет производиться запись данных (как в одностраничной, так и в многостраничной модах) в обоих каналах АЦП. Адресация байт отсутствует. Значение адреса находится в диапазоне 0hFFFFFh. Максимальный адрес FFFFEh. Регистр длины страницы - Адрес I/O – 04h (BAR0 – I/O) Регистр содержит 20 бит и задаёт длину страницы (как в одностраничной, так и в многостраничной модах). Может иметь значение в диапазоне 1h ÷ FFFFFh слов. Регистр количества страниц памяти - Адрес I/O - 10h (Bar 0– I/O) Регистр содержит 20 бит и определяет количество страниц памяти, в которые будут записываться данные измерений в «многостраничном» режиме. Запись нуля при использовании многостраничного режима недопустима и приведёт к прерыванию по ошибке. После взвода бита PM (многостраничная организация) запись в этот регистр - блокируется. Счетчик текущего адреса памяти (Tолько для чтения) - Адрес I/О – 0Ch (Bar 0– I/O) Счётчик текущего адреса содержит 20 бит и определяет адрес ячейки, в которую производится запись данных из обоих каналов АЦП. Счетчик текущего адреса работает в автоинкрементном режиме. Перед началом регистрации в счётчик текущего адреса загружаются данные из регистра начального адреса (см. выше). Счётчик текущего адреса необходим только для чтения адреса останова в режиме «Самописец» и может иметь значение в диапазоне 0h ÷ FFFFFh. Память данных – 1,048,576×24 бита – Адрес памяти – 0h ÷ 3FFFFCh (Bar 1 – Память I/O) Данные имеют следующий формат: AD23 ÷ Ch_В MSB ÷ AD12 AD11 LSB MSB ÷ Ch_A ÷ AD00 LSB Универсальная формула для получения напряжений из прочитанных данных без учёта калибровки: 2 * RNG U( mV ) [ DATA 2048] , где DATA – данные соответствующего канала, 4096 а RNG могут быть: 512мВ, 1024мВ, 2048мВ, 4096мВ, соответственно величины квантов на разных диапазонах: 0.25мВ, 0.5мВ, 1мВ, 2мВ. Получение точных напряжений возможно при использовании данных калибровки (см. Калибровка модуля). Внимание! Данные при работе с памятью должны быть 32 разрядными. При записи незначащие старшие биты отбрасываются, а при чтении ”обнуляются”. Преобразование адреса памяти данных мезонина в адрес на шине cPCI осуществляется умножением на 4 (FFFFFh * 4 = 3FFFFCh). Режимы работы ADC200ME Прерывания. Модуль вырабатывает два типа прерывания (Interrupt A INTA# на шине cPCI): прерывание по ошибке и прерывание по окончании режима (смотри ниже). Флаги ошибок расположены в регистре CSR (AD12÷AD15). Сброс прерывания производится при чтении регистра CSR, поэтому любые операции с модулем по получению прерывания должны начинаться с чтения регистра CSR. «Одностраничный» режим. Устанавливается записью «0» в бит PM регистра CSR. Память данных состоит из одной страницы, описываемой параметрами, хранящимися в регистре начального адреса и регистре длины страницы. Счётчик текущего адреса памяти загружается из регистра начального адреса (A0) перед каждым измерением. Первое слово записывается по адресу A0. Длина страницы V не должна превышать 1,048,576 слов. Последнее записанное слово лежит в ячейке с адресом A0 +V, а счётчик текущего адреса имеет значение A0 (готовность к следующему запуску). Установка бита RUN=0 приводит к остановке процесса регистрации в произвольном адресе внутри страницы. Порядок работы: 1. Установить режим измерения при значении бита RUN=0: диапазоны, режимы синхронизации, параметры страницы; 2. Установить бит RUN=1; 3. По получению прерывания: прочитать регистр CSR и проверить отсутствие единицы в битах ERR_OF и BUSY; 4. Прочитать необходимое количество слов; 5. При последующих измерениях пункт 1 можно исключить. Особый случай: Если PCI прерывание не возникло, то, прежде всего надо прочитать бит BUSY. Если BUSY=0 (не было Trigger’а или внешних тактов), вернуть устройство в исходное состояние можно, записав RUN=0. Если же RUN=1, (т.е. запись началась, но не закончилась) вернуть устройство в исходное состояние можно, записав HLT=1. «Многостраничный» режим. В «Многостраничном» режиме (PM=1) количество страниц M задаётся регистром количества страниц и ограничивается только допустимым объёмом памяти (1,048,576 слов). Начальный адрес первой страницы хранится в регистре начального адреса, а длина каждой страницы – в регистре длины страницы. Начальный адрес заносится в счётчик текущего адреса памяти при переводе бита PM из 0 в 1, поэтому для повторной процедуры записи M страниц необходимо сбросить и вновь установить в 1 бит PM. Запуск регистрации может производится как программно при установке бита RUN=1, так и от внешнего Trigger’а (определяется битом STM). Установка бита PM=0, приводит к остановке процесса регистрации в произвольном адресе внутри текущей страницы, т.к. этим выключается многостраничный режим, и устройство не знает, что делать дальше. Порядок работы для записи M страниц: 1. Установить (биты PM=0, RUN=0): диапазоны, режимы синхронизации, параметры страницы. 2. Установить бит PM=1; 3. Установить бит RUN=1 (при STM =1,один раз на запись всех страниц, прерывание после записи последней страницы), (при STM =0, необходимое число раз, для заполнение всех заказанных страниц); 4. По получению прерывания: прочитать регистр CSR и проверить отсутствие единицы в битах ERR_LN, ERR_PN,ERR_OF и BUSY; 5. Прочитать необходимое количество слов; 6. При последующих измерениях пункты 1 можно исключить. Особый случай: Если PCI прерывание не возникло, то прежде всего надо прочитать бит BUSY. Если BUSY=0 (не было Trigger’а или внешних тактов), вернуть устройство в исходное состояние можно, записав RUN=0. Если же RUN=1, (т.е. запись началась, но не закончилась) вернуть устройство в исходное состояние можно, записав HLT=1. Режим «Самописец». Режим «Самописец» предназначен для регистрации процессов, происходящих до момента останова. В данном режиме производится циклическая перезапись всей памяти. В зависимости от состояния бита STM останов регистрации производится либо программно при записи REC=0 (если STM=0), либо по внешнему входу “Trigger”(если STM=1). После останова последнее измерение хранится в ячейке с адресом «счётчик текущего адреса памяти – 1». Установка бита HLT=1, приводит к остановке процесса регистрации. Порядок работы: 1. Установить при значении битов RUN=0, REC=0 диапазоны, режимы синхронизации; 2. Записать REC=1; 3. Дожидаться внешнего сигнала “Trigger”, или, если необходима программная остановка, записать STM=0, затем REC=0. 4. По получению прерывания необходимо: прочитать регистр CSR, прочитать счётчик текущего адреса памяти и выполнить процедуру чтения нужного количества слов. 5. Для повторного старта самописца записать REC=1. Режим чтения и записи в память. Чтение данных из памяти выполняется в состоянии бита RUN=0. Запись в память предназначена для тестирования. Выполняется также в состоянии бита RUN=0. Аналоговый тракт Структура тракта, переходная и амплитудно-частотные характеристики Синхронизация ADC200ME Особенности цепей синхронизации, конфигурирование, задержки - Калибровка модуля Калибровка модуля позволяет уменьшить ошибки масштаба и сдвига нуля тракта преобразования. Эта процедура выполняется с помощью встроенного высокоточного ЦАП’а. Калибровку разумно выполнить через 30 мин. после включения и необходимо выполнять каждый раз при смене диапазонов, переходе с внутреннего таймирования на внешнее и изменении частоты внешнего таймирования. При калибровке подаётся набор эталонных напряжений, позволяющих определить ошибки нуля и масштаба и далее корректировать их в пользовательской программе. Процесс запускается при записи 1 в разряд PC регистра CSR. Обращаем внимание, что до окончания калибровки не следует изменять состояние регистра CSR. С началом калибровки вход прибора отключается от сигнала и на него подаётся следующая последовательность напряжений: 0 мВ → -0.95RNG_ChA → +0.95RNG_ChA → -0.95RNG_ChB → +0.95RNG_ChB. Здесь ±0.95RNG_ChA означает, что подано напряжение, равное ±0.95215 диапазона RNG, установленного в канале А, и соответственно, то же самое – для канала B. После включения каждого напряжения даётся старт регистрации и записывается страница памяти длиной 1024 слова. По окончании записи пятой страницы модуль выставляет прерывание. Описанная выше последовательность выполняется автоматически после старта калибровки. Распределение памяти выглядит следующим образом: Address 0 - 1023 1024 - 2047 2048 - 3071 3072 - 4095 4096 - 5120 Offset B ??Data(-B)?? ??Data(+B)?? Data(-B) Data(+B) Offset A Data(-A) Data(+A) ??Data(-A)?? ??Data(+A)?? R24 ChB R13 R12 ChA R1 Данные, помеченные как ??Data(B)?? и ??Data(A)?? являются недостоверными, так как в первом случае напряжение ЦАП’а определяется диапазоном RNG ChA, а во втором случае – диапазоном RNG ChB. Однако, если диапазоны в обоих каналах одинаковы, то данные достоверны. Программа пользователя должна забрать Data(±A) и Data(±B), вычислить их средние значения по 1024 отсчётам и далее - коэффициенты коррекции Ccor для каждого канала и преобразовывать получаемые в дальнейшем данные в соответствии с формулой: U real (mV ) 2 * RNG [ DATA Offset ] Ccor , 4096 где: DATA – усреднённые данные канала A или B, Offset – усреднённый Offset соответствующего канала, Ccor – коэффициент коррекции масштаба, вычисляемый как: Ccor 3900 Data( A) Data( A) или Ccor 3900 Data( B) Data( B) Для интересующихся пользователей в приведённой ниже таблице показаны коды и напряжения в калибровочном ЦАП’е, напряжения, приведённые ко входу АЦП, и выходные коды в идеальном случае. RNG ±4096mV ±2048mV ±1024mV ±512mV Zero DAC Data DAC Out (mV) ADC In (mV) ADC Data(theoretical) 60153 5383 46460 19076 39614 25922 36191 29345 32768 + 1671.43mV – 1671.43mV + 835.71mV – 835.71mV + 417.86mV – 417.86mV + 208.93mV – 208.93mV 0mV – 3900mV + 3900mV – 1950mV + 1950mV – 975mV + 975mV – 487.5mV + 487.5mV 0 mV 98 3998 98 3998 98 3998 98 3998 2048