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

Есть самодельная плата с Cyclone IV + 88E1111, соединены через GMII/RGMII (разведены все 8 линий, т.е. можно выбрать GMII или RGMII).

Что работает:

Работает приём (вижу в Signal Tap правильные посылки и байты).

Работает copper line loopback - на сетевой карте ПК вижу отправленные пакеты продублированы - это работает платка и 88E1111 возвращает пакеты в целости.

Стало быть линия ПК-PHY работает, до ПЛИС данные долетают.

 

А вот какая проблема: не отправляет! Вообще!

MAC interface loopback если включить - отправка есть а обратно не прилетает, собственно как и из линии...

 

Кварц стоит на 25 МГц от материнской платы выдернул - чтобы уж точно кварц подходил - ведь в материнке же он работал! Да и у меня вроде работает. Говорят может не отправлять если кварц неподходящей стабильности.

 

Пошел я дальше: сделал Nios 2 процессор в этой ПЛИСине, сделал программно "serial management interface" и выкачал через MDC/MDIO регистры. Они у меня получились такие:

00: 0x0000 = 0000_0000_0000_0000
01: 0x796D = 0111_1001_0110_1101
02: 0x0141 = 0000_0001_0100_0001
03: 0x0CC2 = 0000_1100_1100_0010
04: 0x0DE1 = 0000_1101_1110_0001
05: 0xCDE1 = 1100_1101_1110_0001
06: 0x000D = 0000_0000_0000_1101
07: 0x2001 = 0010_0000_0000_0001
08: 0x43D7 = 0100_0011_1101_0111
09: 0x0F00 = 0000_1111_0000_0000
10: 0x7C00 = 0111_1100_0000_0000
11: 0x0000 = 0000_0000_0000_0000
12: 0x0000 = 0000_0000_0000_0000
13: 0x0000 = 0000_0000_0000_0000
14: 0x0000 = 0000_0000_0000_0000
15: 0x3000 = 0011_0000_0000_0000
16: 0x0068 = 0000_0000_0110_1000
17: 0xAC40 = 1010_1100_0100_0000
18: 0x0000 = 0000_0000_0000_0000
19: 0x0000 = 0000_0000_0000_0000
20: 0x0C71 = 0000_1100_0111_0001 <- младшая единичка говорит что передатчик включен (1 = Transmitter Enable)
21: 0x0000 = 0000_0000_0000_0000
22: 0x0000 = 0000_0000_0000_0000
23: 0x0000 = 0000_0000_0000_0000
24: 0x4100 = 0100_0001_0000_0000
25: 0x0000 = 0000_0000_0000_0000
26: 0x000A = 0000_0000_0000_1010
27: 0x808F = 1000_0000_1000_1111
28: 0x0000 = 0000_0000_0000_0000
29: 0x0000 = 0000_0000_0000_0000
30: 0x0000 = 0000_0000_0000_0000
31: 0x0000 = 0000_0000_0000_0000

 

int main()
{
    int stage = 0;
    while(true)
    {
        if(stage == 0)
        {
            printf("!!!\n\r", stage);
            smi_write(0, 0, 0x0040);
            smi_write(0, 20, 0x0C71);
            unsigned char r0 = smi_read(0, 0);
            smi_write(0, 0, r0 & (1<<15));
        }

        for(int reg = 0; reg < 32; reg++)
        {
            unsigned short data = smi_read(0, reg);
            printf("%02d: 0x%04X = ", reg, data);
            print_bin2(data, 16);
            printf("\n\r");
        }
        printf("----- %d\n\r", stage);
        for(int i = 0; i < (ALT_CPU_CPU_FREQ / 5); i++);

        stage++;
        if(stage > 10) stage = 0;
    }
    return 0;
}

 

Тут много кто с этим PHY работает (88E1111), какие вы регистры настраиваете и какими значениями?

Меня интересует режим только 1 гигабит, без возможности 10/100, по меди 4 пары.

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

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


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

У меня похожая ситуация была когда был обрыв по сигналу TX_ER. Он у вас задействован?

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


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

У меня похожая ситуация была когда был обрыв по сигналу TX_ER. Он у вас задействован?

Он разведен от ПЛИС к PHY, но я его вообще никак не задействовал. Если его поставить в 0 - это может помочь?

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


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

Есть самодельная плата с Cyclone IV + 88E1111, соединены через GMII/RGMII (разведены все 8 линий, т.е. можно выбрать GMII или RGMII).

А какой режим используете?

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


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

А какой режим используете?

Настроечные выводы (задается пинами CONFIG) настроены на GMII и 1 гигабит-only/master.

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


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

А с ресетом всё в порядке? Если память не изменяет, то при неправильной реализации аппаратного сброса после включения питания необходимо было на некоторое время выдать сигнал hard reset.

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


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

А с ресетом всё в порядке? Если память не изменяет, то при неправильной реализации аппаратного сброса после включения питания необходимо было на некоторое время выдать сигнал hard reset.

Стоит микроконтроллер и делает hard-reset. Но я проверю этот момент осциллографом.

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


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

Стоит микроконтроллер и делает hard-reset. Но я проверю этот момент осциллографом.

Согласно доке минимальное время сброса 10 мс.

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


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

Он разведен от ПЛИС к PHY, но я его вообще никак не задействовал. Если его поставить в 0 - это может помочь?

я запускал 1111 в чужом дизайне - пока TX_ER не посадил на землю не взлетало..

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


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

Он разведен от ПЛИС к PHY, но я его вообще никак не задействовал. Если его поставить в 0 - это может помочь?

Мне помогло.

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


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

У меня была похожая ситуация. Loopback через линию поднялся сразу, а вот FPGA<->PHY - нет. И не понятно было, то ли на плате что-то неисправно, то ли в софте, то ли с микросхемой проблемы... Попрыгать пришлось, в итоге оказалось, что таки да, дело было в настройке регистров и этот момент не освещён в даташите достаточно подробно, про это написано в апноте. Вот почитайте это, там есть подробности. Возможно, и ответ на ваш вопрос там же.

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


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

А по ходу вопрос чем вызвана любовь к многоножкам? Не смотрели на AR8035?

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


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

А по ходу вопрос чем вызвана любовь к многоножкам? Не смотрели на AR8035?

88E1111 - первое что подвернулось, лично мне не ясно почему популярная микросхема - вот и вся причина :)

До этого я лишь с Ethernet 100 Мбит/с работал из самодельного MAC на ПЛИС. Тут задача аналогична - самодельный MAC и аппаратное формирование UDP пакетов (перенес со старого 100 Мбит/с проекта).

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


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

Согласно доке минимальное время сброса 10 мс.

Не знаю почему я раньше это не проверил...

Это моя слабость - не обращать внимание на сброс, мне кажется это всегда элементарной операцией, не требующей большого времени, что ошибка.

 

Пока не работает, но я впервые вижу что подав RESETN чуть более 10 мс (с запасом) - PHY перестает мигать светодиодами. Видимо он перешел в какое-то состояние и теперь появится возможность добиться чтобы передача заработала наконец.

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


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

Пока не работает, но я впервые вижу что подав RESETN чуть более 10 мс (с запасом) - PHY перестает мигать светодиодами. Видимо он перешел в какое-то состояние и теперь появится возможность добиться чтобы передача заработала наконец.

ему надо от опоры в 25 МГц разогнать PLL на 125 МГц, и чтобы она стабильно залочилась.

короче, везде, где есть PLL, необходимо строго следить за reset-ами, их длительностями, и наличием lock-ов.

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


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

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

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

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

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

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

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

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

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

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