With a Cyclone it is unlikely to get a GigE bandwidth filled with a soft core system and OS. I did this on NIOS recently and found strong limilations. To drive Ethernet with nearly 1000Mbit a small FPGA core is required.
You can easily calculate yourself that through the given 8Bit data width in (R)GMII, you will need 125MHz clock speed with a more or less 100% filled buffer to transmit at GigaSpeed.
Hi,
can you please explain or share the c application that you have did for Nios MDIO interface ?
i want to know how we can read and write and we need to set some address initially .. can you share those details
i got some picee of code
pls see
alt_u32 t2=0;
IOWR_ALTERA_TSEMAC_MDIO_ADDR1(TRIPLE_SPEED_ETHERNET_0_BASE, 0); // PHY and other board peripheral initialization
IOWR_ALTERA_TSEMAC_MDIO_ADDR0(TRIPLE_SPEED_ETHERNET_0_BASE, PHY);
do
{
// Control Register .15 = 1 - Reset
IOWR_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 0, 0x8000);
Delay(0xFFFF);
// (.13=0, .6=1) - 1000 Mbps, .12=1 - Enable Auto-Negatiation,
IOWR_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 0, 0x1040);
Delay(0xFFFF);
// read Control Register
t2 = IORD_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 1);
Delay(0xFFFF);
// Control Register .15 = 1 - Reset
IOWR_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 0, t2 | 0x8000);
Delay(0xFFFF);
// read Staus Register
t2 = IORD_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 1);
alt_printf("Reg 1 : %x\n",t2);
//check Link
if( (t2&0x0004)==0 )
{
// Control Register .15 = 1 - Reset
IOWR_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 0, t2 | 0x8000);
Delay(0xFFFF);
}
// .15=1 - Copper, (.3:.0)='0100' - SGMII without Clock with SGMII Auto-Neg to copper
IOWR_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 27, 0x8004);
Delay(0xFFFF);
// read Staus Register
t2 = IORD_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 1);
alt_printf("Reg 1 : %x\n",t2);
}
while( (t2&0x0004)==0 );