УСТРОЙСТВО КОММУНИКАЦИОННЫХ ИНТЕРФЕЙСОВ SpaceWire

Настоящая полезная модель представляет собой устройство (систему) коммуникационных интерфейсов и относится к цифровой вычислительной технике, а именно к высокоскоростным коммуникационным системам для многопроцессорных вычислительных систем с распределенной обработкой информации и локальным вычислительным сетям, создаваемых на базе технологии SpaceWire [ECSS Standard ECSS-E-50-12A, "SpaceWire, Links, Nodes, Routers and Networks", Issue 1, European Cooperation for Space Data Standardization, February 2003]. Данное устройство предназначено, в частности, для сбора информации от множества датчиков и других подобных модулей, не имеющих процессорного управления, при построении распределенных вычислительных систем, используемых во встраиваемых применениях, в том числе в бортовых вычислительных комплексах.
В качестве аналога из уровня техники известно устройство коммуникационного интерфейса [PATENT GB №91304711.4. Communication interface for serial transmission of variable length data tokens / Priority 25.05.90, №9011700. Data of filing 24.05.91. Data of publication 27.11.91. Bulletin 91/48 of European Patent Office. Publication number 0458648 A2] для использования в коммуникационной системе, соединяющей как минимум два компьютера, причем устройство коммуникационного интерфейса, содержащее блок выдачи данных, блок приема данных, блок управления и блок управления потоком данных.
В данном устройстве использование DS-кодирования позволяет несколько снизить энергопотребление без снижения скоростных характеристик по сравнению с ранее известными аналогами за счет того, что в один момент времени может происходить изменение только одного сигнала, либо на линии стробирования S, либо на линии данных D коммуникационного интерфейса. Используемый в устройстве способ DS-кодирования характеризуется тем, что сигналы данных на линии данных D являются последовательным потоком битов данных, представляющих собой последовательность изменений сигнала. только когда биты данных изменяют свое значение, в то время как сигнал строба на линии стробирования S изменяет значение только на границе битов в те моменты, когда сигнал данных не изменяет свое состояние, таким образом, исключая одновременные изменения в последовательном потоке сигналов данных и стробов. В блоке приема данных путем объединения D-сигнала и S-сигнала по функции XOR формируется синхросигнал, изменяющий свое состояние в каждом битовом интервале, что позволяет его использование для приема сигналов данных с линии данных D и дальнейшей обработки битовых данных в устройстве коммуникационного интерфейса, как это требуется в соответствии со стандартом SpaceWire.
Недостатком этого устройства являются ограниченные функциональные возможности при организации сбора информации от датчиков в распределенной вычислительной системе. Это связанно с тем, что данное устройство, реализуя функции порта ввода-вывода, предназначено для применения в коммуникационной системе, связывающей в распределенной системе два компьютера, либо два процессорных модуля, либо другие подобные узлы, имеющие программное управление, между которыми требуется передавать на высокой скорости в обе стороны большие потоки информации. В этом случае обе взаимодействующие стороны реализуют симметричный интерфейс и могут эффективно использовать возможности своих портов для высокоскоростного приема-передачи данных. Если к высокоскоростному порту компьютера необходимо подключить другой тип модуля, обеспечивающего с помощью данного устройства коммуникационного интерфейса передачу информации от низкоскоростного датчика, то высокоскоростной порт компьютера будет использоваться неэффективно, поскольку его пропускная способность позволяет принимать информацию от множества подобных датчиков. Однако подключить к одному порту компьютера или процессорного блока более одного датчика не позволяют ограниченные функциональные возможности данного устройства коммуникационного интерфейса.
Известно коммутационное устройство, обеспечивающее коммутировать данные между несколькими портами - коммутатор LINK-портов [Патент RU №2405196 С1. Коммутатор LINK-портов / Заявка №2009116950/08, 04.05.2009. Опубл. 27.11.2010. Бюл. №33], содержащий N LINK-портов, N контроллеров LINK-портов, коммутационную матрицу, блок регистров, дешифратор протокола выдачи адреса, формирователь ответного сообщения, схема сравнения, константа, счетчик номера LINK-портов, формирователь протокола RCP-2.
Недостатком данного коммутатора LINK-портов является то, что он не может коммутировать данные, представленные в последовательном коде в соответствии со стандартом SpaceWire, имеет большое энергопотребление и поэтому имеет ограниченное применение, так как не может использоваться в бортовых вычислительных комплексах и во встраиваемых применениях.
Ближайшим аналогом к заявляемому является устройство коммуникационного интерфейса [Патент RU №2460124 С1. Устройство коммуникационного интерфейса / Заявка №2010121016, 26.05.2010. Опубл. 27.08.2012. Бюл. №24, 2012], являющееся портом ввода-вывода из хост-системы в последовательный канал в соответствии со стандартом SpaceWire и содержит блок выдачи данных, блок приема данных, блок управления и блок управления потоком данных, выход запроса на выдачу символа управления потоком которого соединен с одноименным входом блока выдачи данных, выход готовности выдачи символа управления потоком которого соединен с одноименным входом блока управления потоком данных, входы подтверждения приема символа управления потоком и подтверждения приема информационного символа которого соединены соответственно с одноименными выходами блока приема данных и одноименными входами блока управления, выход ошибки кодировки символа которого является выходом ошибки кодировки символа системного интерфейса порта SpaceWire, вход сброса системного интерфейса порта SpaceWire является входом сброса блока управления, первый и второй выходы сброса которого соединены с входами сброса соответственно блока выдачи данных и блока приема данных, выход «получен NULL» которого соединен с одноименным входом блока управления, вход чтения данных системного интерфейса порта SpaceWire является одноименным входом блока приема данных, выходы данных для приема и готовности данных для приема которого являются соответствующими выходами системного интерфейса порта SpaceWire, выход ошибки кредитования системного интерфейса порта SpaceWire является одноименным выходом блока управления потоком данных и соединен с одноименным входом блока управления, третий выход сброса которого соединен с входом сброса блока управления потоком данных, входы подтверждения выдачи информационного символа и разрешения приема данных которого соединены с одноименными выходами соответственно блока выдачи данных и блока приема данных, выход готовности выдачи данных системного интерфейса устройства является одноименным выходом блока выдачи данных, входы записи и данных для выдачи системного интерфейса порта SpaceWire являются соответствующими входами блока выдачи данных.
Данное устройство обеспечивает работу на частотах до 400 МГц в соответствии со стандартом SpaceWire, поддерживает кодирование байтов данных, полученных в пакете данных через системный интерфейс порта, в виде символов SpaceWire и их последующую передачу в последовательный коммуникационный интерфейс порта (линк SpaceWire), а также декодирование символов SpaceWire при приеме их из коммуникационного интерфейса порта и последующую выдачу полученных байтов данных в виде пакетов данных через системный интерфейс порта. То есть это устройство, представляющее собой один порт SpaceWire, позволяет передавать и принимать пакеты данных произвольного размера в виде потока битов данных и стробов через линк SpaceWire. Однако оно может передавать в коммуникационный интерфейс SpaceWire информацию, полученную от одного датчика, так как к системному интерфейсу порта имеется возможность подключения одной хост-системы.
Недостатком данного технического решения являются ограниченные функциональные возможности при организации сбора информации от датчиков в распределенной вычислительной системе, поскольку на основе двух данных устройств можно создать высокоскоростной коммуникационный канал (линк SpaceWire, обслуживаемый двумя портами ввода-вывода) между двумя хост-системами: процессорными модулями, либо другими подобными узлами, имеющими программное управление. Когда же одна хост-система представляет собой процессорный модуль сбора и обработки данных и через линк принимает поток информации от датчика, контроллером которого является вторая хост-система, то, как правило, скорость поступающих от датчика данных во много раз меньше пропускной способности линка SpaceWire (400 Мбит/с) и процессорный модуль обработки данных в этом случае остается незагруженным. Увеличить поток за счет объединения передаваемых данных от некоторого множества низкоскоростных датчиков через линк и порт ввода-вывода процессорного модуля обработки данных для эффективного использования его вычислительной мощности не позволяют ограниченные функциональные возможности второго порта на другом конце линка. Данное техническое решение, используемое для реализации порта ввода-вывода, не позволяет подключить к его системному интерфейсу более одной хост-системы, поэтому несколько контроллеров датчиков не могут быть объединены в один пул.
Преодоление этих ограничений позволяет применяемая в технологии SpaceWire коммутация пакетов с использованием коммутатора SpaceWire, который дополнительно включается в состав коммутационной системы и ставится в разрыв линка между двумя хост-системами. Как правило, такие коммутаторы имеют достаточное число портов, что позволяет подключить к ним требуемое количество контроллеров датчиков. Однако коммутатор SpaceWire является отдельным внешним устройством по отношению к данному техническому решению. Это существенно более сложное и энергопотребляющее устройство, и поэтому не во всех проектах его применение будет оправдано не только с технической, но и с экономической точки зрения.
Другое функциональное ограничение проявляется при организации взаимодействия данного технического решения с хост-системой. Через системный интерфейс порта SpaceWire и хост-системы передается поток байтов, принимаемый или передаваемый в виде пакетов данных. Поэтому хост-система должна быть способной поддерживать функции сетевого уровня и более высокого транспортного уровня эталонной модели OSI, а также решать задачи администрирования, связанные с настройкой и конфигурирования порта, для реализации протоколов линка SpaceWire. Такой круг задач решается, если хост-система представляет собой компьютер или процессорный модуль с программным управлением. Для управления работой датчика достаточно контроллера с автоматом управления на жесткой логике, и использование в этом случае процессорного модуля с программным управлением является избыточным вариантом, не оправданным ни с технической, ни с экономической точки зрения, а для бортовых комплексов является и вовсе неприемлемым.
В основу настоящей полезной модели поставлена задача разработки устройства коммуникационных интерфейсов SpaceWire (двухпортового), с обеспечением возможности коммутации пакетов между портами, а также подключения терминальных узлов (хост-систем) в облегченном варианте исполнения без программного управления и требующего наличие только управляющего автомата на жесткой логике, что присуще контроллерам датчиков.
Техническим результатом предлагаемого решения является расширение области применения устройства коммуникационных интерфейсов SpaceWire благодаря расширению функциональных возможностей устройства: обеспечивается возможность построения различных конфигураций путем последовательного соединения двухпортовых устройств коммуникационных интерфейсов SpaceWire между собой и, как следствие, достигается способность реализации передачи данных от произвольного множества датчиков в один порт SpaceWire, полностью используя его пропускную способность, чтобы загрузить подключенный к нему процессор сбора и обработки данных максимально полно. Кроме того, такие коммуникационные системы обладают свойством масштабирования, позволяя соединять произвольное множество процессоров сбора и обработки данных с требуемым числом датчиков.
Технический результат достигается тем, что в предложенном решении устройства коммуникационных интерфейсов SpaceWire для использования в коммуникационной системе, объединяющей как минимум один компьютер или процессор обработки данных с одним или более терминальным узлом, обеспечивается последовательное соединение устройств через коммуникационный канал SpaceWire, причем в устройстве коммуникационных интерфейсов SpaceWire, содержащем порт SpaceWire, в который входит блок выдачи данных, блок приема данных, блок управления и блок управления потоком данных, выход запроса на выдачу символа управления потоком которого соединен с одноименным входом блока выдачи данных, выход готовности выдачи символа управления потоком которого соединен с одноименным входом блока управления потоком данных, входы подтверждения приема символа управления потоком и подтверждения приема информационного символа которого соединены соответственно с одноименными входами блока управления и одноименными выходами блока приема данных, выход ошибки кодировки символа которого является выходом ошибки кодировки символа системного интерфейса порта и соединен с одноименным входом блока управления, первый и второй выходы сброса которого соединены с входами сброса соответственно блока выдачи данных и блока приема данных, входы данных и стробирования которого являются входами коммуникационного канала приема порта SpaceWire, коммуникационного канала выдачи порта SpaceWire являются выходами данных и стробирования блока выдачи данных, вход синхронизации выдачи данных которого является входом синхронизации выдачи данных системного интерфейса порта, вход чтения данных системного интерфейса приемника порта является одноименным входом блока приема данных, выходы данных для приема и готовности данных для приема которого являются соответствующими выходами системного интерфейса приемника порта, выход ошибки кредитования системного интерфейса порта является одноименным выходом блока управления потоком данных и соединен с одноименным входом блока управления, третий выход сброса которого соединен с входом сброса блока управления потоком данных, входы подтверждения выдачи информационного символа и разрешения приема данных которого соединены с одноименными выходами соответственно блока выдачи данных и блока приема данных, вход сброса системного интерфейса порта является входом сброса блока управления, выход готовности выдачи данных системного интерфейса передатчика порта является одноименным выходом блока выдачи данных, входы записи и данных для выдачи системного интерфейса порта являются соответствующими входами блока выдачи данных, вход локальной синхронизации порта соединен с входами локальной синхронизации блока управления, блока управления потоком данных, блока приема данных, блока выдачи данных, вход разрешения передачи символов управления потоком которого соединен с одноименным выходом блока управления, выход ошибки рассоединения блока приема данных соединен с одноименным входом блока управления и является выходом ошибки рассоединения системного интерфейса порта, выход установления соединения системного интерфейса порта является выходом установления соединения блока приема данных и соединен с одноименным входом блока управления, введены второй порт SpaceWire, блок коммутации пакетов данных, два блока управления скоростью передачи, два блока формирования синхросигналов передачи, блок регистров режима/состояния, блок регистров маршрутизации, селектор пакетов, формирователь протокола RMAP, контроллер интерфейса АНВ Master и контроллер интерфейса АНВ Slave, причем выходы системного интерфейса каждого из двух портов SpaceWire соединены соответственно с группами входов состояния одноименного порта блока регистров режима/состояния, а также соединены соответственно с входами наличия синхронизации блоков управления скоростью передачи, выходы изменения скорости которых соединены соответственно с входами блоков формирования синхросигналов передачи, выходы которых соединены с входами синхронизации выдачи данных каждого из двух портов SpaceWire, в каждом из которых входы управления состоянием блока управления являются одноименными входами каждого из двух портов SpaceWire и соединены соответственно с первым и вторым выходами управления состоянием блока регистров режима/состояния, первый и второй входы-выходы состояния которого соединены соответственно с входами-выходами состояния каждого из блоков управления скоростью, третий вход-выход состояния блока регистров режима/состояния соединен с входом-выходом состояния блока коммутации пакетов данных, первый и второй входы-выходы передачи которого соединены соответственно с одноименными входами-выходами каждого порта SpaceWire, входы-выходы приема которых соединены соответственно с первым и вторым входами-выходами приема блока коммутации пакетов данных, вход-выход адресации которого соединен с одноименным входом-выходом блока регистров маршрутизации, информационный вход-выход которого соединен с первым управляющим входом-выходом контроллера интерфейса АНВ Slave, второй управляющий вход-выход которого соединен с информационным входом-выходом блока регистров режима/состояния, четвертый вход-выход состояния которого соединен с входом-выходом состояния формирователя протокола RMAP, первый и второй информационные входы-выходы которого соединены соответственно с первым информационным входом-выходом контроллера интерфейса АНВ Master и с входом-выходом данных селектора пакетов, вход-выход пакетных данных которого соединен с одноименным входом-выходом блока коммутации пакетов данных, входы-выходы интерфейса шины АНВ устройства являются одноименными входами-выходами контроллера интерфейса АНВ Master, второй информационный вход-выход которого соединен с информационным входом-выходом контроллера интерфейса АНВ Slave, вход сброса которого соединен с входами сброса контроллера интерфейса АНВ Slave, формирователя протокола RMAP, селектора пакетов, блока регистров маршрутизации, блока регистров режима/состояния, двух блоков управления скоростью передачи и с входами сброса каждого из двух портов SpaceWire и является входом начальной установки устройства, вход локальной синхронизации которого соединен с входами локальной синхронизации каждого из двух портов SpaceWire и с входами синхронизации двух блоков управления скоростью передачи, блока регистров режима/состояния, блока регистров маршрутизации, селектора пакетов, формирователя протокола RMAP, контроллера интерфейса АНВ Master и контроллера интерфейса АНВ Slave.
Предпочтительно, блок коммутации пакетов данных содержит блок адаптивной коммутации, блок широковещания, коммутационную матрицу, два контроллера портов SpaceWire, каждый из которых состоит из блоков управления приемом и передачей порта SpaceWire, и контроллер порта FIFO, состоящий из блоков управления приемом и передачей, причем входы сброса и локальной синхронизации блока коммутации пакетов соединены соответственно с одноименными входами блока адаптивной маршрутизации, блока широковещания, блоков управления приемом и передачей контроллера порта FIFO и каждого из двух контроллеров порта SpaceWire, первые входы-выходы блоков управления приемом контроллеров первого и второго портов SpaceWire являются соответственно первым и вторым входом-выходом приема блока коммутации пакетов данных, первые входы-выходы блоков управления передачей контроллеров первого и второго портов SpaceWire являются соответственно первым и вторым входом-выходом передачи блока коммутации пакетов данных, вторые входы-выходы блоков управления приемом контроллеров первого и второго портов SpaceWire и порта FIFO соединены соответственно с первым, вторым и третьим входами-выходами приема коммутационной матрицы, вторые входы-выходы блоков управления передачей контроллеров первого и второго портов SpaceWire и порта FIFO соединены соответственно с первым, вторым и третьим входами-выходами передачи коммутационной матрицы, первые входы-выходы блоков управления приемом и передачей контроллера порта FIFO соединены с входом-выходом пакетных данных блока коммутации пакетов данных, входы-выходы адресной информации блоков управления приемом и передачей контроллеров первого и второго портов SpaceWire, блоков управления приемом и передачей контроллера порта FIFO, блоков адаптивной маршрутизации и широковещания соединены с входом-выходом адресации блока коммутации пакетов данных, вход-выход состояния которого соединен с одноименными входами-выходами блоков управления приемом и передачей контроллера порта FIFO, блоков управления приемом и передачей контроллеров первого и второго портов SpaceWire, блоков адаптивной маршрутизации и широковещания, выходы запроса блоков управления приемом контроллеров первого и второго портов SpaceWire соединены с соответствующими разрядами шины запросов, которые соединены соответственно с входами запросов блоков управления передачей контроллеров первого и второго портов SpaceWire, выходы подтверждения блоков управления передачей контроллеров первого и второго портов SpaceWire соединены с соответствующими разрядами шины подтверждений, которые соединены соответственно с входами подтверждений блоков управления приемом контроллеров первого и второго портов SpaceWire, входы-выходы селекции которых соединены соответственно с первым и вторым входами-выходами селекции блока адаптивной маршрутизации, третий вход-выход селекции которого соединен с входом-выходом селекции блока управления приемом контроллера порта FIFO, входы-выходы регулирования блоков управления приемом контроллеров первого и второго портов SpaceWire которых соединены соответственно с первым и вторым входами-выходами регулирования блока широковещания, третий и четвертый выходы регулирования которого соединены соответственно с входами регулирования блоков управления передачей контроллеров первого и второго портов SpaceWire, пятый вход-выход регулирования блока широковещания соединен с входом-выходом регулирования блока управления приемом контроллера порта FIFO, шестой выход регулирования блока широковещания соединен с входом регулирования блока управления передачей контроллера порта FIFO.
Предлагаемое в рамках настоящей полезной модели устройство предназначено для организации высокоскоростной передачи информации от одного или произвольного множества модулей сбора данных (датчиков) к процессору обработки данных или компьютеру по дуплексному последовательному коммуникационному каналу - коммуникационному интерфейсу SpaceWire, и может быть использовано при создании бортовых вычислительных комплексов и сетей для применения в широких областях, а также в различных встраиваемых применениях, требующих пониженного энергопотребления и высокого быстродействия. В предлагаемом техническом решении обеспечивается возможность для повышения скорости передачи данных через коммуникационный канал SpaceWire, то есть выдачи и приема данных в устройстве коммуникационного интерфейса при одновременном ограничении роста энергопотребления за счет разделения всех элементов устройства на два временных домена. Первый временной домен включает элементы передатчика в порте SpaceWire устройства, непосредственно осуществляющие выдачу и работающие на частоте выдачи данных в коммуникационный интерфейс, а также элементы приемника в порте SpaceWire устройства, непосредственно обеспечивающие прием битов данных из коммуникационного канала и работающие на частоте принимаемых сигналов из коммуникационного интерфейса. Второй временной домен, в который включены элементы устройства, осуществляющие подготовку выдаваемых символов данных и обработку принимаемых символов данных, работает на частоте локальной синхронизации устройства. Для повышения пропускной способности коммуникационного интерфейса SpaceWire частота выдачи данных может быть увеличена в несколько раз по сравнению с частотой локальной синхронизации. Поскольку минимизируется число триггеров, работающих на максимальной частоте передачи данных, то это способствует снижению потребляемой мощности. Данное устройство может быть эффективно использовано для создания распределенных бортовых комплексов сбора и обработки больших объемов данных, получаемых от датчиков. За счет расширения функциональных возможностей данного технического решения значительно упрощаются требования к структуре аппаратно-программных средств терминальных модулей сбора информации, которые обеспечивают подключение датчиков к коммуникационному интерфейсу SpaceWire. Сложность таких контроллеров датчиков может быть существенно уменьшена, поскольку их функции по подключению к коммуникационному интерфейсу SpaceWire упрощаются и могут быть реализованы на основе автомата с жесткой логикой. Данное устройство обеспечивает возможность самостоятельного считывания данных от датчика, накопленных в памяти модуля сбора информации (контроллера датчика), через интерфейс шины АНВ, формирования пакеты данных в соответствии со стандартом SpaceWire и отправление их в один из двух или в оба коммуникационных канала SpaceWire для передачи в процессор(ы) обработки данных. Кроме того, для того чтобы полностью использовать пропускную способность коммуникационного канала SpaceWire для загрузки процессора обработки данных в него необходимо коммутировать потоки данных более чем от одного датчика. Решение этой проблемы обеспечивается при последовательном соединении предлагаемых устройств по линкам SpaceWire в конфигурации типа шина или кольцо, в результате чего достигается возможность коммутировать потоки данных от требуемого числа датчиков для полной загрузки коммуникационного канала SpaceWire, к которому подключается процессор обработки данных.
Отдельные элементы устройства могут быть реализованы стандартными средствами из данной области техники (схемотехнические решения), при этом только системное решение, предложенное в рамках настоящей полезной модели, позволяет достигнуть соответствующего технического результата, поскольку только совокупность признаков, предложенных в формуле полезной модели, обеспечивает указанные преимущества по сравнению с аналогами из уровня техники.
Детально сущность данного технического решения поясняется описанием со ссылками на чертежи, где на фиг. 1 представлена структурная схема устройства, на фиг. 2 - структурная схема блока коммутации пакетных данных, на фиг. 3 - функциональная схема порта SpaceWire, на фиг. 4 - функциональная схема блока управления приемом, на фиг. 5 - функциональная схема блока управления передачей, на фиг. 6 приведен граф машины состояния, описывающий режимы функционирования порта SpaceWire, на фиг. 7 - автомат состояний блока управления приемом контроллера порта SpaceWire, на фиг. 8 - автомат состояний блока управления передачей контроллера порта SpaceWire, на фиг. 9 - временные диаграммы выполнения команд записи и чтения протокола RMAP, на фиг. 10 - примеры формирования путевого адреса пакетов данных SpaceWire, на фиг. 11 - примеры сетевых структур с применением данных устройств, на фиг. 12 - вариант последовательного включения устройств в структуре типа «цепочка».
Как показано на фиг. 1, предлагаемое устройство содержит блок 1 коммутации пакетов данных, два порта 2 и 3 SpaceWire, два блока 4 и 5 управления скоростью, два блока 6 и 7 формирования синхросигналов передачи, блок 8 регистров режима/состояния, блок 9 регистров маршрутизации, селектор 10 пакетов, формирователь 11 протокола RMAP, контроллер 12 интерфейса АНВ Master, контроллер 13 интерфейса АНВ Slave, входы 14 коммуникационного канала приема первого линка SpaceWire, выходы 15 коммуникационного канала выдачи первого линка SpaceWire, входы 16 коммуникационного канала приема второго линка SpaceWire, выходы 17 коммуникационного канала выдачи второго линка SpaceWire, входы-выходы 18 интерфейса шины АНВ устройства, вход 19 начальной установки устройства, вход 20 локальной синхронизации устройства, выходы 21 и 22 системного интерфейса, входы 23 и 24 синхронизации выдачи данных, входы 25 и 26 управления состоянием, первые входы-выходы приема 27 и передачи 28, вторые входы-выходы приема 29 и передачи 30, вход 31 сброса, вход 32 локальной синхронизации, вход-выход 33 состояния, вход-выход 34 адресации, вход-выход 35 пакетных данных, вход-выход 36 данных, первый информационный вход-выход 37, вход-выход 38 состояния, информационный вход-выход 39, информационные входы-выходы 40 и 41, первый вход-выход 42 состояния, второй вход-выход 43 состояния, выходы 44 и 45 изменения скорости.
Блок 1 коммутации пакетов данных (см. фиг. 2) содержит блок 46 адаптивной коммутации, блок 47 широковещания, коммутационную матрицу 48, два контроллера 49 и 50 портов SpaceWire, контроллер 51 порта FIFO, блок 52 управления приемом, входящий в состав каждого из контроллеров 49, 50 и 51, блок 53 управления передачей, входящий в состав каждого из контроллеров 49, 50 и 51, вторые входы-выходы 54 приема и 55 передачи контроллера 49 первого порта SpaceWire, вторые входы-выходы 56 приема и 57 передачи контроллера 50 второго порта SpaceWire, вторые входы-выходы 58 приема и 59 передачи контроллера 51 порта FIFO, шина 60 запросов, шина 61 подтверждений, первый 64 и второй 65 входы-выходы селекции, третий 66 вход-выход селекции, первый 68 и второй 69 входы-выходы регулирования, третий 70 и четвертый 71 выходы регулирования, пятый 72 вход-выход регулирования и шестой 73 выход регулирования.
Порт 2 (3) SpaceWire содержит (см. фиг. 3) блок 75 выдачи данных, блок 76 приема данных, блок 77 управления потоком данных, блок 78 управления, выход 79 подтверждения приема символа управления потоком, выход 80 подтверждения приема информационного символа, выход 81 запроса на выдачу символа управления потоком, первый выход 82 сброса, второй выход 83 сброса, третий выход 84 сброса, выход 85 ошибки рассоединения, выход 86 готовности выдачи символа управления потоком, вход 87 синхронизации выдачи данных, входы 88 данных и 89 стробирования, выходы 90 данных и 91 стробирования, выход 92 готовности выдачи данных, вход 93 записи, вход 94 данных для выдачи, вход 95 чтения данных, выход 96 данных для приема, выход 97 готовности данных для приема, вход 98 локальной синхронизации, вход 99 сброса, выход 100 ошибки кредитования, выход 101 ошибки кодировки символа, выход 102 установления соединения, выход 103 разрешения передачи символа управления потоком, выход 104 подтверждения выдачи информационного символа, выход 105 разрешения приема данных.
Блок 52 управления приемом содержит (см. фиг. 4) блок 106 трансляции и буферизации данных, блок 107 управления входным интерфейсом, блок 108 селекции выходных портов, блок 109 запросов выходных портов, блок 110 управления коммутацией каналов, вход 111 принятых данных (Data_in), вход 112 установки данных (Valid_in), выход 113 готовности (Re_out), выход 114 данных (Data_out), выход 115 установки данных (Valid_out), вход 116 готовности (Re_in), выход 117 запросов, вход 118 подтверждения, выход 119 заголовка пакета, выход 120 текущего состояния, выход 121 признака удаления, выход 122 исходного набора портов, выход 123 признака получения грантов, выход 124 признака проключения канала, выход 125 ошибочного адреса пакета, выход 126 вектора выходных портов.
Блок 53 управления передачей содержит (см. фиг. 5) блок 127 арбитража, блок 128 состояния, вход 62 запросов, выход 63 подтверждения, выход 129 проключения канала, выход 130 текущего состояния.
Блок 1 коммутации пакетов данных предназначен для коммутации пакетов в соответствии со стандартом SpaceWire либо между первыми входами-выходами приема 27 и передачи 28 с одной стороны и вторыми входами-выходами приема 29 и передачи 30 с другой стороны, либо между первыми входами-выходами приема 27 и передачи 28 с одной стороны и входом-выходом 35 пакетных данных с другой стороны, либо, наконец, между вторыми входами-выходами приема 29 и передачи 30 с одной стороны и входом-выходом 35 пакетных данных с другой стороны. Первый вход-выход приема 27 блока 1 коммутации пакетов данных соединен с входом-выходом приема первого порта 2 SpaceWire. Первый вход-выход передачи 28 блока 1 коммутации пакетов данных соединен с входом-выходом передачи первого порта 2 SpaceWire. Второй вход-выход приема 29 блока 1 коммутации пакетов данных соединен с входом-выходом приема второго порта 3 SpaceWire. Второй вход-выход передачи 30 блока 1 коммутации пакетов данных соединен с входом-выходом передачи второго порта 3 SpaceWire. Вход-выход пакетных данных 35 блока 1 коммутации пакетов данных соединен с входом-выходом пакетных данных селектора 10 пакетов. Вход сброса блока 1 является входом 19 начальной установки устройства. Вход локальной синхронизации блока 1 является входом 20 локальной синхронизации устройства.
Порт 2 (3) SpaceWire предназначен для приема пакета данных из коммуникационного канала и передачи пакета данных в коммуникационный канал в соответствии со стандартом SpaceWire. Входы данных и стробирования порта 2 (3) SpaceWire являются входами 14 (16) коммуникационного канала приема первого (второго) линка SpaceWire устройства. Выходы данных и стробирования порта 2 (3) SpaceWire являются выходами 15 (17) коммуникационного канала выдачи первого (второго) линка SpaceWire устройства. Выходы 21 (22) системного интерфейса порта 2 (3) SpaceWire соединены с группой входов состояния первого (второго) порта блока 8 регистров режима/состояния и с входами наличия синхронизации блока 4 (5) управления скоростью передачи. Вход 31 сброса порта 2 (3) SpaceWire является входом 19 начальной установки устройства. Вход 32 локальной синхронизации порта 2 (3) SpaceWire является входом 20 локальной синхронизации устройства.
Блок 4 (5) управления скоростью предназначен для динамического регулирования скорости выдачи битов данных в линк SpaceWire через порт 2 (3) в процессе работы устройства с целью достижения максимально высокой пропускной способности коммуникационного канала 15 (17) передачи, при которой связанные им два устройства устойчиво обмениваются данными. Выход 44 (45) изменения скорости блока 4 (5) управления скоростью соединен с входом блока 6 (7) формирования синхросигналов передачи. Вход сброса блока 4 (5) является входом 19 начальной установки устройства. Вход локальной синхронизации блока 4 (5) является входом 20 локальной синхронизации устройства.
Блок 6 (7) формирования синхросигналов передачи обеспечивает в соответствии с коэффициентами скорости, определяемыми блоком 4 (5), генерацию последовательности синхросигналов Tx_PLL, задающих тактовую скорость выдачи битов данных в порте 2 (3) SpaceWire. Выход блока 6 (7) формирования синхросигналов передачи соединен с входом 23 (24) синхронизации выдачи данных порта 2 (3) SpaceWire.
Блок 8 регистров режима/состояния образует конфигурационную память устройства и предназначен для фиксации признаков состояния блоков устройства и хранения программно задаваемых параметров настроек, необходимых для управления режимами работы устройства. Первый (второй) выход 25 (26) управления состоянием блока 8 регистров режима/состояния соединен с входом управления состоянием порта 2 (3) SpaceWire. Первый (второй) вход-выход 42 (43) состояния блока 8 регистров режима/состояния соединен с входом-выходом состояния блока 4 (5) управления скоростью. Третий вход-выход состояния блока регистров 8 режима/состояния соединен с входом-выходом 33 состояния блока 1 коммутации пакетов данных. Четвертый вход-выход состояния блока регистров 8 режима/состояния соединен с входом-выходом 38 состояния формирователя 11 протокола RMAP. Вход сброса блока 8 является входом 19 начальной установки устройства. Вход локальной синхронизации блока 8 является входом 20 локальной синхронизации устройства. Перечень регистров блока 8 приведены в табл. 1.
Блок 9 регистров маршрутизации предназначен для хранения адресов терминальных узлов сети SpaceWire, используемых для выбора маршрутов при коммутации пакетов в соответствии со стандартом SpaceWire. Вход-выход адресации блока 9 регистров маршрутизации соединен с входом-выходом 34 адресации содержит блока 1 коммутации пакетов данных. Вход сброса блока 9 регистров маршрутизации является входом 19 начальной установки устройства. Вход локальной синхронизации блока 9 является входом 20 локальной синхронизации устройства.
Селектор 10 пакетов предназначен для поддержки функций конфигурационного порта в данном устройстве и обеспечивает прием из сети SpaceWire пакетов данных, содержащих RMAP команду для данного устройства и передачу в сеть SpaceWire пакетов данных, содержащих ответ на RMAP команду. Вход-выход 36 данных селектора 10 пакетов соединен с вторым информационным входом-выходом формирователя 11 протокола RMAP. Вход сброса селектора 10 пакетов является входом 19 начальной установки устройства. Вход локальной синхронизации селектора 10 является входом 20 локальной синхронизации устройства.
Формирователь 11 протокола RMAP предназначен для интерпретации команд RMAP протокола, адресованных данному устройству, и обеспечивает выполнение транзакций (операций чтения/записи) с регистрами конфигурационного пространства данного устройства или памятью терминального узла через интерфейс шины АНВ и посылку ответов на выполненные команды. Первый информационный вход-выход 37 формирователя 11 протокола RMAP соединен с первым информационным входом-выходом контроллера интерфейса АНВ Master. Вход сброса формирователя 11 является входом 19 начальной установки устройства. Вход локальной синхронизации формирователя 11 является входом 20 локальной синхронизации устройства.
Контроллер 12 интерфейса АНВ Master обеспечивает разделение потока транзакций на транзакции, адресованные к внутреннему конфигурационному пространству устройства, и внешние транзакции к памяти терминального узла, подключенной к шине АНВ. Второй информационный вход-выход контроллера 12 интерфейса АНВ Master соединен с информационным входом-выходом 39 контроллера 13 интерфейса АНВ Slave. Входы-выходы контроллера 12 интерфейса АНВ Master являются входами-выходами 18 интерфейса шины АНВ устройства. Вход сброса контроллера 12 интерфейса АНВ Master является входом 19 начальной установки устройства. Вход локальной синхронизации контроллера 12 интерфейса АНВ Master является входом 20 локальной синхронизации устройства.
Контроллер 13 интерфейса АНВ Slave обеспечивает преобразование однословных и пакетных транзакций, поступающих по интерфейсу АНВ, в обращения на чтение и запись к синхронной адресной памяти внутреннего конфигурационного пространства устройства. Первый управляющий вход-выход контроллера 13 интерфейса АНВ Slave соединен с информационным входом-выходом 40 блока 9 регистров маршрутизации. Второй управляющий вход-выход контроллера 13 интерфейса АНВ Slave соединен с информационным входом-выходом 41 блока 8 регистров режима/состояния. Вход сброса контроллера 13 интерфейса АНВ Slave является входом 19 начальной установки устройства. Вход локальной синхронизации выход контроллера 13 интерфейса АНВ Slave является входом 20 локальной синхронизации устройства.
В блоке 1 коммутации пакетов данных блок 46 адаптивной коммутации предназначен для выбора из множества эквивалентных портов номера порта, в который в текущий момент времени будет осуществляться передача пакета данных. Вход-выход состояния блока 46 адаптивной маршрутизации соединен с входом 33 состояния блока 1 коммутации пакетов данных. Вход-выход адресации блока 46 адаптивной маршрутизации соединен с входом-выходом 34 адресации блока 1 коммутации пакетов данных. Первый вход-выход селекции блока 46 адаптивной маршрутизации соединен с входом-выходом 64 селекции блока 52 управления приемом контроллера 49 первого порта SpaceWire. Второй вход-выход селекции блока 46 адаптивной маршрутизации соединен с входом-выходом 65 селекции блока 52 управления приемом контроллера 50 второго порта SpaceWire. Третий вход-выход селекции блока 46 адаптивной маршрутизации соединен с входом-выходом 66 селекции блока 52 управления приемом контроллера 51 порта FIFO. Вход сброса блока 46 адаптивной маршрутизации является входом 31 сброса блока 1 коммутации пакетов данных. Вход локальной синхронизации блока 46 адаптивной маршрутизации является входом 32 локальной синхронизации блока 1 коммутации пакетов данных устройства.
Блок 47 широковещания обеспечивает контроль фаз обмена и смены уровней приоритетов портов. Вход-выход состояния блока 47 широковещания соединен с входом 33 состояния блока 1 коммутации пакетов данных. Вход-выход адресации блока 47 широковещания соединен с входом 34 адресации блока 1 коммутации пакетов данных. Первый вход-выход регулирования блока 47 широковещания соединен с входом-выходом 68 регулирования блока 52 управления приемом контроллера 49 первого порта SpaceWire. Второй вход-выход регулирования блока 47 широковещания соединен с входом-выходом 69 регулирования блока 52 управления приемом контроллера 50 второго порта SpaceWire. Третий выход регулирования блока 47 широковещания соединен с входом 70 регулирования блока 53 управления передачей контроллера 49 первого порта SpaceWire. Четвертый выход регулирования блока 47 широковещания соединен с входом 71 регулирования блока 53 управления передачей контроллера 50 второго порта SpaceWire. Пятый вход-выход регулирования блока 47 широковещания соединен с входом-выходом 72 регулирования блока 52 управления приемом контроллера 51 порта FIFO. Шестой выход регулирования блока 47 широковещания соединен с входом 73 регулирования блока 53 управления передачей контроллера 51 порта.
Коммутационная матрица 48 представляет собой неблокирующий кросс-коммутатор и обеспечивает коммутацию пакетов между контроллерами 49 и 50 портов SpaceWire, а также между ними и контроллером 51 порта FIFO. Первый вход-выход приема коммутационной матрицы 48 соединен с вторым входом-выходом 54 блока 52 управления приемом контроллера 49 первого порта SpaceWire. Первый вход-выход передачи коммутационной матрицы 48 соединен с вторым входом-выходом 55 блока 53 управления передачей контроллера 49 первого порта SpaceWire. Второй вход-выход приема коммутационной матрицы 48 соединен с вторым входом-выходом 56 блока 52 управления приемом контроллера 50 второго порта SpaceWire. Второй вход-выход передачи коммутационной матрицы 48 соединен с вторым входом-выходом 57 блока 53 управления передачей контроллера 50 второго порта SpaceWire. Третий вход-выход приема коммутационной матрицы 48 соединен со вторым входом-выходом 58 блока 52 управления приемом контроллера 51 порта FIFO. Третий вход-выход передачи коммутационной матрицы 48 соединен с вторым входом-выходом 59 блока 53 управления передачей контроллера 51 порта FIFO.
Контроллеры 49 первого и 50 второго порта SpaceWire предназначены для управления приемом и передачей пакетов по линкам SpaceWire, подключенным соответственно к портам 2 и 3 SpaceWire. Контроллер 51 порта FIFO предназначен для управления приемом и передачей пакетов для транспортного уровня, формируемых или принимаемых формирователем 11 протокола RMAP. Каждый из контроллеров 49, 50 и 51 включает в себя блок 52 управления приемом и блок 53 управления передачей.
Блок 52 управления приемом обеспечивает прием пакета из входного интерфейса соответствующего порта и передачу его на выходной интерфейс одного из портов, номер которого определяется в соответствии с используемым способом адресации. Первые входы-выходы блока 52 управления приемом контроллеров 49 и 50 являются соответственно первым 27 и вторым 29 входом-выходом приема блока 1 коммутации пакетов данных. Первый вход-выход блока 52 управления приемом контроллера 51 порта FIFO соединен с входом-выходом 35 пакетных данных блока 1 коммутации пакетов данных. Выход запроса блока 52 управления приемом контроллера 49 первого порта SpaceWire соединен с первым разрядом шины 60 запросов. Выход запроса блока 52 управления приемом контроллера 50 второго порта SpaceWire соединен со вторым разрядом шины 60 запросов. Выход запроса блока 52 управления приемом контроллера 51 порта FIFO соединен с третьим разрядом шины 60 запросов. Вход подтверждения блока 52 управления приемом контроллера 49 первого порта SpaceWire соединен с шиной 61 подтверждений. Вход подтверждения блока 52 управления приемом контроллера 50 второго порта SpaceWire соединен с шиной 61 подтверждений. Вход подтверждения блока 52 управления приемом контроллера 51 порта FIFO соединен с шиной 61 подтверждений. Вход сброса блока 52 управления приемом контроллеров 49, 50 и 51 соединен с входом 31 сброса блока 1 коммутации пакетов данных. Вход локальной синхронизации блока 52 управления приемом контроллеров 49, 50 и 51 соединен с входом локальной синхронизации блока 1 коммутации пакетов данных. Вход-выход адресации блока 52 управления приемом контроллеров 49, 50 и 51 соединен с одноименным входом-выходом 34 блока 1 коммутации пакетов данных. Вход-выход состояния блока 52 управления приемом контроллеров 49, 50 и 51 соединен с входом-выходом 33 состояния блока 1 коммутации пакетов данных.
Блок 53 управления передачей в соответствии с поступившими от блоков 52 управления приемом других контроллеров запросами обеспечивает выбор номера входного порта, из которого осуществляет прием следующего пакета данных и его передачу в выходной интерфейс своего порта. Первые входы-выходы блока 53 управления передачей контроллеров 49 и 50 являются соответственно первым 28 и вторым 30 входом-выходом передачи блока 1 коммутации пакетов данных. Вход запроса блока 53 управления передачей контроллера 49 первого порта SpaceWire соединен с шиной 60 запросов. Вход запроса блока 53 управления передачей контроллера 50 второго порта SpaceWire соединен с шиной 60 запросов. Вход запроса блока 52 управления передачей контроллера 51 порта FIFO соединен с шиной 60 запросов. Выход подтверждения блока 53 управления передачей контроллера 49 первого порта SpaceWire соединен с первым разрядом шины 61 подтверждений. Выход подтверждения блока 53 управления передачей контроллера 50 второго порта SpaceWire соединен с вторым разрядом шины 61 подтверждений. Выход подтверждения блока 53 управления передачей контроллера 51 порта FIFO соединен с третьим разрядом шины 61 подтверждений. Вход сброса блока 53 управления передачей контроллеров 49, 50 и 51 соединен с входом 31 сброса блока 1 коммутации пакетов данных. Вход локальной синхронизации блока 53 управления передачей контроллеров 49, 50 и 51 соединен с входом локальной синхронизации блока 1 коммутации пакетов данных. Вход-выход адресации блока 53 управления передачей контроллеров 49, 50 и 51 соединен с одноименным входом-выходом 34 блока 1 коммутации пакетов данных. Вход-выход состояния блока 53 управления передачей контроллеров 49, 50 и 51 соединен с входом-выходом 33 состояния блока 1 коммутации пакетов данных.
В порте 2 (3) SpaceWire (см фиг. 3) блок 75 выдачи данных предназначен для формирования и выдачи в коммуникационный интерфейс символов данных из пакетов данных, поступающих через вход 94 данных для выдачи, соединенного с первым (вторым) входом-выходом передачи 28 (30) порта 2 (3) SpaceWire, а также управляющих символов по требованию, поступающему с выхода 83 запроса на выдачу символа управления потоком блока 77 управления потоком данных на одноименный вход блока 75. Форматы символов, передаваемых через коммуникационный интерфейс, приведены в табл. 2. Вход 93 записи блока 75 выдачи данных соединен с первым (вторым) входом-выходом передачи 28 (30) порта 2 (3) SpaceWire. Выход 92 готовности выдачи данных блока 75 выдачи данных соединен с первым (вторым) входом-выходом передачи 28(30) порта 2 (3) SpaceWire. Выход 92 и входы 93 и 94 предназначены для реализации стандартного механизма записи символов пакетных данных в блок 75 выдачи данных из блока 1 коммутации пакетов данных. Запись символов пакетных данных в блок 75 тактируется с его входа синхронизации, соединенного с входом 98 локальной синхронизации порта 2 (3) SpaceWire. Выходы 86 готовности выдачи символа управления потоком и 104 подтверждения выдачи информационного символа блока 75 соединены с одноименными входами блока 77 управления потоком данных и предназначены для реализации механизма кредитования, необходимого для организации передачи и приема символов данных через коммуникационный интерфейс без переполнения буферов приема у взаимодействующих устройств.
Блок 75 выдачи данных обеспечивает DS-кодирование символов данных, управляющих символов и кодов и их передачу на выходы 90 данных и 91 стробирования, которые соединены с выходом 15 (17) коммуникационного канала выдачи первого (второго) линка SpaceWire. Выдача данных осуществляется со скоростью, определяемой частотой синхросигнала с входа синхронизации выдачи данных блока 75, соединенного с одноименным входом 87 порта 2 (3) SpaceWire. Если одновременно установлено два или три запроса к блоку 75на передачу символов, то их выдача в канал осуществляется в соответствии с приоритетом: самый высокий приоритет имеет управляющий символ FCT, потом - информационный символ Nchar. Если во время отсылки, например, FCT, снова пришел запрос на отсылку символа управления потоком, то после отсылки первого символа FCT, формируется и выдается следующий FCT, несмотря ни на какие другие запросы и время очередности установки запросов. Если на момент выдачи текущих символов в канал не было сформировано никаких запросов, то блок 75 выдачи данных формирует и выдает в канал управляющий NULL код для поддержки соединения в линке SpaceWire.
Блок 76 приема данных обеспечивает инициализацию соединения и получение битового потока от другого устройства через входы 88 данных и 89 стробирования коммуникационного интерфейса устройства, декодирование принятых сигналов и выделение из потока битов символов данных и их передачи в блок 1 коммутации пакетов данных через выход 96 данных для приема, который соединен с первым (вторым) входом-выходом 28 (30) приема порта 2 (3) SpaceWire. Представление информации в пакете данных, поступающем в блок 1 коммутации пакетов данных из блока 76 приема данных через выход 96 данных для приема, показано в табл. 3.
Выход 97 готовности данных для приема блока 76 приема данных соединен с первым (вторым) входом-выходом 28 (30) приема порта 2 (3) SpaceWire. Вход 95 чтения данных блока 76 приема данных соединен с первым (вторым) входом-выходом 28 (30) приема порта 2 (3) SpaceWire. Чтение символов пакетных данных из блока 76 тактируется с его входа синхронизации, соединенного с входом 98 локальной синхронизации порта 2 (3) SpaceWire. Выход 79 приема символа управления потоком блока 76 приема данных соединен с одноименными входами блока 78 управления и блока 77 управления потоком данных и обеспечивает формирование сигнала о приеме управляющего символа управления потоком. Выход 80 подтверждения приема информационного символа блока 76 приема данных соединен с одноименными входами блока 78 управления и блока 77 управления потоком данных. Выход 85 ошибки рассоединения блока 76 приема данных соединен с одноименным входом блок 4 управления и с выходом 21 (22) системного интерфейса порта 2 (3) SpaceWire. Выход 101 ошибки кодировки символа блока 76 приема данных соединен с одноименным входом блока 78 управления и с выходом 21 (22) системного интерфейса порта 2 (3) SpaceWire. Выход 102 установления соединения блока 76 приема данных соединен с одноименным входом блока 78 управления и с выходом 21 (22) системного интерфейса порта 2 (3) SpaceWire и предназначен для передачи сигнала об обнаружении контрольной последовательности битов, принятой из коммуникационного интерфейса от другого устройства и инициирующей с ним соединение. Выход 105 разрешения приема данных блока 76 приема данных, соединенный с одноименным входом блока 77 управления потоком данных, предназначен для извещения о наличии достаточного свободного пространства в буфере приема данных.
Блок 77 управления потоком данных предназначен для реализации механизма кредитования, необходимого при обмене пакетными данными в дуплексном режиме между двумя устройствами через коммуникационные интерфейсы двунаправленного линка SpaceWire, соединяющего эти два устройства, с учетом ограниченного объема буферной памяти для приема данных, имеющейся у каждого устройства в блоке 77 приема данных. Выход 81 запроса на выдачу символа управления потоком блока 77, соединенный с одноименным входом блока 75 выдачи данных, предназначен для инициализации выдачи блоком 75 управляющего символа FCT управления потоком, подтверждающего наличие в блоке 76 приема данных свободного буферного пространства, необходимого для приема определенного числа символов данных. В описываемом устройстве величина кредита, предоставляемого при выдаче одного символа управления потоком, в соответствии со стандартом SpaceWire принято равным восьми. Выход 100 ошибки кредитования блока 77 управления потоком данных соединен с одноименным входом блока 4 управления и с выходом 21 (22) системного интерфейса порта 2 (3) SpaceWire. Блок 77 управления потоком данных тактируется с входа синхронизации, соединенного с входом 98 локальной синхронизации порта 2 (3) SpaceWire.
Блок 78 управления предназначен для отслеживания состояния устройства при поступлении из блока 76 приема данных сигналов об изменении его статуса и выработки управляющих сигналов под воздействием машины состояний и сигнала начальной установки с входа сброса, соединенного с входом 99 сброса порта 2(3) SpaceWire. Выход 103 разрешения передачи символа управления потоком блока 78 управления соединен с одноименным входом блока 75 выдачи данных и предназначен для извещения о том, что машина состояния блока 78 управления перешла в режим, разрешающий выдачу символов управления потоком. Вход 25 (26) управления состоянием порта 2 (3) SpaceWire является одноименным входом блока 78 управления. Первый 82, второй 83 и третий 84 выходы сброса блока 78 управления соединены с входами сброса соответственно блока 75 выдачи данных, блока 76 приема данных и блока 77 управления потоком данных и предназначены для их перевода в начальное состояние. Тактирование блока 78 управления осуществляется с входа синхронизации, соединенного с входом 98 локальной синхронизации порта 2 (3) SpaceWire.
В блоке 52 управления приемом блок 106 трансляции и буферизации данных (см. фиг. 4) предназначен для передачи символов данных из своего входного порта в каналы коммутационной матрицы 48 к блокам 53 управления передачей других выходных портов. Вход 111 принятых данных блока 106 трансляции и буферизации данных соединен с одноименными входами блока 107 управления входным интерфейсом и блока 108 селекции выходных портов и является входом Data_in блока 52 управления приемом. Вход 112 установки данных блока 106 трансляции и буферизации данных соединен с одноименными входами блока 107 управления входным интерфейсом и блока 108 селекции выходных портов и является входом Valid_in блока 52 управления приемом. Выход 113 готовности является выходом Reout блока 52 управления приемом. Входы Data_in и Valid_in и выход Re_out составляют первый (второй) вход-выход 27 (29) приема блока 52 управления приемом контроллеров 49 (50) первого (второго) порта SpaceWire и контроллера 51 порта FIFO. Выход 114 данных (Data_out), выход 115 установки данных (Valid_out) и вход 116 готовности (Re_in) блока 106 трансляции и буферизации данных соединены с вторым входом-выходом 54(56,58) приема блока 52 управления приемом. Выход 119 заголовка пакета блока 106 трансляции и буферизации данных соединен с одноименным входом блока 107 управления входным интерфейсом. Вход сброса блока 106 трансляции и буферизации данных является входом 31 сброса блока 52 управления приемом и соединен с одноименными входами блока 107 управления входным интерфейсом, блока 108 селекции выходных портов, блока 109 запросов выходных портов и блока НО управления коммутацией каналов. Вход локальной синхронизации блока 106 трансляции и буферизации данных является входом 32 локальной синхронизации блока 52 управления приемом и соединен с одноименными входами блока 107 управления входным интерфейсом, блока 108 селекции выходных портов, блока 109 запросов выходных портов и блока 110 управления коммутацией каналов.
Блок 107 управления входным интерфейсом предназначен для определения текущего и следующего состояния в соответствии со схемой, представленной на фиг. 7, и выдачи значения текущего и предыдущего состояния на все остальные блоки. Выход 120 текущего состояния блока 107 управления входным интерфейсом соединен с одноименными входами блока 106 трансляции и буферизации данных, блока 108 селекции выходных портов, блока 109 запросов выходных портов и блока 110 управления коммутацией каналов. Выход 125 ошибочного адреса пакета соединен с входом-выходом 33 состояния блока 52 управления приемом.
Блок 108 селекции выходных портов предназначен для формирования корректного набора выходных портов для выдачи принимаемого пакета данных в соответствии с информацией из таблицы маршрутизации. Выход 121 признака удаления блока 108 селекции выходных портов соединен с одноименным входом блока 107 управления входным интерфейсом. Выход 122 исходного набора портов блока 108 селекции выходных портов соединен с одноименным входом блока 109 запросов выходных портов. Выход адреса Rt_addr и выход установки Rt_valid блока 108 селекции выходных портов, вход маршрутной информации Rt_data и вход готовности Rt_ready блока 108 селекции выходных портов образуют вход-выход 34 адресации блока 52 управления приемом. Выход исходного набора портов Port_nums блока 108 селекции выходных портов соединен с входом-выходом 64 (65,66) селекции блока 52 управления приемом. Вход коррекции Term_p_reg блока 108 селекции выходных портов соединен с входом-выходом 33 состояния блока 52 управления приемом.
Блок 109 запросов выходных портов предназначен для формирования запросов для выходных портов в соответствии с текущим состоянием, получаемым от блока 107 управления входным интерфейсом, и номером фазы обработки, получаемым от блока 47 широковещания. Вход номера фазы Cur_phase блока 109 запросов выходных портов соединен с одноименным входом блока 107 управления входным интерфейсом и соединен с входом-выходом регулирования 68 (70,72) блока 52 управления приемом. Выход сигналов запроса Reqs и выход сигналов квитирования грантов Gnt_ack блока 109 запросов выходных портов образуют выход 117 запросов блока 52 управления приемом. Вход сигналов грантов Gnts блока 109 запросов выходных портов является входом 118 подтверждения блока 52 управления приемом. Выход 123 признака получения грантов блока 109 запросов выходных портов соединен с одноименным входом блока 110 управления коммутацией каналов. Выход 126 вектора выходных портов блока 109 запросов выходных портов соединен с входом-выходом режима 68 (70, 72) блока 52 управления приемом. Вход признаков отсутствия соединений Err_reg блока 109 запросов выходных портов соединен с одноименным входом блока 110 управления коммутацией каналов и соединен с входом-выходом 33 состояния блока 52 управления приемом.
Блок 110 управления коммутацией каналов предназначен для проключения каналов коммутационной матрицы от блоков 53 управления передачей выходных портов к данному блоку 52 управления приемом входного порта в соответствии с текущим состоянием, вектором набора портов eq_port_nums, полученным от блока 46 адаптивной групповой маршрутизации, и состоянием Err_regs регистра ошибок портов, полученным от блока 8 регистров режима/состояния. Выход 124 признака проключения канала блока 110 управления коммутацией каналов соединен с одноименным входом блока 107 управления входным интерфейсом и с входом-выходом регулирования 68 (70, 72) блока 52 управления приемом. Выход управление мультиплексорами back_id блока 110 управления коммутацией каналов соединен с вторым входом-выходом приема 54 (56, 58) блока 52 управления приемом.
В блоке 53 управления передачей блок 127 арбитража предназначен для определения по схеме с динамическими циклическими приоритетами номера входного порта, от которого будет принимать следующий пакет данных, в соответствии с поступившими от блоков 52 управления приемом этих портов запросами. Вход сигналов запросов Reqs блока 127 арбитража соединен с входом 62 запросов блока 53 управления передачей. Вход сигналов подтверждения грантов Ack_gnt блока 127 арбитража соединен с входом 62 запросов блока 53 управления передачей. Выход сигналов грантов Gnts блока 127 арбитража является выходом 63 запросов блока 53 управления передачей. Выход 129 проключения канала блока 127 арбитража соединен с одноименным входом блока 128 состояния. Выход управления коммутацией Forward_in блока 127 арбитража соединен с вторым входом-выходом 55 (57,59) передачи блока 53 управления передачей. Вход номера фазы Cur_phase блока 127 арбитража соединен с одноименным входом блока 128 состояния и соединен с входом регулирования 68 (70, 72) блока 53 управления передачей. Вход номера приоритетного порта блока 127 арбитража соединен с входом регулирования 68 (70, 72) блока 53 управления передачей. Вход сброса блока 127 арбитража является входом 31 сброса блока 53 управления приемом и соединен с одноименным входом блока 128 состояния. Вход локальной синхронизации блока 127 арбитража является входом 32 локальной синхронизации блока 53 управления передачей и соединен с одноименным входом блока 128 состояния.
Блок 128 состояния предназначен для определения текущего состояния выходного интерфейса порта в соответствии с схемой автомата состояний, представленной на фиг. 8. Вход данных Data, вход установки данных Valid и выход готовности Ready блока 127 состояния соединены с вторым входом-выходом 55(57,59) передачи блока 53 управления передачей. Выход 130 текущего состояния блока 127 арбитража соединен с одноименным входом блока 127 арбитража. Выход данных Data_out, выход установки данных Valid_out и вход готовности Ready блока 128 состояния составляют первый вход-выход 28 (30) передачи блока 53 управления передачей контроллера первого 49 (второго 50) порта SpaceWire и контроллера 51 порта FIFO.
Устройство коммуникационных интерфейсов SpaceWire работает следующим образом. В соответствии со стандартом SpaceWire устройство обеспечивает формирование, передачу и коммутацию пакетов данных. Устройство, содержащее два порта 2 и 3 SpaceWire, осуществляет коммутацию пакетов между этими портами, а также между ними и селектором 10 пакетов, обеспечивающим выделение RMAP пакетов для формирователя 11 протокола RMAP. Протокол RMAP используется удаленной хост-системой (например, администратором сети) для конфигурации сети SpaceWire, то есть для управления коммутаторами, данными устройствами коммуникационных интерфейсов SpaceWire и терминальными узлами, выполняющими, например, функции контроллеров датчика. Посредством его выполняется конфигурация коммутаторов и заявляемых устройств путем задания их рабочих параметров и настройки их таблиц маршрутизации. Протокол RMAP может применяться также для сбора информации с терминальных узлов, подключенных к устройствам коммуникационных интерфейсов SpaceWire. Все операции записи и чтения, определенные в протоколе RMAP разработаны так, что отправитель не ожидает приема подтверждающих пакетов, и поэтому пакеты, содержащие, команды записи и чтения, могут быть высланы в любое время.
Формирователь 11 протоколом RMAP обеспечивает обработку RMAP пакетов, адресованных данному устройству, и отправку ответных RMAP пакетов. Устройство обеспечивает взаимодействие с удаленной хост-системой посредством выполнения команд записи и чтения протокола RMAP, которые формируются, например, администратором сети, и выполняются на данном устройстве. Устройство поддерживает при этом обращение извне к своей конфигурационной памяти, содержащей регистры настройки и таблицу маршрутизации, с помощью команд протокола RMAP, которые обрабатываются формирователем 11 протокола RMAP. Кроме того, с помощью команд записи и чтения протокола RMAP удаленная хост-система имеет возможность обращаться к памяти терминального узла, подключенного к данному устройству через интерфейс шины АНВ.
Порты 2 и 3 SpaceWire обеспечивают подключение данного устройства к сети через линки SpaceWire. Блок 1 коммутации пакетов данных, включающий в себя (см. фиг. 2) два контроллера 49 и 50 порта SpaceWire, контроллер 51 порта FIFO (к нему подключается селектор 10 пакетов), обеспечивает коммутацию пакетов в соответствии со стандартом SpaceWire с помощью неблокирующей коммутационной матрицы 48. Пакеты, поступающие из сети SpaceWire и адресованные данному устройству или терминальному узлу, подключенному к интерфейсу 18 шины АНВ, устройства, передаются в контроллер 51 порта и оттуда поступают через селектор 10 пакетов в формирователь 11 протокола RMAP. Пакеты, адресованные другим абонентам сети, передаются далее в сеть через порты 2 и/или 3 SpaceWire. Пакеты от формирователя 11 протокола RMAP через селектор 10 пакетов и контроллер 51 порта FIFO поступают в коммутационную матрицу 48 и передаются в сеть через порты 2 и 3 SpaceWire. Блок 1 коммутации пакетов данных поддерживает режим широковещания и адаптивной групповой маршрутизации.
Интерфейс 18 шины АНВ используется контроллером 12 интерфейса АНВ master для выполнения RMAP команд с логическим адресом, отличным от 0. Команды с логическим адресом "0" являются обращениями в пространство конфигурации самого устройства. При поступлении в формирователь 11 корректной RMAP команды контроллер 12 интерфейса АНВ master выполняет последовательность транзакций на шине АНВ, соответствующих этой команде.
В соответствии со стандартом SpaceWire при коммутации пакетов данных устройство поддерживает путевую, логическую и регионально-логическую адресацию. Путевая адресация реализуется без использования таблицы маршрутизации. Допустимые значения путевого адреса "0", "1", "2". Пакеты с адресами "3" - "31" интерпретируются как пакеты с некорректным адресом и стираются. Логическая и регионально-логическая адресация реализуются с использованием регистров таблицы маршрутизации из блока 9 регистров маршрутизации. Таблица маршрутизации включает в себя 4 строки. Для каждой из строк задается адрес (адреса строк могут идти не подряд) и значение строки. Адреса строк таблицы маршрутизации задаются в регистре ADDRESS 1 адресного пространства таблицы маршрутизации. В данной реализации таблица маршрутизации реализована на базе пяти регистров (табл. 4).
Регистр ADDRESS 1 содержит значения адресов (см. табл. 5), которым соответствуют строки таблицы маршрутизации, расположенные в регистрах STR1_1 - STR1_4. Он реализован с доступом по чтению и по записи.
После выхода устройства из состояния сброса значение этого регистра - "'0". В поля Addr1 - Addr4 могут быть записаны любые значения в интервале от "32" до "255". Значения могут идти в любом порядке, значения не должны повторяться. Четыре регистра строк маршрутизации 1…4 (STR1_1 - STR1_4) содержат 32-рзрядное значения строк маршрутизации, соответствующих адресам Addr1, …, Addr4 из регистра ADDRESS1.
Четыре регистра строк маршрутизации 1…4 (STR1_1 - STR1_4) содержат 32-рзрядное значения строк маршрутизации, соответствующих адресам Addr1, …, Addr4 из регистра ADDRESS 1. Формат строки маршрутизации для каждого из регистров STR1_1 - STR1_4 приведен в табл. 6. Они реализованы с доступом по чтению и по записи. После выхода устройства из состояния сброса значение каждого из этих регистров равно "0".
Управление широковещанием осуществляется с помощью регистра идентификации сетевых линков - ID_NET, находящемся в блоке 8 регистров режима/состояния. Этот двухразрядный регистр идентификации сетевых линков реализован с доступом по чтению и записи. Если к i-му порту SpaceWire подключен терминальный узел (процессор обработки данных), то разряд i этого регистра необходимо устанавливать в "0", если к этому порту подключен порт другого устройства или другого сетевого узла, например, коммутатора, то разряд i требуется устанавливать в "1". Если в i разряде этого регистра установлен "0", то для соответствующего порта SpaceWire i разрешено широковещание. Если в разряде i этого регистра установлена "1", то для i-го порта SpaceWire запрещено широковещание, т.е. пакеты, адресованные более чем одному линку (группе линков) в данный порт передаваться не будут. После выхода устройства из состояния сброса значение всех разрядов этого регистра равно "0".
Управление адаптивной групповой маршрутизации реализуется с использованием регистров адаптивной групповой маршрутизации (ADG_ROUT) из блока 8 регистров режима/состояния. В блоке 8 содержится два регистра адаптивной групповой маршрутизации - по одному для каждого порта SpaceWire. Регистр адаптивной групповой маршрутизации доступен по чтению и записи. Регистр предназначен для хранения дополнительной информации об альтернативных линках для соответствующего порта SpaceWire. Устройство осуществляет групповую адаптивную маршрутизацию, управляемую от таблицы маршрутизации при использовании этой дополнительной информации в соответствии со стандартом SpaceWire. Формат регистра ADG_ROUT показан в Таблица. 7.
Каждый регистр ADG_ROUT содержит суперпозицию унитарных кодов номеров портов SpaceWire, альтернативных данному порту, указанному в таблице маршрутизации. Групповая адаптивная маршрутизация позволяет направлять пакет по одному из ряда альтернативных каналов, соединяющих смежные коммутаторы и/или терминальные узлы. Групповая адаптивная маршрутизация помогает обеспечивать поддержку для совместного использования пропускной способности линков и/или отказоустойчивости в сети SpaceWire. Начальное значение всех разрядов регистра адаптивной групповой маршрутизации после выхода устройства из состояния сброса соответствует тому, что каждый порт образует отдельную группу.
Регистр арбитража - SPEC_ARB доступен хост-системе по чтению и записи. В данном регистре хранятся параметры для арбитража портов в устройстве. Для определения порта с наивысшим приоритетом по умолчанию используется схема с динамическими циклическими приоритетами. Для сетевых конфигураций, в которых по некоторым из портов никогда не приходят пакеты (вследствие того, что этот порт не подключен, либо в силу специфики решаемой задачи) используется специальная схема приоритетов, чтобы такой порт никогда не получал наивысший приоритет. Это позволяет лучшим образом сбалансировать схему смены приоритетов. В противном случае система приоритетов окажется несбалансированной в том плане, что порт, следующий непосредственно за портом, по которому не поступают пакеты, будет самым приоритетным фактически дважды.
Регистр SPEC_ARB позволяет указать номера портов, которые необходимо пропустить в очередности смены приоритетов (порты, которые никогда не получат наивысшего приоритета). Разряды регистра SPEC_ARB соответствуют портам устройства согласно их порядковым номерам (разряд 0 соответствует контроллеру 49 первого порта SpaceWire, разряд 1 - контроллеру 50 второго порта SpaceWire, разряд 2 - контроллеру 51 порта FIFO). Если соответствующий разряд установить в "1", то порт будет пропущен. Начальное значение всех разрядов регистра после сброса устройства - "0".
За обработку принятого RMAP пакета и выполнение команд протокола RMAP отвечает формирователь 11 протокола RMAP. С использованием команд протокола RMAP осуществляется организация чтения/записи в конфигурационную память устройства. Список команд и ответных пакетов RMAP приведен в табл. 8.
По команде записи данные принятые в пакете RMAP будут записаны по заданному в ней адресу либо в область конфигурации устройства, либо в область памяти внешнего терминального узла через шину АНВ. При команде чтения пакет RMAP содержит адрес и указание количества байт, которые нужно прочитать либо из области конфигурации устройства, либо из области памяти через интерфейс АНВ.
Ответный пакет на команду чтения содержит требуемые данные. В случае ошибке при выполнении команд код ошибки содержится в заголовке ответного пакета. Возможно отсутствие реакции на принятый пакет, если в составе пакета формирователь 11 не обнаружил признаков, по которым пакет мог бы быть идентифицирован как пакет RMAP. Такая ситуация возможна, например, когда CRC заголовка не совпадает с ожидаемым значением (недействительный заголовок RMAP).
Форматы пакетов RMAP, выполняемые формирователем 11, приводятся в таблицах 9-16.
В табл. 17 показан формат основных полей принимаемого пакета RMAP, с которыми работает формирователь 11 RMAP. В формирователь 11 протокола RMAP поступают пакеты с путевым адресом "0" или с логическими адресами, для которых в регистрах маршрутизации STR1_I нулевой разряд установлен в "1".
Если тип пакета, поступившего в формирователь 11, не определяется как RMAP, то пакет стирается. Если тип пакета определяется как RMAP, но это не RMAP команда, a RMAP ответ, то пакет стирается. Формирователь 11 протокола RMAP исполняет команды RMAP, приходящие в пакетах SpaceWire. Выполняется проверка корректности заголовка пакета, если пакет содержит поле данных, то проверяется корректность поля данных.
При поступлении корректного пакета RMAP команды, если пакет имеет логический адрес "0", то он интерпретируется как обращение в пространство конфигурации устройства. Если логический адрес отличен от "0", то команда преобразуется в одну или несколько транзакций на шине АНВ через контроллер 12 интерфейса АНВ Master для обращения к памяти обслуживаемого терминального узла системы.
Если RMAP команда является командой чтения, то из прочитанных в результате выполнения команды данных формирователь 11 протокола RMAP образует ответный пакет и через блок 1 коммутации пакетов данных отправляет его в порт 2(3) SpaceWire. Если RMAP команда является командой записи с подтверждением, то после завершения выполнения команды формирователь 11 так же формирует ответный пакет и отправляет его в сеть SpaceWire.
При обращении к памяти содержимое поля «Адрес записи/чтения», расположенного в заголовке пакета RMAP, используется в качестве адреса ячейки памяти. Этот адрес при пакетной пересылке блока данных в память (BURST) увеличивается на "4" для адресации следующего слова. Возможно выполнение команд RMAP без инкремента адреса. Длина пакета в команде RMAP согласно описанию протокола задается в байтах, поэтому количество слов, передаваемых в память, будет меньше примерно в 4 раза.
Если в RMAP контроллер поступает пакет с ошибкой CRC заголовка, то он отбрасывается. Если в RMAP контроллер поступает пакет с корректным заголовком, но с некорректным CRC поля данных, некорректной длиной поля данных или заканчивающийся символом ошибочного конца пакета ЕЕР, то формирователь 11 протокола RMAP автоматически формирует ответный пакет с указанием кода ошибки.
Логический адрес получателя (DLA) - это адрес, по которому формирователь 11 протокола RMAP определяет, что пакет адресован одному из его компонентов. Формирователь 11 считает, что пакет адресован ему и начинает разбор пакета, если в этом поле DLA содержится адрес 0×00 (rmap_configuration_addr, RCA) или отличный от нуля адрес (rmap_logical_addr, RLA). Адрес RCA считается адресом конфигурации, по которому данные направляются в/из области регистров конфигурации устройства. Адрес RLA, считающийся адресом для обращения к памяти, когда данные направляются через интерфейс шины АНВ в/из памяти внешнего узла. Адрес RLA по умолчанию задается равным 0×FE, и может быть заменен новым значением путем обращения к этому регистру в области регистров конфигурации командой RMAP. Если DLA содержит значение, отличное от упомянутых адресов, то весь пакет отбрасывается.
Если DLA содержит допустимый адрес, то анализируется байт идентификатора протокола. Если идентификатор соответствует коду протокола RMAP, то происходит обработка данных в соответствии с выбранным протоколом. Если идентификатор не соответствует поддерживаемому протоколу (RMAP), то весь данный пакет SpaceWire отбрасывается. После анализа идентификатора формирователь 11 читает заголовок пакета RMAP и проверяет его на корректность контрольной суммы CRC. Каждому полю RMAP выделяется регистр соответствующей разрядности (область регистров RMAP_REGS). Если контрольная сумма заголовка корректна, то проверяется корректность данных в полях заголовка на предмет возможности выполнения команды RMAP в формирователе 11 протокола RMAP. Если все данные корректны, то содержимое регистров RMAP_REGS, содержащие всю информацию о команде RMAP, используются формирователем 11 для выполнения команды.
Устройство поддерживает путевую адресацию согласно описанию протокола RMAP (см. табл. 18). В формирователь 11 пакет поступает без байтов путевого адреса, эти байты удаляются контроллером порта 2 (3) SpaceWire при доставке пакета в селектор 10 пакетов. Поэтому CRC заголовка считается только по полям пакета от байта DLA до байта Длина данных (LS) как командного, так и ответного пакетов RMAP.
Двухбитовое значение «Длины путевого адреса отправителя» (SPAL) в поле «Тип пакета» содержит информацию о формате поля «Путевого адреса отправителя» (SPA). Двухбитовое значение SPAL трактуется следующим образом:
- если SPAL=00b, то байты SPA отсутствуют в ответной команде RMAP. Это эквивалентно логической адресации при работе с командами RMAP. Путевая адресация не используется и формирователь 11 начнет ответный пакет байтом «Логического адреса отправителя» (SLA).
- если значение SPAL не равно 00b, то это означает использование путевой адресации в ответной команде RMAP. Это так же указывает на то, что в команде RMAP отведено 4 байта (SPAL=01b), 8 байт (SPAL=10b) или 12 байт (SPAL=11b) для размещения путевого адреса от формирователя 11 к отправителю.
Размещение путевого адреса в полях SPA (при их наличии) подчиняется следующим требованиям. Все ведущие нулевые байты поля SPA игнорируются формирователем 11 (они должны присутствовать в командном пакете RMAP). Исключение составляет SPA, содержащий все байты со значением 0×00. Это трактуется как путевой адрес, содержащий 1 байт со значением 0×00. Этот нулевой байт будет выслан первым перед передачей логического адреса источника в ответном пакете. Все остальные байты, начиная с первого не равного 0×00, до последнего байта в SPA трактуются как адрес SPA. Они будут переданы в линк SpaceWire перед ответным пакетом RMAP в порядке их следования в поле SPA (см. табл. 19).
Формирователь 11 протокола RMAP высылает ответный пакет с информацией о результате выполнения команды, если в команде RMAP был установлен бит подтверждения АСК в поле типа команды. Ответный пакет высылается после завершения выполнения передачи данных в память или при обнаружении ошибки в принятом пакете. Коды ошибок, возвращаемых в ответном пакете, задаются в поле «Статус»и приведены в табл. 20.
Формирователь 11 протокола RMAP в данном устройстве выступает в роли адресата (получателя) команды RMAP, которую посылает удаленное устройство - отправитель (рис. 9а,б), получив запрос на выполнение команды RMAP от своего внешнего узла (например, администратора сети). Формирователь 11 протокола RMAP, получив команду и проверив ее на корректность, выставляет запрос памяти (Запрос записи данных - рис. 9а / Запрос чтения данных - рис. 9б). Получив доступ к памяти (Авторизация записи данных, Ответ чтения данных) от контроллера 12 интерфейса АНВ Master, формирователь 11 выполняет запись данных в память своего внешнего узла или передачу данных из его памяти в линк SpaceWire. После выполнения транзакции записи, формирователь 11 отсылает удаленному устройству - отправителю ответный пакет с информацией об успешном выполнении команды RMAP.
24
Пакеты данных, которые принимает и передает формирователь 11 протокола RMAP, могут быть длиной 0…2-1. Выполнение предварительной буферизации с проверкой CRC данных возможно при длине области данных пакета RMAP, не превышающего числа 28 байт. Если в заголовке указано большее значение, чем 28, а бит «Проверить данные» установлен, пакет отбрасывается, а отправителю будет отправлен ответный пакет с кодом ошибки 9 (в табл. 20 - буфер не вмещает заявленное количество байт для проверки CRC).
Независимо от того, производится или нет предварительная буферизация данных, передача байт принятого (или передаваемого) пакета в память происходит транзакциями, размер которых может быть задан в регистре MAX_TRAN в блоке 8 регистров режима/состояния. Число, записанное в этот регистр, задает максимальное количество 32-разрядных слов, которое будет передаваться в одной транзакции в память. Таким образом, весь пакет принятых или передаваемых данных передается заданными порциями. Последняя транзакция будет содержать MAX_TRAN или меньшее количество слов.
Для некоторых применений RMAP может потребоваться запись/чтение данных без увеличения адреса при обращении к памяти, т.е. работы с группой данных по фиксированному адресу. Протокол RMAP позволяет это делать с использованием настройки бита «Инкремент» в поле «Тип пакета» (см. табл. 10, 12, 14, 16). Данные посредством команды RMAP можно передать по фиксированному адресу, при этом формирователь 11 может использовать разные режимы передачи данных, выбор которых можно произвести в регистре настройки RMAP:
Доступ к программно-доступным регистрам конфигурационного пространства устройства может осуществляться из удаленного устройства сети SpaceWire с использованием RMAP команд записи и чтения строго 4 байт данных. Попытка использования для доступа к программно-доступным регистрам RMAP команд записи и чтения длиной отличной от 4 байт данных возвратит ошибку с кодом 10 (см. табл. 20). В поле логического адреса этих команд должно быть установлено значение "0". Если администратор сети непосредственно подключен к интерфейсу SpaceWire данного (конфигурируемого) устройства, то в этом случае длина путевого адреса в RMAP пакетах, адресованных данному устройству должна быть нулевой (см. фиг. 10а). Если администратор сети подключен к интерфейсу SpaceWire данного (конфигурируемого) устройства через один или цепочку коммутаторов, то длина путевого адреса в RMAP пакетах, адресованных данному устройству должна быть отличной от "0". При формировании адреса может использоваться путевая и регионально-логическая адресация (см. фиг. 10б, в). Адрес должен быть сформирован таким образом, чтобы при прохождении ответного RMAP пакета от конфигурируемого устройства к администратору данный адрес был отделен от пакета полностью. Если используется путевая адресация, то при прохождении каждого коммутатора происходит отделение первого байта заголовка. Если используется регионально-логическая адресация, то первый байт заголовка - логический адрес "57" (см. фиг. 10в) может отделяться или не отделяться в зависимости от настроек таблицы маршрутизации коммутатора.
Порт 2(3) SpaceWire изменяет свои режимы работы в соответствии с диаграммой состояния (см. фиг. 6), реализуемой блоком 78 управления. Изменение состояний первого и второго портов SpaceWire осуществляется под оперативным контролем соответствующих регистров статуса - STATUS_1 и STATUS_2, находящихся в блоке 8 регистров режима/статуса. Он обеспечивает оперативную фиксацию фаз работы и текущего состояния порта 2 (3) SpaceWire. Каждому порту SpaceWire соответствуют следующие регистры.
Регистр STATUS доступен хост-системе (например, администратору сети) по чтению и записи с использованием команд протокола RMAP. Запись в каждый отдельный разряд регистра выполняется по сигналам с выхода 21 (22) порта 2 (3) SpaceWire. Сброс ряда разрядов регистра может осуществляться хост-системой путем записи в них "1". Формат регистра состояния приведен в табл. 21.
Регистры режима работы - MODE_CR1 и MODE_CR2 (для первого и второго портов SpaceWire соответственно) доступны хост-системе по чтению и записи. После выхода устройства из состояния сброса из данного регистра будет прочитываться значение 0 до тех пор, пока администратор сети не запишет в него какое-либо значение. Формат регистра приведен в табл. 22.
Блок 78 управления реализует логику машины состояний, выполняющей функцию автомата, переходящего под воздействием входных сигналов в различные состояния и обеспечивает выработку управляющих сигналов, с помощью которых машина состояний переводит блок 75 выдачи данных, блок 76 приема данных, и блок 77 управления потоком данных в исходные состояния, позволяя обеспечить корректную работу порта SpaceWire в целом. Формирование тайм-аутов необходимо для правильного функционирования машины состояний при установлении и поддержании соединения с удаленной стороной через коммуникационный канал SpaceWire. Из показанной на фиг. 6 примерной реализации графа машины состояний видна необходимость в реализации двух тайм-аутов Т1 и Т2. В соответствии с требованиями стандарта SpaceWire реализованы следующие величины тайм-аутов: Т1=6,4 мкс, Т2=12,8 мкс.
Регистры коэффициента скорости передачи - TX_SPEED1 и TX_SPEED2 доступны хост-системе по чтению и по записи. Данные регистры предназначены для задания коэффициента скорости передачи, который поступает на блок 4 (5) управления скоростью, отвечающий за формирование синхросигналов передачи блоком 6 (7) с требуемой частотой для первого и второго портов SpaceWire соответственно. Формат регистра показан в табл. 23
Десятиразрядный регистр коэффициента скорости приема - RX_SPEED доступен хост-системе по чтению и по записи. Значению 0×3 FF этого регистра соответствует значение 800 Мбит/с в линке SpaceWire. Значению 0×00 этого регистра соответствует значение 0 Мбит/с в линке. Остальные значения скорости в линке SpaceWire отражает прямая зависимость между значением регистра и реальной скорости в линке. Значение регистра RX_SPEED обновляется каждые 2048 тактов локальной частоты устройства (100 МГц) в соответствии с оценкой текущей скорости приема. При изменении скорости во время этого периода в 2048 тактов состояние регистра будет соответствовать некоторому смежному значению скорости между скоростью, на которой шла передача данных в линке SpaceWire и на которую сделано переключение в линке.
Регистр тайм-аутов данных - SWITCH_CONN_TOUTS доступен хост-системе по чтению и записи. В данном регистре хранятся значения таймаутов данных. В поле G_DAT_TOUT задается значение глобального периода подсчета таймаутов данных. Если значение данного поля равно "0", то режим подсчета всех таймаутов данных отключен. Период подсчета задается в мкс в основном режиме (поле T_MODE=1) и в тактах локальной частоты устройства в отладочном режиме. Если используется основной режим подсчета, то в поле MAIN_KOEFF10 другого регистра SWITCH_CONN_TOUTS2 необходимо задать значение коэффициента локальной частоты устройства. Формат регистра SWITCH_CONN_TOUTS показан в Таблице 24. Начальное значение всех разрядов регистра после сброса устройства - "0".
В поле L_CONN_TOUT задается значение тайм-аута, по истечении которого считается, что при установке соединения в режиме AutoStart переход на заданную базовую скорость прошел успешно и можно передавать данные по этому каналу. Данный тайм-аут подсчитывается в периодах, заданных в поле G_DAT_TOUT.
В поле L_SYMB_TOUT задается значение таймаута ожидания символа данных (ожидания приема или отправки очередного символа пакета). Данный тайм-аут подсчитывается в периодах, заданных в поле G_DAT_TOUT. Разрешение механизма тайм-аутов при приеме символа данных осуществляется установкой в "1" поля R_SYMB_F регистра SWITCH_CONN_TOUTS2. Разрешение механизма таймаутов при приеме символа данных осуществляется установкой в "1" поля T_SYMB_F регистра SWITCH_CONN_TOUTS2.
Регистр тайм-аутов SWITCH_CONN_TOUTS2 доступен хост-системе по чтению и записи. Формат регистра SWITCH_CONN_TOUTS2 показан в табл. 25. Начальное значение всех разрядов регистра после выхода устройства из состояния сброса - "0". В поле MAIN_KOEFF10 указывается значение коэффициента локальной частоты устройства. Коэффициент локальной частоты MAIN_KOEFF10=LCLK(МГц)/10. Например, если локальная частота 100 Мгц, то в этом поле необходимо указать значение 10.
Регистр флагов тайм-аутов - SWITCH_WAIT_FLS доступен хост-системе по чтению и записи. В данном регистре хранятся флаги, указывающие, что истекли тайм-ауты ожидания приема или передачи символов данных. Формат регистра SWITCH_WAIT_FLS показан в табл. 26.
Начальное значение всех разрядов регистра после выхода устройства из состояния сброса - "0". В поле REC_FLS записываются флаги от блоков 52 управления приемом контроллеров первого и второго портов 49 и 52 SpaceWire. Если истек тайм-аут ожидания приема очередного символа пакета, то соответствующий разряд устанавливается в "1" (разряд 0 - от контроллера 49 первого порта, разряд 1 - от контроллера 50 второго порта). В поле TRANS_FLS записываются флаги от блоков 53 управления передачей контроллеров первого и второго портов 49 и 52 SpaceWire. Если истек тайм-аут ожидания отправки очередного символа пакета, то соответствующий разряд устанавливается в "1" (разряд 2 - от контроллера 49 первого порта, разряд 3 - от контроллера 50 второго порта). Для сброса i разряда нужно записать значение "1" в i разряд данного регистра.
В блоке 76 приема данных порта 2 (3) SpaceWire в принятом потоке битов декодером SpaceWire распознаются символы данных, управляющие символы и коды в соответствии с кодированием, показанном в табл. 1, и из них выделяются информационные и канальные символы, поскольку символы, передаваемые через линк SpaceWire, подразделяются на канальные и информационные символы. К информационным символам относятся символ данных (Nchar) и символы конца пакета (ЕОР, ЕЕР). Канальные символы (FCT, ESC) вместе с управляющим кодом NULL предназначены для управления состоянием коммуникационного канала SpaceWire и в блок 52 управления приемом своего порта 50 (49) SpaceWire не передаются. NULL код предназначен для сохранения активности коммуникационного канала и постоянно передается, если линк не занят передачей других символов. Об их приеме или прекращении приема информируется блок 77 управления для воздействия на машину состояний. При получении FCT символа блок 76 приема данных информирует об этом блок 77 управления потоком данных (который должен увеличить на восемь свой счетчик, определяющий кредит передачи). Сигналы о принятии всех управляющих символов (FCT) передаются также к машине состояний в блок 78 управления с выхода 79 подтверждения приема символа управления потоком. Для управления механизмом кредитования также используется сигнал разрешения приема данных на выходе 31 блока 76 приема данных, извещающий блок 77 управления потоком данных о наличии восьми свободных ячеек в буферном пространстве блока 76 приема данных.
Блок 76 приема данных может находиться в одном из следующих состояний:
- Сброс. Блок 76 приема данных ничего не делает.
- Запуск. Блок 76 приема данных запущен и ожидает приема первого бита.
- Получен бит. Блок 76 приема данных получил первый бит. Механизм обнаружения рассоединения включен. Блок 76 приема данных может принимать только NULL коды.
- Получен NULL код. Блок 76 приема данных получил NULL код и может получать NULL код, FCT символы и информационные символы. Включен механизм обнаружения ошибок рассоединения и кодирования (в том числе ошибки четности и расширения).
Принятые информационные символы Nchar буферизируются в блоке 76 приема данных (см. фиг 5), из которого через первый 27 (второй 29) вход-выход считываются в блок 1 коммутации пакетов данных под управлением блока 52 управления приемом соответствующего контроллера порта 49 (50) SpaceWire. Выдача данных из буфера блока 76 приема данных с выхода 96 обеспечивается по принципу «первым принят, первым считан» в сопровождении сигнала готовности данных на выходе 97 готовности данных для приема и при наличии установленного сигнала чтения на входе 95 чтения данных блока 76 приема данных. При этом обеспечивается побайтное считывание принимаемых пакетов данных, разделенных управляющими символами конца пакета.
Кодер SpaceWire в блоке 75 выдачи данных в соответствии с правилами DS-кодирования стандарта SpaceWire осуществляет формирование сигналов стробирования S, сопровождающих сигналы данных D. Выдача битовых потоков сигналов данных D по линии 90 и сигналов стробирования S по линии 91 в коммуникационный канал (см. фиг. 3) осуществляется блоком 75 выдачи данных на любой скорости, задаваемой частотой синхронизации выдачи данных на входе 87 порта 2 (3) SpaceWire.
Блок 75 выдачи данных получает пакеты данных от блока 53 управления передачей своего контроллера 49(50) порта SpaceWire в виде последовательности 8-разрядных данных, заканчивающейся признаком конца пакета. Каждый байт данных сопровождается нулевым управляющим флагом в соответствии с табл. 2. Восемь битов данных перед выдачей упаковываются в блоке 75 выдачи данных в отдельный 10-битовый символ данных Nchar. Единичный управляющий флаг служит признаком конца пакета и означает необходимость выдачи символа конца пакета (ЕОР). Когда блок 75 выдачи данных готов передать очередной информационный символ, он выставляет блоку 53 сигнал готовности на выходе 92 (см. фиг. 3). По установленному сигналу готовности блок 53 выставляет восемь битов данных вместе с управляющим флагом на входе 94 данных для выдачи и выдает сигнал записи на вход 93 системного интерфейса устройства. Блок 75 выдачи данных, получив информационный символ, снимает свой сигнал готовности на выходе 92. Если для передачи нет ни информационных символов, ни FCT символов, блок 75 выдачи данных посылает в канал NULL коды. Блок 75 выдачи данных (стороны А) передает информационные символы только в том случае, если на стороне Б в буфере блока 76 приема данных имеется свободное место. Наличие свободного места определяется посылкой со стороны Б символа FCT управления потоком, показывающего, что в буфере 52 его блока 2 приема данных есть место для восьми информационных символов.
Блок 75 выдачи данных на стороне А также отвечает за посылку FCT символов, когда буфер в блоке 76 приема данных свободен для приема восьми информационных символов. При этом блок 76 приема данных (стороны А) формирует сигнал разрешения приема данных на выходе 105, только когда в его буфере приема есть место для восьми информационных символов (не зарезервированное для приема переданными до этого FCT символами). Тогда блок 77 управления потоком данных формирует запрос на посылку FCT символа на выходе 81. Блок 75 выдачи данных может передавать FCT символы, только если он находится в состоянии Соединение (Передача FCTs/NULLs) или Рабочий режим (Передача FCTs/Nchars/NULLs).
Блок 75 выдачи данных может находиться в одном из четырех состояний (см. фиг. 6):
- Сброс. Блок 75 выдачи данных ничего не делает.
- Передача NULL кодов. Блок 75 выдачи данных посылает только NULL коды. Он не готов передавать информационные символы и не передает FCT символы.
- Передача FCT символов/NULL кодов. Блок 75 выдачи данных посылает FCT символы или NULL коды и не готов передавать информационные символы.
- Передача FCT символов/Nchars/NULL кодов. Обычный режим работы блока 75 выдачи данных. Он посылает FCT символы, NULL коды и информационные символы (Nchars).
После сброса или ошибки в канале устройство находится в состоянии «Сброс», при этом сигналы данных и стробирования устанавливаются в "0". После перехода в состояние Запуск блок 75 выдачи данных начинает передавать NULL коды. При выдаче первого NULL кода вначале должен быть передан бит контроля символа. Значение этого бита должно равняться нулю. Поэтому сначала изменится состояние сигнала на выходе 91 стробирования блока 75 выдачи данных.
Если выдаваемый информационный символ содержит управляющий флаг, равный единице, то это означает признак конца пакета. Признак конца пакета свидетельствует о том, что предыдущий выданный байт данных был последним в пакете. При этом блок 75 выдачи данных формирует и выдает в канал код управляющего символа ЕОР.
По умолчанию при инициализации в устройстве включен режим автоматической установки соединения на скорости 10 Мбит/с.Соединение будет автоматически установлено при разрешенной автоматической установке соединения во втором, удаленном устройстве. Для настройки установки соединения в устройстве используются регистры MODE_CR1 и MODE_CR2 (см. табл. 22), расположенные в блоке 8 регистров режима/ состояния по адресам 0×448 и 0×44С для первого (2) и второго (3) портов SpaceWire соответственно. Установка в "1" нулевого бита LinkDisabled регистра MODE_CR запрещает установку соединения. Установка в "1" седьмого бита AUTO_SPEED регистра MODE_CR разрешает автоматическую установку соединения. При установленном первом бите AutoStart в регистре MODE_CR устройство будет находиться в состоянии Ready до получения NULL-кода через линк SpaceWire от второго устройства. При установленном втором бите LinkStart в регистре MODE_CR устройство перейдет в состояние «Запуск» и начнет отправлять NULL-коды в линк. Значения этих битов по умолчанию AutoStart=0, LinkStart=1. Для установления соединения необходимо чтобы одно из устройств находилось в состоянии LinkStart, а другое в AutoStart или LinkStart. Соединение устанавливается на скорости 10 Мбит/с, далее происходит переход на базовую скорость передачи.
Для настройки скорости передачи в устройстве используются два регистра TX_SPEED1 и TX_SPEED2 (см. табл. 23), расположенные в блоке 8 регистров режима/ состояния по адресам 0×450 и 0×454 для первого (2) и второго (3) портов SpaceWire соответственно. Соединение устанавливается на скорости 10 Мбит/с, далее происходит переход на базовую скорость передачи. Значение коэффициента скорости передачи задается в регистре TX_SPEED в разрядах 0..7 (TX_SPEED.SEL). Значение коэффициента скорости передачи, необходимое для настройки желаемой скорости, зависит от используемой схемы PLL в блоке 6(7) формирования синхросигналов передачи.
Таким образом, введение второго порта SpaceWire в данное устройство делает возможным несколько вариантов системного применения такого двухпортового устройства коммуникационных интерфейсов SpaceWire. При проектировании сетевых структур наличие двух портов SpaceWire в устройстве позволяет обеспечивать с наименьшими затратами достижения двух целей: либо повышение надежности каналов передачи данных, либо повышение пропускной способности при передаче больших потоков данных от высокоскоростных датчиков, либо и то, и другое. На фиг. 11а приведен простой пример структуры, когда линки SpaceWire связывают два порта устройства непосредственно с процессором обработки данных (например, MULTIFORCE MC24RT фирмы ЭЛВИИС), имеющим встроенные порты SpaceWire. В терминальном узле, выполняющем функции контроллера датчика, данные, формируемые датчиком, накапливаются в памяти терминального узла. По запросам процессора данные считываются из памяти терминального узла через интерфейс шины АНВ в устройство, из которого в виде пакетов RMAP по линкам SpaceWire передаются в процессор обработки данных. На фиг. 11б приведен пример структуры, в которой сеть SpaceWire на основе коммутаторов и концентраторов обеспечивает как надежное подключение группы устройств к процессору обработки данных, так и высокую суммарную пропускную способность для передачи по линкам SpaceWire пакетов с данными от высокоскоростных датчиков. Наиболее эффективно возможности устройства используются при формировании каскадных структур. На фиг. 12 показана группа устройств, образующих цепочку (daisy-chain), в которой два порта SpaceWire каждого устройства подключены к соседним устройствам в цепочке. Крайние устройства в цепочке могут подключаться к портам коммутатора, либо напрямую к процессору обработки данных.
С учетом того факта, что для управления работой датчика достаточно контроллера с автоматом управления на жесткой логике, использование в этом случае двухпортового устройства коммуникационных интерфейсов SpaceWire является эффективным вариантом, оправданным как с технической, так и с экономической точки зрения, а для бортовых комплексов является наиболее целесообразным.
Техническим результатом данного решения является расширение области применения устройства коммуникационных интерфейсов SpaceWire благодаря расширению функциональных возможностей устройства: обеспечивается возможность построения различных сетевых конфигураций путем последовательного соединения двухпортовых устройств коммуникационных интерфейсов SpaceWire между собой. При этом достигается способность реализации передачи данных от произвольного множества датчиков в один порт SpaceWire процессора обработки данных, полностью используя его пропускную способность, чтобы загрузить систему сбора и обработки данных максимально полно.
Предложенное устройство имеет значительные функциональные преимущества перед известными аналогами.