des00 25 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 10 minutes ago, zombi said: Не совсем понял о какой функциональной схеме Вы спрашиваете. Реализовал так: по обоим фронтам входного клока 12 МГц защелкиваю данные в регистрах (вот для них и пытаюсь констрейны записать) стандартным образом частотой 150 МГц выделяю фронт частоты 12 МГц и использую этот сигнал как событие для дальнейших действий на частоте 150 схему реализации ввода интерфейса и стыка с системой. но в целом, если вы все равно работаете на 150МГц, то зачем вообще вся кухня с дополнительной тактовой, двумя фронтами, защелками, констрейнами и перекладкой в домен 150МГц. Данные через регистр на 150МГц, тактовую через выделитель двух фронтов, настройка на порты false path. и 12МГц, это период 8мкс, в ддре 4мкс. 5нс это такой пшик на этом фоне. 5 minutes ago, Yuri124 said: Я про величины задержек - чисто формально указать Квартусу, что может с вх. данными делать в этих широких пределах. Если физически это у него не получается - так пусть около нуля и сам оставит. задержки на пинах и разводке он сам посчитает как надо, попробудет подобрать значение IDELAY, поставит такое что дает минимум ошибки. ЕМНП на циклонах там очень грубая задержка, гибкая есть на арии и стратиксе, но все же в неболших пределах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 5 minutes ago, des00 said: зачем вообще вся кухня с дополнительной тактовой Вообще Вас не понял. на диаграмме период 90 нс, tDS = tDH = 5 нс период 150 МГц = 6.66 нс кажется Вы путаете что 12 МГц это 8мкс Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба Господа подскажите, правильно ли я организовал захват шины и передачу в 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 1 14 апреля, 2021 Опубликовано 14 апреля, 2021 (изменено) · Жалоба 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 нс добавить к данным из даташита]. А после синтеза проверить, что получилось в реальности. Изменено 14 апреля, 2021 пользователем Yuri124 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 4 часа назад, zombi сказал: Вообще Вас не понял. Вам говорят, что клок, сопровождающий данные, у вас всего лишь 12 МГц, что в 12 раз меньше внутренней тактовой FPGA (150 МГц). При таком раскладе использовать 12 МГц как клок смысла нет. Выделите у этого низкого клока фронты вашей высокой тактовой и защёлкивайте по этим стробам данные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 30 minutes ago, andrew_b said: Выделите у этого низкого клока фронты вашей высокой тактовой и защёлкивайте по этим стробам данные. И на какое максимальное время может опоздать выделенный фронт и последующий строб частоты 150 относительно строба внешней частоты 12 ? 1 hour ago, Yuri124 said: Что-то Вы, как мне кажется, широко хватили. Что значит широко??? Я спросил всё ли верно и привёл картинку (для SDR режима, но какая разница) на которой диаграмма с чётко и однозначно указанными интервалами и соответствующие этой диаграмме констрейны. Мне ответили что на картинке всё правильно. Я написал констрейны под свои времянки, и теперь мне говорят что что-то слишком широко! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 1 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 45 minutes ago, andrew_b said: Выделите у этого низкого клока фронты вашей высокой тактовой и защёлкивайте по этим стробам данные. Проблема, как понимаю - в том, что 1) 12 МГц в реальности 24 МГц (из-за DDR) - но это не самое главное :) 2) окно для захвата данных всего +-5 нс . Т.е. шириной всего 10 нс. А тактовая 150 МГц - период целых почти 7 нс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 12 минут назад, zombi сказал: И на какое максимальное время может опоздать выделенный фронт и последующий строб частоты 150 относительно строба внешней частоты 12 ? Выделение фронта занимает три (максимум четыре такта) клока 150 МГц. Но поскольку у вас данные стабильны в узком окне (всего по 5 нс до и после фронта), то такой метод не подойдёт. Обычно передача в другой домен делается через FIFO. Но в данном случае проще сделать через то же выделение клока, но только после входных регистров. Только что, Yuri124 сказал: окно для захвата данных всего +-5 нс Да я уже понял. Надо дочитывать тему до конца, прежде чем отвечать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 2 minutes ago, Yuri124 said: 12 МГц в реальности 24 МГц (из-за DDR) - но это не самое главное :) Нет, 12 мегагерц оно и в Африке и в реальности 12 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 1 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 18 minutes ago, zombi said: Я написал констрейны под свои времянки, и теперь мне говорят что что-то слишком широко! В первом посту топика Вы написали: Quote данные появляются на его выходе минимум за 5 нс до любого фронта клока и минимум 5 нс удерживаются после него Т.е. валидные данные существуют в пределах +-5 нс от клока. Какие при этом 40 нс допустимого сдвига клока относительно данных?! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 2 minutes ago, andrew_b said: Но в данном случае проще сделать через то же выделение клока, но только после входных регистров. Спасибо Кэп! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 1 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 9 minutes ago, andrew_b said: Надо дочитывать тему до конца, прежде чем отвечать. простите, эта реплика адресована мне? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 6 minutes ago, Yuri124 said: Какие при этом 40 нс допустимого сдвига клока относительно данных?! Толи я чего не понимаю (что скорее всего), толи лыжи не едут! Можете чётко и однозначно ответить на вопрос : что означает параметр -max в констрейне set_input_delay? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба Только что, Yuri124 сказал: простите, эта реплика адресована мне? Нет, это я себе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 1 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться