|
Проектирование LVDS на ПЛИС Altera, проектирование канала LVDS на Cyclone3 |
|
|
|
Aug 26 2009, 12:57
|
Группа: Участник
Сообщений: 5
Регистрация: 26-08-09
Пользователь №: 52 053

|
Кто проектировал канал LVDS помогите! Соединяю два плиса Cyclone3 по lvds. Передатчик пашет, а вот на приемнике не могу считать данные. Имею две диф. пары, одна DATA и одна CLK. Все вроде бы обозначил как надо. Снимаю принятые данные и клок на линейные выводы - точная копия того что давал на передачу. Но вот зацепить клок внутри приемника не могу, не получается даже сосчитать импульсы. Другим словом в коде сигнал OK меняется раньше чем 64 импульса клока..  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';-- линия данных buff : out STD_LOGIC_VECTOR(55 downto 0):=x"00000000000000"; --data dly upravlyemogo ustroystva st,s1,s2: out STD_LOGIC:='0'; C : out STD_LOGIC :='0'; EN : out STD_LOGIC_vector(0 to 1):=b"00" ); -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! END priem; -- Architecture Body ARCHITECTURE priem_architecture OF priem IS signal adr:STD_LOGIC_vector (3 downto 0):=x"5";-- АДРЕСС ПРИЕМНИКА signal datbuf:STD_LOGIC_VECTOR(0 to 63):=x"0000000000000000"; -- adres + data signal id,ic:STD_LOGIC:='0'; signal ok,pr_adr,c1:STD_LOGIC:='0'; signal sta:STD_LOGIC:='0'; --сигнал старт-бита / сброс передачи данных BEGIN id<=indat; ic<=inclk; --прием старт-бита / сброс передачи данных --при выполнении условия приема старт-бита --на линии STA появляется импульс --priem start bita --------------------------------------------------------------------------------------------- process (id,ic) variable i: integer:=0; begin if (ic='0') then i:=0; sta<='0'; end if; if ic='1' then if (id='0' and i=0) then i:=1; elsif (id='1' and i=1) then i:=2; elsif (id='0' and i=2) then sta<='1'; end if; end if; end process; --------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------- process (sta,ic) --запись данных variable i: integer:=0; begin if (ic'event and ic='1') then if i<64 then datbuf(i)<=id; i:=i+1; if i=64 then ok<=not ok; end if; end if; end if; if sta='1' then i:=0; end if; end process; --------------------------------------------------------------------------------------------- st<=sta; s1<=ic; s2<=ok; END priem_architecture;
|
|
|
|
|
 |
Ответов
|
Feb 10 2016, 12:46
|
Участник

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

|
Здравствуйте. Разъясните, пожалуйста, как я могу принять 16 битный параллельный код и отправить его на одну lvds пару. При этом использовать желательно altlvds_tx. Предусмотрено ли у этого передатчика подобие каскадного подключения?
|
|
|
|
|
Feb 11 2016, 05:47
|
Профессионал
    
Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757

|
Цитата(Алексей_1990 @ Feb 10 2016, 16:46)  Здравствуйте. Разъясните, пожалуйста, как я могу принять 16 битный параллельный код и отправить его на одну lvds пару Делаете преобразователь параллельного кода в последовательный и передаёте. Цитата При этом использовать желательно altlvds_tx. Quartus сделает это за вас, если вы объявите выходные пины как lvds. Цитата Предусмотрено ли у этого передатчика подобие каскадного подключения? Что такое "подобие каскадного подключения" и зачем вам оно нужно?
|
|
|
|
|
Feb 15 2016, 07:09
|
Участник

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

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

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

|
Цитата(andrew_b @ Feb 15 2016, 11:26)  Не нужно никаких altlvds_tx. Загружаете свои 16 bit в сдвиговый регистр, потом сдвигаете. Выход регистра подаёте на ножку, которую констрейните как lvds. А сдвиговый регистр потянет битрейт 768 Mgps? То есть параллельные данные идут с частотой 48 МГц. И разрешите ещё вопрос: вы знакомы с ядром custom PHY?
|
|
|
|
|
Feb 15 2016, 08:02
|
Профессионал
    
Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757

|
Цитата(Алексей_1990 @ Feb 15 2016, 11:51)  А сдвиговый регистр потянет битрейт 768 Mgps? То есть параллельные данные идут с частотой 48 МГц. А почему вы об этом сразу не сказали? Ещё какие нюансы есть? Плисина какая? Цитата И разрешите ещё вопрос: вы знакомы с ядром custom PHY? Работать с ним не доводилось. Название знаю.
|
|
|
|
|
Feb 15 2016, 11:40
|
Участник

Группа: Участник
Сообщений: 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. За любую помощь буду благодарен.
|
|
|
|
|
Feb 15 2016, 18:36
|
Знающий
   
Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111

|
Цитата(Алексей_1990 @ Feb 15 2016, 14:40)  ...Теперь облегчили задачу: нужно хотябы для начала принять 16 битный параллельный поток и преобразовать его в последовательность. Скорость параллельного потока 48 МГц, выходной соответственно 769 Mgps. Выходная последовательность нужна lvds. А насколько строго должна быть передача по одной паре? Если требование не жесткое, то можно пустить поток по нескольким парам и снизить требования к скорости в единичном канале. Цитата(Алексей_1990 @ Feb 15 2016, 14:40)  Кристалл Cyclone V 5cgxfc5c6f27c7n. Имея циклон с GXB (со скоростями больше 1Gb/s), несколько странно упираться в lvds. Это имеет смысл лишь при занятых приемо-передатчиках.
|
|
|
|
|
Feb 16 2016, 02:57
|
Участник

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

|
Цитата(Александр77 @ Feb 15 2016, 22:36)  А насколько строго должна быть передача по одной паре? Если требование не жесткое, то можно пустить поток по нескольким парам и снизить требования к скорости в единичном канале.
Имея циклон с GXB (со скоростями больше 1Gb/s), несколько странно упираться в lvds. Это имеет смысл лишь при занятых приемо-передатчиках. Дело в том, что эта задача промежуточная. То есть у меня есть ацп с параллельным 16битным выходом, так вот преобразованный последовательный сигнал необходимо подать как раз на тот десириалайзер. Это делается дабы проверить адекватность преобразования параллельного кода в последовательный в плис. Ну и отвечая на вопрос о жёсткости привязки к одному каналу: к сожалению, нужен только один канал.
|
|
|
|
Сообщений в этой теме
yudu Проектирование LVDS на ПЛИС Altera Aug 26 2009, 12:57 Kuzmi4 2 yudu - зачем вам чтото городить своё ? Всё уже у... Aug 26 2009, 13:08 DmitryR Во-первых, почитайте хорошенько книжки по основам ... Aug 26 2009, 14:01  nonedub Цитата(DmitryR @ Aug 26 2009, 18:01) Во-п... Aug 26 2009, 21:15   Shtirlits Цитата(nonedub @ Aug 27 2009, 01:15) А чт... Aug 26 2009, 22:14    des00 Цитата(Shtirlits @ Aug 26 2009, 16:14) А ... Aug 27 2009, 03:18    nonedub Цитата(Shtirlits @ Aug 27 2009, 02:14) А ... Aug 27 2009, 07:28 yudu Цитата(Kuzmi4 @ Aug 26 2009, 17:08) 2 yud... Aug 27 2009, 04:27  DmitryR Цитата(yudu @ Aug 27 2009, 08:27) Все дел... Aug 27 2009, 10:05   nonedub Цитата(DmitryR @ Aug 27 2009, 14:05) Ну э... Aug 27 2009, 17:10    DmitryR Наличие линий управления не просто упрощает интерф... Aug 28 2009, 06:04     nonedub Цитата(DmitryR @ Aug 28 2009, 10:04) Нали... Aug 28 2009, 17:22 Kuzmi4 2 yudu - это конечно всё хорошо, но всё же не ясно... Aug 27 2009, 07:37 Kuzmi4 Если Цитата..на этих двух несчастных проводах неск... Aug 27 2009, 10:53 yudu Цитата(Kuzmi4 @ Aug 27 2009, 14:53) Если ... Aug 27 2009, 11:55  DmitryR Цитата(yudu @ Aug 27 2009, 15:55) Cyclon3... Aug 27 2009, 13:49 SFx PLL в визарде лучше выбирать встроенную в корку AL... Aug 27 2009, 12:33 Kuzmi4 2 yudu - идеи есть всегда
100Мб/с - это мегабай... Aug 27 2009, 12:38 yudu Цитата(Kuzmi4 @ Aug 27 2009, 16:38) 2 yud... Aug 28 2009, 11:52  DmitryR Цитата(yudu @ Aug 28 2009, 15:52) синхрон... Aug 28 2009, 12:59   yudu Цитата(DmitryR @ Aug 28 2009, 16:59) Если... Aug 31 2009, 05:31    DmitryR Цитата(yudu @ Aug 31 2009, 09:31) Кстати ... Aug 31 2009, 06:01 IT_Pavel А вы правильно подключили ножки ПЛИС? Входной клок... Aug 27 2009, 12:42 Tue Пытаюсь разработать два независимых (один туда, др... Aug 17 2017, 15:10 Flip-fl0p LVDS у Вас запускается на DDR регистрах. Соответст... Aug 17 2017, 15:54 Tue Да, обучения я предусмотрел и сделал (в модели). Н... Aug 17 2017, 16:00 Tue Еще остались непонятными следующие вопросы:
1. Ес... Aug 23 2017, 14:16 Flip-fl0p Цитата(Tue @ Aug 23 2017, 17:16) Еще оста... Aug 24 2017, 07:26  bogaev_roman Цитата(Flip-fl0p @ Aug 24 2017, 10:2... Aug 24 2017, 07:57   Flip-fl0p Цитата(bogaev_roman @ Aug 24 2017, 10:57)... Aug 24 2017, 08:20    bogaev_roman Цитата(Flip-fl0p @ Aug 24 2017, 11:2... Aug 24 2017, 08:25     Flip-fl0p Цитата(bogaev_roman @ Aug 24 2017, 11:25)... Aug 24 2017, 08:34      bogaev_roman Цитата(Flip-fl0p @ Aug 24 2017, 11:3... Aug 24 2017, 08:42       Flip-fl0p Цитата(bogaev_roman @ Aug 24 2017, 11:42)... Aug 24 2017, 08:49        bogaev_roman Цитата(Flip-fl0p @ Aug 24 2017, 11:4... Aug 24 2017, 08:54         Flip-fl0p Цитата(bogaev_roman @ Aug 24 2017, 11:54)... Aug 24 2017, 09:05  Tue Цитата(Flip-fl0p @ Aug 24 2017, 10:2... Aug 24 2017, 12:34   Flip-fl0p Цитата(Tue @ Aug 24 2017, 15:34) Это поня... Aug 24 2017, 13:36    Tue Цитата(Flip-fl0p @ Aug 24 2017, 16:3... Aug 25 2017, 06:21 Magnum А на какое расстояние надо передавать данные? Aug 25 2017, 05:56 Magnum ЦитатаЕсли для rx_inclock меняю I/O Standard на 2.... Aug 25 2017, 06:34 Tue Я говорил об установлении стандарта ввода-вывода п... Aug 25 2017, 07:35 Magnum А, невнимательно прочитал. Для LVDS, есть некоторы... Aug 25 2017, 08:10
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|