Комментарии 18
Хорошая статья. Ethernet 10Base-T тоже можно реализовать на ПЛИС достаточно просто (Манчестер 2, развязка через трансформатор, соединение типа "звезда"). Но, скорее всего потребуется больше логических элементов и более "жирная" ПЛИС.
А что подразумевается под шифрованием полиномом?
Похоже, что данные с со случайной вставкой загружаются в сдвиговый регистр и там раз двадцать прокручиваются.
Интересно, спасибо. В моей практике при связи ПЛИС с ПЛИС или с контроллером, не говоря про скоростную шину, почти всегда нужно было иметь двунаправленный интерфейс.
Скорость хорошая получилась, сильно круче uart, но оно и понятно;)
Вопрос по схеме: как детектируется отрицательная полуволна входного сигнала с трансформатора? С положительной все понятно, она в диапазоне питания плисины. Отрицательная ниже нуля. Или там включена аппаратная подтяжка к плюсу питания?
А она не нужна – отрицательная полуволна это по сути «0», сигнал на входе ПЛИС должен быть как из википедии. Схема с диодами нужна чтобы трансформатор не насыщался. Т.Е. если выкинуть всё: и трансформаторы и диодики с резисторами и соединить ПЛИС напрямую, то канал будет работать, и если добавить все вот это (что на схеме), то канал связи будет работать так-же.
Получается и вход SI- не нужен, раз на нем всегда 0?
Так нужен вход SI- или нет? Я спрашиваю не затем чтобы вас подколоть или унизить, хочу повторить ваш дизайн.
сигнал SI- не нужен. Я его ввел для удобства определения фазировки, если не будет работать нужно будет поменять выводы трансформатора связи) Сори, что долго отвечал - не увидел
Не поможет. Сигнал SI- никогда не будет положительным - там диод стоит. Сигнал спасёт, если перепутали полярность диодов, подключённых к трансформатору около надписи "вход".
А вот от переполюсовки линии спасёт только протокол обмена поверх манчестера, который на эту переполюсовку рассчитан. NRZI какой-нибудь, или анализ данных после декодирования.
В защиту автора скажу: хоть схемотехника и странная, но позволяет использовать простейшие ПЛИС без дифференциальных входов. Хотя можно сделать и по-нормальному - с одним честным терминатором, без лишнего входа, и также на короткой дистанции - без дифф.входов.
50м, 10Мб/с ? проще было взять SFP медные, было бы интересней и проще для повторения. Может попробовать запилить на SFP с медью обычной?
Да, конечно, можно было-бы, но задачи такой не стояло))) целевая стабильная скорость: 1МБ - 2 МБ/с – без чего-либо сложнее диода в обвязке и кусочка проволоки на феррите неизвестной марки. Претензий никаких нет, ни на топовую скорость, ни на идеальный протокол, но в моем опыте оказалось ни раз полезно. И если вдруг кому пригодится - а тут есть готовое и весьма отлаженное решение с открытым кодом) вот
имхо проще 8b10b поднять на rs485 и трансформаторах
там стабильные 10 Mbit(на 12.5 МГц) причем на сотни метров, а еще их можно поверх питания кидать
Может быть, я не спорю, но, а как например соединить N ПЛИСов по 485 без внешних драйверов и только на резисторах? Просто в моей практике берешь стандартный интерфейс – чего нет в железе, а значит берешь внешнее железо.
Про дистанции (50М) я пишу лишь то, что испытывал сам и оно работало), да и опять же я ни на что не претендую))) стандартные интерфейсы существую много лет, и десятков лет, и они явно во многом лучше... (я, если все пойдет по плану, потом буду выкладывать, тут, свои реализации стандартов), но а пока вот это)))
Насколько я понял, фишка именно в минимальном количестве схем обвязки, в отсутствии внешних трансиверов и покупных микросхем.
Понятно, что 8b10b реализуется проще, примерно 30/15 LUT сериализатор/десереализатор будут занимать, что ещё компактнее чем у автора, но тоже имеет место быть.
От меня плюс!
Простой последовательный интерфейс «SINT» для связи двух ПЛИС, и не только