реклама на сайте
подробности

 
 
> Прием данных с Marvell'a в режиме GMII
ovs_pavel
сообщение Sep 26 2012, 17:56
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



Вечер добрый. Не поделитесь опытом приема данных с Marvell'a. Суть проблемы в следующем. Персоналка подключается к плате на которой стоит Marvel в режиме 1Гбит (GMII).
В режиме GMII идет нестабильный прием данных, т.е. например с персоналки подаю пакет с MAK-адресом 122334455667, а на приемной стороне (сделал тестовое ФИФО в которое все пишу по RX_En) получаю 162334455667. Вообщем биты "вылетают" при приеме. Зависимость получается и от раскладки проекта (меняю тестовые сигналы - переназначаю, также меняется и положение вылетающих битов). Хотя весь проект сделан абсолютно синхронно от тактовой частоты приемопередатчика RX_CLK. Привязываю к ней и данные и соответствующие управляющие сигналы на входе и после этого начинаю их анализ, ну все как полагается.

Возникает несколько вопросов: необходимо ли вводить констрейны на входную шину данных? Двигали ли вы входную частоту по фазе относительного входной шины данных (где то уже по моему проскальзывало упоминание про нестабильный режим работы марвела)? Ну и какие могут быть еще подводные камни?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
TRILLER
сообщение Sep 27 2012, 15:19
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 180
Регистрация: 17-02-09
Из: Санкт-Петербург
Пользователь №: 45 001



Не усложняйте себе жизнь.

NET "rx_clk" CLOCK_DEDICATED_ROUTE = FALSE;
NET "rx_clk" TNM_NET = rx_clk;
TIMESPEC TS_rx_clk = PERIOD "rx_clk" 8 ns HIGH 50%;
NET "rx_clk" LOC = "AP11" ;

NET "rx_dv" LOC = "AM13";
INST "rx_dv_reg" LOC = ILOGIC_X2Y48;
NET "rx_data(0)" LOC = "AN13";
NET "rx_data(1)" LOC = "AF14";
NET "rx_data(2)" LOC = "AE14";
NET "rx_data(3)" LOC = "AN12";
NET "rx_data(4)" LOC = "AM12";
NET "rx_data(5)" LOC = "AD11";
NET "rx_data(6)" LOC = "AC12";
NET "rx_data(7)" LOC = "AC13";

Это все констрейны, которые я описывал для RX. Плюс ещё rx_data заводил на IDDR, для того, чтобы явно не указывать на лапы(к тому же, предполагается использовать RGMII). Всё чётко работает.
Вы же своим INST "*gmii_tx_er_reg" IOB = true; явно указываете имплементатору на расположение триггеров, а потом ещё пытаетесь его заставит выполнить свои пожелания TIMEGRP "IN_GMII" OFFSET = IN 2.5 ns VALID 3 ns BEFORE COMP "Phy_RxClk"; rolleyes.gif
Надо выбрать что-либо одно)
Go to the top of the page
 
+Quote Post
ovs_pavel
сообщение Sep 27 2012, 17:32
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



Цитата(TRILLER @ Sep 27 2012, 19:19) *
Не усложняйте себе жизнь.

NET "rx_clk" CLOCK_DEDICATED_ROUTE = FALSE;
NET "rx_clk" TNM_NET = rx_clk;
TIMESPEC TS_rx_clk = PERIOD "rx_clk" 8 ns HIGH 50%;
NET "rx_clk" LOC = "AP11" ;

NET "rx_dv" LOC = "AM13";
INST "rx_dv_reg" LOC = ILOGIC_X2Y48;
NET "rx_data(0)" LOC = "AN13";
NET "rx_data(1)" LOC = "AF14";
NET "rx_data(2)" LOC = "AE14";
NET "rx_data(3)" LOC = "AN12";
NET "rx_data(4)" LOC = "AM12";
NET "rx_data(5)" LOC = "AD11";
NET "rx_data(6)" LOC = "AC12";
NET "rx_data(7)" LOC = "AC13";

Это все констрейны, которые я описывал для RX. Плюс ещё rx_data заводил на IDDR, для того, чтобы явно не указывать на лапы(к тому же, предполагается использовать RGMII). Всё чётко работает.
Вы же своим INST "*gmii_tx_er_reg" IOB = true; явно указываете имплементатору на расположение триггеров, а потом ещё пытаетесь его заставит выполнить свои пожелания TIMEGRP "IN_GMII" OFFSET = IN 2.5 ns VALID 3 ns BEFORE COMP "Phy_RxClk"; rolleyes.gif
Надо выбрать что-либо одно)


Так изначально у меня и были ограничения только по частоте и пинам, за исключением 1-ой строчки: NET "rx_clk" CLOCK_DEDICATED_ROUTE = FALSE; - этого не было, т.к. я тактовую завел сразу на глобальный пин. Все остальное было также. Режим работы GMII. И при приеме возникали ошибки. Поэтому и начал вводить констейны по времянке (setup и hold time), как рекомендуют в доке UG138. Если бы не ошибки, я бы и не углублялся в изучение данного вопроса. Но ограничений по одной лишь частоте не хватает.
А вы же рекомендовали сделать констрейны по пинам, ну т.е. использовать конструкцию
INST "U9/GM_TxD*" IOB = true ;
или я что то не так понял?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 11:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.02342 секунд с 7
ELECTRONIX ©2004-2016