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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Проектирование LVDS на ПЛИС Altera, проектирование канала LVDS на Cyclone3
DmitryR
сообщение Aug 27 2009, 13:49
Сообщение #16


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

Группа: Свой
Сообщений: 1 506
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(yudu @ Aug 27 2009, 15:55) *
Cyclon3. На проводах никого кроме 2-х плисов. Скорость передачи 100Мб/c.

Итак, у вас 4 провода (2 пары) между ПЛИС. Берете делаете их как LVCMOS25, и прекрасно делаете все без гейтованного клока. По одной проволке постоянно идет клок, по другой - данные, по третьей - 1 когда данные есть и 0 когда их нет, по четвертой - можно потверждение приема сделать.
Go to the top of the page
 
+Quote Post
nonedub
сообщение Aug 27 2009, 17:10
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 21-06-09
Пользователь №: 50 504



Цитата(DmitryR @ Aug 27 2009, 14:05) *
Ну это же неправда, там контроль передачи ведется через ACK/BCMP.

А причем здесь контроль передачи? Да, он имеется, но это не мешает использовать для передачи gated clock, который молчит, когда линк свободен. То есть, постоянного клока из порта нет. Хотя, согласен, наличие линий управления упрощает интерфейс между ДСП и ПЛИС.

Сообщение отредактировал nonedub - Aug 27 2009, 17:14
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Aug 28 2009, 06:04
Сообщение #18


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

Группа: Свой
Сообщений: 1 506
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Наличие линий управления не просто упрощает интерфейс, оно делает ненужным анализ тактовой частоты на присутствие/молчание, поэтому молчание тактовой влечет в данном случае только одно неудобство - невозможность подать его на PLL, а в остальном это нормальный клок, распространяемый только по выделенным тактовым линиям. А автор пытается тактовую частоту анализировать, что влечет уход клока в логику и известные проблемы с анализом времянки.
Go to the top of the page
 
+Quote Post
yudu
сообщение Aug 28 2009, 11:52
Сообщение #19





Группа: Участник
Сообщений: 5
Регистрация: 26-08-09
Пользователь №: 52 053



Цитата(Kuzmi4 @ Aug 27 2009, 16:38) *
2 yudu - идеи есть всегда biggrin.gif
100Мб/с - это мегабайты или мегабиты ?? Если это мегабайты - что-то у меня есть сомнения, что по одной паре такое можно вытянуть на 3-м циклоне..

На счёт времени запуска PLL - это только в начале, после старта плиски, пару десятков клоков он конфигурироваться будет, а потом выставит валид и будет работать пока питание не пропадёт. Или у вас жёсткие условия начала работы после включения питания ?

И на счёт камня - какой именно циклончик ? а то может у вас клок приходит не на дедикейтед лапы и тогда и с ALTLVDS нужно будет тоже сильно колдовать 07.gif

Как говорится - "..огласите весь список пжалуста.." laughing.gif



Cyclone EP3C5E144. Питание подключено всегда, синхронизация плиса, она же синхронизация данных для lvds, идет пачками.

Цитата(DmitryR @ Aug 28 2009, 10:04) *
Наличие линий управления не просто упрощает интерфейс, оно делает ненужным анализ тактовой частоты на присутствие/молчание, поэтому молчание тактовой влечет в данном случае только одно неудобство - невозможность подать его на PLL, а в остальном это нормальный клок, распространяемый только по выделенным тактовым линиям. А автор пытается тактовую частоту анализировать, что влечет уход клока в логику и известные проблемы с анализом времянки.


Но если их нет. как быть с двумя витыми парами?
уже пробую просто получить меандр на "ok" - обычный 3.3V пин из клока, с входной частотой inclk около 1МГц и не получается
на осциллографе только длительность пачки такая же, а импульсы разной скважности

LIBRARY ieee;
USE ieee.std_logic_1164.all;


-- Entity Declaration

ENTITY priem IS
-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
PORT
(
inclk : IN STD_LOGIC;
indat : IN STD_LOGIC;
data : out STD_LOGIC :='0';-- ëèíèÿ äàííûõ
s1,s2: out STD_LOGIC:='0'
);
-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!
END priem;


-- Architecture Body
ARCHITECTURE priem_architecture OF priem IS

signal ok:STD_LOGIC:='0';


BEGIN

---------------------------------------------------------------------------------------------
process (inclk)
begin
if rising_edge(inclk) then
ok<=not ok;
end if;
end process;
--------------------------------------------------------------------------------------------
s1<=ok;

END priem_architecture;


Цитата(DmitryR @ Aug 27 2009, 17:49) *
Итак, у вас 4 провода (2 пары) между ПЛИС. Берете делаете их как LVCMOS25, и прекрасно делаете все без гейтованного клока. По одной проволке постоянно идет клок, по другой - данные, по третьей - 1 когда данные есть и 0 когда их нет, по четвертой - можно потверждение приема сделать.


lvds нужно однозначно-условие. Как можно по двум диф. парам давать синхрониз. данные на плис вместе с синхронизацией плиса?
Получается нужно ваять десериализатор самому. Главный вопрос как ловить границы (или старт/стопы).
И повторю что заводя диф. пары inclk и indat сквозь плис на два 3.3 V выходных пина, получаю четкие копии и клока и данных отправляемые с передатчика в lvds..
В чем дело пока не понимаю
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Aug 28 2009, 12:59
Сообщение #20


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

Группа: Свой
Сообщений: 1 506
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(yudu @ Aug 28 2009, 15:52) *
синхронизация плиса, она же синхронизация данных для lvds, идет пачками.
Если синхронизацию пачками мы еще делали (SpaceWire называется), то не имея стабильного источника синхронизации самой ПЛИС по-моему за дело браться совсем не стоит. Ну просто поиск проблем на свою голову: CMOS вам не подходит, синхронизации нету...
Go to the top of the page
 
+Quote Post
nonedub
сообщение Aug 28 2009, 17:22
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 21-06-09
Пользователь №: 50 504



Цитата(DmitryR @ Aug 28 2009, 10:04) *
Наличие линий управления не просто упрощает интерфейс, оно делает ненужным анализ тактовой частоты на присутствие/молчание, поэтому молчание тактовой влечет в данном случае только одно неудобство - невозможность подать его на PLL, а в остальном это нормальный клок, распространяемый только по выделенным тактовым линиям. А автор пытается тактовую частоту анализировать, что влечет уход клока в логику и известные проблемы с анализом времянки.

Увы, но наличие _BCMP не избавляет вас от необходимости анализа тактовой частоты на присутствие/молчание для определения начала передачи. Я рассматриваю случай, когда линк-порт ДСП является передатчиком, а ПЛИС - приемником. _BCMP переходит в активное состояние (низкий уровень) только на последних 128 битах блока данных (если, например, используется ДМА).
Go to the top of the page
 
+Quote Post
yudu
сообщение Aug 31 2009, 05:31
Сообщение #22





Группа: Участник
Сообщений: 5
Регистрация: 26-08-09
Пользователь №: 52 053



Цитата(DmitryR @ Aug 28 2009, 16:59) *
Если синхронизацию пачками мы еще делали (SpaceWire называется), то не имея стабильного источника синхронизации самой ПЛИС по-моему за дело браться совсем не стоит. Ну просто поиск проблем на свою голову: CMOS вам не подходит, синхронизации нету...


Кстати сделал этот проект по двум ТТЛ 3.3V проводам, один клок и один данные. Все работает. А диф. пары нет.

Тоесть кроме посылок синхронизированных данных по линииям lvds, нужно отдельно давать синхронизацию для плиса на время этих посылок
или даже чуть раньше. Выбрать еще одну диф. пару и раньше начала посылки запускать синхронизацию? А частоту синхры брать какую?
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Aug 31 2009, 06:01
Сообщение #23


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

Группа: Свой
Сообщений: 1 506
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(yudu @ Aug 31 2009, 09:31) *
Кстати сделал этот проект по двум ТТЛ 3.3V проводам, один клок и один данные. Все работает. А диф. пары нет.
Это вы где-то накривили, ищите. Если просто сменить тип буфера с CMOS на LVDS - разваливаться не должно.
Go to the top of the page
 
+Quote Post
Алексей_1990
сообщение Feb 10 2016, 12:46
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-10-15
Пользователь №: 88 934



Здравствуйте. Разъясните, пожалуйста, как я могу принять 16 битный параллельный код и отправить его на одну lvds пару. При этом использовать желательно altlvds_tx. Предусмотрено ли у этого передатчика подобие каскадного подключения?
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Feb 11 2016, 05:47
Сообщение #25


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

Группа: Свой
Сообщений: 1 800
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Алексей_1990 @ Feb 10 2016, 16:46) *
Здравствуйте. Разъясните, пожалуйста, как я могу принять 16 битный параллельный код и отправить его на одну lvds пару
Делаете преобразователь параллельного кода в последовательный и передаёте.
Цитата
При этом использовать желательно altlvds_tx.
Quartus сделает это за вас, если вы объявите выходные пины как lvds.
Цитата
Предусмотрено ли у этого передатчика подобие каскадного подключения?
Что такое "подобие каскадного подключения" и зачем вам оно нужно?
Go to the top of the page
 
+Quote Post
Алексей_1990
сообщение Feb 15 2016, 07:09
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-10-15
Пользователь №: 88 934



Цитата(andrew_b @ Feb 11 2016, 09:47) *
Делаете преобразователь параллельного кода в последовательный и передаёте.
Quartus сделает это за вас, если вы объявите выходные пины как lvds.
Что такое "подобие каскадного подключения" и зачем вам оно нужно?

Насколько я понял, altlvds_tx может принять 16 бит параллельного кода только, преобразовав его в 2 последовательных канала. А мне бы хотелось получить один канал.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Feb 15 2016, 07:26
Сообщение #27


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

Группа: Свой
Сообщений: 1 800
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Алексей_1990 @ Feb 15 2016, 11:09) *
Насколько я понял, altlvds_tx может принять 16 бит параллельного кода только, преобразовав его в 2 последовательных канала. А мне бы хотелось получить один канал.


Не нужно никаких altlvds_tx.
Загружаете свои 16 bit в сдвиговый регистр, потом сдвигаете. Выход регистра подаёте на ножку, которую констрейните как lvds.
Go to the top of the page
 
+Quote Post
Алексей_1990
сообщение Feb 15 2016, 07:51
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-10-15
Пользователь №: 88 934



Цитата(andrew_b @ Feb 15 2016, 11:26) *
Не нужно никаких altlvds_tx.
Загружаете свои 16 bit в сдвиговый регистр, потом сдвигаете. Выход регистра подаёте на ножку, которую констрейните как lvds.

А сдвиговый регистр потянет битрейт 768 Mgps? То есть параллельные данные идут с частотой 48 МГц. И разрешите ещё вопрос: вы знакомы с ядром custom PHY?
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Feb 15 2016, 08:02
Сообщение #29


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

Группа: Свой
Сообщений: 1 800
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Алексей_1990 @ Feb 15 2016, 11:51) *
А сдвиговый регистр потянет битрейт 768 Mgps? То есть параллельные данные идут с частотой 48 МГц.
А почему вы об этом сразу не сказали? Ещё какие нюансы есть? Плисина какая?
Цитата
И разрешите ещё вопрос: вы знакомы с ядром custom PHY?
Работать с ним не доводилось. Название знаю.
Go to the top of the page
 
+Quote Post
Алексей_1990
сообщение Feb 15 2016, 11:40
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-10-15
Пользователь №: 88 934



Цитата(andrew_b @ Feb 15 2016, 12:02) *
А почему вы об этом сразу не сказали? Ещё какие нюансы есть? Плисина какая?
Работать с ним не доводилось. Название знаю.

Спасибо, что заинтересовались. Так вот, первоначально стояла задача принять асинхронный последовательный сигнал со старт/стоповыми битами. Источником данной последовательности является сериалайзер d59lv18tvv. Скорость потока, если учитывать стартовые и стоповые биты - 960 Mgps. Из этой последовательности интересуют 16 бит информации, которые идут сразу после старт-бита. Всего же между стартом и стопом 18 бит. Верхние два (17 и 18) не используются.
Для решения этой задачи начал разбираться с высокоскоростными аппаратными приемопередатчиками custom PHY. Не вышло, очень много неизвестных параметров.

Теперь облегчили задачу: нужно хотябы для начала принять 16 битный параллельный поток и преобразовать его в последовательность. Скорость параллельного потока 48 МГц, выходной соответственно 769 Mgps. Выходная последовательность нужна lvds. Кристалл Cyclone V 5cgxfc5c6f27c7n. За любую помощь буду благодарен.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st September 2017 - 08:57
Рейтинг@Mail.ru


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