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

Обложка

Цитировать

Полный текст

Полный текст

В настоящее время интерфейс 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.

×

Об авторах

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

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

Автор, ответственный за переписку.
Email: sidorkin@jinr.ru

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

Россия, Дубна, Московская обл.

Список литературы

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

Дополнительные файлы

Доп. файлы
Действие
1. JATS XML
2. Рис. 1. Функциональная схема КК.

Скачать (642KB)

© Российская академия наук, 2024

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

 

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