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

 
 
> 88E1111 + Cyclone 4, не отправляет
AVR
сообщение May 16 2016, 17:49
Сообщение #1


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Есть самодельная плата с 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 - May 16 2016, 18:22


--------------------
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 28)
_Anatoliy
сообщение May 16 2016, 18:32
Сообщение #2


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(AVR @ May 16 2016, 20:49) *

У меня похожая ситуация была когда был обрыв по сигналу TX_ER. Он у вас задействован?
Go to the top of the page
 
+Quote Post
AVR
сообщение May 16 2016, 18:41
Сообщение #3


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(_Anatoliy @ May 16 2016, 21:32) *
У меня похожая ситуация была когда был обрыв по сигналу TX_ER. Он у вас задействован?

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


--------------------
Go to the top of the page
 
+Quote Post
doom13
сообщение May 16 2016, 19:31
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(AVR @ May 16 2016, 20:49) *
Есть самодельная плата с Cyclone IV + 88E1111, соединены через GMII/RGMII (разведены все 8 линий, т.е. можно выбрать GMII или RGMII).

А какой режим используете?
Go to the top of the page
 
+Quote Post
AVR
сообщение May 16 2016, 19:34
Сообщение #5


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(doom13 @ May 16 2016, 22:31) *
А какой режим используете?

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


--------------------
Go to the top of the page
 
+Quote Post
doom13
сообщение May 16 2016, 19:58
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



А с ресетом всё в порядке? Если память не изменяет, то при неправильной реализации аппаратного сброса после включения питания необходимо было на некоторое время выдать сигнал hard reset.
Go to the top of the page
 
+Quote Post
AVR
сообщение May 16 2016, 19:59
Сообщение #7


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(doom13 @ May 16 2016, 22:58) *
А с ресетом всё в порядке? Если память не изменяет, то при неправильной реализации аппаратного сброса после включения питания необходимо было на некоторое время выдать сигнал hard reset.

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


--------------------
Go to the top of the page
 
+Quote Post
doom13
сообщение May 16 2016, 20:14
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(AVR @ May 16 2016, 22:59) *
Стоит микроконтроллер и делает hard-reset. Но я проверю этот момент осциллографом.

Согласно доке минимальное время сброса 10 мс.
Go to the top of the page
 
+Quote Post
Jury093
сообщение May 16 2016, 20:53
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(AVR @ May 16 2016, 21:41) *
Он разведен от ПЛИС к PHY, но я его вообще никак не задействовал. Если его поставить в 0 - это может помочь?

я запускал 1111 в чужом дизайне - пока TX_ER не посадил на землю не взлетало..
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение May 17 2016, 04:28
Сообщение #10


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(AVR @ May 16 2016, 21:41) *
Он разведен от ПЛИС к PHY, но я его вообще никак не задействовал. Если его поставить в 0 - это может помочь?

Мне помогло.
Go to the top of the page
 
+Quote Post
dxp
сообщение May 17 2016, 06:27
Сообщение #11


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



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


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение May 17 2016, 09:08
Сообщение #12


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



А по ходу вопрос чем вызвана любовь к многоножкам? Не смотрели на AR8035?
Go to the top of the page
 
+Quote Post
AVR
сообщение May 17 2016, 09:59
Сообщение #13


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(_Anatoliy @ May 17 2016, 12:08) *
А по ходу вопрос чем вызвана любовь к многоножкам? Не смотрели на AR8035?

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


--------------------
Go to the top of the page
 
+Quote Post
AVR
сообщение May 28 2016, 20:24
Сообщение #14


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(doom13 @ May 16 2016, 23:14) *
Согласно доке минимальное время сброса 10 мс.

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

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


--------------------
Go to the top of the page
 
+Quote Post
krux
сообщение May 29 2016, 13:57
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



Цитата(AVR @ May 28 2016, 23:24) *
Пока не работает, но я впервые вижу что подав RESETN чуть более 10 мс (с запасом) - PHY перестает мигать светодиодами. Видимо он перешел в какое-то состояние и теперь появится возможность добиться чтобы передача заработала наконец.

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


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
AVR
сообщение May 29 2016, 15:13
Сообщение #16


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(krux @ May 29 2016, 16:57) *
ему надо от опоры в 25 МГц разогнать PLL на 125 МГц, и чтобы она стабильно залочилась.
короче, везде, где есть PLL, необходимо строго следить за reset-ами, их длительностями, и наличием lock-ов
Однако до того как я стал делать такой длинный (теперь ясно что такой и надо) резет - у меня работало на прием. И вообще, процессор Nios2 и самодельный UART хорошо работали при моих ожиданиях что там должно быть 125 МГц. Я даже отдельно замерял что 125 МГц есть, через делитель и оценивал длительность...


--------------------
Go to the top of the page
 
+Quote Post
abarsky111
сообщение May 30 2016, 15:42
Сообщение #17





Группа: Участник
Сообщений: 6
Регистрация: 2-11-05
Пользователь №: 10 411



Несколько лет назад подробно разбирался со связкой 88E1111+CycloneIV, на этом форуме всё уже было с детальными пояснениями. Большое спасибо форумчанам, особенно vadimuzzz! Если есть уверенность, что разводка+подключение ПЛИС и марвела сделаны правильно, то дело в программировании регистров. У меня функция инициализации выглядела так (там кое-что лишнее, применительно к моей конкретной реализации + отладочная информация, но разобраться можно ):

alt_u32 t2=0;
int status=0;

IPADDR2[0]=192;
IPADDR2[1]=168;
IPADDR2[2]=1;
IPADDR2[3]=247;

GATE2[0]=192;
GATE2[1]=168;
GATE2[2]=1;
GATE2[3]=254;

MASK2[0]=255;
MASK2[1]=255;
MASK2[2]=255;
MASK2[3]=0;

MACADDR2[0]=0x00;
MACADDR2[1]=0x07;
MACADDR2[2]=0xab;
MACADDR2[3]=0xf0;
MACADDR2[4]=0x0d;
MACADDR2[5]=0xb2;

//Чтение регистра конфигурации TSE - регистр 0 - номер версии IP TSE (32 бита)
t2 = IORD_ALTERA_TSEMAC_CMD_CONFIG(TSE2_BASE);
#ifdef DEBUG
alt_printf("TSE Command Reg : %x\n",t2);
#endif

alt_u32 t, r;
for (t=0;t<33;t++)
{
IOWR_ALTERA_TSEMAC_MDIO_ADDR0(TSE2_BASE, t);
Delay(0xFFFF);
//alt_printf("Probing PHY at address %x ...\n", t);
r = IORD_ALTERA_TSEMAC_MDIO(TSE2_BASE, 0, ALTERA_TSEMAC_PHY_ADDR_PHY_ID1);
if( r== 0x141 ) {
#ifdef DEBUG
alt_printf("Found Marvell 88E1111, PHY=%x\n", t);
#endif
break;
}
}

t2 = IORD_ALTERA_TSEMAC_MDIO(TSE2_BASE,0,0x1B);//Extended PHY Specific Status Register
#ifdef DEBUG
alt_printf("Reg 27 : %x\n",t2);
#endif
t2 &= 0xFFF0;

IOWR_ALTERA_TSEMAC_MDIO(TSE2_BASE,0,0x1B,t2|0xf); //f - GMII to Copper; 7 - GMII to fiber; e - GMII to SGMII(=fiber);

t2 = IORD_ALTERA_TSEMAC_MDIO(TSE2_BASE,0,0x14);//Extended PHY Specific Control Register
#ifdef DEBUG
alt_printf("Reg 20 : %x\n",t2);
#endif

IOWR_ALTERA_TSEMAC_MDIO(TSE2_BASE,0,0x14,t2|0x83);//Add Delay to RX_CLK for RXD Outputs; Add Delay to GTX_CLK for TXD Inputs

t2 = IORD_ALTERA_TSEMAC_MDIO(TSE2_BASE,0,26);//
#ifdef DEBUG
alt_printf("Reg 26 : %x\n",t2);
#endif

t2 = IORD_ALTERA_TSEMAC_MDIO(TSE2_BASE,0,0);
#ifdef DEBUG
alt_printf("Reg 0 : %x\n",t2);
#endif


IOWR_ALTERA_TSEMAC_MDIO(TSE2_BASE,0,ALTERA_TSEMAC_PHY_ADDR_CONTROL,t2|PCS_CTL_sw
_reset);//Previous Operations Require SW Reset

do
{
Delay(0xFFFF);
t2 = IORD_ALTERA_TSEMAC_MDIO(TSE2_BASE,0,ALTERA_TSEMAC_PHY_ADDR_STATUS);
//alt_printf("Reg 1 : %x\n",t2);

Delay(0xFFFF);
Delay(0xFFFF);
Delay(0xFFFF);
}
while((t2&(alt_u32)0x0004)==0);//wait for link-up

// Get the Rx and Tx SGDMA addresses
sgdma_tx_dev = alt_avalon_sgdma_open(SGDMA2_TX_NAME);
if(!sgdma_tx_dev) {
#ifdef DEBUG
alt_printf("[triple_speed_ethernet_init] Error opening RX SGDMA\n");
#endif
}

sgdma_rx_dev = alt_avalon_sgdma_open(SGDMA2_RX_NAME);
if(!sgdma_rx_dev) {
#ifdef DEBUG
alt_printf("[triple_speed_ethernet_init] Error opening TX SGDMA\n");
#endif
}

IOWR_ALTERA_AVALON_SGDMA_CONTROL(SGDMA2_RX_BASE,ALTERA_AVALON_SGDMA_CONTROL_SOFT
WARERESET_MSK);
IOWR_ALTERA_AVALON_SGDMA_CONTROL(SGDMA2_RX_BASE, 0x0);

// reset the mac
IOWR_ALTERA_TSEMAC_CMD_CONFIG(TSE2_BASE , ALTERA_TSEMAC_CMD_SW_RESET_MSK | ALTERA_TSEMAC_CMD_TX_ENA_MSK | ALTERA_TSEMAC_CMD_RX_ENA_MSK | ALTERA_TSEMAC_CMD_PROMIS_EN_MSK);
while(IORD_ALTERA_TSEMAC_CMD_CONFIG(TSE2_BASE) & ALTERA_TSEMAC_CMD_SW_RESET_MSK)
{
}


// Initialize MAC registers
IOWR_ALTERA_TSEMAC_FRM_LENGTH(TSE2_BASE, ALTERA_TSE_MAX_FRAME_LENGTH);
IOWR_ALTERA_TSEMAC_RX_ALMOST_EMPTY(TSE2_BASE, 8);
IOWR_ALTERA_TSEMAC_RX_ALMOST_FULL(TSE2_BASE, 8);
IOWR_ALTERA_TSEMAC_TX_ALMOST_EMPTY(TSE2_BASE, 8);
IOWR_ALTERA_TSEMAC_TX_ALMOST_FULL(TSE2_BASE, 3);
IOWR_ALTERA_TSEMAC_TX_SECTION_FULL(TSE2_BASE, 0);
IOWR_ALTERA_TSEMAC_RX_SECTION_FULL(TSE2_BASE, 0);
IOWR_ALTERA_TSEMAC_TX_CMD_STAT(TSE2_BASE,0);
IOWR_ALTERA_TSEMAC_RX_CMD_STAT(TSE2_BASE,0);

IOWR_ALTERA_TSEMAC_MAC_0(TSE2_BASE,((int)(MACADDR2[0]) | (int)(MACADDR2[1] << 8) | (int)(MACADDR2[2] << 16) | (int)(MACADDR2[3] << 24)));
IOWR_ALTERA_TSEMAC_MAC_1(TSE2_BASE,(((int)(MACADDR2[4]) | (int)(MACADDR2[5] << 8)) & 0xFFFF));

IOWR_ALTERA_TSEMAC_CMD_CONFIG(TSE2_BASE, ALTERA_TSEMAC_CMD_TX_ENA_MSK
| ALTERA_TSEMAC_CMD_RX_ENA_MSK
| ALTERA_TSEMAC_CMD_TX_ADDR_INS_MSK
| ALTERA_TSEMAC_CMD_RX_ERR_DISC_MSK
| ALTERA_TSEMAC_CMD_PAD_EN_MSK
);

alt_avalon_sgdma_register_callback(sgdma_rx_dev,(alt_avalon_sgdma_callback)&tse_sgdmaRx_isr,(alt_u16)ALTERA_TSE_SGDMA_INTR_MASK,sgdma_rx_dev);

//объявляет буфер некешируемой областью памяти (устанавливает в 1 31-й бит адреса блока)
alt_u32 *up; //uncached_packet_payload;
up = (void *)alt_remap_uncached ( (void *)pkt, 4);

//подготовка дескрипторов к проведению очередной операции
alt_avalon_sgdma_construct_stream_to_mem_desc(
(alt_sgdma_descriptor *) &desc[ALTERA_TSE_FIRST_RX_SGDMA_DESC_OFST], // descriptor I want to work with
(alt_sgdma_descriptor *) &desc[ALTERA_TSE_SECOND_RX_SGDMA_DESC_OFST], // pointer to "next"
up, // starting write_address
0, // read until EOP - переносить пакет до конца данных
0);


while ( (IORD_ALTERA_AVALON_SGDMA_STATUS(SGDMA2_RX_BASE) & ALTERA_AVALON_SGDMA_STATUS_BUSY_MSK) ) {}

//начало асинхронной транзакции
t2=alt_avalon_sgdma_do_async_transfer(sgdma_rx_dev, &desc[ALTERA_TSE_FIRST_RX_SGDMA_DESC_OFST]);

#ifdef DEBUG
t2 = IORD_ALTERA_TSEMAC_MAC_0(TSE2_BASE);
alt_printf("MAC 0 : %x\n",t2);
t2 = IORD_ALTERA_TSEMAC_MAC_1(TSE2_BASE);
alt_printf("MAC 1 : %x\n",t2);
t2 = IORD_ALTERA_TSEMAC_CMD_CONFIG(TSE2_BASE);
alt_printf("TSE Command Reg : %x\n",t2);
#endif
Go to the top of the page
 
+Quote Post
AVR
сообщение Jun 4 2016, 20:19
Сообщение #18


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(abarsky111 @ May 30 2016, 18:42) *
Несколько лет назад подробно разбирался со связкой 88E1111+CycloneIV, на этом форуме всё уже было с детальными пояснениями. Большое спасибо форумчанам, особенно vadimuzzz! Если есть уверенность, что разводка+подключение ПЛИС и марвела сделаны правильно, то дело в программировании регистров. У меня функция инициализации выглядела так (там кое-что лишнее, применительно к моей конкретной реализации + отладочная информация, но разобраться можно ):
Да, схему передирали с пары референс-дизайнов, подключили всё что даже к гигабиту не относится (TX_CLK), вижу что при подключении к 100-мегабитному интерфейсу у меня и клоки ровно в 5 раз замедляются (125->25) - всё как бы окей.

Цитата(abarsky111 @ May 30 2016, 18:42) *
t2 = IORD_ALTERA_TSEMAC_MDIO(TSE2_BASE,0,0x14);//Extended PHY Specific Control Register
IOWR_ALTERA_TSEMAC_MDIO(TSE2_BASE,0,0x14,t2|0x83);//Add Delay to RX_CLK for RXD Outputs; Add Delay to GTX_CLK for TXD Inputs
А что значат эти биты? RGMII timing control? И включение передатчика?

Где мне посмотреть что у меня выбран режим именно GMII/copper?
Читал описание регистра 27.3:0 (HWCFG_MODE) - его я задал конфигурационными пинами и младшие 4 бита равны 1111, что соответствует именно GMII to Copper.
27: 0x808F = 1000_0000_1000_1111


--------------------
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 6 2016, 07:00
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(AVR @ Jun 4 2016, 23:19) *
А что значат эти биты? RGMII timing control? И включение передатчика?

RGMII timing control - определяют задержку клока на TR/RX линиях в режиме RGMII, в режиме GMII не используются.
Go to the top of the page
 
+Quote Post
AVR
сообщение Jun 6 2016, 07:20
Сообщение #20


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(doom13 @ Jun 6 2016, 10:00) *
RGMII timing control - определяют задержку клока на TR/RX линиях в режиме RGMII, в режиме GMII не используются.
Ясно.

Я этот проект ковыряю уже пол года в фоновом режиме, я искренне не понимаю что и где и как еще посмотреть, т.к. судя по всему:
Код
IOWR_ALTERA_TSEMAC_MDIO(TSE2_BASE,0,0x1B,t2|0xf); //f - GMII to Copper; 7 - GMII to fiber; e - GMII to SGMII(=fiber);IOWR_ALTERA_TSEMAC_MDIO(TSE2_BASE,0,0x14,t2|0x83);//Add Delay to RX_CLK for RXD Outputs; Add Delay to GTX_CLK for TXD Inputs
тут задается лишь режим в регистре 27 (у меня он верный) и включается передатчик в регистре 20, далее резет и полетели. Кажется я всё делаю верно и вычитав регистры я в этом убеждаюсь...

Что еще можете посоветовать проверить? Или какие ошибки еще поискать? TX_ER я уже на 0 посадил давно.


--------------------
Go to the top of the page
 
+Quote Post
Wic
сообщение Jun 6 2016, 08:27
Сообщение #21


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

Группа: Свой
Сообщений: 183
Регистрация: 16-03-08
Из: Новосибирск
Пользователь №: 35 954



Извините за глупый вопрос. А пробовали проверять на готовом проекте? Сам начинал со стокового проекта данного кита
Go to the top of the page
 
+Quote Post
AVR
сообщение Jun 6 2016, 08:40
Сообщение #22


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Wic @ Jun 6 2016, 11:27) *
Извините за глупый вопрос. А пробовали проверять на готовом проекте? Сам начинал со стокового проекта данного кита
У меня прямо сейчас есть Cyclone IV GX Starter Kit и на нем я уже давно проверил проект Nios 2 + 88E1111 только там разведен лишь SGMII.
Я повторил как мартышка туториал и оно заработало, а вот сделать так чтобы работать без Nios 2 через свою логику так еще и через SGMII мне не удалось!
Ключевой момент в том что разведен там исключительно SGMII, а GMII/RGMII они не подключали вообще.
Хотел сначала сделать так чтобы проверить связку Cyclone IV через SGMII с 88E1111, чтобы потом реализовать свою платку именно так же через SGMII (если было бы проверено), но так и не удалось врубиться как же работать через SGMII...

Поэтому сделал свою платку, даже могу часть где подключаю ПЛИС + 88E1111 показать, проверил заинтересованный коллега - ошибок не увидел.
У меня есть возможность по сути работать в режимах GMII и RGMII. Надо попробовать, вдруг у меня линии битые и если повезет то в RGMII заработает.

Кажется выше я упоминал что через RMII таким образом я уже работал с ПЛИС, но это 100 мегабит и другой PHY другая ПЛИС. Там я сделал самодельный MAC и раз оно так хорошо работало то видимо контрольные суммы и пакеты формировать научился sm.gif


--------------------
Go to the top of the page
 
+Quote Post
abarsky111
сообщение Jun 6 2016, 13:17
Сообщение #23





Группа: Участник
Сообщений: 6
Регистрация: 2-11-05
Пользователь №: 10 411



Цитата(AVR @ Jun 6 2016, 11:40) *
Поэтому сделал свою платку, даже могу часть где подключаю ПЛИС + 88E1111 показать, проверил заинтересованный коллега - ошибок не увидел.
У меня есть возможность по сути работать в режимах GMII и RGMII. Надо попробовать, вдруг у меня линии битые и если повезет то в RGMII заработает.


А можете прислать или здесь выложить схему соединения плис с марвелом и часть из qsys, что относится к связке ниос+tse+всё остальное))
SGDMA используете?

потому как выложил ранее абсолютно рабочую конфигурацию для интерфейса GMII, и напрашивается вывод, что копаем не в том месте.
Go to the top of the page
 
+Quote Post
AVR
сообщение Jun 6 2016, 13:30
Сообщение #24


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(abarsky111 @ Jun 6 2016, 16:17) *
А можете прислать или здесь выложить схему соединения плис с марвелом и часть из qsys, что относится к связке ниос+tse+всё остальное))
SGDMA используете?
потому как выложил ранее абсолютно рабочую конфигурацию для интерфейса GMII, и напрашивается вывод, что копаем не в том месте.
Я не использую Nios, хотя когда разбирался - пытался его туда воткнуть вместе с TSE, думал что может помочь или упростить отладку. С Ethernet вполне реально работать со своим простейшим MAC.
Вечером обязательно скину схему!


--------------------
Go to the top of the page
 
+Quote Post
abarsky111
сообщение Jun 6 2016, 14:37
Сообщение #25





Группа: Участник
Сообщений: 6
Регистрация: 2-11-05
Пользователь №: 10 411



Цитата(AVR @ Jun 6 2016, 16:30) *
Я не использую Nios, хотя когда разбирался - пытался его туда воткнуть вместе с TSE, думал что может помочь или упростить отладку. С Ethernet вполне реально работать со своим простейшим MAC.
Вечером обязательно скину схему!


Уже года два надеюсь, что вот ещё немножко, появится время - сяду и напишу свой МАС вместо TSE.... Эх, завидую белой завистью, что у Вас руки до этого дошли!
Давайте схему, а там посмотрим, может для начала с TSE будет проще - хотя бы убедиться, что с марвелом всё хорошо)))
Go to the top of the page
 
+Quote Post
AVR
сообщение Jun 6 2016, 20:44
Сообщение #26


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(abarsky111 @ Jun 6 2016, 17:37) *
Уже года два надеюсь, что вот ещё немножко, появится время - сяду и напишу свой МАС вместо TSE.... Эх, завидую белой завистью, что у Вас руки до этого дошли!
У меня настолько примитивный MAC, что он лишь формировалка UDP и считалка IP CRC и FCS...
Цитата(abarsky111 @ Jun 6 2016, 17:37) *
Давайте схему, а там посмотрим, может для начала с TSE будет проще - хотя бы убедиться, что с марвелом всё хорошо)))
TSE можно задействовать без Nios 2 и без SGDMA и прочих ужасов? У меня не влезает туториаловский проект, как я ни пытался всё до минимума ужать...

Прилагаю часть схемы где на первой странице ПЛИС, а на второй - PHY...
Прикрепленные файлы
Прикрепленный файл  my_horrible_ethernet_sch.pdf ( 230.84 килобайт ) Кол-во скачиваний: 34
 


--------------------
Go to the top of the page
 
+Quote Post
Wic
сообщение Jun 7 2016, 09:21
Сообщение #27


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

Группа: Свой
Сообщений: 183
Регистрация: 16-03-08
Из: Новосибирск
Пользователь №: 35 954



AVR, надеюсь самописные модули были проверены на девкиатх, чтобы не ловить баги на новых платах. Вообще тсе не так сложен если разобраться, у нас сделана схема тсе + ниос + генератор удп пакетов на логике. По схеме, не понятен режим в котором она работает, пины CONFIG[6..0] стоят не понятно как.
Go to the top of the page
 
+Quote Post
krux
сообщение Jun 7 2016, 09:53
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



я некоторое время назад уже выкладывал на форум свою инициализацию altera TSE (MAC) + 88e1111 (PHY) на verilog-е но она куда-то протерялась.
выложу ещё раз.
Прикрепленный файл  tse_config_2.v ( 17.45 килобайт ) Кол-во скачиваний: 94


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
AVR
сообщение Jun 7 2016, 10:06
Сообщение #29


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Wic @ Jun 7 2016, 12:21) *
AVR, надеюсь самописные модули были проверены на девкиатх, чтобы не ловить баги на новых платах. Вообще тсе не так сложен если разобраться, у нас сделана схема тсе + ниос + генератор удп пакетов на логике. По схеме, не понятен режим в котором она работает, пины CONFIG[6..0] стоят не понятно как.

И на девкитах, и signal tap и отдельный свой софт для CRC - всё в дело пошло.
Пины CONFIG на схеме действительно непонятно как, пришлось подпаиваться проводками чтобы задать нужный конфиг.
Его можно увидеть на первой странице этой темы - там прочтенные регистры и этот конфиг туда в регистры ложится.

Цитата(krux @ Jun 7 2016, 12:53) *
я некоторое время назад уже выкладывал на форум свою инициализацию altera TSE (MAC) + 88e1111 (PHY) на verilog-е но она куда-то протерялась.
выложу ещё раз.
Прикрепленный файл  tse_config_2.v ( 17.45 килобайт ) Кол-во скачиваний: 94

Спасибо, посмотрим, лишним не будет.


--------------------
Go to the top of the page
 
+Quote Post

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

 


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


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