USB-контроллер крейта КАМАК для отладочного стенда на основе Arduino Mega 2560

Cover Page

Cite item

Full Text

Full Text

В настоящее время интерфейс USB широко используется в различных системах управления, в том числе и в физических установках. В частности, на его основе был создан ряд контроллеров крейтов КАМАК (КК) [1, 2]

Для реализации данного КК была выбрана плата Arduino Mega 2560 (Arduino), характеризующаяся наличием большого числа программируемых цифровых входов-выходов (54 шт.), которые можно использовать непосредственно для генерации и приема как сигналов управления, так и сигналов данных. Функциональная схема КК представлена на рис. 1.

 

Рис. 1. Функциональная схема КК.

 

КК взаимодействует с ЭВМ путем обмена сообщениями через USB-интерфейс, используя для этого два независимых буфера в памяти контроллера – один из них предназначен для приема данных от ЭВМ, другой – для отправки данных в ЭВМ. Сообщения представлены в виде последовательности байтов. Программа на стороне микроконтроллера отслеживает состояние буфера, предназначенного для приема данных от ЭВМ. Формат передаваемых сообщений выбран так, что первым передается байт, содержащий код N, и он же первым анализируется при считывании его из буфера. Анализ кода N позволяет определить тип команды. Если N=30, то это соответствует внутренним командам КК – в этом случае на контакте 3 генерируется сигнал En(N), блокирующий дешифратор кода номера станции. Для внутренних команд дешифрация производится программным способом, по ее результатам происходит обращение к определенным контактам платы Arduino, выбранным для выполнения той или иной операции, например, генерации сигнала Z (контакт 5) или запуска цикла КАМАК сигналом Start (контакт 38).

Если 0 ≤ N ≤ 23, то это указывает на адресное взаимодействие КК с модулями крейта. Сигнал En(N) не вырабатывается. На контакты 22– 26 платы Arduino выводится код номера станции CN1-CN5, с этих контактов код поступает на 24-разрядный дешифратор (D3), после чего сформированный дешифратором сигнал выбора модуля N через буферную схему подается на соответствующую линию магистрали крейта.

Коды субадреса СA1-CA4 и функции CF1-CF5 выводятся, соответственно, на контакты 49– 46 и 33– 37 и далее через буферные схемы подаются на магистраль КАМАК. Аналогично коду N анализируется и код функции F.

Если код функции соответствует команде вывода данных на магистраль, то из буфера дополнительно считываются три байта данных – W(1– 8), W(9– 16) и W(17– 24), которые затем загружаются в регистр D6, организованный по схеме “последовательный вход– параллельный выход”. После загрузки регистра D6 высоким уровнем сигнала Start (при инициализации КК данный вывод устанавливается в нулевое состояние) запускается цикл КАМАК (генерируются сигналы B, S1 и S2). Функциональная схема генератора цикла КАМАК (CAMAC Cycle Generator) выделена на рис. 1 штриховой линией. Для формирования временных меток с шагом 100 нс используется сдвиговый регистр (D10), по разрядам которого под действием тактовых импульсов 10 МГц перемещается единичное состояние, начало и конец которого на соответствующих выводах задают временное положение сигналов B, S1 и S2. Появление единичного состояния на выводе 11 (D10) приводит к окончанию генерации цикла. Низким уровнем сигнала Start схема генерации цикла возвращается в исходное состоянии, после чего она готова к следующему запуску. Далее осуществляется проверка состояний линий CX (D1) и CQ (D2) магистрали КАМАК на предмет успешности прохождения команды и выполнения условий ее реализации адресуемым модулем.

Если код функции соответствует команде чтения данных с линий R1–R24, то, после того как сформируется соответствующая команда NAF, сигналом Start запускается цикл КАМАК. Затем проверяются состояния линий X и Q. Если команда прошла успешно, то полученные данные, которые к этому времени уже должны быть зафиксированы в 24-разрядном регистре D5 (“параллельный вход– последовательный выход”), поразрядно-последовательно байтами считываются в микроконтроллер, после чего эти данные через буфер обмена пересылаются в ЭВМ.

Сигналы с линий L1–L24 объединяются 24-разрядной схемой “ИЛИ”, выход которой подается одновременно на контакты 2 (LAM_Intr) и 9 (LAM). Контакт 2 при инициализации платы сконфигурирован как вход для сигнала прерывания. При появлении сигнала запроса на нем (LAM_Intr) будет вызваться подпрограмма обработки прерывания. Сигналы L1–L24 могут маскироваться содержимым 24-разрядного регистра D4, организованного по схеме “последовательный вход–параллельный выход”. Команда записи данных в этот регистр относится ко внутренним командам КК.

Загрузка регистров D6 (W1–W24), D4 (L1–L24) и, соответственно, чтение регистра D5 (R1–R24) производятся по SPI-протоколу (Serial Peripheral Interface) с частотой, кратной частоте работы микроконтроллера, которая равна 16 МГц. Коэффициент деления задается программным образом и выбирается из ряда 2, 4, 8, 16, 32, 64, 128. По умолчанию коэффициент деления равен 4.

Текущее состояние КК представлено значениями логических уровней на линиях X, Q, I*, LAM. Сигналы с указанных линий поступают, соответственно, на контакты 6, 7, 9 и 8. Их логические состояния считываются по отдельности, после чего из них формируется байт, представляющий слово-состояние КК, который затем передается в ЭВМ.

На лицевой панели расположен двухпозиционный переключатель SA1. Он предназначен для ручного безаварийного прерывания выполняемой КК программы. Если состояние входа EnP соответствует нулевому уровню, то программа на стороне КК переходит в режим ожидания.

К преимуществам данного КК прежде всего можно отнести простоту программирования при использовании встроенных команд ИСР. К недостаткам – относительно невысокое быстродействие при некоторых операциях КК из-за отсутствия в составе ИСР команд побайтного ввода/вывода данных. Например, вывод на магистраль КАМАК 24-разрядного слова занимает примерно 66 мкс. В составе команд самого микроконтроллера ATmega2560 такие операции есть, но их использование приводит к усложнению кода (при этом нередко требуется использование сторонних ИСР) и, как следствие, к росту вероятности появления трудно устранимых ошибок. Для задач, решаемых на отладочном стенде, приоритетом является достоверность измерений за счет минимизации источников ошибок, а не быстродействие. Данный КК был разработан для замены другого контроллера, использовавшегося для связи с компьютером шину ISA.

Внутренние команды, используемые в данном КК:

N(30)A(0)F(0) – чтение слова-состояния КК;

N(30)A(0)F(25) – генерация сигнала Z;

N(30)A(1)F(25) – генерация сигнала C;

N(30)A(2)F(25) – установка Inhibit;

N(30)A(3)F(25) – сброс Inhibit;

N(30)A(4)F(25) – генерация сигнала Start (эта команда введена специально на случай многократного перезапуска какой-либо команды, загруженной в предыдущем цикле);

N(30)A(5)F(25) – запрет прерывания;

N(30)A(6)F(25) – снятие запрета прерывания;

N(30)A(0)F(16) – запись кода маски для сигналов LAM (W1-W24);

N(30)A(7)F(25) – генерация сигнала CReset;

N(30)A(8)F(25) – генерация сигнала ClrW;

N(30)A(9)F(25) – генерация сигнала Clr-Msk-L.

×

About the authors

В. В. Сидоркин

Объединенный институт ядерных исследований

Author for correspondence.
Email: sidorkin@jinr.ru

Лаборатория ядерных проблем, Сектор № 1 научно-экспериментального отдела физики элементарных частиц

Russian Federation, Дубна, Московская обл.

References

  1. Темников А.Н. // ПТЭ. 2010. №1. С.81-86.
  2. Тубольцев Ю.В., Чичагов Ю.В., Хилькевич Е.М., Симуткин В.Д. // ПТЭ. 2010. №1. С.87.

Supplementary files

Supplementary Files
Action
1. JATS XML
2. Fig. 1. Functional diagram of the QC.

Download (642KB)

Copyright (c) 2024 Russian Academy of Sciences

Согласие на обработку персональных данных

 

Используя сайт https://journals.rcsi.science, я (далее – «Пользователь» или «Субъект персональных данных») даю согласие на обработку персональных данных на этом сайте (текст Согласия) и на обработку персональных данных с помощью сервиса «Яндекс.Метрика» (текст Согласия).