Comments 30
Дивно! Познавательно.. Возможно стоило бы использовать rpi2040 - у нее генератор дифсигнала тянет hdmi то есть 5 гигабит. Не какие то там 9600
5 гигабит? Это rpi2040 тянет 5ггц частоту? Реально? Чет сомневаюсь
Если я правильно вас понял, - ведь там стоит rp2040? Если да, - то о каком генераторе дифсигнала идет речь? В rp2040 его нет. Если о встроенной PIO машине, - то я получал макимум 62.5 (можно и 66,5) МГц, запрограммировав на ней SPI 24-битный. Раскажите, как вы получили на нем 5Гбит при том, что PLL дает нормально работать только до 133 МГц?
а кто сказал что я лично это получал :) насчет 5ГГц только погорячился (по старой fullhd памяти ) - заявлено и описано что rpi2040 умеет генерировать DVI/HDMI разрешение VGA в 60Hz (252 Mbps) и еще хватает мощей на всякие спрайты. но тема обмусоливаеться аж с 2021 года https://github.com/Wren6991/PicoDVI автор детально описывает там довольно кучеряво сделано
на гигагерцы тогда - fpga, надо думать.
А внимательно почитать саму тему тяжело было? На которую ссылаетесь.
Уточняю: там реализован режим только 640x480p 60 Hz DVI mode при разгоне rp2040 в 252 МГц вместо штатных 125МГц. Не все они гонятся.
Прежде чем писать, - поизучайте, на что ссылаетесь. Меньше будет огорчений. Или сами попробуйте вначале.
Да, я прочитал, осознал, признал свою ошибку, и вообщем то, зацитировал это самое 252. Каюсь, посыпаю голову пеплом, что я могу еще сделать чтобы Вас порадовать :) В разрезе fullhd это конечно не поможет, но вот для этой оптической связи все равно хороший шаг вперед может быть.
Я рассматривал rpi2040 для своих экспериментов. Никогда не работал с этими контроллерами, а тут была бы возможность разобраться с её PIO. Но руки так и не дошли. В другой раз...
Еще аппаратный манчестер есть в контроллерах с интерфейсом dali например, AT90PWM, но скорости там все равно не те.
Спасибо за наводку, буду знать в какую сторону смотреть в следующий раз
На том-же rp2040реализован Манчестер с битрейтом 10 Мбод: https://github.com/raspberrypi/pico-examples/tree/master/pio/manchester_encoding
Неплохой вариант эти PIO машины. Я на них много чего пореализовывал. пробуйте.
Время от времени было желание поковырять это SFP. И почемуто меня мучает воспоминание, что там в EEPROM записано какие кодировки чип подерживает 8b10b и подобные.хотя сейчас найти это не могу.
И в итоге вопрос так получается через эти модули вполне можно передавать любой досаточно "быстро меняющийся" сигнал, и не обязательно придерживаться этих 8b/10b 64b/66b и подобные?
Так ли уж нужно было паять провода прямо к модулю? Ведь вполне доступны разъёмы SFP на плату. Например KLS1-SFP-01.
Я такое делал, тоже на sfp. Но весь высокочастотный обмен возложил на SerDes микросхемы. На выхлопе по 10 каналов с приемной стороны и 10 каналов с принимающей, получился такой удлинитель gpio через оптику. Но эти 10 бит передаются "как есть", т.е. могут передаваться как 10 нулей подряд так и 10 единиц и их чередование, что не похоже на меандр или манчестерский код, который нормально прожует sfp. Т.к. каналов мне нужно было всего 3 по сути в оконечных приборах, то я поставил инверторы на каждый вод и имел прямой и инверсный сигналы, которые подавал на воды, в итоге получил из 10 бит 5 бит, но при этом любая комбинация бит давала чередование нуля и единицы на 10 битной шине... хотя даже не так, при передаче к примеру 0b00000 на 10 битной шине будет 0b0101010101, при передаче 0b11111 будет 0b1010101010, 0b10000 -> 0b1001010101, мысль думаю поняли... любая комбинация даст изменение частоты на sfp только в 2 раза, что ему норм... таким образом убирается так называемая постоянная составляющая, которая может сжечь лазер, от чего и защищается sfp.
Интересное решение. Какие микросхемы использовали?
MS1224 и MS1023 соответсвенно. До этого использовал SN65LV1023 и его "пару", но санкции, и пришлось заменить на китайца, но при этом китаец полностью работает и с оригиналом в связи...
По сути получается GPIO, которые обновляются на частоте 66мгц. Я гонял на 5 каналах 2 мбода по юарту одновременно, но по итогу 4 канала ограничил на 500кбодах, т.к. больше мне не надо было, но 1 канал работает на 2 мегабитах для связи между контроллерами. Но есть заморочки по управлению этими микросхемами, с МК нужно следить что линк поднялся и присутствует и перезагружать (отправлять синхроимпульс) линк если его нет, но там не так много проблем.
Этот вывод может показаться очевидным, ведь по входу и по выходу электрической линии связи на печатной плате стоят мелкие разделяющие конденсаторы.
Говорят, дело не в конденсаторах (их номинал можно попробовать увеличить), а в АРУ приёмника, которая начинает сходить с ума при долгом (относительно гигабитной пропускной способности) отсутствии сигнала.
использовать частотную манипуляцию. Первая частота 2МГц, вторая частота 0Гц.
Это больше похоже на АМ: есть несущая /нет несущей.
скорость обмена данными по UART составляет 9600 бод. Осциллограмма на TX и RX.
Не показано самое интересное - как при шуме с меандром на 100 кГц получилось передать "0" на 9600 бод. Хотелось бы увидеть осциллограммы непосредственно на выходе модуля.
С конденсаторами не пробовал ничего делать, даже номинал не мерил, хотя для полноты эксперимента возможно надр было бы...
Скорее всего вы правы, дело в АРУ внутри микросхемы. Я пробовал измерять напряжение RSSI непосредственно на выводе ROSA. Но там оно довольно медленно меняется, там полоса пропускания в районе 1-2кГц получается. Но подробно я этот вопрос не рассматривал, поэтому в публикацию не включил.
На счёт типа модуляции спорить не буду... Отмечу, что было бы эффективнее скакать между 2МГц и 2,1МГц (например), тогда удалось бы удалось вообще от этих шумоы избавиться и скорость передачи поднять.
На выходе трансивера действительно небольшая каша. ФНЧ несколько сглаживает ситуацию... Там с этими шумами всё интересно. Если начать аккуратно вытаскивать разъём со стороны лазера (на 1-2мм), то эти шумы становятся значительно меньше. Полагаю при длине кабеля в несколько километров будет такой же эффект наблюдаться из за затухания сигнала. Причём, если таким же образом извлекать кабель со стороны приёмника, такого эффекта не наблюдается, в какой то момент сигнал просто пропадает.
Откопаю осциллограммы, покажу вам.
Большое спасибо за проделанные исследования, на досуге обязательно попробую повторить!
А вы не пробовали 1x9 трансиверы?
Они по большей части все в качестве интерфейса используют PECL/LVPECL (для скоростей 1.25G), но бывает и TTL.
Я пробовал последний (взял на али), но что-то с наскоку не завелось (пока не углублялся в чем дело).
Я остановился именно на sfp трансиверах, так как некоторые модели предназначены для скоростей 10Гбит. Меня в основном интересовали фоьоприёмники, которые в них используются. Начал с изучение с бюджетных моделей 1.25Гбит, которое и привело меня к ROSA модулям, рассчитаным на высокочастотные оптические сигналы.
Для разбора может прикуплю себе пару штучек. Но что-то мне подсказывает, что оптический приёмник и передатчик там будет схожий с sfp модулями.
Почему бы просто не навесить эзернет чип?
Тема интересная, в некоторых модулях со встроенным OTDR с помощью доп схем формируется короткий импульс для определения расстояния до места повреждения волокна. Причем длительность импульса меняется в зависимости от исследуемого расстояния. Если 100мкс для SFP не такая проблема, то SFP+ не держат полку как в вашем случае и было.
Кстати, странно что в ваших экспериментах уже на 10мкс сигнал валился. Возможно модель модуля имеет особенности. В моем случае 100мкс сигнал использовался для кабелей порядка 50км, при меньшей длительности затухание уже было слишком большим и выделить было очень сложно
Статья огонь, успехов только в исследованиях дальнейших
Связь между Arduino по оптоволокну через SFP трансиверы