реклама на сайте
подробности

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Приём LVDS с динамической подстройкой фазы, Как это реализовать на Altera, не имея спец. блоков DPA
Flip-fl0p
сообщение Jun 8 2017, 10:33
Сообщение #1


Местный
***

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



Приветствую уважаемые посетители форума !
Возникло некоторое непонимание как на Altera реализовать приём данных по LVDS с динамической подстройкой фазы, т.е чтобы данные считывались по центру битового периода(sample window), а не в зоне джиттера.
Думаю тут будет уместна эта картинка для наглядности:

К сожалению, Cyclone V, который на моей макетной плате, не содержит блоков DPA (dynamic phase alignment), а в альтеровских application notes я не увидел алгоритмов реализации(может плохо смотрел или не туда), поэтому смотрел как это реализовано у Xilinx(XAPP460, XAPP861, XAPP224), но неужели у альтеры нет ничего похожего ?
Данные принимаю при помощи мега функции ALTLVDS_RX с калибровкой по тестовым паттернам.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jun 8 2017, 12:47
Сообщение #2


Местный
***

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



Есть мысли применить динамический сдвиг фазы (DPS), вот только неясно как определить границы бита.
Go to the top of the page
 
+Quote Post
dm.pogrebnoy
сообщение Jun 8 2017, 19:19
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 11-04-07
Пользователь №: 26 933



Посмотрите реализацию Дмитрия Смехова aka dsmv
https://electronix.ru/forum/index.php?showt...=119622&hl=
https://github.com/dsmv/fpga_components/tre...cm_phase_v8/rtl

Комменты гитхаб зажевал, выкладываю расшифровку.
Цитата
------------------------------------------------------------------------------
--
-- Description : Узел автоподстройки фазы тактовой частоты
--
-- Сигнал входной тактовой частоты поступает на триггер во входном буфере.
-- Выходной сигнал DCM сдвигается до тех пор, пока фаза сигнала не попадёт
-- в область нестабильного защёлкивания сигнала входной тактовой частоты.
-- Автомат подсчитывает число 1 и 0 на интервале 1024 такта, и принимает
-- решение о сдвиге фазы. При достижении максимального или минимального
-- значения сдвига производится инверсия сигнала поступающего на DCM,
-- сброс DCM и автомата управления в начальное состояние.
--
-- Узел включает в себя автомат определения изменения тактовой частоты.
-- При изменении входной тактовой частоты происходит сброс DCM и
-- начинается новый цикл подстройки фазы
--
-- Тактовая частота clk используется для определения изменения тактовой
-- частоты. На входе clk частота должна быть всегда
--
-------------------------------------------------------------------------------
--
-- Version 1.0 17.03.2014 Dmitry Smekhov
-- Создан из ctrl_dcm_phase_v6 v1.5
--
--
-------------------------------------------------------------------------------


Есть подозрение, что подойдет на Альтеру без переделок вообще, порт DPS у нее вроде бы один в один.


--------------------
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jun 8 2017, 20:24
Сообщение #4


Местный
***

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



Цитата(dm.pogrebnoy @ Jun 8 2017, 22:19) *

Спасибо огромное. Сейчас любая подсказка очень нужна. Свои мысли как-то в голову не приходят. Завтра с утра на свежую голову проанализирую.
Go to the top of the page
 
+Quote Post
spectr
сообщение Jun 9 2017, 06:01
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 10-12-04
Из: Moscow
Пользователь №: 1 437



Посмотрите еще вот здесь, совсем недавно было и как раз в тему:
https://marsohod.org/projects/proekty-dlya-...d3/347-fpga-tdc
https://marsohod.org/11-blog/348-fpga-tdc2
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jun 9 2017, 06:17
Сообщение #6


Местный
***

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



Цитата(spectr @ Jun 9 2017, 09:01) *
Посмотрите еще вот здесь, совсем недавно было и как раз в тему:
https://marsohod.org/projects/proekty-dlya-...d3/347-fpga-tdc
https://marsohod.org/11-blog/348-fpga-tdc2

Спасибо, я вот натолкнувшись на эту статью и подумал что DPS мог бы помочь в моей задаче. Надо продумать алгоритм. Крутиться мысль одна, но пока она ещё мало покрутилась. Как докрутиться озвучу её wacko.gif
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 9 2017, 07:58
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 297
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Динамический сдвиг фазы клока PLL конечно поможет, но при условии что все линии выровнены. Алгоритм калибровки описан в доках Xilinx, но для Cyclone V он неприменим. Там идет калибровка каждой линии, для установки клока в центр бита используются блоки IDELAY.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jun 9 2017, 08:04
Сообщение #8


Местный
***

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



Цитата(doom13 @ Jun 9 2017, 10:58) *
Динамический сдвиг фазы клока PLL конечно поможет, но при условии что все линии выровнены. Алгоритм калибровки описан в доках Xilinx, но для Cyclone V он неприменим. Там идет калибровка каждой линии, для установки клока в центр бита используются блоки IDELAY.

В этом то и проблема, что алгоритмы Xilinx не применить к Altera. А в Altera application notes я не нашёл как реализовать постройку фазы. С выравниванием линий проблема. Они кривые все изначально, стандарт на DVI это допускает.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 9 2017, 08:23
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 297
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Что-то подобное должно быть, но для Arria либо Stratix.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jun 9 2017, 08:31
Сообщение #10


Местный
***

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



Цитата(doom13 @ Jun 9 2017, 11:23) *
Что-то подобное должно быть, но для Arria либо Stratix.

Да что-то подобное есть, реализуемое на блоках DPA(Dynamic Phase Alignment), которые есть только в Arria либо Stratix.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jun 13 2017, 13:30
Сообщение #11


Местный
***

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



Итак, мысль в голове докрутилась до следующего алгоритма:
Для динамической подстройки фазы думаю применять DPS(dynamic phase shift).
В соответствии с протоколом DVI после каждой отрисованной линии(строки на экране) следует тестовая последовательность длинной 128 символов.

Изначально сдвиг фазы равен 0.
В течении всей длительности строки анализируем данные с выхода ALTLVDS_RX (по сути обычного дессерилайзера).
Если по истечению периода строки тестовая последовательность не обнаружена, значит возможно 2 варианта почему так произошло:
1. Захватываем данные в неправильной части окна (читай в зоне джиттера).
2. Неправильно принимаем последовательность, т.е необходимо выравнивание принимаемого слова.
Поэтому после того, как тестовая последовательность не обнаружена,производим сдвиг фазы.
И снова анализируем принимаемые данные, и двигаем фазу...

Если после того, как сдвигами фаз был достигнут сдвиг на целый период, но тестовая последовательность так и не найдена, значит проблема не в фазе, а в неправильном приёме тестовой последовательности. Поэтому портом RX_DATA_ALIGN модуля ALTLVDS_RX сдвигаем приём данных на 1 бит, т.е. делаем BIT_SLIP.
И снова начинаем анализировать принимаемые данные и двигать фазу, и сдвигать прием данных, если тестовая последовательность не найдена.

Таким образом достигаем того, что на определённом промежутке сдвига фаз мы всегда находим тестовую последовательность. Далее остаётся просто выставить сдвиг фазы по центру этого промежутка. Ну и потом можно калиброваться уже одновременно с выводом данных. Сейчас пишу автомат, который всё это реализует.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jun 21 2017, 10:24
Сообщение #12


Местный
***

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



Итак, в процессе разработки DPA возник очень важный для меня вопрос.
Можно ли применять в качестве тактового сигнала, сигнал, не имеющий форму меандра, но полученный на PLL.
Eго вид примерно такой:
Код
________/TTTT\___________________________________/TTTT\___________________________________/TTTT\___________________________________


Сообщение отредактировал Flip-fl0p - Jun 21 2017, 16:57
Go to the top of the page
 
+Quote Post
Александр77
сообщение Jun 21 2017, 19:29
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 561
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



Цитата(Flip-fl0p @ Jun 13 2017, 16:30) *
...
Поэтому после того, как тестовая последовательность не обнаружена,производим сдвиг фазы.
И снова анализируем принимаемые данные, и двигаем фазу...
...

Делаю связку двух плат (max10-lite).
Есть кодированная последовательность 8b10b передаваемая по lvds_tx. На приемной стороне связка из lvds_rx и декодера 8b10b.
Передаю в начале К28.5 и пытаюсь подстроиться по ней.
Если работа происходит в пределах одной плис, или между двумя, но при наличии тактового сигнала с выхода lvds_tx - то все работает корректно.
Когда разрываю тактовый сигнал с выходящей плис - синхронизация имеет неустойчивый характер.
И есть внутренняя уверенность в том, что lvds без передачи и приема сигнала тактирования - пустая трата сил.
Go to the top of the page
 
+Quote Post
krux
сообщение Jun 21 2017, 19:40
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 546
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



не тратьте времени.
нормально (робастно) принять TMDS (что из HDMI, что из DVI-D) на cyclone (не важно какой серии) не получится. ну либо получится, но с эффектом "мигалки" типа работает 1 раз из 9.

для приема нужны трансиверы. без вариантов.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jun 21 2017, 20:20
Сообщение #15


Местный
***

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



Цитата(Александр77 @ Jun 21 2017, 22:29) *
Делаю связку двух плат (max10-lite).
Есть кодированная последовательность 8b10b передаваемая по lvds_tx. На приемной стороне связка из lvds_rx и декодера 8b10b.
Передаю в начале К28.5 и пытаюсь подстроиться по ней.
Если работа происходит в пределах одной плис, или между двумя, но при наличии тактового сигнала с выхода lvds_tx - то все работает корректно.
Когда разрываю тактовый сигнал с выходящей плис - синхронизация имеет неустойчивый характер.
И есть внутренняя уверенность в том, что lvds без передачи и приема сигнала тактирования - пустая трата сил.

Сигнал тактирования есть. В DVI есть 4 диф. линии, одна из которых синхросигнал. Я его принимаю, от него запускаю PLL и получаю восстановленный синхросигнал и 10x, для дессерилизации 8b10b.

Цитата
не тратьте времени.
нормально (робастно) принять TMDS (что из HDMI, что из DVI-D) на cyclone (не важно какой серии) не получится. ну либо получится, но с эффектом "мигалки" типа работает 1 раз из 9.

для приема нужны трансиверы. без вариантов.

Есть мысль отказаться от всей затеи принимать TMDS напрямую в cyclone, и применить внешние приёмники. Это было бы самым простым вариантом, я бы сказал даже самым правильным.
Есть мысль просто задать необходимые сдвиги фаз, так сказать угадать их, и получить тестовый рабочий проект. Не думаю что от температурного дрейфа sample window (глаз) уплывет сильно. Тем более частоты приёма не очень и большие. Но это действительно будет мигалка. С одним кабелем работает, с другим кабелем работать не будет.
У Xilinx (xapp460) фактически так-же как у меня происходит подстройка. Единственное принципиальное отличие, что они каналы могут одновременно подстраивать, а в altera придется поочередно подстраивать каналы, т.к PLL не умеет одновременно двигать несколько фаз.

Сообщение отредактировал Flip-fl0p - Jun 21 2017, 20:21
Go to the top of the page
 
+Quote Post

5 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2017 - 20:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01463 секунд с 7
ELECTRONIX ©2004-2016