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

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

10 minutes ago, zombi said:

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

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

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

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

схему реализации ввода интерфейса и стыка с системой. но в целом, если вы все равно работаете на 150МГц, то зачем вообще вся кухня с дополнительной тактовой, двумя фронтами, защелками, констрейнами и перекладкой в домен 150МГц. Данные через регистр на 150МГц, тактовую через выделитель двух фронтов, настройка на порты false path.  и 12МГц, это период 8мкс, в ддре 4мкс. 5нс это такой пшик на этом фоне.

5 minutes ago, Yuri124 said:

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

задержки на пинах и разводке он сам посчитает как надо, попробудет подобрать значение IDELAY, поставит такое что дает минимум ошибки. ЕМНП на циклонах там очень грубая задержка, гибкая есть на арии и стратиксе, но все же в неболших пределах.

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


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

5 minutes ago, des00 said:

зачем вообще вся кухня с дополнительной тактовой

:wacko2: Вообще Вас не понял.

8.thumb.jpg.8331c30495ec018e248719233de29ac4.jpg

на диаграмме период 90 нс, tDS = tDH = 5 нс

период 150 МГц = 6.66 нс

кажется Вы путаете что 12 МГц это 8мкс

 

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


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

Господа подскажите, правильно ли я организовал захват шины и передачу в 150 мегагерцовый домен?

Или нужно как-то иначе сделать?

И на констрейны гляньте плиз.

create_clock -period 90.0 -name DST [get_ports DST]
set_input_delay -clock DST -max 40.0 [get_ports HD[*]]
set_input_delay -clock DST -min  5.0 [get_ports HD[*]]
set_input_delay -clock DST -max 40.0 [get_ports HD[*]] -clock_fall -add_delay
set_input_delay -clock DST -min  5.0 [get_ports HD[*]] -clock_fall -add_delay

 

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


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

43 minutes ago, zombi said:

max 40.0

 

43 minutes ago, zombi said:

-min 5.0

Что-то Вы, как мне кажется, широко хватили. У Вас гарантированно  данные существуют за 5 нс до фронта клока 12 МГц и 5 нс после него. 

Вы требуете двигать минимум 5 нс. Т.е Вы хотите гарантированно получить setup 0.

Это первое. 

Второе - а что там в даташите имеется за пределами этих +-5 нс от клока? Вероятно - мусор? И Вы хотите на этот мусор сдвинуть клок или что, не понимаю.

Третье - если бы даже предположить существование данных в этом диапазоне - Вы рискуете, что Квартус один бит подвинет на одно значение, а другой - на другое. И тем самым захваченное слово может состоять из разных бит соседних слов.

Я бы во-первых, посмотрел по документации - сколько все же допустимо для setup и hold.

А потом - разрешил бы двигать относительно фронта и спада в вычисленном окне.

Т.е. при setup 1 нс и hold 0.5 нс   то max = (плюс 4), а min = (минус 4,5). Как-то так, если не ошибся. [можно еще какой-то запасец, например, 0,2 нс добавить к данным из даташита].

А после синтеза проверить, что получилось в реальности.

Изменено пользователем Yuri124

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


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

4 часа назад, zombi сказал:

Вообще Вас не понял.

Вам говорят, что клок, сопровождающий данные,  у вас всего лишь 12 МГц, что в 12 раз меньше внутренней тактовой FPGA (150 МГц). При таком раскладе использовать 12 МГц как клок смысла нет. Выделите у этого низкого клока фронты вашей высокой тактовой и защёлкивайте по этим стробам данные.

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


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

30 minutes ago, andrew_b said:

Выделите у этого низкого клока фронты вашей высокой тактовой и защёлкивайте по этим стробам данные.

И на какое максимальное время может опоздать выделенный фронт и последующий строб частоты 150 относительно строба внешней частоты 12 ?

1 hour ago, Yuri124 said:

Что-то Вы, как мне кажется, широко хватили.

Что значит широко???

Я спросил всё ли верно и привёл картинку (для SDR режима, но какая разница) на которой диаграмма с чётко и однозначно указанными интервалами и соответствующие этой диаграмме констрейны.

Мне ответили что на картинке всё правильно.

Я написал констрейны под свои времянки, и теперь мне говорят что что-то слишком широко!

 

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


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

45 minutes ago, andrew_b said:

Выделите у этого низкого клока фронты вашей высокой тактовой и защёлкивайте по этим стробам данные.

Проблема, как понимаю - в том, что 1) 12 МГц в реальности 24 МГц (из-за  DDR) - но это не самое главное :)

 2) окно для захвата данных всего +-5 нс . Т.е. шириной всего 10 нс. А тактовая 150 МГц - период целых почти 7 нс.

 

 

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


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

12 минут назад, zombi сказал:

И на какое максимальное время может опоздать выделенный фронт и последующий строб частоты 150 относительно строба внешней частоты 12 ?

Выделение фронта занимает три (максимум четыре такта) клока 150 МГц.

Но поскольку у вас данные стабильны в узком окне (всего по 5 нс до и после фронта), то такой метод не подойдёт.

 

Обычно передача в другой домен делается через FIFO. Но в данном случае проще сделать через то же выделение клока, но только после входных регистров.

Только что, Yuri124 сказал:

окно для захвата данных всего +-5 нс

Да я уже понял.

Надо дочитывать тему до конца, прежде чем отвечать.

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


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

2 minutes ago, Yuri124 said:

12 МГц в реальности 24 МГц (из-за  DDR) - но это не самое главное :)

Нет, 12 мегагерц оно и в Африке и в реальности 12

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


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

18 minutes ago, zombi said:

Я написал констрейны под свои времянки, и теперь мне говорят что что-то слишком широко!

В первом посту топика Вы написали:

Quote

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

Т.е. валидные данные существуют в пределах +-5 нс от клока. Какие при этом 40 нс допустимого сдвига клока относительно данных?!

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


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

2 minutes ago, andrew_b said:

Но в данном случае проще сделать через то же выделение клока, но только после входных регистров.

Спасибо Кэп! 

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


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

9 minutes ago, andrew_b said:

Надо дочитывать тему до конца, прежде чем отвечать.

простите, эта реплика адресована мне?

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


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

6 minutes ago, Yuri124 said:

Какие при этом 40 нс допустимого сдвига клока относительно данных?!

Толи я чего не понимаю (что скорее всего), толи лыжи не едут!

Можете чётко и однозначно ответить на вопрос :

что означает параметр -max в констрейне set_input_delay?

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


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

Только что, Yuri124 сказал:

простите, эта реплика адресована мне?

Нет, это я себе.

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


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

4 minutes ago, zombi said:

чётко и однозначно ответить

однозначный ответ вижу в документе

https://www.intel.com/content/www/us/en/programmable/quartushelp/13.0/mergedProjects/tafs/tafs/tcl_pkg_sdc_ver_1.5_cmd_set_input_delay.htm

 

Quote

 

set_input_delay  ... 


Specifies the data arrival times at the specified input ports relative
the clock specified by the -clock option

 

Quote

 

-max

Applies value as maximum data arrival time

-min

Applies value as minimum data arrival time

 

А вот насколько он четкий...

Похоже, что самому не нужно учитывать времянку ПЛИС  - т.к. эта sdc команда описывает появление данных относительно клока снаружи ПЛИС, и синтезатор относительно этих данных сам учтет setup и hold.

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


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

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

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

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

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

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

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

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

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

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