Я использую Tri_mode Ethernet mac v4.6 и Spartan 6. В User Guide написано что в constraints надо прописывать TIMEGRP "IN_GMII" OFFSET = IN 2 ns VALID 2 ns BEFORE "gmii_rx_clk", и подбирать значение IDELAY_VALUE. Но вылетают ошибки Failing Constraint в setup или в hold, т.к. не подобрать такого значения IDELAY_VALUE чтобы выполнялось одновременно и offset in 2 ns и valid 2 ns. Например valid должен быть минимум 2.3 ns тогда все ок.
Кстати когда генерирую ip-core он в сгенерированном constraints для spartan 6 создает строчку TIMEGRP "IN_GMII" OFFSET = IN 2.4 ns VALID 2.8 ns BEFORE "gmii_rx_clk"; С такими значениями IDELAY_VALUE подбирается просто. Так что правильно, что в User guide дано или что приводится в сгенерированом примере в ucf?
И не могу до конца разобрать что означает конструкция offsen in? В гайде по констрейнтам написано что это ограничение на время распространения сигнала от PAD'а до первого триггера, а в UG на ядро MAC написано что это минимально время, за которое должны выставиться данные до срабатывания положительного фронта clk.
Из за того что не могу правильно разобраться с этими задержками, у контроллера ethernet в блоке udp/ip периодически провисают данные и приходит не то что нужно. Видел в комментариях по похожим вопросам совет использовать блоки синхронизации (dcm, pll), но в ug на мак ядро про это ничего не сказано, значит одними iodelay можно ограничится и настроить корректно синхронизацию информационных сигналов с clk. Помогите разобраться с этим вопросом.
|