v4orb2.wiki

описание пикапов и диссектора ВЭПП3-4
git clone http://www.inp.nsk.su/~bekhte/v4orb2.wiki.git
Log | Files | Refs

commit d405724a6deb1fb393025e31658a62e1c2008053
parent 4f55b3c1e1c96817a1aa72855098fe06ad1a3a3d
Author: E.A.Bekhtenev <E.A.Bekhtenev@inp.nsk.su>
Date:   Wed Mar  1 06:14:27 +0700

dissector manual

Diffstat:
dissector.md | 574++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 495 insertions(+), 79 deletions(-)
diff --git a/dissector.md b/dissector.md @@ -1,22 +1,23 @@ Title: Диссектор CSS: table.css + [TOP](index) {{TOC}} # Общее описание. -Блок АЦП предназначен для преобразования сигнала Диссектора -в цифровой вид. Далее цифровой сигнал через Ethernet передается -в компьютер для обработки. Сигналы регистрируются каждый оборот и -записываются в память. Это – так называемые пооборотные измерения. -Возможно накопление сигналов, когда сигнал суммируется за N<sub>e</sub> оборотов -(где N<sub>e</sub> программируется), а затем также записывается в память. -Если процесс оцифровки будет синхронизирован с “пилой”, подаваемой на -Диссектор, получается профиль пучка. Блок выполнен в корпусе 1 U -евромеханики шириной 19 дюймов и глубиной 220 мм. К нему подводится -кабель с Диссектора, 3 кабеля с синхросигналами, кабель Ethernet 100 Mb/sec -и гнездо сетевого питания 220В 50 Гц. Виды блока со стороны передней и +Блок АЦП предназначен для преобразования сигнала Диссектора +в цифровой вид. Далее цифровой сигнал через Ethernet передается +в компьютер для обработки. Сигналы регистрируются каждый оборот и +записываются в память. Это – так называемые пооборотные измерения. +Возможно накопление сигналов, когда сигнал суммируется за N<sub>e</sub> оборотов +(где N<sub>e</sub> программируется), а затем также записывается в память. +Если процесс оцифровки будет синхронизирован с “пилой”, подаваемой на +Диссектор, получается профиль пучка. Блок выполнен в корпусе 1 U +евромеханики шириной 19 дюймов и глубиной 220 мм. К нему подводится +кабель с Диссектора, 3 кабеля с синхросигналами, кабель Ethernet 100 Mb/sec +и гнездо сетевого питания 220В 50 Гц. Виды блока со стороны передней и задней панелей показаны на Рис.[1](#fig1) и [2](#fig2). ![Рис. 1. Вид на блок АЦП со стороны передней панели.][fig1] @@ -27,17 +28,17 @@ CSS: table.css [fig2]:dissector.img/fig2.png -На передней панели находятся 4 разъема типа SMA, 3 светодиода (2 красных и 1 зеленый) -и гнездо для подключения кабеля Ethernet. Левый крайний (или первый) SMA разъем -(“RF”) предназначен для подачи частоты ВЧ накопителя F<sub>RF</sub>. Следующий (слева направо) -SMA разъем (“0-SEPAR”) предназначен для подачи импульса нулевой сепаратрисы, -который идет с частотой обращения F<sub>0</sub>. Длительность импульса нулевой сепаратрисы -должен быть в пределах 15-50 нс. Следующий (слева направо) SMA разъем (“RAMP”) -предназначен для подачи импульса, синхронизированного с пилой, подаваемой на Диссектор. -Правый SMA разъем (“START”) предназначен для подачи импульса “START”, привязанный по -времени с инжекцией пучка в накопитель. Амплитуда синхросигналов -“0-SEPAR”, “RAMP” и “START” от ~1.2 В до ~3.3 В. Длительность импульсов -“RAMP” и “START” – от 40 нс до нескольких миллисекунд. Гнездо Ethernet через +На передней панели находятся 4 разъема типа SMA, 3 светодиода (2 красных и 1 зеленый) +и гнездо для подключения кабеля Ethernet. Левый крайний (или первый) SMA разъем +(“RF”) предназначен для подачи частоты ВЧ накопителя F<sub>RF</sub>. Следующий (слева направо) +SMA разъем (“0-SEPAR”) предназначен для подачи импульса нулевой сепаратрисы, +который идет с частотой обращения F<sub>0</sub>. Длительность импульса нулевой сепаратрисы +должен быть в пределах 15-50 нс. Следующий (слева направо) SMA разъем (“RAMP”) +предназначен для подачи импульса, синхронизированного с пилой, подаваемой на Диссектор. +Правый SMA разъем (“START”) предназначен для подачи импульса “START”, привязанный по +времени с инжекцией пучка в накопитель. Амплитуда синхросигналов +“0-SEPAR”, “RAMP” и “START” от ~1.2 В до ~3.3 В. Длительность импульсов +“RAMP” и “START” – от 40 нс до нескольких миллисекунд. Гнездо Ethernet через кабель соединяется с локальной сетью, частота работы 100 Мбит/сек. Назначение светодиодов: - зеленый светодиод горит при включении питания и правильном конфигурировании FPGA; @@ -122,46 +123,46 @@ SMA разъем (“0-SEPAR”) предназначен для подачи и ## Режим сканирования задержки. -В этом режиме после каждого элементарного цикла осуществляется изменение -величины задержки. В результате, по окончании полного цикла измерения мы -получаем временную развертку сигнала Диссектора, что позволяет сразу -правильно выставить задержку (соответствующую вершине сигнала). Диапазон -сканирования задержки задается в теле команды 6 на запуск данного цикла -измерения (см. ниже). Шаг плавной задержки задается кодом в регистре 9. -Длительность каждого элементарного цикла задается также кодами в регистрах 1,2. -Режим сканирования задержки задается записью нуля в бит 4 регистра 0. +В этом режиме после каждого элементарного цикла осуществляется изменение +величины задержки. В результате, по окончании полного цикла измерения мы +получаем временную развертку сигнала Диссектора, что позволяет сразу +правильно выставить задержку (соответствующую вершине сигнала). Диапазон +сканирования задержки задается в теле команды 6 на запуск данного цикла +измерения (см. ниже). Шаг плавной задержки задается кодом в регистре 9. +Длительность каждого элементарного цикла задается также кодами в регистрах 1,2. +Режим сканирования задержки задается записью нуля в бит 4 регистра 0. Данный режим является настроечным. ## Режим получения профиля пучка. -В этом режиме после каждого элементарного цикла величина задержки не меняется -(она настроена на вершину сигнала). Запуск полного цикла измерения осуществляется -от сигнала “RAMP”, синхронизированного с пилой, подаваемой на Диссектор. -Длительность каждого элементарного цикла (задается кодами в [регистрах 1](#reg1),[2](#reg2)) и -число элементарных циклов выбирается таким, чтобы суммарное время общего цикла -измерения *T<sub>Σ</sub>* было примерно равно периоду пилы (~20 мс). По окончании -полного цикла измерения во внутренней памяти будет находиться продольный “профиль” -пучка – массив из *N<sub>e</sub> + 1* значений. Как задавать величину *N<sub>e</sub>* +В этом режиме после каждого элементарного цикла величина задержки не меняется +(она настроена на вершину сигнала). Запуск полного цикла измерения осуществляется +от сигнала “RAMP”, синхронизированного с пилой, подаваемой на Диссектор. +Длительность каждого элементарного цикла (задается кодами в [регистрах 1](#reg1),[2](#reg2)) и +число элементарных циклов выбирается таким, чтобы суммарное время общего цикла +измерения *T<sub>Σ</sub>* было примерно равно периоду пилы (~20 мс). По окончании +полного цикла измерения во внутренней памяти будет находиться продольный “профиль” +пучка – массив из *N<sub>e</sub> + 1* значений. Как задавать величину *N<sub>e</sub>* будет описано ниже. Режим получения “профиля” пучка задается записью единицы в бит 4 [регистра 0](#reg0). -Режим получения “профиля” пучка может быть как однократным (при использовании [команды 6](#cmd6)), -так и непрерывным (при использовании [команды 14](#cmd14)). При однократном режиме по окончании цикла -измерения блок останавливается и начинает ждать команды. Компьютер посылает -[команду 11](#cmd11) (0х0В) – запрос на чтение внутренней памяти. Получив [команду 11](#cmd11), -блок посылает в компьютер требуемый массив данных. В непрерывном режиме блок -по окончании цикла измерения сам посылает массив данных, затем автоматически снова -запускается от импульса “RAMP”. И так это происходит непрерывно. Остановить этот процесс +Режим получения “профиля” пучка может быть как однократным (при использовании [команды 6](#cmd6)), +так и непрерывным (при использовании [команды 14](#cmd14)). При однократном режиме по окончании цикла +измерения блок останавливается и начинает ждать команды. Компьютер посылает +[команду 11](#cmd11) (0х0В) – запрос на чтение внутренней памяти. Получив [команду 11](#cmd11), +блок посылает в компьютер требуемый массив данных. В непрерывном режиме блок +по окончании цикла измерения сам посылает массив данных, затем автоматически снова +запускается от импульса “RAMP”. И так это происходит непрерывно. Остановить этот процесс можно, подав в блок [команду 5](#cmd5). # Программирование Блока АЦП. -Для приема-передачи данных в Блоке АЦП реализован UDP сервер. Сервер получает параметры, -которые записывает в соответствующие регистры, а также команды на выполнение/остановку +Для приема-передачи данных в Блоке АЦП реализован UDP сервер. Сервер получает параметры, +которые записывает в соответствующие регистры, а также команды на выполнение/остановку измерений и получение результатов измерений. -Блок АЦП имеет фиксированный номер порта 2195. Номер порта компьютера, с которого -происходит обращение к пикап-станции, может быть произвольным. Именно на этот порт и +Блок АЦП имеет фиксированный номер порта 2195. Номер порта компьютера, с которого +происходит обращение к пикап-станции, может быть произвольным. Именно на этот порт и придет ответ блока. IP адрес пикап-станции жестко зашивается в Alterе (в прототипе он пока 192.168.1.150). @@ -170,69 +171,69 @@ IP адрес пикап-станции жестко зашивается в Alt Основные результаты измерений могут быть 3-х типов: -1. Пооборотные данные – массив до 1М 16-битных чисел типа *unsigned short int*, -которые соответствуют сигналу с Диссектора, преобразованному в цифровой вид с -помощью АЦП. Диапазон значений 0-16383. Для получения знаковых чисел нужно из -каждого числа вычесть 8191. Для внутренней памяти существует возможность “прореживания” – -записи в эту память пооборотных измерений не каждого оборота, а через *N<sub>g</sub>* +1. Пооборотные данные – массив до 1М 16-битных чисел типа *unsigned short int*, +которые соответствуют сигналу с Диссектора, преобразованному в цифровой вид с +помощью АЦП. Диапазон значений 0-16383. Для получения знаковых чисел нужно из +каждого числа вычесть 8191. Для внутренней памяти существует возможность “прореживания” – +записи в эту память пооборотных измерений не каждого оборота, а через *N<sub>g</sub>* оборотов (задается кодом в [регистре 3](#reg3)). -2. Массив накопленных данных – массив до 16К 16-битных чисел типа *unsigned short int*, -которые соответствуют преобразованному в цифровой вид сигналу Диссектора, умноженному на 4. +2. Массив накопленных данных – массив до 16К 16-битных чисел типа *unsigned short int*, +которые соответствуют преобразованному в цифровой вид сигналу Диссектора, умноженному на 4. Для получения реальных знаковых чисел нужно каждое число поделить на 4, а затем вычесть 8191. 3. Усредненное значение сигнала Диссектора (среднее значение за время *T<sub>И</sub>*) – одно 32-битное число типа *float*. -Запуск измерения Блока АЦП может быть внутренним – сразу после прихода +Запуск измерения Блока АЦП может быть внутренним – сразу после прихода соответствующей команды, или внешним – по приходу одного или двух внешних синхроимпульсов (“RAMP” и “START”). -Порядок байт, используемый при передаче данных из компьютера в блок и обратно – -big endian (от старшего байта к младшему). Все пакеты, посылаемые блоком АЦП, +Порядок байт, используемый при передаче данных из компьютера в блок и обратно – +big endian (от старшего байта к младшему). Все пакеты, посылаемые блоком АЦП, содержат байт идентификации (байт 0), по которому можно однозначно определить тип пакета. ## Описание регистров параметров. -В Таблицах 1-12 приведено описание регистров параметров. +В Таблицах 1-12 приведено описание регистров параметров. Всего регистров 32 (номера 0-31). Длина каждого регистра – 2 байта. -### регистра 0[reg0] +### регистра 0 - status[reg0] [Таблица 1. Описание регистра 0 (адрес 0х00).][tab1] | Номера битов | 1,5-15 | 4 | 3 | 2 | 0 | |:------------:|:---------------:|:-:|:-:|:-:|:-:| | Описание |Не исполь-зуются | Сканировать (0) или нет (1) задержкой в режиме №2 | Внутренний (0) или внешний (1) запуск измерений от импульса “RAMP” | Внутренний (0) или внешний (1) запуск измерений от импульса “START” | Код усиления (0-1) | -### регистр 1[reg1] +### регистр 1 - *N<sub>e</sub>*[reg1] [Таблица 2. Описание регистра 1 (адрес 0х01).][tab2] | Номера битов | 0-15 | |:-------------:|:--------------------------------------------------------------------------:| | Описание | *N<sub>e</sub>* – длительность цикла измерения в оборотах (младшие 16 бит) | -### регистр 2[reg2] +### регистр 2 - *N<sub>e</sub>*[reg2] [Таблица 3. Описание регистра 2 (адрес 0х02).][tab3] | Номера битов | 8-15 | 0-7 | |:------------:|:---------------:|:----:| | Описание | Не используются | *N<sub>e</sub>* – длительность цикла измерения в оборотах (старшие 8 бит) | -### регистр 3[reg3] +### регистр 3 - gap[reg3] [Таблица 4. Описание регистра 3 (адрес 0х03).][tab4] | Номера битов | 8-15 | 0-7 | |:------------:|:---------------:|:----:| | Описание | Не используются | Коэффициент прореживания пооборотных измерений во внутренней памяти<br></br> (0 – прореживание выключено, 1 – записывается каждый второй оборот, 2 – каждый третий и т.д.) | -### регистр 4[reg4] +### регистр 4 - *N<sub>DEl0</sub>*[reg4] [Таблица 5. Описание регистра 4 (адрес 0х04).][tab5] | Номера битов | 3-15 | 0-2 | |:-------------:|:---------------:|:---:| | Описание | Не используются | Начальная задержка импульса “0-сепаратрисы” *N<sub>DEl0</sub>* | -Величина *N<sub>DEl0</sub>* подбирается вручную, чтобы исключить наложение фронтов импульса -“нулевой сепаратрисы” и ВЧ напряжения. Подобрав один раз, надо ее запомнить, +Величина *N<sub>DEl0</sub>* подбирается вручную, чтобы исключить наложение фронтов импульса +“нулевой сепаратрисы” и ВЧ напряжения. Подобрав один раз, надо ее запомнить, а затем всегда использовать. -### регистр 6[reg6] +### регистр 6 - sep[reg6] [Таблица 6. Описание регистра 6 (адрес 0х06).][tab6] | Номера битов | 8-15 | 0-7 | @@ -244,14 +245,14 @@ big endian (от старшего байта к младшему). Все пак *N<sub>sep</sub>* = 255 – *C<sub>sep</sub>*. -### регистр 8[reg8] +### регистр 8 - fine[reg8] [Таблица 7. Описание регистра 8 (адрес 0х08).][tab7] | Номера битов | 10-15 | 0-9 | |:------------:|:---------------:|:-----------------------------:| | Описание | Не используются | Код плавной задержки (0-1023) | -### регистр 9[reg9] +### регистр 9 - fstep[reg9] [Таблица 8. Описание регистра 9 (адрес 0х09).][tab8] | Номера битов | 9-15 | 0-8 | @@ -264,7 +265,7 @@ big endian (от старшего байта к младшему). Все пак Если *Code9*=0, то *ΔT<sub>DEL</sub>* = 10пс. -### регистр 10[reg10] +### регистр 10 - dramp[reg10] [Таблица 9. Описание регистра 10 (адрес 0х0a).][tab9] @@ -276,37 +277,37 @@ big endian (от старшего байта к младшему). Все пак *ΔT<sub>RAMP</sub>* = *Code10* × 1.28 мкс. -### регистр 12[reg12] +### регистр 12 - page[reg12] [Таблица 10. Описание регистра 12 (адрес 0х0с).][tab10] | Номера битов | 8-15 | 0-7 | |:------------:|:----:|:---:| | Описание | Конечная страница массива в режиме непрерывно передаваемого профиля пучка | Начальная страница массива в режиме непрерывно передаваемого профиля пучка | -### регистр 17[reg17] +### регистр 17 - tdel[reg17] [Таблица 11. Описание регистра 17 (адрес 0х11).][tab11] | Номера битов | 0-15 | |:------------:|:---------------:| -| Описание | Код интервала времени (задержки) TDEL между отправкой массива накопленных данных и запуском следующего цикла измерения в режиме №2 (см. Рис.11) | +| Описание | Код интервала времени (задержки) TDEL между отправкой массива накопленных данных и запуском следующего цикла измерения в режиме №2 (см. [Рис.11](#fig11)) | Связь кода *Code_del* регистра 17 с задержкой *T<sub>DEL</sub>*: *T<sub>DEL</sub>* = *Code_del* × 1024 × 0.04 мкс. -### регистр 29[reg29] +### регистр 29 - version[reg29] [Таблица 12. Описание регистра 29 (адрес 0х1d).][tab12] | Номера битов | 8-15 | 0-7 | |:------------:|:----:|:---:| | Описание | Содержит версию прошивки | Содержит тип блока | -Регистр 29 работает только на чтение. В данный момент версия прошивки 0х02, тип блока 0х01. +[Регистр 29](#reg29) работает только на чтение. В данный момент версия прошивки 0х02, тип блока 0х01. -### регистр 30, 31[reg30] +### регистр 30, 31 - HF[reg30] -При чтении регистров 30,31 (адреса 0x1e,0х1f) можно получить измеренную частоту обращения -*F<sub>0</sub>* – частоту сигнала, поступающего на вход “0-сепаратриса” блока. Код частоты +При чтении [регистров 30,31](#reg30) (адреса 0x1e,0х1f) можно получить измеренную частоту обращения +*F<sub>0</sub>* – частоту сигнала, поступающего на вход “0-сепаратриса” блока. Код частоты находится по формуле: *сode_F<sub>0</sub>* = (Reg30<<16) + Reg31, где Reg30, Reg31 – содержимое регистров 30,31. Связь измеренной частоты *F<sub>0</sub>* с прочитанным кодом *сode_F0* выражается формулой: @@ -322,6 +323,421 @@ big endian (от старшего байта к младшему). Все пак Остальные регистры не используются, хотя в них можно записывать коды, и из них можно читать коды. +## Структура команд. Стек команд. + +Команды, посылаемые из компьютера в Блок АЦП, содержат 6 байт. На [Рис.6](#fig6) +показана структура команды. + +![Рис.6. Структура команды.][fig6] + +[fig6]:dissector.img/fig6.png + +Команда содержит код команды (байт 0) и 5 байт параметров команды. Байт 1 для +команд записи в рабочие регистры и чтения из рабочих регистров содержит номер +регистра, для команд запроса данных определяет номер кадра ответных пакетов данных. +Байты 2,3 для команды записи в рабочий регистр содержат данные, которые нужно +записать в регистр, для команд запроса пооборотных данных (или массива накопленных +данных) определяют номер начальной страницы буфера пооборотных измерений, для +остальных команд не имеют значения. Байты 4,5 для команд запроса пооборотных данных +определяют номер конечной страницы буфера пооборотных измерений (или массива +накопленных данных), для остальных команд не имеют значения. +После получения команды блок сразу же посылает пакет подтверждения получения +команды “ACK” (Acknowledgement) – 4 байта, показанные на [Рис.7](#fig7). + +![Рис.7. Ответ “ACK” на полученную команду.][fig7] + +[fig7]:dissector.img/fig7.png + +Байт 0 – тип пакета (0х10). Байт 1 – код команды, байт 2 – номер регистра, байт 3 – +статус. Если команда правильна, то есть, это существующая команда, и номер регистра +лежит в диапазоне 0-15, то статус равен 0х0F. Если поступает несуществующая команда,то статус равен 0х10. Если номер регистра лежит за диапазоном 0-15, то статус равен +0х20. +В Блоке АЦП реализован двухуровневый стек команд. Имеется буфер команд и +рабочий регистр команд. Первоначально, поступающая команда записывается в буфер. +Если пикап-станция в момент прихода какой-либо команды свободна (не занята +выполнением предыдущей команды), то сразу же произойдет перезапись из буфера +команд в рабочий регистр команд, и команда начнет выполняться. Если блок в момент +прихода какой-либо команды занят выполнением предыдущей команды, то перезапись из +буфера команд в рабочий регистр команд (с последующим выполнением команды) +произойдет только после выполнения предыдущей команды. Если в момент ожидания +выполнения команды поступит еще одна команда, то она перезапишет команду, +находившуюся в буфере. Существует несколько исключений. Если запущен цикл +измерения, то некоторые команды (например, команда чтения рабочего регистра) могут +быть выполнены сразу, не дожидаясь окончания цикла. Подробнее об этом будет сказано +ниже. + +## Описание типов команд. + +### Команда 0x00 - Запись в регистры параметров[cmd0] + +Номер регистра содержится +в байте 1 команды, записываемые данные – в байтах 2,3. В ответ на эту команду Блок +АЦП сразу же посылает 4 байта “АСК”. Если команда 0х00 подается в момент, когда +запущен цикл измерения, отправка пакета “АСК” и запись в регистр начнется только +после окончания цикла измерения. В промежутке времени между приходом команды 0х03 +и приходом внешнего импульса запуска “START” (в режиме работы с внешним запуском) +команда 0х00 выполняться может. + +### Команда 0x02 - чтение усредненного значения сигнала[cmd2] +(среднее значение завремя *T<sub>И</sub>* ). + +В ответ на эту команду пикап-станция сразу же посылает 4 байта “АСК”. Далее +посылается пакет из 12 байт (Рис.3), включающий: + +- “шапку” из 10 байт, +- усредненного значения сигнала *U* (одно 4-байтное слово типа *float*). + +![Рис.8. Структура получаемого пакета в ответ на команду 0х02.][fig8] + +[fig8]:dissector.img/fig8.png + +На основе прочитанного кода *code_U* нужно вычислить реальное среднее значение +напряжения на входе АЦП *U* по формуле: + +*U* = *code_U* / (*N<sub>e</sub>* + 1), + +где *N<sub>e</sub>* – длительность цикла измерения в оборотах.Вычисленное таким образом среднее значение напряжения будет относиться к +оцифрованному с помощью АЦП сигналу в диапазоне -8192 –> +8191. +Содержимое “шапки” приведено на [Рис.9](#fig9). + +![Рис.9. Содержимое “шапки” при посылке усредненного значения сигнала.][fig9] + +[fig9]:dissector.img/fig9.png + +Байт 0 – тип пакета (0xF2), по нему идентифицируется полученный компьютером +пакет. Байт 2 – соответствует байту 1 команды. На [Рис.6](#fig6) он называется “Номер регистра”. +Если команда 0х02 подается в момент, когда, либо запущен цикл измерения, либо блок +ожидает прихода внешнего синхроимпульса после [команды 0х03](#cmd3), отправка пакета данных +начнется только после окончания цикла измерения. + +### Команда 0x03 - запуск цикла измерения.[cmd3] + +В ответ на эту команду Блок АЦП сразу же посылает 4 байта “АСК”. Затем, если +блок работает в режиме с внутренним запуском (биты 2,3 регистра 0 равны 0), сразу же +запустится цикл измерения. Если же блок работает в режиме с внешним запуском +(Например, бит 2 регистра 0 равен 1), цикл измерения запустится только после прихода +внешнего импульса (“START”). По окончании цикла измерения блок посылает пакет из 2- +х байт “CONF” (“Confirmation”), показанный на [Рис.10](#fig10). Данный пакет сигнализирует о +том, что цикл измерения успешно завершился, можно читать данные. + +![Рис.10. Пакет “CONF”, посылаемый после окончания цикла измерения.][fig10] + +[fig10]:dissector.img/fig10.png + +### Команда 0x04 - чтение регистра параметров[cmd4] + + +Номер регистра, чтение которого запрашивается, содержится в байте 2 команды. В +ответ на эту команду Блок АЦП сразу же посылает 4 байта “АСК”. Затем сразу же +посылает 4-х байтовый пакет данных, показанный на Рис.11. + +![Рис.11. Структура получаемого пакета в ответ на команду 0х04.][fig11] + +[fig11]:dissector.img/fig11.png + +Байт 0 – тип пакета (0xF4), по нему идентифицируется полученный компьютером +пакет. Байт 1 – номер регистра, из которого читается содержимое. Байты 2,3 – само +содержимое прочитанного регистра – 2 байта. Если команда 0х04 подается в момент,когда запущен цикл измерения, отправка пакета данных начнется только после окончания +цикла измерения. В промежуток времени между приходом [команды 0х03](#cmd3) и приходом +внешнего импульса запуска команда 0х04 выполняться может. + +### Команда 0x05 - остановка цикла измерения.[cmd5] + + +В ответ на эту команду Блок АЦП сразу же посылает 4 байта “АСК”. Затем сразу же +выполняет данную команду, то есть останавливает цикл измерения. Чаще всего эта +команда используется для остановки процесса непрерывных измерений профиля пучка с +автоматической посылкой данных (см. ниже). Вообще, полезно перед каждым новым +запуском измерения подавать данную команду. + +### Команда 0x07 - обнуление счетчика числа измерения.[cmd7] + +В ответ на эту команду Блок АЦП сразу же посылает 4 байта “АСК”. Затем сразу же +выполняет данную команду, то есть обнуляет номер измерения. Содержимое счетчика +числа измерения посылается в “шапках” данных – в байте 9. Счетчик номера измерения +инкрементируется после каждого выполненного измерения. После номера 255 следует 0 и +т.д. Данная команда может выполняться в промежутке времени между приходом +[команды 0х03](#cmd3) и приходом внешнего синхроимпульса запуска. + +### Команда 0x0A - чтение внешней памяти пооборотных измерений[cmd10] + +В ответ на эту команду Блок АЦП сразу же посылает 4 байта “АСК”. Затем, в +зависимости от того, запущен цикл измерения или нет, он, либо сразу же посылает данные +(если цикл измерения не запущен), либо ожидает окончания цикла измерения, и только +затем посылает данные. +Внешняя память содержит измеренные напряжения с Диссектора за 1М (2<sup>20</sup> ) +оборотов. Содержимое памяти показано на [Рис.12](#fig12). + +![Рис.12. Содержимое внешней памяти пооборотных данных.][fig12] + +[fig12]:dissector.img/fig12.png + +Каждая ячейка памяти представляет собой 2-байтовое число типа *unsigned short int*. +Значения лежат в диапазоне 0-16383, для получения реальных напряжений нужно вычесть +8192. Логически весь объем внешней памяти разбит на 2048 страниц, каждая страница +содержит 512 оборотов ([Рис.13](#fig13)). + +![Рис.13. Структура внешней памяти пооборотных данных.][fig13] + +[fig13]:dissector.img/fig13.png + +С помощью команды 0х0A можно прочитать любую порцию страниц. Диапазон +читаемых страниц задается самой командой (см. [Рис.6](#fig6)). Начальная страница *N<sub>p1</sub>* +содержится в байтах 2,3 команды. Конечная страница *N<sub>p2</sub>* содержится в байтах 4,5 +команды. В ответ на команду посылается *N<sub>p</sub>* страниц в диапазоне от *N<sub>p1</sub>* до *N<sub>p2</sub>* +включительно (*N<sub>p</sub>* = *N<sub>p2</sub>* – *N<sub>p1</sub>* + 1). Каждая страница посылается отдельным пакетом со своей +10-байтовой “шапкой” ([Рис.14](#fig14)). + +![Рис.14. Структура одного из пакетов, содержащего страницу N.][fig14] + +[fig14]:dissector.img/fig14.png + +Размер каждого пакета равен 1034 байт. Вначале идет 10-байтовая “шапка”, затем +напряжения с Диссектора за 512 оборотов. Структура “шапки” показана на [Рис.15](#fig15). + +![Рис.15. Содержимое “шапки” при посылке пакета пооборотных данных.][fig15] + +[fig15]:dissector.img/fig15.png + +- Байт 0 – тип пакета (0xFB), по нему идентифицируется полученный компьютером +пакет. +- Байт 1 – 0х0B. +- Байт 2 – соответствует байту 1 команды, на [Рис.6](#fig6) он называется +“Номер регистра”, то есть задается запрашиваемым устройством. +- Байты 3, 4 – номер +пакета (равный номеру страницы). +- Байты 5,6 – начальная страница *N<sub>p1</sub>* запрашиваемой +порции страниц. +- Байты 7,8 – конечная страница *N<sub>p2</sub>* запрашиваемой порции страниц. +- Байт 9 – номер измерения. + +В случае, если какой-либо пакет из запрашиваемой порции окажется испорченным, +его можно будет получить еще раз, запросив данную страницу. Если [команда 0х0A](#cmd10) +подается в момент, когда, либо запущен цикл измерения, либо блок ожидает приходавнешнего синхроимпульса после [команды 0х03](#cmd3), отправка пакетов данных начнется только +после окончания цикла измерения. + +### Команда 0x0D - чтение внутренней памяти пооборотных измерений[cmd14] + +В ответ на эту команду Блок АЦП сразу же посылает 4 байта “АСК”. Затем, в +зависимости от того, запущен цикл измерения или нет, он, либо сразу же посылает данные +(если цикл измерения не запущен), либо ожидает окончания цикла измерения, и только +затем посылает данные. + +Внутренняя память содержит измеренные напряжения с Диссектора за 16 К (16384) +оборотов. Содержимое памяти показано на [Рис.16](#fig16). + +![Рис.16. Содержимое внутренней памяти пооборотных данных.][fig16] + +[fig16]:dissector.img/fig16.png + +Каждая ячейка памяти представляет собой 2-байтовое число типа unsigned short int. +Значения лежат в диапазоне 0-16383, для получения реальных напряжений нужно вычесть +8192. Логически весь объем памяти разбит на 32 страницу, каждая страница содержит 512 +оборотов ([Рис.8](#fig8)). + +![Рис.17. Структура внутренней памяти пооборотных данных.][fig17] + +[fig17]:dissector.img/fig17.png + +С помощью команды 0х0D можно прочитать любую порцию страниц. Диапазон +читаемых страниц задается самой командой (см. [Рис.6](#fig6)). Начальная страница *N<sub>p1</sub>* +содержится в байтах 2,3 команды. Конечная страница *N<sub>p2</sub>* содержится в байтах 4,5 +команды. В ответ на команду посылается *N<sub>p</sub>* страниц в диапазоне от *N<sub>p1</sub>* до *N<sub>p2</sub>* +включительно (*N<sub>p</sub>* = *N<sub>p2</sub>* – *N<sub>p1</sub>* + 1). Каждая +страница посылается отдельным пакетом со своей +10-байтовой “шапкой” ([Рис.18](#fig18)). Размер каждого пакета равен 1034 байт. Вначале идет 10- +байтовая “шапка”, затем напряжения с Диссектора за 512 оборотов. Структура “шапки” +показана на [Рис.19](#fig19). + +![Рис.18. Структура одного из пакетов, содержащего страницу N.][fig18] + +[fig18]:dissector.img/fig18.png + +![Рис.19. Содержимое “шапки” при посылке пакета пооборотных данных.][fig19] + +[fig19]:dissector.img/fig19.png + +- Байт 0 – тип пакета (0xFD), по нему идентифицируется полученный компьютером +пакет. +- Байт 1 – код команды (0х0D). +- Байт 2 – соответствует байту 1 команды, на [Рис.6](#fig6) он +называется “Номер регистра”, то есть задается запрашиваемым устройством. +- Байты 3, 4 – номер пакета (равный номеру страницы). +- Байты 5, 6 – начальная страница *N<sub>p1</sub>* запрашиваемой порции страниц. +- Байты 7, 8 – конечная страница *N<sub>p2</sub>* запрашиваемой порции страниц. +- Байт 9 – номер измерения. + +В случае, если какой-либо пакет из запрашиваемой порции окажется испорченным, +его можно будет получить еще раз, запросив данную страницу. Если [команда 0х0В](#cmd11) +подается в момент, когда, либо запущен цикл измерения, либо пикап-станция ожидает +прихода внешнего синхроимпульса после [команды 0х03](#cmd3), отправка пакетов данных +начнется только после окончания цикла измерения. + +### Команда 0x0С - запись в регистр параметров с последующим чтением[cmd12] + + +Данная команда объединяет [команды 0х00](#cmd0) и [0х04](#cmd4). Номер регистра содержится в +байте 1 команды, записываемые данные – в байтах 2,3. В ответ на эту команду Блок АЦП +сразу же посылает 4 байта “АСК”. Если команда 0х0C подается в момент, когда запущен +цикл измерения, отправка пакета “АСК” и запись в регистр начнется только после +окончания цикла измерения. В промежутке времени между приходом команды 0х03 и +приходом внешнего импульса запуска “Впуск” (в режиме работы с внешним запуском) +команда 0х0C выполняться может. Затем, после записи в регистр сразу же осуществляется +его чтение. Блок АЦП посылает 4-байтовый пакет, показанный на [Рис.11](#fig11). + +### Команда 0x0F – синхронное чтение регистра параметров[cmd15] + +Данная команда аналогична [команде 0х04](#cmd4), единственное ее отличие в том, что +процесс посылки пакета данных (4 байта) привязан по времени к окончанию цикла +измерения. Если цикл измерения не запущен, то и посылки данных не будет. Если после +подачи [команды 0х03](#cmd3) с внешним запуском подать [команду 0х0F](#cmd15), то содержимое регистра +придет после окончания цикла измерения (сразу после “CONF”). + +### Команда 0x06 – запуск режима получения массива накопленных данных[cmd6] + +Перед подачей команды запуска режима *N2*, в зависимости от подвида режима +(сканирование задержкой или получение “профиля” пучка) нужно установить требуемое +значение бита 4 [регистра 0](#reg0). Также для получения “профиля” пучка нужно установить в +“1” бит 3 [регистра 0](#reg0). Для сканирования задержкой нужно установить шаг сканирования +плавной задержкой в [регистре 9](#reg9). + +Структура команды показана на [Рис.20](#fig20). Байт 2 команды содержит код сепаратрисы +*C<sub>sep</sub>* , с которой начинается сканирование, Байт 3 команды содержит код сепаратрисы, +которой оканчивается сканирование. Напомним, что код сепаратрисы *C<sub>sep</sub>* связан с +номером сепаратрисы *N<sub>sep</sub>* (0-13) с помощью формулы: *N<sub>sep</sub>* = 255 – *C<sub>sep</sub>* . +Для режима получения “профиля” пучка байты 2,3 могут быть любыми. + +![Рис.20. Структура команды 0x06.][fig20] + +[fig20]:dissector.img/fig20.png + +Байты 4,5 команды содержат диапазон сканирования плавной задержки *D<sub>SCAN</sub>* (0-1023). +Для получения корректной временной картинки величина *D<sub>SCAN</sub>* должна быть равна: + +*D<sub>SCAN</sub>* = *T<sub>0</sub>* /10пс. + +Для режима получения “профиля” пучка в байты 4,5 устанавливается число точек +для “профиля” пучка (число точек в развертке пилы). При этом длительность цикла +измерения *N<sub>e</sub>* подбирается таким, чтобы время общего (или суммарного) цикла измерения +*T<sub>Σ</sub>* было чуть меньше (примерно на 0.2 мс) периода пилы. + +В ответ на [команду 0x06](#cmd6) Блок АЦП сразу же посылает 4 байта “АСК”. Для каждой +точки массива осуществляется накапливание сигнала в течение *N<sub>e</sub>* оборотов. Результат +накапливания записывается во внутреннюю память пооборотных измерений в формате +*short int* в единицах кода АЦП, умноженного на 4 (±32767). По окончании суммарного +цикла измерения приходит пакет “CONF” 0х1106. После этого с помощью [команды 0x0B](#cmd11) +можно прочитать внутреннюю память пооборотных измерений, которая будет содержать +результаты сканирования или “профиль” пучка. Для того, чтобы досрочно прервать +процесс сканирования можно подать [команду 0х05](#cmd5). + +### Команда 0x0B – чтение результатов режима получения массива накопленных данных[cmd11] +из внутренней памяти пооборотных измерений. + +В ответ на эту команду Блок АЦП сразу же посылает 4 байта“АСК”. Структура +данной команды идентична структуре [команды 0x0D](#cmd14). Запрашивается целое количество +страниц. Каждая страница посылается отдельным пакетом, структура данных +полностьюаналогична структуре данных, присылаемых по [команде 0x0D](#cmd14). “Шапка” каждого пакета +отличается только байтом 1 ([Рис.21](#fig21)). + +![Рис.21. Содержимое “шапки” при посылке пакета результатов сканирования.][fig21] + +[fig21]:dissector.img/fig21.png + +Формат данных, в отличие от результатов пооборотных измерений, *short int* в +единицах кода АЦП, умноженного на 4 (±32767). + +### Команда 0x0E – запуск непрерывных измерений[cmd14] + с автоматической посылкой результатов измерения “профиля” пучка. + +После окончания полного цикла измерения осуществляется посылка содержимого +внутренней памяти объемом от 1 до 32 страниц. После этого выдерживается задержка в +диапазоне от 10 мкс до 2.7 сек (65535 × 41мкс), задаваемая кодом [регистра 17](#reg17), после чего +сразу же запускается следующий цикл измерения и т.д. ([Рис.22](#fig22)). + +![Рис.22. Организация непрерывных измерений с автоматической посылкой данных.][fig22] + +[fig22]:dissector.img/fig22.png + +Диапазон посылаемых страниц внутренней памяти задается [регистром 12](#reg12) (биты 0-7 +– начальная страница *N<sub>p1</sub>* , биты 8-15 – конечная страница *N<sub>p2</sub>* ). Таким образом, в режиме +непрерывных измерений “профиля” пучка Блок АЦП всегда по окончании цикла +измерения посылает массив накопленных данных. Формат посылаемых пакетов +накопленных данных аналогичен формату пакетов, посылаемых по [команде 0х0B](cmd12). +В режиме непрерывных измерений с автоматической посылкой результатов +измерения “профиля” пучка все получаемые команды блоком АЦП игнорируются. +Единственное исключение – [команда 0х05](#cmd5), которая останавливает данный режим. + +## Сводная таблица типов пакетов от Блока АЦП. + +| Байт идентификации (байт 0) | Длина пакета | Тип пакета | +|:---------------------------:|:------------:|:----------:| +| 0х10 | 4 | Пакет подтверждения получения команды – “АСК” | +| 0х11 | 2 | Пакет, сигнализирующий о завершении цикла измерения – “CONF” | +| 0хF2 | 26 | Усредненное значение сигнала | +| 0хF4 | 4 | Содержимое рабочего регистра | +| 0хFB | 1034 | Массив пооборотных данных из внешней памяти (1 страница) | +| 0хFD | 1034 | Массив пооборотных или накопленных данных из внутренней памяти (1 страница) | + +## Временные диаграммы работы Блок а АЦП. + +На [Рис.23](#fig23) показана временная диаграмма работы Блока АЦП в режиме работы с +внешним запуском при запросе на пооборотные данные из внутренней памяти. Вначале +подается [команда 0х03](#cmd3). Сразу же из Блока АЦП придет подтверждение “АСК” получения +команды. Реально цикл измерения запустится по приходу внешнего синхроимпульса +“START”. Компьютер далее должен дождаться окончания цикла измерения – прихода из +Блока АЦП пакета “CONF”. После этого он с помощью [команды 0x0D](#cmd13) запрашивает и +получает пооборотные данные. Далее компьютер может запрашивать и другие типы +данных. Скорость передачи данных пооборотных измерений примерно 50 Мбит/сек. +Массив данных 16К оборотов передается примерно за 6 мс. + +На [Рис.24](#fig24) показана временная диаграмма, поясняющая работу стека команд. +Допустим, одна за другой в Блок АЦП приходят 2 команды: [0x0D](#cmd13) и [0х02](#cmd2). [Команда 0x0D](#cmd13) +будет сразу же выполняться – Блок АЦП будет посылать пооборотные данные, а [команда 0х02](#cmd2) +будет ожидать своей очереди в буфере команд. По окончании цикла передачи +пооборотных данных Блок АЦП вначале пошлет пакет “АСК” (раньше он его послать не +может из-за того, что занят передатчик), а затем и само усредненное значение сигнала. + +На [Рис.25](#fig25) показана временная диаграмма работы Блока АЦП при чтении рабочих +регистров при ожидании внешнего запуска. Итак, вначале подается [команда 0х03](#cmd3). Затем +сразу же подается первая [команда 0х04](#cmd4) на чтение регистра. Поскольку к этому моменту +времени еще не успел прийти внешний синхроимпульс “START”, Блок АЦП после пакета +подтверждения “АСК” пошлет пакет с содержимым регистра. Затем, после прихода +внешнего синхроимпульса “START” и запуска цикла измерения приходит вторая [команда 0х04](#cmd4), +она будет ожидать в буфере окончания цикла измерения. После посылки пакета +“CONF” Блок АЦП посылает пакет подтверждения “АСК” и пакет с содержимымрегистра. +Следует заметить, что в промежутке между [командой 0х03](#cmd3) и приходом +внешнего синхроимпульса “Впуск” могут выполняться только команды [0х00](#cmd0), +[0х04](#cmd4), [0х05](#cmd7), [0х07](#cmd7) и [0х0C](#cmd12). + +![Рис.23. Временная диаграмма работы Блока АЦП с внешним запуском.][fig23] + +[fig23]:dissector.img/fig23.png + +![Рис.24. Временная диаграмма, поясняющая работу стека команд.][fig24] + +[fig24]:dissector.img/fig24.png + +![Рис.25. Временная диаграмма чтения рабочего регистра при работе с внешним запуском.][fig25] + +[fig25]:dissector.img/fig25.png + +## Автоматический “Reset” UDP сервера. + +Для предотвращения “зависания” UDP сервера в Блоке АЦП предусмотрен +“Watchdog”, осуществляющий подачу импульса “Reset” на UDP сервер в случае +отсутствия потока данных на чтение или запись в течение определенного времени. Если в +течение ~43 сек отсутствуют либо приходящие UDP пакеты, либо отсылаемые UDP +пакеты, подается сигнал “Reset”. При этом происходит обнуление таблицы IP адресов. + +## Настройка блока. + +1. Прежде всего – это настройка задержки. Нужно подобрать номер сепаратрисы и +код плавной задержки так, чтобы встать на вершину сигнала. +2. Если в массиве пооборотных измерений аномально большие шумы и скачки, то +надо поменять значение начальной задержки импульса “0-сепаратрисы” *N<sub>DEl0</sub>*. +3. Установить усиление (“Gain”) так, чтобы сигнал был в пределах шкалы АЦП +(±8191). Если Амплитуда сигнала меньше 1000, поставить Gain в “1”. + ====================== [руководство](Dissector_v3.pdf)