|
Xilinx timing constraints: что необходимо для простейшей транзакции?, Передаю между 2-я Virtex6 шину 32 бита на 250 МГц, ошибки в данных |
|
|
|
Jan 31 2014, 10:56
|
Группа: Участник
Сообщений: 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 читал, пока не помогло..
|
|
|
|
|
 |
Ответов
|
Jan 31 2014, 12:15
|
Группа: Участник
Сообщений: 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 поиграть. Но должен же быть некий правильный путь решения проблемы, я как раз думал, что нужно задать какие-то дополнительные констрейнты, чтобы задержки подкручивались автоматически.
|
|
|
|
|
Jan 31 2014, 13:32
|
Местный
  
Группа: Свой
Сообщений: 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 обойтись обычным триггером. Ну а как посчитать времянки - спросите у товарищей на работе.
|
|
|
|
Сообщений в этой теме
Antgol Xilinx timing constraints: что необходимо для простейшей транзакции? Jan 31 2014, 10:56 o_khavin Цитата(Antgol @ Jan 31 2014, 14:56) Здрав... Jan 31 2014, 13:33 Torpeda Цитата(Antgol @ Jan 31 2014, 13:56) Здрав... Jan 31 2014, 15:44 Bad0512 Цитата(Antgol @ Jan 31 2014, 17:56) Здрав... Feb 1 2014, 13:42 Antgol AJIEKCEu, спасибо за ссылки, изучаю мануалы.
Цита... Feb 3 2014, 06:52 Torpeda Цитата(Antgol @ Feb 3 2014, 09:52) Torped... Feb 3 2014, 07:32 SM Цитата(Antgol @ Feb 3 2014, 10:52) на 125... Feb 3 2014, 08:14 Antgol ЦитатаСудя по проявлению проблемы вам скорее всего... Feb 3 2014, 09:33 SM Цитата(Antgol @ Feb 3 2014, 13:33) я удво... Feb 3 2014, 09:46 krux посмотрите ещё xapp856 Feb 3 2014, 09:51 Antgol ЦитатаНу займитесь, значит, упополамливанием с пер... Feb 3 2014, 12:02 SM Цитата(Antgol @ Feb 3 2014, 16:02) SM, а ... Feb 3 2014, 12:04  AJIEKCEu Цитата(SM @ Feb 3 2014, 16:04) Хорошую це... Feb 4 2014, 06:27 Yuris Хороший совет был посчитать Setup/Hold для начала.... Feb 7 2014, 07:58 Corner Вопрос раз - как разведена плата? Все проводники в... Feb 7 2014, 14:26 Antgol Прошу прощения за то, что молча бросил тему - закр... Mar 12 2014, 03:32
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|