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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Xilinx timing constraints: что необходимо для простейшей транзакции?, Передаю между 2-я Virtex6 шину 32 бита на 250 МГц, ошибки в данных
Antgol
сообщение Jan 31 2014, 10:56
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 6-03-07
Пользователь №: 25 920



Здравствуйте!

Глобальный вопрос такой: между 2-я Xilinx FPGA передаются данные и клок (не дифференциальный), по которому эти данные меняются; какие при этом должны быть заданы constraints?

Теперь опишу, в чем собственно проблема. Я передаю данные из Virtex 6 xc6vlx75t-2ff784 в Virtex 6 vc6clx760-1ff1760 (из дочерней карты с высокоскоростным трансивером в плату HAPS, одна плата вставляется в другую через разъем HapsTrack II). Данные меняются по клоку 250 МГц (он генерируется хард-ядром PCI-Express из референсного клока 100 МГц). Передается шина данных Data 32 бита, сигнал валидности Valid и сам клок Clk. На выходе одной ПЛИС и на входе другой использую регистры для Data и Valid по rising edge Clk (чтобы их можно было разместить рядом с пинами для минимизации задержки). Клок передается по пинам, подсоединенным к клоковым цепям каждой ПЛИС. Использую вот такой constraint в каждой ПЛИС:

NET "clk" TNM_NET = "clk";
TIMESPEC "TS_clk" = PERIOD "clk" 250 MHz HIGH 50.00%;

Проблема в том, что данные иногда приходят битые, например, х“97 2B FF FF” вместо х“97 6F FF FF”. Ошибки возникают на разных битовых позициях, похоже на рассогласование данных и клока на приемной стороне.
Нужно ли использовать какие-либо дополнительные constraints на сигналы Data и Valid, что-то вроде OFFSET IN или From-to? Ситуация-то вроде бы простейшая и вполне банальная. Книжку “Constraints Guide” Xilinx читал, пока не помогло..
Go to the top of the page
 
+Quote Post
AJIEKCEu
сообщение Jan 31 2014, 11:43
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 7-12-05
Пользователь №: 11 917



Пробовали считать выполнение условий Setup-Hold на входе?

Вариант для ленивых (но не совсем концептуально верный) - примите CLK на IDELAY и попробуйте поиграться с задержкой.
Go to the top of the page
 
+Quote Post
Antgol
сообщение Jan 31 2014, 12:15
Сообщение #3





Группа: Участник
Сообщений: 11
Регистрация: 6-03-07
Пользователь №: 25 920



Цитата(AJIEKCEu @ Jan 31 2014, 15:43) *
Пробовали считать выполнение условий Setup-Hold на входе?

А можно подробнее, что Вы имеете в виду под "считать"?
ISE говорит, что All constraints are met, в Timing Report на TS_Clk все холды и сетапы маленькие

Цитата(AJIEKCEu @ Jan 31 2014, 15:43) *
Вариант для ленивых (но не совсем концептуально верный) - примите CLK на IDELAY и попробуйте поиграться с задержкой.


А как это сделать по-правильному? Я понимаю, что можно поиграть с задержкой, я это делал путем задания разной частоты TIMESPEC "TS_clk" = PERIOD "clk" ХХХ MHz HIGH 50.00%; при этом, как я понимаю, задержка автоматически подкручивается во входном клоковом буфере. Что интересно, ошибок меньше, если задать частоту 125 МГц, а не реальную 250 МГц. Можно и с IDELAY поиграть. Но должен же быть некий правильный путь решения проблемы, я как раз думал, что нужно задать какие-то дополнительные констрейнты, чтобы задержки подкручивались автоматически.
Go to the top of the page
 
+Quote Post
AJIEKCEu
сообщение Jan 31 2014, 13:32
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 7-12-05
Пользователь №: 11 917



Цитата(Antgol @ Jan 31 2014, 16:15) *
А можно подробнее, что Вы имеете в виду под "считать"?

У вас есть выходные триггера, выходной синхросигнал (на первом ПЛИСе), есть среда передачи. Распространение сигналов занимает некоторое время, появляется разброс. Есть приемный триггер (во втором ПЛИСе). Что такое setup-hold вы наверное знаете. В передаче внутри ПЛИС за выполнением Setup-hold следит Xilinx и выводит отчет. Снаружи - должны посчитать вы.

Цитата(Antgol @ Jan 31 2014, 16:15) *
ISE говорит, что All constraints are met, в Timing Report на TS_Clk все холды и сетапы маленькие

ISE может посчитать ВНУТРИ ПЛИС. Но о вашей линии передачи снаружи у него нет данных.


Цитата(Antgol @ Jan 31 2014, 16:15) *
А как это сделать по-правильному? Я понимаю, что можно поиграть с задержкой, я это делал путем задания разной частоты TIMESPEC "TS_clk" = PERIOD "clk" ХХХ MHz HIGH 50.00%; при этом, как я понимаю, задержка автоматически подкручивается во входном клоковом буфере. Что интересно, ошибок меньше, если задать частоту 125 МГц, а не реальную 250 МГц. Можно и с IDELAY поиграть. Но должен же быть некий правильный путь решения проблемы, я как раз думал, что нужно задать какие-то дополнительные констрейнты, чтобы задержки подкручивались автоматически.


Возможно(хотя я не уверен), если задать правильный констрейн (пусть гуру сделают уточнение) ISE за вас накрутит линию приема через логику. Но я практически уверен, что никакой IDELAY он не добавит. И реализованная им схема (в случае если он умеет сам докручивать времянки) будет не совсем корректна (неоптимальна).

Поэтому:
http://www.xilinx.com/support/documentatio...uides/ug362.pdf (ключевое слово bufio)
http://www.xilinx.com/support/documentatio...uides/ug361.pdf (ключевое слово IODELAYE1)
http://www.xilinx.com/support/documentatio...heets/ds152.pdf (ключевое слова TPHCS)
В идеале, вам надо реализовать что-то вроде Рисунка 3-7 во 2-м документе. Только можно вместо ISERDES обойтись обычным триггером.

Ну а как посчитать времянки - спросите у товарищей на работе.
Go to the top of the page
 
+Quote Post
o_khavin
сообщение Jan 31 2014, 13:33
Сообщение #5


Местный
***

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



Цитата(Antgol @ Jan 31 2014, 14:56) *
Здравствуйте!

Глобальный вопрос такой: между 2-я Xilinx FPGA передаются данные и клок (не дифференциальный), по которому эти данные меняются; какие при этом должны быть заданы constraints?
Книжку “Constraints Guide” Xilinx читал, пока не помогло..

Вас не смущает, что данные бегут между чипами не в вакууме, а по реальным платам и разъёмам? Как там с разбегом сигналов и т.п.?
Вам нужно вместо чтения Constraints Guide поискать apnotes на синхронную передачу данных между чипами.

P.S. Ещё и клок не дифференциальный. wacko.gif
Go to the top of the page
 
+Quote Post
Torpeda
сообщение Jan 31 2014, 15:44
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424



Цитата(Antgol @ Jan 31 2014, 13:56) *
Здравствуйте!

Глобальный вопрос такой: между 2-я Xilinx FPGA передаются данные и клок (не дифференциальный), по которому эти данные меняются; какие при этом должны быть заданы constraints?

Теперь опишу, в чем собственно проблема. Я передаю данные из Virtex 6 xc6vlx75t-2ff784 в Virtex 6 vc6clx760-1ff1760 (из дочерней карты с высокоскоростным трансивером в плату HAPS, одна плата вставляется в другую через разъем HapsTrack II). Данные меняются по клоку 250 МГц (он генерируется хард-ядром PCI-Express из референсного клока 100 МГц). Передается шина данных Data 32 бита, сигнал валидности Valid и сам клок Clk. На выходе одной ПЛИС и на входе другой использую регистры для Data и Valid по rising edge Clk (чтобы их можно было разместить рядом с пинами для минимизации задержки). Клок передается по пинам, подсоединенным к клоковым цепям каждой ПЛИС. Использую вот такой constraint в каждой ПЛИС:

NET "clk" TNM_NET = "clk";
TIMESPEC "TS_clk" = PERIOD "clk" 250 MHz HIGH 50.00%;

Проблема в том, что данные иногда приходят битые, например, х“97 2B FF FF” вместо х“97 6F FF FF”. Ошибки возникают на разных битовых позициях, похоже на рассогласование данных и клока на приемной стороне.
Нужно ли использовать какие-либо дополнительные constraints на сигналы Data и Valid, что-то вроде OFFSET IN или From-to? Ситуация-то вроде бы простейшая и вполне банальная. Книжку “Constraints Guide” Xilinx читал, пока не помогло..

1) STA констрейны нужны для того чтобы заставить тул выполнить необходимые вам условия.
Для этого надо сначала составить список этих условий.
Неработоспособность устройства по неизвестным причинам не есть основанием для создания констрейнов.
2) дпаже если вы никаких констрейнов не задали, тул всёравно считает все сигналы синхронными и применяет дефолтные констрейны к ним.
4) В вашем случае алгоритм действия такой:
- При помощи осцилографа понять почему данные приходят битыми (или задержки в линии не те, или помехи возникают из-за рассогласования линии передачи или кростолка и.т.д.)
- Если проблема именно в задержках в линии передачи (не согласованность данных и клоков и.т.п) то указать, что именно надо изменить и почему дефолтные правила STA не помогли.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Feb 1 2014, 13:42
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(Antgol @ Jan 31 2014, 17:56) *
Здравствуйте!

Глобальный вопрос такой: между 2-я Xilinx FPGA передаются данные и клок (не дифференциальный), по которому эти данные меняются; какие при этом должны быть заданы constraints?

Теперь опишу, в чем собственно проблема. Я передаю данные из Virtex 6 xc6vlx75t-2ff784 в Virtex 6 vc6clx760-1ff1760 (из дочерней карты с высокоскоростным трансивером в плату HAPS, одна плата вставляется в другую через разъем HapsTrack II). Данные меняются по клоку 250 МГц (он генерируется хард-ядром PCI-Express из референсного клока 100 МГц). Передается шина данных Data 32 бита, сигнал валидности Valid и сам клок Clk. На выходе одной ПЛИС и на входе другой использую регистры для Data и Valid по rising edge Clk (чтобы их можно было разместить рядом с пинами для минимизации задержки). Клок передается по пинам, подсоединенным к клоковым цепям каждой ПЛИС. Использую вот такой constraint в каждой ПЛИС:

NET "clk" TNM_NET = "clk";
TIMESPEC "TS_clk" = PERIOD "clk" 250 MHz HIGH 50.00%;

Проблема в том, что данные иногда приходят битые, например, х”97 2B FF FF” вместо х”97 6F FF FF”. Ошибки возникают на разных битовых позициях, похоже на рассогласование данных и клока на приемной стороне.
Нужно ли использовать какие-либо дополнительные constraints на сигналы Data и Valid, что-то вроде OFFSET IN или From-to? Ситуация-то вроде бы простейшая и вполне банальная. Книжку ”Constraints Guide” Xilinx читал, пока не помогло..

Парочка уточняющих вопросов :
1. Как выводили клок из первого виртекса? Тупо assign pin = clk или с помощью DDR примитива?
2. Какой voltage standard пользуете?
3. Надеюсь, на втором виртексе клоки завдены на специальный клоковый вход?

Ну и пара мыслей на тему :
1. 250 МГц для single ended стандартов дюже много, тем более что вы всё это через разъём тащите. Напрашивается DDR LVDS, однако я не уверен что теперь вам это удастся сделать без переделки железа.
2. В любом раскладе предстоят танцы с IODELAY по входу данных, лучше бы подстройку задержек сделать динамической, хотя тут вам решать.
Go to the top of the page
 
+Quote Post
Antgol
сообщение Feb 3 2014, 06:52
Сообщение #8





Группа: Участник
Сообщений: 11
Регистрация: 6-03-07
Пользователь №: 25 920



AJIEKCEu, спасибо за ссылки, изучаю мануалы.

Цитата
Вас не смущает, что данные бегут между чипами не в вакууме, а по реальным платам и разъёмам? Как там с разбегом сигналов и т.п.?

o_khavin, немного, конечно, смущает, sm.gif но разброс, если верить мануалам, всего лишь +/- 84 ps

Забыл про это написать, каюсь. В одной плате согласно мануалу задержка FPGA-разъем 497+/-84 ps, в другой - 647+/-0.3 ps

Цитата
P.S. Ещё и клок не дифференциальный.

Могу переделать в дифференциальный. Мне казалось, что частота в общем-то еще не столь велика, можно и обычный использовать.

Цитата
1) STA констрейны нужны для того чтобы заставить тул выполнить необходимые вам условия.
Для этого надо сначала составить список этих условий.
Неработоспособность устройства по неизвестным причинам не есть основанием для создания констрейнов.

Torpeda, это понятно. Мой вопрос был такой: в той стандартной ситуации, что я описал, какие нужно задать стандартные требования.

Цитата
1. Как выводили клок из первого виртекса? Тупо assign pin = clk или с помощью DDR примитива?

Bad0512, да, тупо в .ucf прописал соответствие сигнала с пином (специальным клоковым пином)..

Цитата
2. Какой voltage standard пользуете?

Для интерфейсного разъема жестко прописан 2.5 В, используется LVCMOS25

Цитата
3. Надеюсь, на втором виртексе клоки завдены на специальный клоковый вход?

Да

Цитата
1. 250 МГц для single ended стандартов дюже много, тем более что вы всё это через разъём тащите. Напрашивается DDR LVDS, однако я не уверен что теперь вам это удастся сделать без переделки железа.

Я могу переделать клок под диф. пару без особых проблем, она там предусмотрена. Но вот всю шину данных переделать не получится физически.

Цитата
2. В любом раскладе предстоят танцы с IODELAY по входу данных, лучше бы подстройку задержек сделать динамической, хотя тут вам решать.

Ок, понятно..


Всем большое спасибо за ответы. Я, по всей видимости, несколько недооценил сложность задачи - казалось, что все тривиально и должно сразу заработать. Ну и плюс я сперва заводил более медленный PCI-Express, который генерировал юзер-клок 125 МГц - на 125 передача между чипами, собственно, сразу и заработала без проблем. При удвоении частоты же, наверное, придется поразбираться с клоковыми ресурсами Virtex 6.
Go to the top of the page
 
+Quote Post
Torpeda
сообщение Feb 3 2014, 07:32
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424



Цитата(Antgol @ Feb 3 2014, 09:52) *
Torpeda, это понятно. Мой вопрос был такой: в той стандартной ситуации, что я описал, какие нужно задать стандартные требования.

Судя по проявлению проблемы вам скорее всего надо решить проблему с согласованием линий передачи.
Относительно констрейнов... сложно ответить не зная шинного протокола, может вам и установок поумольчанию достаточно....
Может надо external delay (set_out_delay) задать....
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 3 2014, 08:14
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Antgol @ Feb 3 2014, 10:52) *
на 125 передача между чипами, собственно, сразу и заработала без проблем. При удвоении частоты же, наверное, придется поразбираться с клоковыми ресурсами Virtex 6.


А Вы клок не удваивайте, удвойте только частоту данных - DDR
Go to the top of the page
 
+Quote Post
Antgol
сообщение Feb 3 2014, 09:33
Сообщение #11





Группа: Участник
Сообщений: 11
Регистрация: 6-03-07
Пользователь №: 25 920



Цитата
Судя по проявлению проблемы вам скорее всего надо решить проблему с согласованием линий передачи.
Относительно констрейнов... сложно ответить не зная шинного протокола, может вам и установок поумольчанию достаточно....
Может надо external delay (set_out_delay) задать....


Torpeda, а что Вы подразумеваете под шинным протоколом? Про external delay (set_out_delay) почитаю

Цитата
А Вы клок не удваивайте, удвойте только частоту данных - DDR

SM, Вы не совсем правильно поняли, я удвоением частоты не занимаюсь, клок генерируется в блоке PCI-Express, просто для разной конфигурации PCI-Express он генерируется разный.
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 3 2014, 09:46
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Antgol @ Feb 3 2014, 13:33) *
я удвоением частоты не занимаюсь

Ну займитесь, значит, упополамливанием с переходом SDR->DDR sm.gif
Go to the top of the page
 
+Quote Post
krux
сообщение Feb 3 2014, 09:51
Сообщение #13


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

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



посмотрите ещё xapp856


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Antgol
сообщение Feb 3 2014, 12:02
Сообщение #14





Группа: Участник
Сообщений: 11
Регистрация: 6-03-07
Пользователь №: 25 920



Цитата
Ну займитесь, значит, упополамливанием с переходом SDR->DDR

SM, а какие приемущества это даст? sm.gif

Цитата
посмотрите ещё xapp856

krux, ок, спасибо, посмотрю
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 3 2014, 12:04
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Antgol @ Feb 3 2014, 16:02) *
SM, а какие приемущества это даст? sm.gif

Хорошую целостность сигнала клока для не-дифф линии.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th June 2025 - 06:47
Рейтинг@Mail.ru


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