Title: Диссектор CSS: table.css
{{TOC}}
Общее описание
Блок АЦП предназначен для преобразования сигнала Диссектора в цифровой вид. Далее цифровой сигнал через Ethernet передается в компьютер для обработки. Сигналы регистрируются каждый оборот и записываются в память. Это – так называемые пооборотные измерения. Возможно накопление сигналов, когда сигнал суммируется за Ne оборотов (где Ne программируется), а затем также записывается в память. Если процесс оцифровки будет синхронизирован с “пилой”, подаваемой на Диссектор, получается профиль пучка. Блок выполнен в корпусе 1 U евромеханики шириной 19 дюймов и глубиной 220 мм. К нему подводится кабель с Диссектора, 3 кабеля с синхросигналами, кабель Ethernet 100 Mb/sec и гнездо сетевого питания 220В 50 Гц. Виды блока со стороны передней и задней панелей показаны на Рис.1 и 2.
На передней панели находятся 4 разъема типа SMA, 3 светодиода (2 красных и 1 зеленый) и гнездо для подключения кабеля Ethernet. Левый крайний (или первый) SMA разъем (“RF”) предназначен для подачи частоты ВЧ накопителя FRF. Следующий (слева направо) SMA разъем (“0-SEPAR”) предназначен для подачи импульса нулевой сепаратрисы, который идет с частотой обращения F0. Длительность импульса нулевой сепаратрисы должен быть в пределах 15-50 нс. Следующий (слева направо) SMA разъем (“RAMP”) предназначен для подачи импульса, синхронизированного с пилой, подаваемой на Диссектор. Правый SMA разъем (“START”) предназначен для подачи импульса “START”, привязанный по времени с инжекцией пучка в накопитель. Амплитуда синхросигналов “0-SEPAR”, “RAMP” и “START” от ~1.2 В до ~3.3 В. Длительность импульсов “RAMP” и “START” – от 40 нс до нескольких миллисекунд. Гнездо Ethernet через кабель соединяется с локальной сетью, частота работы 100 Мбит/сек. Назначение светодиодов:
- зеленый светодиод горит при включении питания и правильном конфигурировании FPGA;
- левый красный светодиод загорается, когда появляется связь блока с Ethernet сетью (наличие “Link”);
- правый красный светодиод загорается во время цикла измерения.
На задней панели находится разъем типа SMA для соединения с Диссектором и гнездо сетевого питания 220В.
Принцип действия Блока АЦП
Блок-схема Блока АЦП представлена на Рис.3.
Блок состоит из аналоговой схемы, цифровой схемы и схемы таймирования. Аналоговая схема включает в себя входной неотражающий фильтр нижних частот с частотой среза 35 МГЦ, малошумящий усилитель с коэффициентом усиления ~15 дБ, усилитель с регулируемым усилением, коэффициент усиления которого может принимать одно из фиксированных значений (либо 0 дБ, либо 15 дБ), и 14-разрядный АЦП. Далее преобразованный в цифровой вид сигнал поступает в FPGA, где записывается во внутреннюю память FPGA емкостью 16K оборотов, а также накапливается. Одновременно через FPGA осуществляется запись во внешнюю память емкостью 1М оборотов. Таким образом, существуют 2 буфера памяти: память внутри FPGA емкостью 16К (215) оборотов (внутренняя память) и внешняя память емкостью 1М (220) оборотов. Во внутреннюю память могут быть записаны как пооборотные данные, так и накопленные данные, содержащие “профиль” пучка.
Схема таймирования представляет собой последовательное соединение 2-х каскадов задержки – “грубой” задержки и “плавной” задержки. На вход схемы таймирования поступают частота ВЧ (“RF”) и импульс “нулевой” сепаратрисы (“0-SEPAR”). Схема “грубой” задержки представляет собой программируемый счетчик, который отсчитывает заданное количество периодов частоты ВЧ после переднего фронта импульса “нулевой” сепаратрисы. Задается “грубая” задержка битами 0-7 регистра 6. Схема “плавной” задержки имеет шаг 10 пс и диапазон 10.24 нс. Управляется она битами 0-9 регистра 8. Подбирая правильные коды “грубой” и “плавной” задержек, схема таймирования обеспечивает оцифровку сигнала Диссектора точно на его вершине.
Получение команд из компьютера и отсылка результатов измерения осуществляется через Ethernet интерфейс блока, работающий со скоростью 100 Мбит/сек.
Режимы работы Блока АЦП[rejim]
Существует 2 основных режима работы блока АЦП:
- Режим пооборотных измерений
- Режим получения массива накопленных данных
Режим пооборотных измерений[rejimn1]
В режиме пооборотных измерений осуществляется однократный запуск блока (программный или от внешнего импульса “START”) с заполнением внутренней и внешней памяти пооборотных измерений (Рис.4). Длительность цикла измерения TИ задается программно кодами, записываемыми в регистры 1,2:
TИ = Code_Т × T0
, где T0 – период частоты обращения, Code_Т – 24-битный код, записанный в регистры 1,2 (равный числу оборотов цикла измерения). Величина Code_Т должна быть больше размера массива пооборотных измерений, который пользователь хочет получить.
Кроме массива пооборотных измерений в данном режиме из блока можно получить среднее значение амплитуды сигнала за время TИ (с помощью команды 0х02).
Режим получения накопленных данных[rejimn2]
В режиме получения массива накопленных данных общий цикл измерения состоит из серии элементарных циклов измерения, показанных на Рис.4. Временная диаграмма, поясняющая работу в этом режиме, показана на Рис.5.
В течение каждого элементарного цикла идет накопление сигнала. По окончании элементарного цикла накопленный сигнал записывается в ячейку внутренней памяти. По окончании общего (или суммарного) цикла измерения (TΣ) во внутренней памяти будет записан массив из Ne + 1 значений (средних значений амплитуды сигнала за времена TИ). Как задавать величину Ne будет описано ниже.
Режим получения массива накопленных может быть двух подвидов:
- Режим сканирования задержки.
- Режим получения “ профиля” пучка.
Режим сканирования задержки[rejimn21]
В этом режиме после каждого элементарного цикла осуществляется изменение величины задержки. В результате, по окончании полного цикла измерения мы получаем временную развертку сигнала Диссектора, что позволяет сразу правильно выставить задержку (соответствующую вершине сигнала). Диапазон сканирования задержки задается в теле команды 6 на запуск данного цикла измерения (см. ниже). Шаг плавной задержки задается кодом в регистре 9. Длительность каждого элементарного цикла задается также кодами в регистрах 1,2. Режим сканирования задержки задается записью нуля в бит 4 регистра 0.
Данный режим является настроечным.
Режим получения профиля пучка[rejimn22]
В этом режиме после каждого элементарного цикла величина задержки не меняется (она настроена на вершину сигнала). Запуск полного цикла измерения осуществляется от сигнала “RAMP”, синхронизированного с пилой, подаваемой на Диссектор. Длительность каждого элементарного цикла (задается кодами в регистрах 1,2) и число элементарных циклов выбирается таким, чтобы суммарное время общего цикла измерения TΣ было примерно равно периоду пилы (~20 мс). По окончании полного цикла измерения во внутренней памяти будет находиться продольный “профиль” пучка – массив из Ne + 1 значений. Как задавать величину Ne будет описано ниже. Режим получения “профиля” пучка задается записью единицы в бит 4 регистра 0.
Режим получения “профиля” пучка может быть как однократным (при использовании команды 6), так и непрерывным (при использовании команды 14). При однократном режиме по окончании цикла измерения блок останавливается и начинает ждать команды. Компьютер посылает команду 11 (0х0В) – запрос на чтение внутренней памяти. Получив команду 11, блок посылает в компьютер требуемый массив данных. В непрерывном режиме блок по окончании цикла измерения сам посылает массив данных, затем автоматически снова запускается от импульса “RAMP”. И так это происходит непрерывно. Остановить этот процесс можно, подав в блок команду 5.
Программирование Блока АЦП
Для приема-передачи данных в Блоке АЦП реализован UDP сервер. Сервер получает параметры, которые записывает в соответствующие регистры, а также команды на выполнение/остановку измерений и получение результатов измерений.
Блок АЦП имеет фиксированный номер порта 2195. Номер порта компьютера, с которого происходит обращение к пикап-станции, может быть произвольным. Именно на этот порт и придет ответ блока.
IP адрес пикап-станции жестко зашивается в Alterе (в прототипе он пока 192.168.1.150).
Из всех ICMP пакетов пикап-станция отвечает только на PING. Другие ICMP пакеты игнорируются.
Основные результаты измерений могут быть 3-х типов:
- Пооборотные данные – массив до 1М 16-битных чисел типа unsigned short int, которые соответствуют сигналу с Диссектора, преобразованному в цифровой вид с помощью АЦП. Диапазон значений 0-16383. Для получения знаковых чисел нужно из каждого числа вычесть 8191. Для внутренней памяти существует возможность “прореживания” – записи в эту память пооборотных измерений не каждого оборота, а через Ng оборотов (задается кодом в регистре 3).
- Массив накопленных данных – массив до 16К 16-битных чисел типа unsigned short int, которые соответствуют преобразованному в цифровой вид сигналу Диссектора, умноженному на 4. Для получения реальных знаковых чисел нужно каждое число поделить на 4, а затем вычесть 8191.
- Усредненное значение сигнала Диссектора (среднее значение за время TИ) – одно 32-битное число типа float.
Запуск измерения Блока АЦП может быть внутренним – сразу после прихода соответствующей команды, или внешним – по приходу одного или двух внешних синхроимпульсов (“RAMP” и “START”).
Порядок байт, используемый при передаче данных из компьютера в блок и обратно – big endian (от старшего байта к младшему). Все пакеты, посылаемые блоком АЦП, содержат байт идентификации (байт 0), по которому можно однозначно определить тип пакета.
Описание регистров параметров.
В Таблицах 1-12 приведено описание регистров параметров. Всего регистров 32 (номера 0-31). Длина каждого регистра – 2 байта.
регистра 0 - STATUS[reg0]
[Таблица 1. Описание регистра 0 (адрес 0х00).][tab1]
Номера битов | 15-5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|
Описание | Не исполь-зуются | Сканировать (0) или нет (1) задержкой в режиме №2 | Внутренний (0) или внешний (1) запуск измерений от импульса “RAMP” | Внутренний (0) или внешний (1) запуск измерений от импульса “START” | Не исполь-зуются | Код усиления (0-1) |
регистр 1 - NELO[reg1]
[Таблица 2. Описание регистра 1 (адрес 0х01).][tab2]
Номера битов | 15-0 |
---|---|
Описание | Ne – длительность цикла измерения в оборотах (младшие 16 бит) |
регистр 2 - NEHI[reg2]
[Таблица 3. Описание регистра 2 (адрес 0х02).][tab3]
Номера битов | 15-8 | 7-0 |
---|---|---|
Описание | Не используются | Ne – длительность цикла измерения в оборотах (старшие 8 бит) |
регистр 3 - GAP[reg3]
[Таблица 4. Описание регистра 3 (адрес 0х03).][tab4]
Номера битов | 15-8 | 7-0 |
---|---|---|
Описание | Не используются | Коэффициент прореживания пооборотных измерений во внутренней памяти (0 – прореживание выключено, 1 – записывается каждый второй оборот, 2 – каждый третий и т.д.) |
регистр 4 - NDEL0[reg4]
[Таблица 5. Описание регистра 4 (адрес 0х04).][tab5]
Номера битов | 15-3 | 2-0 |
---|---|---|
Описание | Не используются | Начальная задержка импульса “0-сепаратрисы” NDEl0 |
Величина NDEl0 подбирается вручную, чтобы исключить наложение фронтов импульса “нулевой сепаратрисы” и ВЧ напряжения. Подобрав один раз, надо ее запомнить, а затем всегда использовать.
регистр 6 - SEP[reg6]
[Таблица 6. Описание регистра 6 (адрес 0х06).][tab6]
Номера битов | 15-8 | 7-0 |
---|---|---|
Описание | Не используются | Код сепаратрисы (0-NMAX) |
Величина NMAX – общее число сепаратрис в накопителе. Код сепаратрисы Csep связан с номером сепаратрисы Nsep (0- NMAX) с помощью формулы:
Nsep = 255 – Csep.
регистр 8 - FINE[reg8]
[Таблица 7. Описание регистра 8 (адрес 0х08).][tab7]
Номера битов | 15-10 | 9-0 |
---|---|---|
Описание | Не используются | Код плавной задержки (0-1023) |
регистр 9 - FINESTEP[reg9]
[Таблица 8. Описание регистра 9 (адрес 0х09).][tab8]
Номера битов | 15-9 | 8-0 |
---|---|---|
Описание | Не используются | Шаг сканирования кода плавной задержки в режиме №2 (в подрежиме сканирования задержкой) |
Связь кода Code9 регистра 9 с шагом плавной задержки ΔTDEL:
ΔTDEL = Code9 × 10пс.
Если Code9=0, то ΔTDEL = 10пс.
регистр 10 - DELAYRAMP[reg10]
[Таблица 9. Описание регистра 10 (адрес 0х0a).][tab9]
Номера битов | 15-0 |
---|---|
Описание | Величина задержки от импульса “RAMP” до начала цикла измерения |
Связь кода Code10 регистра 10 с величиной задержки от импульса “RAMP” до начала цикла измерения ΔTRAMP:
ΔTRAMP = Code10 × 1.28 мкс.
регистр 12 - PAGE[reg12]
[Таблица 10. Описание регистра 12 (адрес 0х0с).][tab10]
Номера битов | 15-8 | 7-0 |
---|---|---|
Описание | Конечная страница массива в режиме непрерывно передаваемого профиля пучка | Начальная страница массива в режиме непрерывно передаваемого профиля пучка |
регистр 17 - TDEL[reg17]
[Таблица 11. Описание регистра 17 (адрес 0х11).][tab11]
Номера битов | 15-0 |
---|---|
Описание | Код интервала времени (задержки) TDEL между отправкой массива накопленных данных и запуском следующего цикла измерения в режиме №2 |
Связь кода Code_del регистра 17 с задержкой TDEL:
TDEL = Code_del × 1024 × 0.04 мкс.
регистр 29 - VERsion[reg29]
[Таблица 12. Описание регистра 29 (адрес 0х1d).][tab12]
Номера битов | 15-8 | 7-0 |
---|---|---|
Описание | Содержит версию прошивки | Содержит тип блока |
Регистр 29 работает только на чтение. В данный момент версия прошивки 0х02, тип блока 0х01.
регистр 30, 31 - HFHI, HFLO[reg30]
При чтении регистров 30,31 (адреса 0x1e,0х1f) можно получить измеренную частоту обращения F0 – частоту сигнала, поступающего на вход “0-сепаратриса” блока. Код частоты находится по формуле: сode_F0 = (Reg30<<16) + Reg31, где Reg30, Reg31 – содержимое регистров 30,31. Связь измеренной частоты F0 с прочитанным кодом сode_F0 выражается формулой:
F0 = 100 МГц × сode_F0 / (8192 × 8192).
Время измерения частоты обращения – около 0.6 сек. Частота начнет измеряться только после записи корректного номера сепаратрисы. Разрешение измерений частоты обращения – около 1.5 Гц, точность измерений – порядка 10-5.
регистр не используются[regunused]
Остальные регистры не используются, хотя в них можно записывать коды, и из них можно читать коды.
Структура команд. Стек команд.[cmd]
Команды, посылаемые из компьютера в Блок АЦП, содержат 6 байт. На Рис.6 показана структура команды.
Команда содержит код команды (байт 0) и 5 байт параметров команды. Байт 1 для команд записи в рабочие регистры и чтения из рабочих регистров содержит номер регистра, для команд запроса данных определяет номер кадра ответных пакетов данных. Байты 2,3 для команды записи в рабочий регистр содержат данные, которые нужно записать в регистр, для команд запроса пооборотных данных (или массива накопленных данных) определяют номер начальной страницы буфера пооборотных измерений, для остальных команд не имеют значения. Байты 4,5 для команд запроса пооборотных данных определяют номер конечной страницы буфера пооборотных измерений (или массива накопленных данных), для остальных команд не имеют значения.
ACK[ack]
После получения команды блок сразу же посылает пакет подтверждения получения команды “ACK” (Acknowledgement) – 4 байта, показанные на Рис.7.
- байт 0 – тип пакета (0х10).
- байт 1 – код команды,
- байт 2 – номер регистра,
- байт 3 – статус.
- Если команда правильна, то есть, это существующая команда, и номер регистра лежит в диапазоне 0-15, то статус равен 0х0F.
- Если поступает несуществующая команда,то статус равен 0х10.
- Если номер регистра лежит за диапазоном 0-15, то статус равен 0х20.
В Блоке АЦП реализован двухуровневый стек команд. Имеется буфер команд и рабочий регистр команд. Первоначально, поступающая команда записывается в буфер. Если пикап-станция в момент прихода какой-либо команды свободна (не занята выполнением предыдущей команды), то сразу же произойдет перезапись из буфера команд в рабочий регистр команд, и команда начнет выполняться. Если блок в момент прихода какой-либо команды занят выполнением предыдущей команды, то перезапись из буфера команд в рабочий регистр команд (с последующим выполнением команды) произойдет только после выполнения предыдущей команды. Если в момент ожидания выполнения команды поступит еще одна команда, то она перезапишет команду, находившуюся в буфере. Существует несколько исключений. Если запущен цикл измерения, то некоторые команды (например, команда чтения рабочего регистра) могут быть выполнены сразу, не дожидаясь окончания цикла. Подробнее об этом будет сказано ниже.
Описание типов команд.
Команда WRREG (0x00) - Запись в регистры параметров[cmd0]
Номер регистра содержится в байте 1 команды, записываемые данные – в байтах 2,3. В ответ на эту команду Блок АЦП сразу же посылает 4 байта “АСК”. Если команда 0х00 подается в момент, когда запущен цикл измерения, отправка пакета “АСК” и запись в регистр начнется только после окончания цикла измерения. В промежутке времени между приходом команды 0х03 и приходом внешнего импульса запуска “START” (в режиме работы с внешним запуском) команда 0х00 выполняться может.
Команда READ (0x02) - чтение усредненного значения сигнала[cmd2]
(среднее значение завремя TИ ).
В ответ на эту команду пикап-станция сразу же посылает 4 байта “АСК”. Далее посылается пакет из 12 байт (Рис.3), включающий:
- “шапку” из 10 байт,
- усредненного значения сигнала U (одно 4-байтное слово типа float).
На основе прочитанного кода code_U нужно вычислить реальное среднее значение напряжения на входе АЦП U по формуле:
U = code_U / (Ne + 1),
где Ne – длительность цикла измерения в оборотах.Вычисленное таким образом среднее значение напряжения будет относиться к оцифрованному с помощью АЦП сигналу в диапазоне -8192 –> +8191. Содержимое “шапки” приведено на Рис.9.
- Байт 0 – тип пакета (0xF2), по нему идентифицируется полученный компьютером пакет.
- Байт 1
- Байт 2 – соответствует байту 1 команды. На Рис.6 он называется “Номер регистра”.
Если команда 0х02 подается в момент, когда, либо запущен цикл измерения, либо блок ожидает прихода внешнего синхроимпульса после команды 0х03, отправка пакета данных начнется только после окончания цикла измерения.
Команда START (0x03) - запуск цикла измерения.[cmd3]
В ответ на эту команду Блок АЦП сразу же посылает 4 байта “АСК”. Затем, если блок работает в режиме с внутренним запуском (биты 2,3 регистра 0 равны 0), сразу же запустится цикл измерения. Если же блок работает в режиме с внешним запуском (Например, бит 2 регистра 0 равен 1), цикл измерения запустится только после прихода внешнего импульса (“START”). По окончании цикла измерения блок посылает пакет из 2- х байт “CONF” (“Confirmation”), показанный на Рис.10. Данный пакет сигнализирует о том, что цикл измерения успешно завершился, можно читать данные.
Команда RDREG (0x04) - чтение регистра параметров[cmd4]
Номер регистра, чтение которого запрашивается, содержится в байте 2 команды. В ответ на эту команду Блок АЦП сразу же посылает 4 байта “АСК”. Затем сразу же посылает 4-х байтовый пакет данных, показанный на Рис.11.
- Байт 0 – тип пакета (0xF4), по нему идентифицируется полученный компьютером пакет.
- Байт 1 – номер регистра, из которого читается содержимое.
- Байты 2,3 – само содержимое прочитанного регистра – 2 байта.
Если команда 0х04 подается в момент,когда запущен цикл измерения, отправка пакета данных начнется только после окончания цикла измерения. В промежуток времени между приходом команды 0х03 и приходом внешнего импульса запуска команда 0х04 выполняться может.
Команда STOP (0x05) - остановка цикла измерения.[cmd5]
В ответ на эту команду Блок АЦП сразу же посылает 4 байта “АСК”. Затем сразу же выполняет данную команду, то есть останавливает цикл измерения. Чаще всего эта команда используется для остановки процесса непрерывных измерений профиля пучка с автоматической посылкой данных (см. ниже). Вообще, полезно перед каждым новым запуском измерения подавать данную команду.
Команда RSTCNT (0x07) - обнуление счетчика числа измерения.[cmd7]
В ответ на эту команду Блок АЦП сразу же посылает 4 байта “АСК”. Затем сразу же выполняет данную команду, то есть обнуляет номер измерения. Содержимое счетчика числа измерения посылается в “шапках” данных – в байте 9. Счетчик номера измерения инкрементируется после каждого выполненного измерения. После номера 255 следует 0 и т.д. Данная команда может выполняться в промежутке времени между приходом команды 0х03 и приходом внешнего синхроимпульса запуска.
Команда TURNLONG 0x0A - чтение внешней памяти пооборотных измерений[cmd10]
В ответ на эту команду Блок АЦП сразу же посылает 4 байта “АСК”. Затем, в зависимости от того, запущен цикл измерения или нет, он, либо сразу же посылает данные (если цикл измерения не запущен), либо ожидает окончания цикла измерения, и только затем посылает данные. Внешняя память содержит измеренные напряжения с Диссектора за 1М (220 ) оборотов. Содержимое памяти показано на Рис.12.
Каждая ячейка памяти представляет собой 2-байтовое число типа unsigned short int. Значения лежат в диапазоне 0-16383, для получения реальных напряжений нужно вычесть 8192. Логически весь объем внешней памяти разбит на 2048 страниц, каждая страница содержит 512 оборотов (Рис.13).
С помощью команды 0х0A можно прочитать любую порцию страниц. Диапазон читаемых страниц задается самой командой (см. Рис.6). Начальная страница Np1 содержится в байтах 2,3 команды. Конечная страница Np2 содержится в байтах 4,5 команды. В ответ на команду посылается Np страниц в диапазоне от Np1 до Np2 включительно (Np = Np2 – Np1 + 1). Каждая страница посылается отдельным пакетом со своей 10-байтовой “шапкой” (Рис.14).
Размер каждого пакета равен 1034 байт. Вначале идет 10-байтовая “шапка”, затем напряжения с Диссектора за 512 оборотов. Структура “шапки” показана на Рис.15.
- Байт 0 – тип пакета (0xFB), по нему идентифицируется полученный компьютером пакет.
- Байт 1 – 0х0B.
- Байт 2 – соответствует байту 1 команды, на Рис.6 он называется “Номер регистра”, то есть задается запрашиваемым устройством.
- Байты 3, 4 – номер пакета (равный номеру страницы).
- Байты 5,6 – начальная страница Np1 запрашиваемой порции страниц.
- Байты 7,8 – конечная страница Np2 запрашиваемой порции страниц.
- Байт 9 – номер измерения.
В случае, если какой-либо пакет из запрашиваемой порции окажется испорченным, его можно будет получить еще раз, запросив данную страницу. Если команда 0х0A подается в момент, когда, либо запущен цикл измерения, либо блок ожидает приходавнешнего синхроимпульса после команды 0х03, отправка пакетов данных начнется только после окончания цикла измерения.
Команда TURNSHORT (0x0D) - чтение внутренней памяти пооборотных измерений[cmd13]
В ответ на эту команду Блок АЦП сразу же посылает 4 байта “АСК”. Затем, в зависимости от того, запущен цикл измерения или нет, он, либо сразу же посылает данные (если цикл измерения не запущен), либо ожидает окончания цикла измерения, и только затем посылает данные.
Внутренняя память содержит измеренные напряжения с Диссектора за 16 К (16384) оборотов. Содержимое памяти показано на Рис.16.
Каждая ячейка памяти представляет собой 2-байтовое число типа unsigned short int. Значения лежат в диапазоне 0-16383, для получения реальных напряжений нужно вычесть 8192. Логически весь объем памяти разбит на 32 страницу, каждая страница содержит 512 оборотов (Рис.8).
С помощью команды 0х0D можно прочитать любую порцию страниц. Диапазон читаемых страниц задается самой командой (см. Рис.6). Начальная страница Np1 содержится в байтах 2,3 команды. Конечная страница Np2 содержится в байтах 4,5 команды. В ответ на команду посылается Np страниц в диапазоне от Np1 до Np2 включительно (Np = Np2 – Np1 + 1). Каждая страница посылается отдельным пакетом со своей 10-байтовой “шапкой” (Рис.18). Размер каждого пакета равен 1034 байт. Вначале идет 10- байтовая “шапка”, затем напряжения с Диссектора за 512 оборотов. Структура “шапки” показана на Рис.19.
- Байт 0 – тип пакета (0xFD), по нему идентифицируется полученный компьютером пакет.
- Байт 1 – код команды (0х0D).
- Байт 2 – соответствует байту 1 команды, на Рис.6 он называется “Номер регистра”, то есть задается запрашиваемым устройством.
- Байты 3, 4 – номер пакета (равный номеру страницы).
- Байты 5, 6 – начальная страница Np1 запрашиваемой порции страниц.
- Байты 7, 8 – конечная страница Np2 запрашиваемой порции страниц.
- Байт 9 – номер измерения.
В случае, если какой-либо пакет из запрашиваемой порции окажется испорченным, его можно будет получить еще раз, запросив данную страницу. Если команда 0х0В подается в момент, когда, либо запущен цикл измерения, либо пикап-станция ожидает прихода внешнего синхроимпульса после команды 0х03, отправка пакетов данных начнется только после окончания цикла измерения.
Команда WRRDREG (0x0С) - запись в регистр параметров с последующим чтением[cmd12]
Данная команда объединяет команды 0х00 и 0х04. Номер регистра содержится в байте 1 команды, записываемые данные – в байтах 2,3. В ответ на эту команду Блок АЦП сразу же посылает 4 байта “АСК”. Если команда 0х0C подается в момент, когда запущен цикл измерения, отправка пакета “АСК” и запись в регистр начнется только после окончания цикла измерения. В промежутке времени между приходом команды 0х03 и приходом внешнего импульса запуска “Впуск” (в режиме работы с внешним запуском) команда 0х0C выполняться может. Затем, после записи в регистр сразу же осуществляется его чтение. Блок АЦП посылает 4-байтовый пакет, показанный на Рис.11.
Команда RDREGSYN (0x0F) – синхронное чтение регистра параметров[cmd15]
Данная команда аналогична команде 0х04, единственное ее отличие в том, что процесс посылки пакета данных (4 байта) привязан по времени к окончанию цикла измерения. Если цикл измерения не запущен, то и посылки данных не будет. Если после подачи команды 0х03 с внешним запуском подать команду 0х0F, то содержимое регистра придет после окончания цикла измерения (сразу после “CONF”).
Команда START2 (0x06) – запуск режима получения массива накопленных данных[cmd6]
Перед подачей команды запуска режима №2, в зависимости от подвида режима (сканирование задержкой или получение “профиля” пучка) нужно установить требуемое значение бита 4 регистра 0. Также для получения “профиля” пучка нужно установить в “1” бит 3 регистра 0. Для сканирования задержкой нужно установить шаг сканирования плавной задержкой в регистре 9.
Структура команды показана на Рис.20. Байт 2 команды содержит код сепаратрисы Csep , с которой начинается сканирование, Байт 3 команды содержит код сепаратрисы, которой оканчивается сканирование. Напомним, что код сепаратрисы Csep связан с номером сепаратрисы Nsep (0-13) с помощью формулы: Nsep = 255 – Csep . Для режима получения “профиля” пучка байты 2,3 могут быть любыми.
Байты 4,5 команды содержат диапазон сканирования плавной задержки DSCAN (0-1023). Для получения корректной временной картинки величина DSCAN должна быть равна:
DSCAN = T0 /10пс.
Для режима получения “профиля” пучка в байты 4,5 устанавливается число точек для “профиля” пучка (число точек в развертке пилы). При этом длительность цикла измерения Ne подбирается таким, чтобы время общего (или суммарного) цикла измерения TΣ было чуть меньше (примерно на 0.2 мс) периода пилы.
В ответ на команду 0x06 Блок АЦП сразу же посылает 4 байта “АСК”. Для каждой точки массива осуществляется накапливание сигнала в течение Ne оборотов. Результат накапливания записывается во внутреннюю память пооборотных измерений в формате short int в единицах кода АЦП, умноженного на 4 (±32767). По окончании суммарного цикла измерения приходит пакет “CONF” 0х1106. После этого с помощью команды 0x0B можно прочитать внутреннюю память пооборотных измерений, которая будет содержать результаты сканирования или “профиль” пучка. Для того, чтобы досрочно прервать процесс сканирования можно подать команду 0х05.
Команда READ2 (0x0B) – чтение результатов режима получения массива накопленных данных[cmd11]
из внутренней памяти пооборотных измерений.
В ответ на эту команду Блок АЦП сразу же посылает 4 байта“АСК”. Структура данной команды идентична структуре команды 0x0D. Запрашивается целое количество страниц. Каждая страница посылается отдельным пакетом, структура данных полностьюаналогична структуре данных, присылаемых по команде 0x0D. “Шапка” каждого пакета отличается только байтом 1 (Рис.21).
Формат данных, в отличие от результатов пооборотных измерений, short int в единицах кода АЦП, умноженного на 4 (±32767).
Команда STARTCONT (0x0E) – запуск непрерывных измерений[cmd14]
с автоматической посылкой результатов измерения “профиля” пучка.
После окончания полного цикла измерения осуществляется посылка содержимого внутренней памяти объемом от 1 до 32 страниц. После этого выдерживается задержка в диапазоне от 10 мкс до 2.7 сек (65535 × 41мкс), задаваемая кодом регистра 17, после чего сразу же запускается следующий цикл измерения и т.д. (Рис.22).
Диапазон посылаемых страниц внутренней памяти задается регистром 12 (биты 0-7 – начальная страница Np1 , биты 8-15 – конечная страница Np2 ). Таким образом, в режиме непрерывных измерений “профиля” пучка Блок АЦП всегда по окончании цикла измерения посылает массив накопленных данных. Формат посылаемых пакетов накопленных данных аналогичен формату пакетов, посылаемых по команде 0х0B. В режиме непрерывных измерений с автоматической посылкой результатов измерения “профиля” пучка все получаемые команды блоком АЦП игнорируются. Единственное исключение – команда 0х05, которая останавливает данный режим.
Сводная таблица типов пакетов от Блока АЦП.
Байт идентификации (байт 0) | Длина пакета | Тип пакета |
---|---|---|
0х10 | 4 | Пакет подтверждения получения команды – “АСК” |
0х11 | 2 | Пакет, сигнализирующий о завершении цикла измерения – “CONF” |
0хF2 | 26 | Усредненное значение сигнала |
0хF4 | 4 | Содержимое рабочего регистра |
0хFB | 1034 | Массив пооборотных данных из внешней памяти (1 страница) |
0хFD | 1034 | Массив пооборотных или накопленных данных из внутренней памяти (1 страница) |
Матрица зависимостей[depends]
сущность | пооборотные измерения | сканирование | профиль однократно | профиль непрерывно | ACK | CONF | заголовок | данные |
---|---|---|---|---|---|---|---|---|
регистр STATUS.gain | + | + | + | + | ||||
регистр STATUS.start | + | + | + | + | ||||
регистр STATUS.ramp | + | + | + | + | ||||
регистр STATUS.scan | 0 | 0 | 1 | 1 | ||||
регистр NEHI.NELO | + | + | + | + | ||||
регистр GAP | + | + | + | + | ||||
регистр NDEL0 | + | + | + | + | ||||
регистр SEP | + | + | + | |||||
регистр FINE | + | + | + | |||||
регистр FINESTEP | + | |||||||
регистр DELAYRAMP | + | + | + | + | ||||
регистр PAGE | + | |||||||
регистр TDEL | + | |||||||
регистр VERsion | ||||||||
регистр HFHI.HFLO | ||||||||
- // - | ||||||||
команда WRREG | * | cmd | ||||||
команда RDREG | * | cmd | ||||||
команда WRRDREG | * | cmd | ||||||
команда RDREGSYN | * | cmd | ||||||
- // - | ||||||||
команда START | + | * | * | |||||
команда TURNLONG | * | 10 | turns | |||||
команда TURNLSHORT | * | 10 | turns | |||||
- // - | ||||||||
команда START2 | + | + | + | * | ||||
команда STARTCONT | + | * | ||||||
команда READ2 | * | 10 | data | |||||
- // - | ||||||||
команда READ | * | float | ||||||
команда STOP | + | + | + | + | * | |||
команда RSTCNT | * |
Временные диаграммы работы Блок а АЦП.
На Рис.23 показана временная диаграмма работы Блока АЦП в режиме работы с внешним запуском при запросе на пооборотные данные из внутренней памяти. Вначале подается команда 0х03. Сразу же из Блока АЦП придет подтверждение “АСК” получения команды. Реально цикл измерения запустится по приходу внешнего синхроимпульса “START”. Компьютер далее должен дождаться окончания цикла измерения – прихода из Блока АЦП пакета “CONF”. После этого он с помощью команды 0x0D запрашивает и получает пооборотные данные. Далее компьютер может запрашивать и другие типы данных. Скорость передачи данных пооборотных измерений примерно 50 Мбит/сек. Массив данных 16К оборотов передается примерно за 6 мс.
На Рис.24 показана временная диаграмма, поясняющая работу стека команд. Допустим, одна за другой в Блок АЦП приходят 2 команды: 0x0D и 0х02. Команда 0x0D будет сразу же выполняться – Блок АЦП будет посылать пооборотные данные, а команда 0х02 будет ожидать своей очереди в буфере команд. По окончании цикла передачи пооборотных данных Блок АЦП вначале пошлет пакет “АСК” (раньше он его послать не может из-за того, что занят передатчик), а затем и само усредненное значение сигнала.
На Рис.25 показана временная диаграмма работы Блока АЦП при чтении рабочих регистров при ожидании внешнего запуска. Итак, вначале подается команда 0х03. Затем сразу же подается первая команда 0х04 на чтение регистра. Поскольку к этому моменту времени еще не успел прийти внешний синхроимпульс “START”, Блок АЦП после пакета подтверждения “АСК” пошлет пакет с содержимым регистра. Затем, после прихода внешнего синхроимпульса “START” и запуска цикла измерения приходит вторая команда 0х04, она будет ожидать в буфере окончания цикла измерения. После посылки пакета “CONF” Блок АЦП посылает пакет подтверждения “АСК” и пакет с содержимым регистра. Следует заметить, что в промежутке между командой 0х03 и приходом внешнего синхроимпульса “Впуск” могут выполняться только команды 0х00, 0х04, 0х05, 0х07 и 0х0C.
Автоматический “Reset” UDP сервера.
Для предотвращения “зависания” UDP сервера в Блоке АЦП предусмотрен “Watchdog”, осуществляющий подачу импульса “Reset” на UDP сервер в случае отсутствия потока данных на чтение или запись в течение определенного времени. Если в течение ~43 сек отсутствуют либо приходящие UDP пакеты, либо отсылаемые UDP пакеты, подается сигнал “Reset”. При этом происходит обнуление таблицы IP адресов.
Настройка блока.
- Прежде всего – это настройка задержки. Нужно подобрать номер сепаратрисы и код плавной задержки так, чтобы встать на вершину сигнала.
- Если в массиве пооборотных измерений аномально большие шумы и скачки, то надо поменять значение начальной задержки импульса “0-сепаратрисы” NDEl0.
- Установить усиление (“Gain”) так, чтобы сигнал был в пределах шкалы АЦП (±8191). Если Амплитуда сигнала меньше 1000, поставить Gain в “1”.
======================