gin 0 24 апреля Опубликовано 24 апреля · Жалоба Добрый день, коллеги! Давно я не работал с синхронной памятью, и немного стал подзабывать тонкости. Непосредственно сам вопрос в заголовке. Но если рассмотреть более подробно, то пусть имеется вот такая упрощенная диаграмма, ее нужно реализовать на выходе ПЛИС: Имеется выходной клок CLK и выходные данные DQ (на самом деле это двунаправленная шина, но сейчас не важно). Есть ограничения на 'data setup' и 'data hold', пусть для примера Tds = 1.5 ns, Tdh = 0.8 1. Как правильно написать констрейт? Например так будет корректно? set_output_delay -max -clock clk -1.5 [get_ports {DQ}] set_output_delay -min -clock clk +0.8 [get_ports DQ}] 2. Как правильно вывести выходной клок CLK относительно внутреннего. Будет ли достаточно сформировать его на PLL без смещения фазы? Или здесь тоже нужны констрейты? 3. Нужно ли для сигнала DQ устанавливать выходной триггер в ножке? Или в данном случае это неправильно и синтезатор не сможет так обеспечить требуемые Tds и Tdh 4. Ну и последний вопрос. Следует ли учитывать в контрейтах задержки при распространении сигналов на плате? Где то в примерах видел, что добавляют погрешность +/- 100 ps Получается, что Tds = 1.5+0.1 = 1.6 ns; Tdh = 0.8+0.1 = 0.9 ns Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 24 апреля Опубликовано 24 апреля · Жалоба К сожалению констрейном клок относительно данных почти не двигается. Указывая Ts и Th - вы просто контролируете в отчетах о слаках будет ли на стороне приемника правильное положение фронта клока, относительно данных. Синтезатор даже может задействовать всякие задержки внутри выходных буферов(если таковы имеются), чтобы саков не было. Но это не панацея. Поэтому часто выходной клок формируется отдельной pll, где вы уже двигаете этот клок так, как вам надо. Ну или банально инвертируете клок. На том-же самом DDR регистре. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gin 0 24 апреля Опубликовано 24 апреля · Жалоба 46 минут назад, Flip-fl0p сказал: К сожалению констрейном клок относительно данных почти не двигается. Указывая Ts и Th - вы просто контролируете в отчетах о слаках будет ли на стороне приемника правильное положение фронта клока, относительно данных. Синтезатор даже может задействовать всякие задержки внутри выходных буферов(если таковы имеются), чтобы саков не было. Но это не панацея. Поэтому часто выходной клок формируется отдельной pll, где вы уже двигаете этот клок так, как вам надо. Ну или банально инвертируете клок. На том-же самом DDR регистре. Да, я так когда то и делал, двигал фазу выходного клока. Но там была опытная разработка и нужно было проверить на стенде работу алгоритма. Потому обмен с SDRAM делал на скорую руку. И мне тогда такое решение со сдвигом клока не очень понравилось. Подумал, может быть есть какие то более элегантные варианты. Почему мне еще не хочется сам клок двигать: например, при чтении из памяти, ответные данные тоже будут сдвинуты относительно моего внутреннего клока. Как то это всё к усложнению на приеме на ПЛИС приведет. Хотелось бы уйти от этих усложнений, если такое возможно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yaahoo 0 25 апреля Опубликовано 25 апреля · Жалоба 1. На мой взгляд констрейт правильный, надо только плюс на минус заменить (холд), и наборот (для сетапа) 2. вообще пофигу, это сорс-синхронная шина, дата привязана к выходному клоку а не внутреннему 3. желательно, но необязательно 4. можете поджать констрейнты процентов на 10-20 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 1 26 апреля Опубликовано 26 апреля · Жалоба On 4/24/2024 at 12:42 PM, gin said: Следует ли учитывать в контрейтах задержки при распространении сигналов на плате? Следует. Если длины отдельных сигналов в шине не выровнены. Ну и еще учитывается разница в распространении сигналов от пина чипа до его внутреннего вх/вых блока. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gin 0 26 апреля Опубликовано 26 апреля · Жалоба 3 часа назад, Yuri124 сказал: Ну и еще учитывается разница в распространении сигналов от пина чипа до его внутреннего вх/вых блока. По идее, если использовать триггер, расположенный в пине, то от этого триггера до физического выхода - там совсем копеечная задержка выйдет? Посмотрел пример, который дает Terasic для своей отладочной платы. Так там они выходной клок двигают именно на PLL. Причем для частоты 100 МГц сдвиг - минус 3 нс. Т.е. клок как бы опережает данные. Любопытно. Очень похоже просто на некое магическое число, экспериментально подобранное для конкретной электрической схемы. Констрейнты у такие: set_output_delay -max -clock clk_dram_ext 1.6 [get_ports {DRAM_DQ* DRAM_*DQM}] set_output_delay -min -clock clk_dram_ext -0.9 [get_ports {DRAM_DQ* DRAM_*DQM}] Судя по всему, без PLL в такой задаче не обойтись. Смещение выходного клока - на нем, а констрейнты - только для контроля правильности разводки. Причем, видимо, сдвиг на PLL нужно отдельно рассчитывать исходя из тактовой частоты. Для 100 МГц - один, для 200 - другой. Эх, а как хотелось бы сделать универсально... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 26 апреля Опубликовано 26 апреля · Жалоба 6 часов назад, gin сказал: Эх, а как хотелось бы сделать универсально... По идее у каждого производителя должно быть типовое решение. У Альтеры есть документ Implementing a Source Synchronous Interface between Altera FPGAs Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yaahoo 0 27 апреля Опубликовано 27 апреля (изменено) · Жалоба Двигать клок относительно данных, или данные относительно клока - без разницы. При этом если двигать клок, то нужно двигать именно клок тактирующий выходные флопы, а не тот что наружу выходит. А если двигать дату, то нужно флопы размещать подальше от выхода, так что от идеи с размещение флопов в паде придется отказаться. При этом мне кажется что при правильных констрейнтах (плюс в сетапе и минус в холде, как я написал, и как в примере терасика) тул сам затянет клок для выходных флопов и постарается разместить их так, чтобы выходная задержка уложилась в констрейнт. И да, не нужно пытаться разместить флопы в паде, это может сильно помешать. А вот выходной клок лучше сделать дедикейтед пином чтобы было поменьше лэтенси. Изменено 27 апреля пользователем Yaahoo Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 22 27 апреля Опубликовано 27 апреля · Жалоба On 4/24/2024 at 12:42 PM, gin said: 1. Как правильно написать констрейнт? 2. Как правильно вывести выходной клок CLK относительно внутреннего? 3. Нужно ли для сигнала DQ устанавливать выходной триггер в ножке? 4. Следует ли учитывать в контрейнтах задержки при распространении сигналов на плате? Altera: an433.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 28 апреля Опубликовано 28 апреля · Жалоба В 26.04.2024 в 18:50, sazh сказал: Implementing_a_Source_Synchronous_Interface_v2.0.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться