Какую шину лучше реализовать в БК12 ?
ГОЛОСУЕМ ПОСЛЕ ПРОЧТЕНИЯ МАТЕРИАЛОВ ТЕМЫ!!!
Изначально рассматривалась шина PCI. Но поскольку ни одного сторонника она не нашла, а также по причине её сложности, приводящей к высокой сложности необходимых драйверов, которые в общем-то и некому будет писать, от неё отказались.
Из более реальных, поступило предложение реализовать последовательный интерфейс Olimex UEXT по частному стандарту, примеры значительного количества устройств под него можно глянуть тут.
Преимущества данного решения очевидны: малое число выводов для подключения, малое число занимаемых выводов у ПЛИС, простота драйверов, возможность разместить на плате сразу несколько таких интерфейсов для подключения разных устройств (а шина PCI влезет на плату mini-ITX только одна).
Не так давно случайно попалась ссылка на новоделы устройств под ISA, где также достаточно широкий ассортимент. Быть может имеет смысл рассмотреть ISA как альтернативный вариант? Все-таки промышленный стандарт.. Конечно драйвера потребуются, но они будут попроще, чем для PCI. Может кто-то осилил бы написание драйвера?
Также обсуждалась возможность прилепить шину МПИ2 - т.е. разработать новый стандарт шины на основе существующей МПИ, сделав её более скоростной, потеряв при этом совместимость со старыми устройствами (либо лепить нетривиальный коммутатор шины на старый/новый стандарт).
Хотелось бы помимо голосования услышать мнения, идеи, а быть может и конкретные проработанные предложения.
update 22.11.2013
Изначально у меня были такие рассуждения:
1. Есть БК11М с шиной МПИ, под которую есть старые устройства и можно делать новые устройства.
2. Разрабатывается БК12, где будет та же МПИ, с которой смогут работать все устройства от БК11М (и елка там особо не понадобится - нагрузочная способность итак будет неплохая, достаточно просто разветвителя, но можно и елку).
3. Существуют готовые устройства под различные стандартизированные шины, которые можно было бы подключить к БК12, установив там такую шину. Назовем эту шину условно ШИНА-1.
4. Под ШИНУ-1 никто не мешает делать и свои устройства, если очень захочется. Данные устройства можно будет предлагать и в сообщества других платформ, где есть такая шина.
=========вдруг рождается идея о шине МПИ-2==========
5. Тогда вместо набора МПИ + ШИНА-1 в БК12 будет сложный набор ШИНА-1 + коммутируемая МПИ/МПИ2. Либо только коммутируемая МПИ/МПИ2.
6. Устройства под шину МПИ-2 не будут работать на БК11М.
7. Устройства под шину МПИ-2 не будут применимы ни на какой другой платформе.
8. Есть ли хоть один аргумент в защиту того, что шина МПИ-2 для БК12 чем-то привлекательнее, чем простая UEXT с готовыми устройствами?
9. Учитывая, что проработки уровня ГОСТов на шину МПИ-2 нет, существует она только на уровне идеи, готовых устройств для её тестирования нет - довольно странно браться такую шину в БК12. Т.е. ставить разработчику задание - "сделай примерно так, тестировать не надо". И что мы получим?
10. Шина МПИ-2 пожалуй могла бы иметь смысл в БК12 (не как коммутируемая, а как отдельная, в виде слота по типу ISA) в том случае, если найдется желающий полностью проработать и составить спецификацию данной шины, а также желающий (возможно другой кто-то) разработать под неё хотя бы одно не тривиальное устройство и совместно довести процесс отладки такой шины до конца.
update 29.11.2013
После утомительных ночных обсуждений, наконец появилось понимание, что шина LPC (+еще описание LPC) будет наиболее разумным выбором для БК12: с одной стороны она программно совместима с ISA (и можно сделать относительно не сложный адаптер для ISA-устройств) и существуют чипсеты с поддержкой данной шины, а с другой стороны не требует большого числа контактов ПЛИС и не занимает на плате много места. Более того, в текущей конфигурации платы, обмен между двумя ПЛИС итак ведется по схожей с LPC шине, так что фактически изменения будут минимальны.
Из минусов - для неё не существует стандарта разъема, т.к. она является межчиповой (внутриплатной) и не рассчитывалась на подключение устройств через слоты, поэтому придется выбирать разъем, предположительно PCI-Express x1 (36pin) или SL-36.
На некоторых ноутбуках LPC-шина выведена на Mini PCI-Express разъём, хотя опять же, единого стандарта распиновки нет. Вот тут пример карты, одновременно поддерживающей интерфейсы mini-PCI/mini-PCI-Express/LPC.
Вторым, более существенным минусом, является необходимость реализации на VHDL модуля IP - Intellectual Property.
Локальным плюсом данной шины будет то, что возможна унификация разъема и распиновки данной шины между проектом БК12 и проектами уважаемого Vslav, что положит начало некому стандарту в ретро-проектах.
Касаемо замечаний, что шина не вписывается в концепцию развития БК0010 -> БК11М -> ДВК -> БК12, то добавлю, что БК12 изначально туда мало вписывается наличием на борту USB & Ethernet на процессоре PIC32MX, но в то же время ни наличие PIC32MX, ни наличие шины LPC никак не отменяет возможности запускать софт ДВК на БК12, другой вопрос в том, что отлаживать FPGA-реализацию режима полной совместимости с ДВК просто некому, в обязанности моего разработчика это не входит.
Дополнительно возник вопрос - а нужно ли оставлять МПИ/УП на плате mini-ITX БК12 ? По идее они будут мало востребованными в таком формате платы/корпуса и по большому счету будут бессмысленно занимать выводы дополнительной ПЛИС, уродливо смотрясь на плате в виде разъемов IDC-50 (шаг 2.54). Логичнее было бы перенести их на плату расширения под будущую шину LPC. Кто что думает?
Подробнее о шине LPC (Low Pin Count, малое число контактов)
LPC (Low Pin Count, малое число контактов) — шина, разработанная компанией Intel и предназначенная главным образом для подключения стандартных устройств, доставшихся современным персональным компьютерам «в наследство» от ранних ПК и обычно называемых унаследованными (legacy). Раньше такие устройства подключались к шине ISA.
Целесообразность разработки новой шины объясняется следующими основными причинами:
- унаследованные устройства используют заранее определённые диапазоны адресов памяти и ввода-вывода и не обладают возможностью конфигурирования, предусмотренной технологией Plug and Play, поэтому они не могут быть напрямую подключены к более современным шинам (PCI, AGP, PCI Express), имеющимся в современных ПК;
- традиционно использовавшаяся для подключения таких устройств шина ISA имеет много сигналов (88, не считая линий питания), что усложняет и удорожает как контроллеры, так и системные платы, поэтому сохранение её в прежнем виде нецелесообразно;
- еобходимость сохранять электронную совместимость с шиной ISA в обычных ПК отсутствует, поскольку предназначенные для неё устройства расширения (например, сетевые и звуковые платы) к рубежу веков практически «вымерли».
Шина LPC имеет всего 7 обязательных и 6 необязательных сигналов. Обмен данными по ней идёт в синхронном режиме с частотой 33 МГц (шина ISA является асинхронной, что также усложняет работающее с ней оборудование), причём каждый так передаётся 4 информационных или управляющих бита. Разрядность адреса увеличена до 32 бит, что позволяет задатчикам шины прямо обращаться к адресному пространству памяти объёмом 4 Гбайта (у шины ISA разрядность адреса составляла 24 бита, что ограничивало возможности адресации величиной 16 Мбайт). Реальная пропускная способность LPC, составляющая 6,7 Мбайт/с, ненамного уступает таковой у ISA (до 8 Мбайт/с) и совершенно достаточна для одновременной работы всех подключенных к ней устройств (по расчётам Intel, они используют порядка 75% максимальной пропускной способности).
В современных ПК шина LPC через мост подключается к шине PCI или PCI Express (технически мост PCI-LPC обычно входит в состав микросхемы «южного моста»). К LPC обычно присоединяется микросхема многофункционального контроллера, в англоязычной документации именуемого «Super I/O». В его состав могут входить, например, последовательные, параллельный и инфракрасный порты, контроллер интерфейса PS/2, контроллер гибких дисков, а также набор линий общего назначения (General Purpose I/O, GPIO), к которым часто подключаются датчики температуры и вентиляторы. Кроме того, к LPC могут подсоединяться другие как современные (например, модуль TPC), так и устаревшие устройства (например, аудиокодек AC'97).
С точки зрения программиста шина LPC как бы отсутствует: программы просто работают с регистрами подключенных к ней устройств. Хотя у LPC отсутствуют традиционные сигналы запросов прерываний и прямого доступа к памяти, эти возможности поддерживаются, причём создаётся иллюзия применения обычной шины ISA. Например, с точки зрения программиста подключенные к LPC порты и контроллер интерфейса PS/2 генерируют обычные для них запросы прерываний IRQ1, IRQ3, IRQ4, IRQ12, хотя физически эти линии отсутствуют. Определять наличие или отсутствие тех или иных устройств, подключенных к LPC, необходимо соответствующими функциями BIOS. Зачастую информация о них содержится в таблицах ACPI, поэтому анализ конфигурации обычно целесообразно начинать именно с их разбора.