|
|
  |
Приём LVDS с динамической подстройкой фазы, Как это реализовать на Altera, не имея спец. блоков DPA |
|
|
|
Jun 26 2017, 15:34
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Цитата(doom13 @ Jun 26 2017, 17:51)  Расскажите принцип работы системы, для каждой линии отдельный выход PLL используется? Да. Для каждой линии отдельный вывод PLL, отдельный модуль ALTLVDS_RX, отдельный автомат калибровки. Хотя вывод rx_data_align (для организации bitslip) я не применяю. Сдвигаюсь на нужный бит я при помощи сдвигов фаз частоты. На данный момент думаю над организации калибровки всех трех линий: основная проблема в том, что PLL может в один момент времени сдвигать только 1 частоту, поэтому необходимо придумать механизм калибровки всех линий. Цитата(Leka @ Jun 26 2017, 18:21)  Частоты какие? Пока частота данных 40 МГц. В посылке 10 бит, поэтому частота десериализации 400 МГц. Частота VCO PLL так-же получилась 400 МГц, поэтому двигать могу 1\8 этой частоты , т.е порядка 315 пс. Была бы больше частота VCO была бы лучше калибровка, но я почему-то не могу найти в GUI настройку "enable phase shift step resolution"
|
|
|
|
|
Jun 26 2017, 18:01
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Цитата(doom13 @ Jun 26 2017, 20:44)  А какую-нибудь Альтеровскую доку по этой теме нашли? К сожалению нет. За основу брал доку от xilinx (xapp460), сам принцип определения границ бита, хотя и его несколько по-другому реализовал. Но пока у меня проект совсем-совсем сырой. Не удивлюсь, что переделок будет ещё очень много. Альтеровскую доку an433, я не очень понял. Думаю потом поглубже изучить её. Как я понял, там не рассматривается вариант, когда соотношения фазы частоты и данных не совпадает и может быть практически любым, и заранее неизвестным, как в случае приема DVI.
|
|
|
|
|
Jun 26 2017, 18:35
|
Профессионал
    
Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118

|
Цитата(Flip-fl0p @ Jun 26 2017, 18:34)  Пока частота данных 40 МГц. В посылке 10 бит, поэтому частота десериализации 400 МГц. Имхо. Выбросить ALTLVDS_RX, и самому все написать. Клок приемника немного сдвинуть по частоте относительно клока передатчика, настолько, чтобы гарантированно сохранялся знак разностной частоты. Принимать по 2 каналам с постоянным сдвигом по фазе, можно выделить и усреднить биения, по ним и синхронизироваться с передатчиком, выбирая нужный канал.
|
|
|
|
|
Jun 27 2017, 11:08
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Цитата(Leka @ Jun 26 2017, 21:35)  Имхо. Выбросить ALTLVDS_RX, и самому все написать. Клок приемника немного сдвинуть по частоте относительно клока передатчика, настолько, чтобы гарантированно сохранялся знак разностной частоты. Принимать по 2 каналам с постоянным сдвигом по фазе, можно выделить и усреднить биения, по ним и синхронизироваться с передатчиком, выбирая нужный канал. Да действительно ALTLVDS_RX проще выбросить нафиг, с ним одна морока. Поскольку этот гад требует для сигналов тактирования и разрешения вставлять специальный буфер между собой и PLL. Единственный плюс это то, что по даташиту ALTLVDS_RX умеет работать со скоростью 800Mpbs. На простых регистрах не думаю, что смогу достичь такой скорости. Тут думаю можно ускорить приём применяя DDR регистры.... Что-бы не думать над фазировкой клоков, я применяю FIFO для передачи между доменами, поскольку в моём случае фаза постоянно меняется.... Цитата Принимать по 2 каналам с постоянным сдвигом по фазе, можно выделить и усреднить биения, по ним и синхронизироваться с передатчиком, выбирая нужный канал. Вот тут можно чуть поподробнее объяснить принцип ? Если честно я не очень понял Вас. UPDПока работает без ALTLVDS_RX. Приёмник свой написал.
Сообщение отредактировал Flip-fl0p - Jun 27 2017, 11:17
|
|
|
|
|
Jun 27 2017, 17:31
|
Профессионал
    
Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118

|
A,B - сдвинутые по времени выборки, XOR дает биения, которые надо усреднить и использовать для коммутации A,B на выход. "Скольжение" всегда в одну сторону, если разностная частота не меняет знак. Использовал этот принцип в приемнике 100base-TX. Когда делал 100base-TX, динамически двигать фазу PLL не умел. Со сдвигом фазы можно добавить синхронный канал с динамическим сдвигом фазы.
Сообщение отредактировал Leka - Jun 27 2017, 17:25
Прикрепленные изображения
|
|
|
|
|
Jun 29 2017, 19:58
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Итак господа. Отпишусь о результатах. DVI приёмник работает, калибруется. Приём сигнала стабильный, и по прошествии несколько часов не сбивается. Но принимает данные некорректно  . Т.е. изображение принимается, буквы, цифры отчетливо видны, но в цветах полная неразбериха. Либо я TMDS decoder неправильно написал, либо данные в DVI передаются не в формате RGB. Либо ещё что-то. Что странно, картина очень похожа на то, что разряды перепутаны, старший с младшим... буду проверять. В процессе проверки нашел ошибку в datasheet на плату, там перепутали разряды ЦАП для вывода VGA. Подкиньте идею как проверить корректность приема ? Есть у меня смутные подозрения что данные передаются не в RGB а в YCbCr. Завтра с утра постараюсь выложить картинку того, как принимаются данные. А может на свежую голову ещё какое решение придет. А если подскажите каким битом вперед передаются данные(младшим или старшим), то было бы вообще отлично. DVI spec 1.0 уже давно глаза мозолит, может и не заметил очевидной информации.
Сообщение отредактировал Flip-fl0p - Jun 29 2017, 20:08
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|