Перейти к содержанию
    

Приём LVDS с динамической подстройкой фазы

Отпишусь о результатах.

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

UPD. Немного наврал. Пока не динамическая подстройка, а автоматическая подстройка при включении на центр Sample window. Динамическую пока не сделал.

Изменено пользователем Flip-fl0p

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Расскажите принцип работы системы, для каждой линии отдельный выход PLL используется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Расскажите принцип работы системы, для каждой линии отдельный выход PLL используется?

Да. Для каждой линии отдельный вывод PLL, отдельный модуль ALTLVDS_RX, отдельный автомат калибровки. Хотя вывод rx_data_align (для организации bitslip) я не применяю. Сдвигаюсь на нужный бит я при помощи сдвигов фаз частоты.

На данный момент думаю над организации калибровки всех трех линий: основная проблема в том, что PLL может в один момент времени сдвигать только 1 частоту, поэтому необходимо придумать механизм калибровки всех линий.

 

Частоты какие?

Пока частота данных 40 МГц. В посылке 10 бит, поэтому частота десериализации 400 МГц.

Частота VCO PLL так-же получилась 400 МГц, поэтому двигать могу 1\8 этой частоты , т.е порядка 315 пс.

Была бы больше частота VCO была бы лучше калибровка, но я почему-то не могу найти в GUI настройку "enable phase shift step resolution"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какую-нибудь Альтеровскую доку по этой теме нашли?

К сожалению нет.

За основу брал доку от xilinx (xapp460), сам принцип определения границ бита, хотя и его несколько по-другому реализовал. Но пока у меня проект совсем-совсем сырой. Не удивлюсь, что переделок будет ещё очень много.

Альтеровскую доку an433, я не очень понял. Думаю потом поглубже изучить её. Как я понял, там не рассматривается вариант, когда соотношения фазы частоты и данных не совпадает и может быть практически любым, и заранее неизвестным, как в случае приема DVI.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока частота данных 40 МГц. В посылке 10 бит, поэтому частота десериализации 400 МГц.

Имхо. Выбросить ALTLVDS_RX, и самому все написать.

Клок приемника немного сдвинуть по частоте относительно клока передатчика, настолько, чтобы гарантированно сохранялся знак разностной частоты.

Принимать по 2 каналам с постоянным сдвигом по фазе, можно выделить и усреднить биения, по ним и синхронизироваться с передатчиком, выбирая нужный канал.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имхо. Выбросить ALTLVDS_RX, и самому все написать.

Клок приемника немного сдвинуть по частоте относительно клока передатчика, настолько, чтобы гарантированно сохранялся знак разностной частоты.

Принимать по 2 каналам с постоянным сдвигом по фазе, можно выделить и усреднить биения, по ним и синхронизироваться с передатчиком, выбирая нужный канал.

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

Что-бы не думать над фазировкой клоков, я применяю FIFO для передачи между доменами, поскольку в моём случае фаза постоянно меняется....

Принимать по 2 каналам с постоянным сдвигом по фазе, можно выделить и усреднить биения, по ним и синхронизироваться с передатчиком, выбирая нужный канал.

Вот тут можно чуть поподробнее объяснить принцип ? Если честно я не очень понял Вас.

UPD

Пока работает без ALTLVDS_RX. Приёмник свой написал.

Изменено пользователем Flip-fl0p

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

A,B - сдвинутые по времени выборки, XOR дает биения, которые надо усреднить и использовать для коммутации A,B на выход.

"Скольжение" всегда в одну сторону, если разностная частота не меняет знак.

Использовал этот принцип в приемнике 100base-TX.

 

Когда делал 100base-TX, динамически двигать фазу PLL не умел.

Со сдвигом фазы можно добавить синхронный канал с динамическим сдвигом фазы.

post-9118-1498583782.png

Изменено пользователем Leka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

A,B - сдвинутые по времени выборки, XOR дает биения, которые надо усреднить и использовать для коммутации A,B на выход.

"Скольжение" всегда в одну сторону, если разностная частота не меняет знак.

Использовал этот принцип в приемнике 100base-TX.

 

Когда делал 100base-TX, динамически двигать фазу PLL не умел.

Со сдвигом фазы можно добавить синхронный канал с динамическим сдвигом фазы.

Спасибо ! Интересная задумка. Подумаю на досуге.

А можете порекомендовать какую-нибудь литературу где про такие вот интересности рассказывается ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тут просто стандартный метод выделения фронта + упор на ненулевую разностную частоту (такое не видел, но это вдвое все упрощает, имхо).

Если частоты слишком высокие, и две выборки не помещаются в один битовый интервал, тогда можно анализировать биения пакетных ошибок (контрольные суммы и тп). Так тоже пробовал, работает.

Изменено пользователем Leka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Итак господа. Отпишусь о результатах. DVI приёмник работает, калибруется. Приём сигнала стабильный, и по прошествии несколько часов не сбивается. Но принимает данные некорректно :wacko: . Т.е. изображение принимается, буквы, цифры отчетливо видны, но в цветах полная неразбериха. Либо я TMDS decoder неправильно написал, либо данные в DVI передаются не в формате RGB. Либо ещё что-то. Что странно, картина очень похожа на то, что разряды перепутаны, старший с младшим... буду проверять. В процессе проверки нашел ошибку в datasheet на плату, там перепутали разряды ЦАП для вывода VGA.

Подкиньте идею как проверить корректность приема ?

Есть у меня смутные подозрения что данные передаются не в RGB а в YCbCr. Завтра с утра постараюсь выложить картинку того, как принимаются данные. А может на свежую голову ещё какое решение придет.

А если подскажите каким битом вперед передаются данные(младшим или старшим), то было бы вообще отлично. DVI spec 1.0 уже давно глаза мозолит, может и не заметил очевидной информации.

Изменено пользователем Flip-fl0p

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Частота VCO PLL так-же получилась 400 МГц, поэтому двигать могу 1\8 этой частоты , т.е порядка 315 пс.

Была бы больше частота VCO была бы лучше калибровка, но я почему-то не могу найти в GUI настройку "enable phase shift step resolution"

Выставьте вручную множитель и делитель PLL. Таким образом сможете повысить частоту VCO и разрешение сдвига фаз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Итак. Мучения с DVI походят к концу. Сегодня получил стабильное изображение с корректными цветами.

Очень долго времени не мог разобраться с некорректным отображением цветов по ряду причин:

1. Я принимал данные неправильно начиная со старшего. А данные передаются начиная с младшего бита.

2. В спецификации DVI 1.0 контрольные слова не соответствуют тому, что передается на самом деле. Контрольные слова соответствуют спецификации на HDMI.

3. Так совпало, что с неправильным приёмом данных, и с неправильными контрольными словами я получил стабильное изображение с некорректными цветами... Как по мне, так ошибка очень неочевидная. Поскольку с неправильным приёмом я получил правильные тайминги кадровой и строчной синхронизации для вывода на VGA...

Думаю, как до "ума" доведу проект выложу его на Guthub.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...как до "ума" доведу проект выложу его на Guthub.

Было бы интересно взглянуть

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...