Форм фактор StackPC – новый подход к разработке встраиваемых модулей и систем Часть 2.
Стандарт StackPC и системы на его основе

Алексей Сорокин (Москва)

Рассмотрены стандарты StackPC и PCIe/104, отмечены преимущества и недостатки этих форм факторов для различных областей применения. Описан стековый метод построения систем на базе StackPC и модели применения стековых модулей в составе защищённых компьютеров и встраиваемых устройств.

Стековая архитектура

Как уже отмечалось в первой части данной статьи, существуют два основных типа организации системы из набора модулей – магистрально модульная и стековая. Основными отличиями этих систем являются способ подключения модулей к системе и способ доступа к интерфейсным разъёмам модулей.

В магистрально-модульной системе модули подключаются друг к другу через пассивные объединительные платы с разъёмами расширения. Как правило, такие системы строятся на базе каркасов для 19 дюймовых стоек, и наиболее известным производителем таких каркасов, объединительных плат и стоек является немецкая фирма Schroff. Неоспоримым преимуществом магистрально модульных систем перед стековыми является возможность использования высокопроизводительных модулей с большим энергопотреблением. В каркасах для магистрально-модульных систем относительно легко организовать кондуктивный или активный теплоотвод с применением блоков вентиляторов, чтобы обеспечить стабильную работу мощных элементов и возможность применения источников питания (ИП) большой мощности. Важным стандартом для магистрально модульных систем являются CompactPCI и его варианты (2.0, 2.30 и Serial).

Стековые модули не используют объединительные платы и соединяются друг с другом через разъёмы расширения, образуя компактную систему, которая неизбежно ограничивает потребляемую мощность. Основным применением стековых модулей являются защищённые системы, где стек с модулями и ИП устанавливаются в корпус. В такой конструкции возможен только кондуктивный теплоотвод на корпус. Как правило, максимальная мощность для большинства стековых систем составляет около 20 Вт, а для высокопроизводительных вариантов – 60 Вт. Одним из наиболее распространённых стековых стандартов является PC/104 и его более новые версии – PC/104 plus и PCI/104 Express. Преимущество стековой архитектуры заключается в более высоких показателях по стойкости к механическим воздействиям при меньшей массе и габаритах системы, т.к. способы соединения и фиксации модулей без использования объединительных плат придают стеку больше жёсткости в меньшем объёме. Напротив, в магистрально модульных системах CompactPCI могут наблюдаться резонансные явления на модулях из за люфта, обусловленного конструкцией крепления и материалом установленных в каркасе направляющих.


Рис. 1. Модуль PC/104 и PC/104-plus с «крыльями» и без «крыльев»


Рис. 2. Сравнение форм-факторов StackPC и StackPC-PCI с PCIe/104 и PCI/104-Express

Спецификация PCI/104-express или PCIe/104

Самая первая версия стандарта PC/104 предоставляла возможность расширения системы периферийными модулями только на базе шины ISA. Для этой шины был выбран разъём с количеством контактов 104, что отразилось в названии стандарта. Разъём имел штыревой соединитель, который обеспечивал двухстороннее подключение периферийных стековых модулей к процессорному модулю. После появления шины PCI в спецификацию был добавлен второй разъём, и обновлённый стандарт получил название PC/104 plus.

В данной версии стандарта было введено ограничение: модули с шиной PCI должны стоять в стеке непосредственно за процессорным модулем, и только с одной стороны. По сути, стек модулей PCI стал односторонним. Вместе с необходимостью организации более эффективной системы кондуктивного теплоотвода для новых поколений процессоров это привело к появлению системных модулей, имеющих с одной стороны радиатор, а с другой – разъёмы расширения.

Следует отметить, что стандарт PC/104-plus описывает прямоугольный модуль, на котором две области на двух противоположных краях отведены под разъёмы расширения, а две области на двух других краях – под интерфейсные разъёмы ввода вывода. В этих областях ответные части угловых интерфейсных разъёмов не должны выступать за оговоренные пределы более чем на 12,7 мм. Однако новые процессоры стали занимать бoльшую площадь, а более функциональные процессорные модули потребовали больше разъёмов ввода вывода.

По этой причине стандарт PC/104plus негласно разделился на два типа – один для процессорных модулей, второй – для периферийных. Отличие состояло в том, что платы некоторых процессорных модулей были расширены на область разъёмов ввода вывода («крылья» или «уши», см. рис. 1, справа), которые стали не угловыми, а вертикальными. Это и сегодня практикуется в процессорных модулях, позволяя реализовать самодостаточный модуль, совместимый с PC/104 plus.

Формально стандарт не регламентирует использование упомянутых областей для общей площади печатной платы, и, согласно спецификации, модули с «крыльями» должны именоваться не PC/104 Complaint (соответствующие стандарту по обязательным параметрам), а PC/104 Bus compatible (совместимые по разъёму расширения). Но такое расширение не мешает процессорным модулям вписаться в большинство уже разработанных систем PC/104.

В периферийных модулях такое решение не применяется. Во первых, подавляющее большинство этих модулей менее требовательно к площади печатной платы и отводу тепла, поскольку они содержат меньшее число интерфейсных разъёмов по сравнению с процессорными модулями. Во вторых, такое расширение для периферийного модуля, установленного в середину стека, перекроет область вывода интерфейсных кабелей в корпусе, в то время как процессорный модуль практически всегда устанавливается в стек крайним.

С ростом производительности процессорных модулей и появлением контроллеров для шин PCI, шина ISA стала вытесняться, и появилась версия стандарта без шины ISA – PCI/104. Начиная с данной версии стандарта, на модуле уже не было разъёма расширения с количеством контактов 104, но название PC/104 сохранилось как признак габаритных размеров формфактора – 3,55×3,78" (~90×96 мм). Стандарт PCI/104 не получил широкого распространения на рынке процессорных модулей, поскольку не поддерживал широкую номенклатуру присутствующих на рынке модулей с шиной ISA.

Вслед за PCI/104 появился стандарт PCI/104 Express, где на освободившееся от разъёма ISA место был установлен разъём с шинами PCI Express (далее PCIe). Этот разъём отличался тем, что был разработан для поверхностного монтажа. В результате для организации стека необходимо устанавливать один тип разъёма в верхнем слое TOP, а другой – в нижнем слое BOTTOM. Разъём состоит из трёх групп по 52 контакта с одной панелью питания для каждой группы. Эти группы назвали «банками» (Bank 1, 2 и 3). В первых версиях PCI/104-EXPRESS на первый банк разъёма были выведены четыре шины PCIe x1, а на второй и третий – шина PCIe x16. В стандарт была добавлена возможность использования шины PCIe x16 в качестве двух шин PCIe x8 или x4; также допускалось использование этой шины в режиме видеоинтерфейса (SDVO), который был мультиплексирован в микросхемах Intel с шиной PCIe x16.

Предполагалось, что наличие шины PCIe x16 позволит в полной мере использовать возможности передовой технологии PCIe, а поддержка SDVO – разрабатывать относительно простые модули видеоинтерфейсов DVI, VGA или LVDS. Первая версия стандарта появилась в марте 2008 года, но во встраиваемых решениях того времени ни PCIe x16, ни SDVO не нашли широкого применения. В периферийных модулях шина PCIe x16 использовалась в режиме двух шин PCIe x4 для подключения модулей расширения с цифровыми сигнальными процессорами (DSP – Digital Signal Processor). Поэтому данный стандарт не имел широкого распространения по сравнению с PC/104 plus.

Существует версия стандарта PCIe/104, в которой отсутствует разъём PCI. Однако, как и PCI/104, она менее распространена, поскольку не обеспечивает поддержку уже имеющихся на рынке модулей без дополнительных переходников с мостами PCIe PCI. Стандарт PCI/104-EXPRESS отличается от PCIe/104 наличием второго разъёма расширения PCI для поддержки модулей предыдущего поколения, поэтому далее по тексту мы будем рассматривать и сравнивать со StackPC вариант PCIe/104 (см. рис. 2).

Совместимость модулей стандарта PCI/104-express разных типов

Из за низкой популярности первой версии стандарта PCI/104-EXPRESS по сравнению со стандартом PC/104 plus в 2011 году консорциум (www.pc104.org) решил обновить спецификацию. В результате была опубликована версия 2.0, где изменились требования к интерфейсам на разъёме расширения PCIe/104. Убрать первую версию назначения контактов разъёма из спецификации консорциум не решился, т.к. это привело бы к потере совместимости с уже разработанными модулями на базе шин PCIe x16/x8/x4. Поэтому был предложен альтернативный вариант назначения контактов, названный Тип 2 (Type II), а первый вариант был переименован в Тип 1 (Type I).


Рис. 3. Технология Line Shifting для стека модулей

Во втором типе шину PCIe x16 заменили на две шины PCIe x4, два интерфейса SATA и два интерфейса USB 3.0. Предполагается, что данные интерфейсы будут востребованы в качестве стековых интерфейсов расширения для периферийных модулей. В Типе 2 изменению подверглись только Банки 2 и 3 разъёма расширения, а Банк 1 остался без изменений. Следует отметить, что введённые интерфейсы SATA и USB 3.0 могут вызвать повреждение модулей, если в стек установлен – скорее, по ошибке – модуль, использующий шину PCIe x16.

Для защиты от некорректной установки модулей в стек был введён механизм Bus Stacking Error (ошибка стека шин), который предполагает установку подтягивающих резисторов на трёх линиях – STK 0, 1 и 2. Для каждого типа предусмотрена своя конфигурация резисторов, задающая код на линиях STK. Если процессорный модуль в момент включения питания обнаруживает код, который конфликтует с его конфигурацией, то он должен обеспечить сброс всей системы и выдать индикацию ошибки стека. Например, если на процессорный модуль Тип 2 с интерфейсами SATA или USB 3.0 установлен периферийный модуль Тип 1 с шиной PICe x16, то система не должна включиться, иначе модули будут повреждены.


Рис. 4. Модуль StackPC типа CPC350, адаптированный под формат PCIe/104 (Фаствел, Россия)

Модули, использующие только интерфейсы первого банка разъёма расширения, являются универсальными (Universal) и могут работать с модулями первого и второго типов без ограничений. Такой механизм защиты должен присутствовать на всех модулях, соответствующих спецификации PCIе/104 версии 2.0 и выше. Более ранние модули такой защиты не имеют, и должны использоваться с осторожностью.

В спецификации PCIе/104 появилась технология Line Shifting – механизм смещения линий для групп шин PCIe, SATA и USB на периферийных модулях. Эта технология позволяет отказаться от задания слота переключателями, как в PC/104 plus. Каждый периферийный модуль всегда берёт со стека первую шину, а последующие сдвигает на одну позицию влево (вторую на первую, третью на вторую и т.д.). Таким образом, вне зависимости от позиции в стеке, периферийный модуль всегда окажется подключённым к свободной шине PCI Express в первой позиции. Такая технология потребовалась для реализации автоматической раздачи шин, работающих по принципу точка точка, на модули в стеке (см. рис. 3). Аналогичная технология раздачи интерфейсов присутствует и в системах Compact PCI, но там она реализована на объединительной плате, а не в модулях расширения

Для возможности установки модулей сверху или снизу стека с реализацией технологии Line Shifting требуется на каждом модуле использовать переключатели сигналов шин PCIe, SATA и USB с нижнего или верхнего разъёмов, обеспечивающие поддержку технологии Line Shifting. Если модуль подключается сверху стека, то он использует первую линию с нижнего разъёма, а нижние линии сдвигает на верхний разъём для следующих модулей. Если модуль подключается снизу стека, то он использует первую линию с верхнего разъёма, а остальные линии сдвигает с верхнего разъёма на нижний, для следующих снизу модулей.


Рис. 5. Модуль StackPC типа CPC805, адаптированный под формат 3,5"(Фаствел, Россия)

Согласно спецификации, периферийные модули могут быть подключены к процессорному модулю PCIe/104 с обеих сторон (через верхний и нижний разъёмы расширения). Однако для обеспечения целостности сигналов на шине PCIe (аналогично шине PCI в стандарте PC/104 plus), необходимо устанавливать модули расширения PCIe/104 либо сверху, либо снизу. Таким образом, стандарт, по сути, определяет односторонний стек. Для снятия ограничения был введён еще один тип процессорных модулей – с разъединёнными верхними и нижними разъемами. Это означает, что выводы верхнего и нижнего стекового разъёма на процессорном модуле подключены к разным шинам, не связанным между собой. Это внесло разнообразие в модули PCIe/104, которые теперь могут иметь разъём второго типа сверху и первого типа снизу, или два отдельных разъёма второго типа сверху и снизу для построения двухсторонней стековой системы. Различные типы процессорных модулей новой версии стандарта PCIe/104 перечислены в таблице 1.

Такое разнообразие типов может приятно удивить, когда требуется построить защищённую систему в корпусе на базе модулей различных типов. Кроме проблем с размещением модулей в одном стеке, подключением ИП к стеку, выводом интерфейсов на лицевую панель корпуса и организацией теплоотвода, добавляется задача обеспечения совместимости модулей. Не следует забывать, что некоторые типы не совместимы между собой, и их установка в стек вызовет ошибку стека шин. Если же использовать модули, работающие только с интерфейсами первого банка, то проблем с совместимостью удастся избежать, но это ограничивает потенциал системы в целом.

Спецификация StackPC

Стандарт описывает разъёмы расширения StackPC и FPE, а также разъёмы питания StackPWR, которые должны применяться во встраиваемых модулях, соответствующих стандарту. Отличием данной спецификации является то, что она описывает не конкретный модуль с данными разъёмами, а непосредственно сами разъёмы и их взаимное расположение. Таким образом, спецификация не определяет конкретные механические размеры модулей.


Процессорные модули PCIe/104 Процессорные модули StackPC

Верхний разъём

Type 1 Type 2 Type 1 Type 2 Type 1 StackPC StackPC-FPE

Нижний разъём

Тот же Тот же Type 1 Type 2 Type 2

Реализация разъёмов расширения

Соединены Соединены Разъединены Разъединены Разъединены Один вверх Два вверх

Двухсторонний стек

Нет Нет Да Да Да Нет Нет
Интерфейсный набор системы

x1 PCIe Links

4 4 8 8 8 4 4

USB 2.0

2 2 4 4 4 6 6

SMB

1 1 1 1 1 1 1

x4 PCIe Links

2* 2 4* 4 2+2* 1 1+2*

x8 PCIe Links

2* 4* 2* 2*

x16 PCIe Links

1* 2* 1* 1*

SATA

2 4 2 2 2

USB 3.0

2 4 2

LPC

1 1 1 1 1

GbE

2 2

Indication

3 3

FBUS (CAN/RS232)

2 2

SPI

3 3

Express CARD

2 2

Display Port

1

Configurable pins

61

Таблица 1. Сравнение типов модулей PCIe/104

Это было сделано намеренно, поскольку в определённых областях есть свои распространённые форм факторы в части габаритных размеров модулей. Взаимное расположение разъёмов всегда можно перенести на требуемые габариты, а соответствие стандарту StackPC укажет, что модули электрически совместимы между собой. Механическое соответствие будет достигнуто соблюдением соответствующих требований стандарта, под формфактор которого происходит адаптация StackPC. Например, если адаптировать подход StackPC под форм фактор PCIe/104, то потребуется лишь изменить назначение выводов разъёма расширения PCIe/104, исключить переключатели сигналов шин PCIe, а для процессорных модулей ещё и исключить нижний разъём и снять жёсткое ограничение на высоту компонентов с нижней стороны платы. В результате получится модуль, максимально приближенный по функциональности и механическим характеристикам к PCIe/104, но соответствующий стандарту StackPC по назначению контактов разъёма расширения.

В ближайшее время на рынке появится ряд модулей StackPC, адаптированных под форм фактор PCI/104-EXPRESS – это модули CPC309, CPC350, NIM1801 фирмы Фаствел (см. рис. 4), которые механически и электрически совместимы со стандартом PCI/104 Express, за исключением (не столь важной) возможности организации стека вниз, и с поддержкой не двух, а одной шины x4 PCI Express. В то же время эти модули обладают всеми достоинствами StackPC. Аналогично можно адаптировать StackPC и под такие распространённые форм факторы, как EPIC, EBX, 3,5" и др. Примером такой адаптации является уже существующий на рынке модуль CPC805 (см. рис. 5), который совместим с модулями StackPC и универсальными модулями PCI/104 Express.

Если у разработчика системы есть форм фактор, продиктованный конкретной системой, то он может разместить на своём модуле или плате носителе разъём StackPC и предусмотреть установку стекового модуля StackPC, адаптированного под форм фактор PCIе/104. В результате появляется возможность расширить систему модулями StackPC и PCIе/104. Габаритные и присоединительные размеры наиболее востребованных для адаптации форм факторов приводятся в приложении к стандарту StackPC. На данный момент опубликованная предварительная версия стандарта StackPC охватывает адаптацию форм факторов PCI/104 Express, EPIC, EBX и 3,5". В ближайшее время появится новая версия спецификации, в том числе на русском языке (см. www.stackpc.org).

Спецификация StackPC разрабатывалась независимо от введения новых типов в стандарт PCI/104 Express. Причиной была необходимость разработки и распространения более технологичной и простой в понимании и реализации альтернативы всё более сложному и многообразному стандарту PCIe/104. Поэтому основными идеями StackPC стали:

  • организация системного подхода в спецификации;
  • определение одного направления роста стека;
  • повышение технологичности модулей и системы в целом;
  • унификация методов организации теплоотвода для модулей и корпусов;
  • определение требований к ИП как части системы;
  • расширение применения стековых модулей на область COM модулей;
  • обеспечение совместимости с основными типами модулей PCIe/104;
  • обеспечение возможности дальнейшего развития стандарта.

Системный подход означает, что спецификация должна быть ориентирована не только на описание разъёмов расширения и габаритов модулей, но и на рекомендации, как эффективно строить системы на базе StackPC. Обобщение системного подхода к модулям позволит им стать более совместимыми между собой по механическим параметрам и интерфейсным разъёмам, что должно обеспечить уменьшение трудоёмкость разработки систем на их основе. Подход StackPC ориентирован на создание систем с количеством модулей в стеке не более семи, не считая ИП и интерфейсный модуль.

Важным системным подходом является определение наращивания стека модулей только в одном направлении. Поскольку периферийный модуль всегда устанавливается над процессорным, то это требование обеспечивает исключение из модулей StackPC микросхем переключателей интерфейсов PCIe, SATA, USB и Gigabit Ethernet (GbE), которые необходимы для всех модулей PCIe/104. Для сравнения, только на базе процессорного модуля PCI/104-EXPRESS с двумя разделёнными верхними и нижними разъёмами можно создать стек модулей, растущий в обе стороны. Другие типы PCIe/104 также предполагают установку не более 6 модулей в стек, и только с одной стороны от процессорного модуля (с верхней или нижней). Фактически, это означает, что на базе подавляющего большинства модулей PCIe/104 можно построить только односторонний стек, а разработчикам систем остаётся выбор стороны процессорного модуля.


Рис. 6. Система пассивного теплоотвода с теплораспределительной пластиной и радиатором применяется для односторонних стековых модулей (Фаствел, Россия)

В стандарте StackPC этот вопрос чётко регламентирован: стек растёт только вверх от процессорного модуля. Это позволяет разрабатывать процессорные, периферийные и интерфейсные модули, а также системы, исходя из общего принципа целесообразности. Исключение компонентов, обеспечивающих переключение интерфейсов, с периферийных модулей уменьшает количество переходных отверстий на печатных платах для высокоскоростных интерфейсов стека, что повышает технологичность и надёжность модулей, снижает их себестоимость и ускоряет разработку. По отношению к процессорным модулям данное требование убирает все нижние разъёмы и, как следствие, освобождает площадь платы под установку микросхем и позволяет устанавливать более высокие компоненты на нижнем слое процессорного модуля.

Не менее важным является тот факт, что отсутствие разъёмов на нижнем слое платы позволяет организовать эффективный теплоотвод. Теперь ничто не мешает установке широкого радиатора на процессорный модуль и организации теплоотвода на любую стенку корпуса – отсутствуют два разъёма с двух сторон модуля. В результате для такой системы уже появились модули StackPC с эффективным теплоотводом (см. рис. 6). Подобные изделия можно одинаково эффективно применять как в «классических» корпусах PC/104, так и в корпусах с кондуктивным теплоотводом, например, на базе платформы МК308, рассмотренной в первой части данной статьи.

Спецификация StackPC предлагает следующий набор интерфейсов:

  • 4x1 PCIe (четыре x1 Link PCI Express);
  • 1x4 PCIe (один x1 Link PCI Express);
  • 6x USB 2.0;
  • 2x SATA;
  • 2x Gigabit Ethernet;
  • LPC, SMB;
  • 2x FBUS (CAN или RS 232);
  • SPI (3 линии выбора устройств на шине);
  • поддержку Express Card и линий индикации SATA, GbE.

Часть интерфейсов совпадает с PCIe/104, и по этим интерфейсам спецификации являются совместимыми. Однако StackPC дополнительно содержит интерфейсы GbE, 4 порта USB 2.0, SPI, FBUS, Express Card и индикацию. Назначение выводов разъёма расширения приведено в таблице 2.

Интерфейс GbE в стандарте StackPC представлен интерфейсом MDI (Medium Dependent Interface – интерфейс, зависящий от передающей среды). Данный интерфейс требует дополнительной установки трансформатора на интерфейсной плате или плате носителе для организации порта 1000BASE T/TX, аналогично спецификации COM Express. Таким образом, можно сделать периферийный модуль для стека, который будет использовать интерфейс GbE MDI вместо шины PCIe для связи с процессорным модулем. Это может быть сетевой коммутатор, встраиваемый модуль питания с функцией PoE (Power over Ethernet), модуль расширения или контроллер на базе процессоров с архитектурой ARM или AVR и т.п.

Дополнительные 4 порта USB являются расширением группы портов USB первого банка. Последовательный периферийный интерфейс SPI (Serial Peripheral Interface) – это 4 проводный интерфейс для подключения периферийных устройств к процессорному модулю. Согласно спецификации, может быть адресовано до трёх периферийных устройств, а тип интерфейса и механизм адресации определяются конкретным процессорным модулем. Для линий выбора периферийных устройств (линии SPI_SS[x]# – Slave Select) также применяется механизм Line Shifting.

Интерфейс полевой шины Field BUS, согласно спецификации, определяется пользователем или разработчиком процессорного модуля. Оговорено три модели применения линий данного интерфейса – это CAN (две линии CAN_H и CAN_L), UART (3 проводной интерфейс с цепями TX, RX и RTS#) или пользовательский. Поскольку данные интерфейсы предназначены для вывода на внешний разъём корпуса (с дальнейшим подключением к шинам CAN или RS485), то они предполагают установку соответствующего драйвера и цепей гальванической изоляции на интерфейсном модуле или на платеносителе. Это означает, что разработчик системы выбирает процессорный модуль и выбирает или разрабатывает под него интерфейсный модуль или плату носитель, на которой устанавливает необходимый драйвер линии.

Пользовательская модель предполагает, что интерфейс будет вводиться в стек со специализированных периферийных модулей расширения. В таком случае данные интерфейсы от процессорного модуля обрываются, т.е. цепи нижнего разъёма не подключаются, а необходимые интерфейсы заводятся на верхний разъём. Далее этот пользовательский интерфейс будет использоваться на специализированном интерфейсном модуле или на плате носителе. Другие модели применения данного интерфейса спецификацией не определены.

Расширение Express Card представлено в стеке двумя линиями сигналов PE_PRSNT[0:1]#, индицирующих установку карт расширения Express Card с интерфейсом PCIe. Таким образом, на периферийном модуле или на плате-носителе можно установить два разъёма расширения для Express Card и поддержать функцию обнаружения установки карт и их горячей замены.

Индикация на стековом разъёме используется для отражения активности жёстких дисков и портов GbE. Цепи индикации предназначены для вывода на индикаторы лицевой панели корпуса через периферийный модуль или плату носитель. Размещения этих цепей на стековом разъёме позволяет организовать наиболее важную индикацию состояния блока без применения кабельных соединений и унифицировать данный метод для всех изделий, соответствующих стандарту. Как правило, используемых цепей достаточно, чтобы понять «завис» ли блок, идёт ли активная работа прикладного ПО с жёсткими дисками и есть ли активность в сети Ethernet.

Следует отметить, что все интерфейсы не являются обязательными. Каждый модуль StackPC использует лишь тот функционал, который ему необходим, а остальные сигналы пропускаются с нижнего разъёма на верхний. Если на периферийном модуле использован первый интерфейс из группы, то, согласно требованию стандарта, остальные интерфейсы данной группы сдвигаются на позицию вниз с помощью механизма смещения линий Line Shifting. В стандарте StackPC это жёстко реализовано топологией печатной платы, без использования микросхем переключателей.

Совместимость модулей StackPC И PCI/104-express

Первый банк разъёма StackPC полностью идентичен первому банку разъёма PCIe/104. Следовательно, эти стандарты полностью совместимы по первому банку разъёма расширения. Если консорциум PC/104 решил заменить невостребованную шину PCIe x16 на втором и третьем банках разъёма расширения на две шины PCIe x4 и порты 2x USB 3.0, 2x SATA, то в стандарте StackPC шина PCIe x16 была заменена на одну шину PCIe x4 и порты 2x GbE, 2x SATA, 4x USB 2.0. Это было сделано по нескольким причинам.

Первая причина – популярность интерфейсов GbE, которых на современных встраиваемых процессорных модулях, как правило, всегда два. Вторая – сохранение совместимости с PCIe/104 хотя бы по одному интерфейсу PCIe x4 (для модулей, которые уже разработаны под шину PCIe x4), который может быть востребован для создания графических видеоадаптеров, модулей ввода видеосигналов и вычислителей на базе DSP процессоров. Третья причина – наличие на современных встраиваемых процессорах только одной шины PCIe x4. Чаще всего второй шины PCIe x4 не существует, поэтому резервировать выводы разъёма под невостребованный интерфейс нецелесообразно.


StackPC Верхний разъём (Connector A)
Банк 1 1 USB_OC#
+5 В
PE_RST# 2
3 3.3V 3.3V 4
5 USB_1p USB_0p 6
7 USB_1n USB_0n 8
9 GND GND 10
11 PEx1_1Tp PEx1_0Tp 12
13 PEx1_1Tn PEx1_0Tn 14
15 GND GND 16
17 PEx1_2Tp PEx1_3Tp 18
19 PEx1_2Tn PEx1_3Tn 20
21 GND GND 22
23 PEx1_1Rp PEx1_0Rp 24
25 PEx1_1Rn PEx1_0Rn 26
27 GND GND 28
29 PEx1_2Rp PEx1_3Rp 30
31 PEx1_2Rn PEx1_3Rn 32
33 GND GND 34
35 PEx1_1Clkp PEx1_0Clkp 36
37 PEx1_1Clkn PEx1_0Clkn 38
39 +5V_SB +5V_SB 40
41 PEx1_2Clkp PEx1_3Clkp 42
43 PEx1_2Clkn PEx1_3Clkn 44
45 GND (DIR) PWRGOOD 46
47 SMB_DAT PE_x4_CLKp 48
49 SMB_CLK PE_x4_CLKn 50
51 SMB_ALERT# PSON# 52


Банк 2 53 STK0 / WAKE#
+5 В
STK1 / SATA_ACT# 54
55 Type_DETECT# GND 56
57 ETH_0_MDI(0)p PEx4_0T(0)p 58
59 ETH_0_MDI(0)n PEx4_0T(0)n 60
61 GND GND 62
63 ETH_1_MDI(0)p PEx4_0T(1)p 64
65 ETH_1_MDI(0)n PEx4_0T(1)n 66
67 GND GND 68
69 ETH_0_MDI(1)p PEx4_0T(2)p 70
71 ETH_0_MDI(1)n PEx4_0T(2)n 72
73 GND GND 74
75 ETH_1_MDI(1)p PEx4_0T(3)p 76
77 ETH_1_MDI(1)n PEx4_0T(3)n 78
79 ETH_1_LINK_ACT# ETH_0_LINK_ACT# 80
81 SATA_T1p SATA_T0p 82
83 SATA_T1n SATA_T0n 84
85 GND GND 86
87 USB_3p USB_2p 88
89 USB_3n USB_2n 90
91 GND GND 92
93 USB_5p USB_4p 94
95 USB_5n USB_4n 96
97 GND GND 98
99 ETH_1_CTREF ETH_0_CTREF 100
101 SPI_MOSI SPI_SS0# 102
103 SPI_MISO SPI_SS1# 104


Банк 3 105 STK2 / SPI_SCK
+12 В
LPC_CLK 106
107 SPI_SS2# GND 108
109 ETH_0_MDI(2)p PEx4_0R(0)p 110
111 ETH_0_MDI(2)n PEx4_0R(0)n 112
113 GND GND 114
115 ETH_1_MDI(2)p PEx4_0R(1)p 116
117 ETH_1_MDI(2)n PEx4_0R(1)n 118
119 GND GND 120
121 ETH_0_MDI(3)p PEx4_0R(2)p 122
123 ETH_0_MDI(3)n PEx4_0R(2)n 124
125 GND GND 126
127 ETH_1_MDI(3)p PEx4_0R(3)p 128
129 ETH_1_MDI(3)n PEx4_0R(3)n 130
131 PE_PRSNT1# PE_PRSNT0# 132
133 SATA_R1p SATA_R0p 134
135 SATA_R1n SATA_R0n 136
137 GND GND 138
139 FBUS_1p FBUS_0p 140
141 FBUS_1n FBUS_0n 142
143 GND GND 144
145 LPC_AD0 LPC_DRQ# 146
147 LPC_AD1 LPC_SERIRQ# 148
149 GND GND 150
151 LPC_AD2 LPC_FRAME# 152
153 LPC_AD3 RTC_Battery 154
155 FBUS_1RTS# FBUS_0RTS# 156

Таблица 2. Назначение контактов разъёма расширения StackPC

USB Interface
PCI-Express Interface
ATX Power Supply
SMBus Interface
SPI Bus
Field Bus Interface
LPC Bus
SATA Interface
Ethernet Interface
Power Interface
Type DETECT pin

В стандартах StackPC и PCIe/104 присутствуют общие интерфейсы во втором и третьем банках, – SATA и LPC. Они занимают одни и те же выводы на разъёме, и по этим интерфейсам стандарты полностью совместимы. Интерфейс SATA необходим для размещения носителей информации большого объёма на периферийных модулях в стеке. Это могут быть SSD диски (Solid State Drive) для жёстких условий эксплуатации или обычные SATA диски формата 2,5". Использование интерфейса с разъёма расширения устраняет необходимость в кабеле данных и питания между диском в стеке и процессорным модулем. Интерфейс LPC используется для подключения микросхем Super IO и микросхем ПЛИС (FPGA). Микросхемы Super IO, распространённые в системах на базе архитектуры x86, в настоящее время применяются в основном для поддержки интерфейса PS/2 и последовательных портов RS 232/422/485.

Хотя первый порт PCIe x4 занимает в обеих спецификациях одинаковые выводы, следует учитывать, что модули PCIe/104 рассчитаны на два порта PCIe x4. По этой причине они оснащены микросхемами переключателями интерфейсов PCIe x4 согласно требованиям стандарта по сдвигу интерфейсов одной группы (Line Shifting) для поддержки двустороннего стека. Таким образом, на периферийных модулях, которые используют лишь один порт PCIe x4, на втором порту всегда установлены микросхемы переключатели, и если такой модуль PCIe/104 установить в стек к процессорному модулю StackPC с портом GbE, то произойдет конфликт этих разнотипных интерфейсов и возникнет ошибка стека, – модули просто не включатся.

С периферийными модулями Stack PC с интерфейсом PCIe x4, не использующим GbE интерфейс, проблем не возникает. Такой модуль не имеет переключателей интерфейса PCIe или GbE и может свободно использоваться в стеке PCIe/104. Фактически, это тот же самый PCIe/104, но без микросхемпереключателей. Главное, чтобы он был либо единственным модулем, использующим шину PCIe x4, либо стоял следующим в стеке за периферийным модулем PCIe/104, использующим первый и сдвигающим на первую позицию второй интерфейс PCIe x4 (см. рис. 7).


Рис. 7. Смешанный стек модулей формата PCIe/104 и StackPC, использующих шину x4 PCIe

В стандарте PCIe/104 введено два порта USB 3.0, которые являются, так же как и второй порт PCIe x4, специфичными только для PCIe/104 Type 2. Модули с этими интерфейсами допускают совместную установку только модулей того же второго типа или универсальных модулей, использующих только первый банк.

Аналогично стандарт StackPC имеет свои специфичные интерфейсы – порты GbE, 4 дополнительных порта USB 2.0 во втором банке, интерфейсы SPI и FBUS. Дополнительно стандарт StackPC предполагает использование карт Express Card c возможностью горячей замены, индикацию активности SATA или бортового IDE и индикацию активности порта Ethernet. Если модуль StackPC оснащён этими интерфейсами, то принято говорить о полнофункциональном модуле StackPC (StackPC Full Function).

В стек с полнофункциональными модулями StackPC можно установить либо модули StackPC, либо универсальные модули PCIe/104, использующие только первый банк разъёма расширения, интерфейс SATA и LPC. Если в стек с полнофункциональными модулями StackPC подключить универсальный модуль PCIe/104, то на модулях StackPC будут недоступны функции горячей замены Express Card, SPI, все линии индикации и управление передатчиками FBUS (линии RTS#). В стандарте это называется режимом ограниченной функциональности. Все остальные интерфейсы будут работать без ограничений. Таким образом, по интерфейсам и типам модулей можно заявить совместимые комбинации типов модулей (см. табл. 3).

Таблица 3. Совместимость разъёмов StackPC и PCIe/104

Интерфейсы Банк разъёма Тип модуля Совместимость по интерфейсам
Universal Type 1 Type 2 StackPC
x1 PCIe Links 1 4 4 4 4 Полная
USB 2.0 (банк 1) 1 2 2 2 2 Полная
USB 2.0 (банк 2) 2 x8, x16 PCIe USB 3.0 4 Нет, если используются указанные интерфейсы
USB 3.0 (банк 2) 2,3 x8, x16 PCIe 2 USB 2.0, FBUS Нет, если используются указанные интерфейсы
SMB 1 1 1 1 1 Да
x4 PCIe Links 2,3 2* 2 1 Да
x8 PCIe Links 2,3 2* SATA, SATA_DETECT, LPC, USB 3.0 SATA, LPC, USB 2.0, GbE, SPI Нет, если используются указанные интерфейсы
x16 PCIe Links 2,3 1* SATA, SATA_DETECT, LPC, USB 3.0 SATA, LPC, USB 2.0, GbE, SPI Нет, если используются указанные интерфейсы
SATA 2,3 x8, x16 PCIe 2 2 Type 2 и StackPC
LPC 3 x8, x16 PCIe 1 1 Type 2 и StackPC
GbE 2,3 x8, x16 PCIe SATA_DETECT,
x4 PCIe Link 2
2 Нет, если используются указанные интерфейсы
Indication 2 3
SATA_DETECT 2
x8, x16 PCIe 2 SPI Нет, если используются указанные интерфейсы
SPI 2,3 x8, x16 PCIe SATA_DETECT 3 Нет, если используются указанные интерфейсы
Express CARD 3 2


* интерфейсы не могут использоваться одновременно, один из режимов задаётся при построении системы
1. Серым цветом выделены совместимые интерфейсы различных типов модулей.
2. Жёлтым цветом выделены интерфейсы, которые являются специфичными для указанного типа. Данные интерфейсы не совместимы в одном стеке с интерфейсами, указанными красным цветом.
3. Красным цветом выделены конфликтующие интерфейсы, не совместимые с интерфейсами модулей других типов.
4. Синим цветом выделены интерфейсы, которые не поддерживаются другими типами модулей, но не создают проблем совместимости.


Защита от неправильной комбинации модулей в стеке реализована просто. В спецификации StackPC приведена примерная электрическая схема обнаружения ошибки стека. Для типов StackPC, аналогично PCIe/104, введены подтягивающие резисторы на линии кодировки типа модуля – цепи STK0, 1, 2. Данная схема предполагает наличие простого декодера, который, в случае фиксации ошибочного кода на линиях STK в момент включения, переведёт систему StackPC в режим ограниченной функциональности или в режим ошибки стека. Если несовместимый с PCIe/104 периферийный модуль будет установлен в стек PCIe/104, то резисторы этого модуля также вызовут ошибку стека PCIe/104, и система не будет повреждена. Если модуль StackPC разрабатывается только для применения StackPC, то данной защиты не требуется. Логика детектирования ошибки стека занимает на плате очень мало места, и необходимо лишь понять её механизм, детально описанный как в StackPC, так и в спецификации PCIe/104.