|
Временные констраины синхронных интерфейсов, Что надо и не надо констраинить и как это делать |
|
|
|
Nov 18 2015, 07:47
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Всем привет!
Имеем SPI интерфейс и синхронный интерфейс с шинной данных.
FPGA данные по SPI принимает - передает как мастер, и пробрасывает через себя (от внешнего мастера, внешнему слейву), подменяя некоторые данные.
Интересует как это все правильно в необходимой степени законстраинить, пусть будет для Xilinx.
1. Для выходных сигналов я могу написать констраин OFFSET = OUT 10 ns AFTER "global_clk" REFERENCE_PIN "spi_clk"; тут все понятно, я хоть и пишу относительно входного клока, но указывая опорный пин, все пересчитается для него и все счастливы. 1.1 что делать с входными сигналами? Входного то клока относительно которого написать констраин нету! Формально мне надо обозначит путь данных от внешней ноги до защелкивающего регистра, с учетом пути данных от выходного клокового регистра. То есть когда я меняю регистр управляющий клоком из 1 в 0, через какое-то время внешнее устройство увидит этот сигнал, выставит по нему данные, и данные попадут на вход регистра приемника.
Вот как такое правильно описать? Пробовал написать FROM:TO от FFs до PADs и обратно, но в таком раскладе не учитывается разница между временем прихода клоков на выходной регистр и входной.
2. При пробросе данных возникает проблема и с выходными данными. Мне надо чтобы внешний мастер общался с внешним слейвом, а я иногда влезал в этот обмен и подменял данные.
Тут уже нет опорного выходного клока, я формирую и клок и данные, копируя поведение мастера, и может быть такая штука. Я защелкиваю данные в регистре выходных данных, и данные лезут наружу. Потом я защелкиваю клок в регистре, и они опять же идет наружу. Я могу обозначить время от регистра до ноги, но я опять не могу задать разницу между клоками этих регистров, и теоретически может так оказаться что сигнал клока придет не после, а до данных. И вот что блин с этим всем делать?
Какова вообще в цифрах может набегать разница во времени, когда поднимается клок на разных регистрах?
3. Ну и на закуску, если у нас не SPI а параллельный синхронный интерфейс. Тут же надо еще следить за тем чтобы шина не расползлась до клока. То есть если даже есть какой-то способ руками учесть разницу прохождения клока между 2 регистрами, то для шины это надо будет учесть для значительно большего числа регистров и ручные способы уже недопустимы.
Вот собственно такие мысли меня одолевают.... Кто что посоветует?
|
|
|
|
|
 |
Ответов
|
Nov 18 2015, 11:37
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Даже если забыть вообще о прокси. Для медленных SPI где между выставлением и захватом данных проходит вечность проблем нет, а для быстрых она либо есть, либо я ее придумал.
Реальность такова, если смотреть на картинку в момент GCLK2 наружу лезет клок, через T_out оно приходит на слейв, через TOut + TSlave появляются данные, через TOut + TSlave + TIn данные приходят обратно. Если T_GCLK2 + (TOut + TSlave + TIn) - T_GCLK1 меньше периода клока, все получиться, если больше не получится. А у меня нет инструмента позволяющего учесть T_GCLK2 - T_GCLK1, то есть разницу между клоками на 1 и 2 триггере. TOut, TIn я могу задать, TSLave - знаю из документации, А оценки разницы клоков нету, и в этих констраинах она не учитывается...
OFFSET IN предполагает задачу времянки относительно внешнего клового сигнала, а не внутреннего который схема генерит сама...
|
|
|
|
|
Nov 18 2015, 11:55
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Приветствую! Цитата(Golikov A. @ Nov 18 2015, 13:37)  ... TSLave - знаю из документации, А оценки разницы клоков нету, и в этих констраинах она не учитывается... Учитывается - skew для клокового дерева учитывается автоматом при контроле constains - посмотрите любой time репорт. Код Clock Path Skew: -0.218ns (DCD - SCD + CPR) Destination Clock Delay (DCD): 1.817ns = ( 7.971 - 6.154 ) Source Clock Delay (SCD): 2.192ns Clock Pessimism Removal (CPR): 0.157ns Clock Uncertainty: 0.056ns ((TSJ^2 + DJ^2)^1/2) / 2 + PE Total System Jitter (TSJ): 0.071ns Discrete Jitter (DJ): 0.086ns Phase Error (PE): 0.000ns Успехов! Rob.
|
|
|
|
Сообщений в этой теме
Golikov A. Временные констраины синхронных интерфейсов Nov 18 2015, 07:47 Golikov A. картинка для увеличения понятности Nov 18 2015, 08:50 Lerk Отвечу вообще не по теме.
Если вы хотите работать ... Nov 18 2015, 11:04 Golikov A. Не могу с Вами согласиться так как это только если... Nov 18 2015, 12:36 Golikov A. А есть какие-то данные сколько clock skew через ве... Nov 19 2015, 08:32 Maverick Цитата(Golikov A. @ Nov 19 2015, 10:32)
... Nov 19 2015, 08:42 RobFPGA Приветствую!
Цитата(Golikov A. @ Nov 19 ... Nov 19 2015, 09:06 Golikov A. Да но только мастер SPI может запросить данные и ж... Nov 19 2015, 09:01 Golikov A. А как пользоваться этой табличкой?
Вот я взял да... Nov 19 2015, 09:43 Mad_max А что насчет того чтобы для двух регистров (t1 и t... Nov 19 2015, 10:30 Golikov A. Это как я понимаю позволит минимизировать время вв... Nov 19 2015, 10:55 Lerk Цитата(Golikov A. @ Nov 19 2015, 13:55) Э... Nov 20 2015, 11:55
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|