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

Cyclone IV GX + SFP

здравствуйте!

 

использую отладочную плату Cyclone IV GX FPGA Development Kit и Terasic SFP HSMC Board. SFP модуль оптический, наклейка на нем NEC

(шел в комплекте с SpectralWave U-Node, сам модуль рабочий).

Quartus 11.1 SP2

 

Не могу заставить работать SFP модуль в связке с Triple Speed Ethernet.

 

TSE сконфигурирован как 10/100/1000 Ethernet MAC with 1000BASE-X/SGMII PCS c Use Transceiver block GXB. две диф пары идут на модуль.

стандарт 1.5-V PCML. TX_Disable у SFP естественно в нуле.

 

сингналы реконфигурации идут на altgx_reconfig.

 

.gxb_cal_blk_clk_to_the_tse_mac        (clkin_125m_p),   //125MHz диф клок с генератора Cyclone Development Kit
.reconfig_busy_to_the_tse_mac        (reconfig_busy_to_the_tse_mac),
.reconfig_clk_to_the_tse_mac        (pll_50m),
.reconfig_togxb_to_the_tse_mac        (reconfig_togxb_to_the_tse_mac),
.reconfig_fromgxb_from_the_tse_mac    (reconfig_fromgxb_from_the_tse_mac),
.ref_clk_to_the_tse_mac            (clkin_125m_p),   //125MHz диф клок с генератора Cyclone Development Kit

 

код инициализации в Nios

 

IOWR_32DIRECT(TSE_MAC_BASE,TSE_CMD_CONFIG,0x2000);             //reset TSE MAC
while((IORD_32DIRECT(TSE_MAC_BASE, TSE_CMD_CONFIG) & 0x2000))

IOWR_32DIRECT(TSE_MAC_BASE, TSE_PCS_CONTROL, 0x00008000);   //PSC RESET
while((IORD_32DIRECT(TSE_MAC_BASE, TSE_PCS_CONTROL) & 0x8000));

IOWR_32DIRECT(TSE_MAC_BASE,TSE_CMD_CONFIG,0x0100013B); //TX_ENA|RX_ENA|ETH_SPEED|PROMIS_EN|PAD_EN|PAUSE_IGNORE

IOWR_32DIRECT(TSE_MAC_BASE, TSE_PCS_IF_MODE, 0x00000000);   //1000Base-X MODE
IOWR_32DIRECT(TSE_MAC_BASE, TSE_PCS_DEV_ABILITY, 0x00000020); //PCS Dev_Ability Full Duplex Enable
IOWR_32DIRECT(TSE_MAC_BASE, TSE_PCS_CONTROL, 0x00001200);   //RESTART_AUTO_NEGOTIATION | AUTO_NEGOTIATION_ENABLE

 

при этом в PCS Status Register регистр LINK_STATUS в 0, т.е. линка нет.

 

ломаю голову уже вторую неделю, не пойму в чем дело.

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


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

А что на ответном устройстве, линк пытается подняться? Оптический кабель подключен кроссом?

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


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

А что на ответном устройстве, линк пытается подняться? Оптический кабель подключен кроссом?

на другом конце линка нету, все подключено кабелем.

 

разобрался в чем было дело.

TSE не делал (не делал правильный?) ресет трансивера.

решил это с помошь экспорта сигнала gxb_pwrdn (из свойств TSE) и дерьганья его через ниос

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


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

Здравствуйте!

Сейчас тоже начну пробовать оживить TSEwPCS на СIV GX, Плата своя. Раньше с трансиверами не работал.

Пока вопрос такой: если не используешь реконфиг трансивера, то можно ли все сигналы, с соответствующим префиксом, занулить?

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


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

:1111493779: Тоже вывел сброс и дергаю его ниосом! Лапочка линка загорелась! :w00t: Ща буду пробовать гонять байтики!

Только вот непонятно... когда я прошиваю прошивку и выполняю следующий код

    IOWR_ALTERA_AVALON_PIO_SET_BITS(PIO_0_BASE,0x1); //reset 
    IOWR_ALTERA_AVALON_PIO_CLEAR_BITS(PIO_0_BASE,0x1);

    IOWR_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE,TSE_CMD_CONFIG, 0x00008000);   //PSC RESET
    while((IORD_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE,TSE_CMD_CONFIG) & 0x8000));

    IOWR_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE,TSE_CMD_CONFIG, (1<<11));
    IOWR_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE,TSE_CMD_CONFIG, (0));

     IOWR_ALTERA_TSEMAC_CMD_CONFIG(TRIPLE_SPEED_ETHERNET_0_BASE, ALTERA_TSEMAC_CMD_TX_ENA_MSK | ALTERA_TSEMAC_CMD_RX_ENA_MSK | ALTERA_TSEMAC_CMD_PROMIS_EN_MSK | ALTERA_TSEMAC_CMD_ETH_SPEED_MSK /*|  ALTERA_TSEMAC_CMD_TX_ADDR_INS_MSK*/);

    IOWR_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE, TSE_PCS_IF_MODE, 0x00000000);   //1000Base-X MODE
    IOWR_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE, TSE_PCS_DEV_ABILITY, 0x00000020); //PCS Dev_Ability Full Duplex Enable
    IOWR_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE, TSE_CMD_CONFIG, 0x00001200);   //RESTART_AUTO_NEGOTIATION | AUTO_NEGOTIATION_ENABLE
    a = IORD_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE, TSE_STATUS);

то линк статус в единице, автонег проходит, лампочки горят. Если пытаюсь выполнить его снова(не переконфигурируя ПЛИС ), то лампочка линка горит, а в регистре нуль! автонег проходит успешно. В чем проблема?

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


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

Может поможет. Я в RGMII режиме использую мегафункцию 1Gb Ethernet тоже в Cyclone IV. Вся настройка сводится к сдвигу выходной частоты 125МГц, сопровождающей RGMII сигналы, с помощью PLL. Так чтобы частота расположилась на временном моделирование так как должна в документации на микросхему физического уровня + конечно, во временном анализаторе, частоты работы на которых работает мегафункция, должны получиться больше 125МГц. Для этого достаточно задать временные ограничения и компиляцию с оптимизацией по скорости. Можно еще по MDIO интерфейсу, который реализован в мегафункции, поиграть задержками в микросхеме физического уровня.

 

Для того чтобы мегафункция заработала нужно инициализировать ее регистры и добиться того чтобы на моделировании из мегафункции пошли пакеты (flow control в мегафункции для этого придется выключить)

 

Чтобы увидеть порченные пакеты Ethernet со стороны компьютера можно использовать http://www.wireshark.org/ , хотя если пакеты очень сильно порчены то и WireShark их не увидит

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

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


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

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

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

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

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

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

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

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

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

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