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

 
 
> Проектирование LVDS на ПЛИС Altera, проектирование канала LVDS на Cyclone3
yudu
сообщение Aug 26 2009, 12:57
Сообщение #1





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



Кто проектировал канал LVDS помогите!
Соединяю два плиса Cyclone3 по lvds. Передатчик пашет, а вот на приемнике не могу считать данные. Имею две диф. пары, одна DATA и одна CLK.
Все вроде бы обозначил как надо. Снимаю принятые данные и клок на линейные выводы - точная копия того что давал на передачу. Но вот зацепить
клок внутри приемника не могу, не получается даже сосчитать импульсы. Другим словом в коде сигнал OK меняется раньше чем 64 импульса клока..sad.gif


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;
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Tue
сообщение Aug 23 2017, 14:16
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 7-09-05
Из: Москва
Пользователь №: 8 340



Еще остались непонятными следующие вопросы:

1. Если говорим о передаче (ALTLVDS_TX) нужно ли вместе с tx_out выдавать tx_outclock ?
1.1 Если да, то что за частоту нужно выдавать, откуда ее брать ? Частоту параллельных данных (slow_clock) ?
1.2 Выдавать как I/O Standard LVDS ? Или как обычный, не диф. парой, однополярный ?
1.3 Как вообще констрейнится через sdc такой интерфейс ?

2. По приему (ALTLVDS_RX) тоже подобные вопросы. Нужно ли заводить rx_inclock ?
2.1 Он нужен просто для получения частоты fast_clock (скажем 600Мбит/с -> 600МГц) ? Могу ли для получения такой частоты (а также rx_enable, rx_coreclock) использовать обычную PLL и любую частоту для разгона PLL ?
2.2 Непонятно про сигнал rx_channel_data_align. Дергаю его, но никакого изменения. Если речь идет о многоразрядном LVDS-канале, то каждый разряд rx_channel_data_align отвечает за свою LVDS линию и их можно дергать независимо ли это не так ?
2.3 Тот же вопрос про констрейны через sdc ?


Если у кого-то есть рабочий проект с LVDS-приемником/передатчиком для Cyclone 5, можно выложить тут архив проекта, касающийся только приема-передачи. Вместе с назначениями пинов и их I/O Standard ?
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 24 2017, 07:26
Сообщение #3


В поисках себя...
****

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



Цитата(Tue @ Aug 23 2017, 17:16) *
Еще остались непонятными следующие вопросы:

1. Если говорим о передаче (ALTLVDS_TX) нужно ли вместе с tx_out выдавать tx_outclock ?
1.1 Если да, то что за частоту нужно выдавать, откуда ее брать ? Частоту параллельных данных (slow_clock) ?
1.2 Выдавать как I/O Standard LVDS ? Или как обычный, не диф. парой, однополярный ?
1.3 Как вообще констрейнится через sdc такой интерфейс ?

2. По приему (ALTLVDS_RX) тоже подобные вопросы. Нужно ли заводить rx_inclock ?
2.1 Он нужен просто для получения частоты fast_clock (скажем 600Мбит/с -> 600МГц) ? Могу ли для получения такой частоты (а также rx_enable, rx_coreclock) использовать обычную PLL и любую частоту для разгона PLL ?
2.2 Непонятно про сигнал rx_channel_data_align. Дергаю его, но никакого изменения. Если речь идет о многоразрядном LVDS-канале, то каждый разряд rx_channel_data_align отвечает за свою LVDS линию и их можно дергать независимо ли это не так ?
2.3 Тот же вопрос про констрейны через sdc ?


Если у кого-то есть рабочий проект с LVDS-приемником/передатчиком для Cyclone 5, можно выложить тут архив проекта, касающийся только приема-передачи. Вместе с назначениями пинов и их I/O Standard ?

В модуле ALT_LVDS_RX в режиме с внутренним PLL, порт rx_inclock - это опорная частота PLL. В режиме внешнего PLL (external PLL) порт rx_inclock - частота дессерилизации (учитывайте в каком режиме работает ALT_LVDS_RX. В режиме DDR или SDR. Если в режиме DDR - то частота дессерилизации соответственно в 2 раза ниже).
Сигнал rx_channel_data_align нужен для "обучения" приёмника, подали одиночный сигнал, и приём сдвинулся на 1 бит. Таким образом вы настраиваетесь на правильный порядок приёма бит. При многоканальном приёме каждый rx_channel_data_align отвечает за свой канал. Как я понял их можно дергать независимо друг от друга. Но лучше посмотрите при моделировании.

Сообщение отредактировал Flip-fl0p - Aug 24 2017, 07:29
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Aug 24 2017, 07:57
Сообщение #4


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

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Flip-fl0p @ Aug 24 2017, 10:26) *
В модуле ALT_LVDS_RX в режиме с внутренним PLL, порт rx_inclock - это опорная частота PLL. В режиме внешнего PLL (external PLL) порт rx_inclock - частота дессерилизации (учитывайте в каком режиме работает ALT_LVDS_RX. В режиме DDR или SDR. Если в режиме DDR - то частота дессерилизации соответственно в 2 раза ниже).

Есть проект, в котором используется именно внешняя pll и data_alignment, работоспособность зависит от компиляции к компиляции, т. е. вроде проблемы с таймингами. При попытке посмотреть временные пути столкнулся с проблемой - физика реализована на жестких блоках, анализ закрыт. Как там вообще физика реализована, нужно что-то прописывать во временных ограничениях кроме мультицикла на выходе и частоты на входе pll и ее производных? Временных ошибок нет, анализ unconstraint_patch говорит, что необконстрейненых путей тоже нет.
ЗЫ. Кстати, каким образом принудительно задать режим работы DDR - там настройки такой нет, только с помощью настроек pll?
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 24 2017, 08:20
Сообщение #5


В поисках себя...
****

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



Цитата(bogaev_roman @ Aug 24 2017, 10:57) *
Есть проект, в котором используется именно внешняя pll и data_alignment, работоспособность зависит от компиляции к компиляции, т. е. вроде проблемы с таймингами. При попытке посмотреть временные пути столкнулся с проблемой - физика реализована на жестких блоках, анализ закрыт. Как там вообще физика реализована, нужно что-то прописывать во временных ограничениях кроме мультицикла на выходе и частоты на входе pll и ее производных? Временных ошибок нет, анализ unconstraint_patch говорит, что необконстрейненых путей тоже нет.

Скажу так: В LVDS SERDES Transmitter/Receiver IP Cores User Guide явного указания что-либо констрейнить кроме входного клока и данных я не увидел, хотя если честно я совсем плохой советчик по констрейнам. Изучать боле-менее осмысленно я их стал относительно недавно, для меня они ещё темный лес wacko.gif
Интересно, а можно ли как-то получить доступ к жестким блокам ALT_LVDS_RX ? Уж jочень заманчива мысль получить доступ к IR_FIFO_SERDES, который , как я понял, является "железным" высокоскоростным FIFO.
А в режиме extrenal PLL вы так-же ставили клоковый буфер между PLL и LVDS_RX ?

Сообщение отредактировал Flip-fl0p - Aug 24 2017, 08:21
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Aug 24 2017, 08:25
Сообщение #6


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

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Flip-fl0p @ Aug 24 2017, 11:20) *
А в режиме extrenal PLL вы так-же ставили клоковый буфер между PLL и LVDS_RX ?

Проект не мой, я пока не ковырял подробно, но на сколько я понял там буфер стоит. Тут еще момент появился - все работает со скоростью 600Mb/s в режиме SDR для циклон5, в документации вроде максимальная частота отталкивается от максимально возможной частоты с выход pll, т.е. 550МГц, что меньше требуемой.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 24 2017, 08:34
Сообщение #7


В поисках себя...
****

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



Цитата(bogaev_roman @ Aug 24 2017, 11:25) *
Проект не мой, я пока не ковырял подробно, но на сколько я понял там буфер стоит. Тут еще момент появился - все работает со скоростью 600Mb/s в режиме SDR для циклон5, в документации вроде максимальная частота отталкивается от максимально возможной частоты с выход pll, т.е. 550МГц, что меньше требуемой.

А каков коэффициент дессерелизации ? Может смысл имеет запустить в режиме DDR ? Тогда и частоту можно в 2 раза понизить...
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Aug 24 2017, 08:42
Сообщение #8


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

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Flip-fl0p @ Aug 24 2017, 11:34) *
А каков коэффициент дессерелизации ? Может смысл имеет запустить в режиме DDR ? Тогда и частоту можно в 2 раза понизить...

Я об этом и думаю коэффициент - 10, просто все расчеты велись изначально по этому документу https://www.altera.com/support/support-reso...142011_962.html
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 24 2017, 08:49
Сообщение #9


В поисках себя...
****

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



Цитата(bogaev_roman @ Aug 24 2017, 11:42) *
Я об этом и думаю коэффициент - 10, просто все расчеты велись изначально по этому документу https://www.altera.com/support/support-reso...142011_962.html

В каком режиме работает PLL ? А если вручную фазу частоты приёма крутить, получается стабильный приём ?
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Aug 24 2017, 08:54
Сообщение #10


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

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Flip-fl0p @ Aug 24 2017, 11:49) *
В каком режиме работает PLL ?

Direct mode, есть возможность подключить lvds mode. Что это даст?
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 24 2017, 09:05
Сообщение #11


В поисках себя...
****

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



Цитата(bogaev_roman @ Aug 24 2017, 11:54) *
Direct mode, есть возможность подключить lvds mode. Что это даст?

На сколько я понял там по-разному компенсируется задержка. Точно сказать не могу в чем принципиально отличаются. Где-то я видел хорошее объяснение режимов работы PLL, постараюсь найти и выложить. На сколько я понял правильнее всего применять source-synchronous compensator mode. Но тут я могу ошибаться.

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

Сообщений в этой теме
- 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
- - Алексей_1990   Здравствуйте. Разъясните, пожалуйста, как я могу п...   Feb 10 2016, 12:46
|- - andrew_b   Цитата(Алексей_1990 @ Feb 10 2016, 16:46)...   Feb 11 2016, 05:47
|- - Алексей_1990   Цитата(andrew_b @ Feb 11 2016, 09:47) Дел...   Feb 15 2016, 07:09
|- - andrew_b   Цитата(Алексей_1990 @ Feb 15 2016, 11:09)...   Feb 15 2016, 07:26
|- - Алексей_1990   Цитата(andrew_b @ Feb 15 2016, 11:26) Не ...   Feb 15 2016, 07:51
|- - andrew_b   Цитата(Алексей_1990 @ Feb 15 2016, 11:51)...   Feb 15 2016, 08:02
|- - Алексей_1990   Цитата(andrew_b @ Feb 15 2016, 12:02) А п...   Feb 15 2016, 11:40
|- - Александр77   Цитата(Алексей_1990 @ Feb 15 2016, 14:40)...   Feb 15 2016, 18:36
|- - Алексей_1990   Цитата(Александр77 @ Feb 15 2016, 22:36) ...   Feb 16 2016, 02:57
- - Tue   Пытаюсь разработать два независимых (один туда, др...   Aug 17 2017, 15:10
|- - Flip-fl0p   LVDS у Вас запускается на DDR регистрах. Соответст...   Aug 17 2017, 15:54
- - Tue   Да, обучения я предусмотрел и сделал (в модели). Н...   Aug 17 2017, 16:00
|- - 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


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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 22:11
Рейтинг@Mail.ru


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