Перейти к содержанию
    

Констрейны для DDR интерфейса

Есть внешняя мс подключенная к плис.

Эта мс формирует и данные и клок, режим DDR.

Клок поступает на dedicated clk pin плис, данные на обычные IO.

В даташите на мс оговорено что данные появляются на его выходе минимум за 5 нс до любого фронта клока и минимум 5 нс удерживаются после него.

Длина всех проводников одинаковая.

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

Проект работает, но чувство того что чего-то не хватает меня не покидает.

Надо ли какие-то set_input_delay добавить к SDC?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почитайте статьи Дениса Шехалева по sdc - он с примерами доступно объясняет. 

Во например - https://kit-e.ru/fpga/synopsys-design-constraint-yazyk-zadaniya-vremennyh-ogranichenij-na-primere-altera-timequest-chast-3/

Ну и он может и сам объявится и подскажет что непонятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, забыл написать - плис работает на частоте 150 МГц, а с внешней мс может поступать максимум 12 МГц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько помню - в ПЛИС обычные входы могут иметь значительные задержки (емнип около 6 нс), поэтому даже при таком соотношении частот, вероятно, лучше всё же указать в sdc соотношение клока и даных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, zombi said:

Подскажите, на этой картинке все верно нарисовано и записано?

7.thumb.jpg.4893488e073553fac4d76af28e3f1669.jpg

где такую красивую картинку взяли?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, zombi said:

Так на ней всё в порядке?

по холду верно, а по сетапу ИМХО не тот фронт они выбрали. Хуже они не сделали, но физический смысл изменили)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, des00 said:

по сетапу ИМХО не тот фронт они выбрали

А в констрейне 4 -max правильно записали? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, zombi said:

А в констрейне 4 -max правильно записали? 

Насколько понял - эта картинка нарисована исходя из того, что на входе ПЛИС данные сменяются одновременно с фронтом (внешнего) клока (на входе ПЛИС).

У Вас же исходно - клок в середине данных. Т.е. Вам нужно ИМХО прописать задержки по нулям. Ну или в тех пределах, которые соответствуют таймингам конкретной ПЛИС.

Т.е. если 

16 hours ago, zombi said:

данные появляются на его выходе минимум за 5 нс до любого фронта клока и минимум 5 нс удерживаются после него

то можно в некотором окне разрешить Квартусу смещать данные относительно клока. Скажем, если задержать данные максимум на 3 нс, то будете иметь минимум 2 нс на сетап и минимум 5 нс на холд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, zombi said:

А в констрейне 4 -max правильно записали? 

записано верно

3 hours ago, des00 said:

по холду верно, а по сетапу ИМХО не тот фронт они выбрали. Хуже они не сделали, но физический смысл изменили)

поправка, эта фраза относится к tsu/th входного регистра приемника. Если рассматривать выходной регистр передачтика (который и описывается командами set_input_delay), то картинка верная, как и запись. Максимальная задержка влияет на окно по tsu (сколько данные будут стоять до следующего фронта), минимальная на окно по th (сколько данные будут удерживаться после фронта). Логику и математику не обманешь

16 hours ago, zombi said:

Да, забыл написать - плис работает на частоте 150 МГц, а с внешней мс может поступать максимум 12 МГц.

функциональную схему стыка бы нарисовали, где указали путь обработки данных с микросхемы. все было бы намного проще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, des00 said:

Если рассматривать выходной регистр передачтика (который и описывается командами set_input_delay), то картинка верная, как и запись

Спасибо! 

Не знаю - можно ли задавать отрицательные задержки на входе? Если да - то можно разрешить двигать данные в широких пределах, скажем +- 3 нс а то и больше (в зависимости от временнЫх параметров ПЛИС).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, Yuri124 said:

Не знаю - можно ли задавать отрицательные задержки на входе?

задавать можно любые, вы же описываете временные параметры источника сигнала, а там могут быть отрицательные задержки, относительно общего источника тактовой частоты для микросхемы источника и для ПЛИС. Если в документации стоит отрицательное число, то его и нужно задавать (встречается например на ЦАПах когда внутри есть PLL/DLL)

1 minute ago, Yuri124 said:

Если да - то можно разрешить двигать данные в широких пределах, скажем +- 3 нс а то и больше (в зависимости от временнЫх параметров ПЛИС).

у xilinx там максимум полпериода опорной частоты 200/300/400МГц, у альтеры где то также. Поэтому в таких широких пределах врядли. По идее софт сам должен двигать эти задержки, но иногда ему нужна помошь, в виде "молотка и гвоздей", а иногда и "микроскопа", чтобы сделать динамически настраиваемую задержку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 minutes ago, des00 said:

функциональную схему стыка бы нарисовали, где указали путь обработки данных с микросхемы. все было бы намного проще.

Не совсем понял о какой функциональной схеме Вы спрашиваете.

Реализовал так:

по обоим фронтам входного клока 12 МГц защелкиваю данные в регистрах (вот для них и пытаюсь констрейны записать)

стандартным образом частотой 150 МГц выделяю фронт частоты 12 МГц и использую этот сигнал как событие для дальнейших действий на частоте 150

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 minutes ago, des00 said:

Поэтому в таких широких пределах врядли

Спасибо.

Я про величины задержек - чисто формально указать Квартусу, что может с вх. данными делать в этих широких пределах. Если физически это у него не получается - так пусть около нуля и сам оставит.

Просто мысль возникла - что, например, задержка во вх. IO буфере будет, скажем, 5 нс, а на CLK вх. буфере - меньше, например, 3 нс. Вот уже имеем сдвиг данных 2 нс. 

Т.е. сказать Квартусу - что это не страшно, чтобы он не наворачивал обратно эти 2 нс задержки на клок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...