Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Cyclone IV GX + SFP
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
covsh
здравствуйте!

использую отладочную плату 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, т.е. линка нет.

ломаю голову уже вторую неделю, не пойму в чем дело.
Flood
А что на ответном устройстве, линк пытается подняться? Оптический кабель подключен кроссом?
covsh
Цитата(Flood @ Jul 31 2012, 23:02) *
А что на ответном устройстве, линк пытается подняться? Оптический кабель подключен кроссом?

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

разобрался в чем было дело.
TSE не делал (не делал правильный?) ресет трансивера.
решил это с помошь экспорта сигнала gxb_pwrdn (из свойств TSE) и дерьганья его через ниос
gosu-art
Здравствуйте!
Сейчас тоже начну пробовать оживить TSEwPCS на СIV GX, Плата своя. Раньше с трансиверами не работал.
Пока вопрос такой: если не используешь реконфиг трансивера, то можно ли все сигналы, с соответствующим префиксом, занулить?
gosu-art
1111493779.gif Тоже вывел сброс и дергаю его ниосом! Лапочка линка загорелась! w00t.gif Ща буду пробовать гонять байтики!
Только вот непонятно... когда я прошиваю прошивку и выполняю следующий код
Код
    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);

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

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

Чтобы увидеть порченные пакеты Ethernet со стороны компьютера можно использовать http://www.wireshark.org/ , хотя если пакеты очень сильно порчены то и WireShark их не увидит
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.