Forum Discussion
Altera_Forum
Honored Contributor
19 years agoWe copied the design from the Nios development board Cyclone II edition and it works fine. There might be problems while compiling with SOPC Builder 6.1 instead 6.0 (we have not isolated a bug yet).
Try some low level access to the chip like: alt_putstr("-------------------------------------------------------------------------------\n");
alt_putstr("- LAN91C111 access test -\n");
alt_putstr("-------------------------------------------------------------------------------\n");
alt_putstr(" direction | address | data | comment\n");
alt_putstr("-------------------------------------------------------------------------------\n");
addr = LAN91C111_BASE + LAN91C111_LAN91C111_REGISTERS_OFFSET + 0xE;
data16 = IORD_16DIRECT(addr, 0);
alt_printf(" READ16 | 0x%x | 0x%x | check which register bank is selected\n", addr, data16);
data16 = 0x0003;
IOWR_16DIRECT(addr, 0, data16);
alt_printf(" WRITE16 | 0x%x | 0x%x | selection of register bank 3 (16 bit write)\n", addr, data16);
data16 = IORD_16DIRECT(addr, 0);
alt_printf(" READ16 | 0x%x | 0x%x | check register bank selection (expected 0x3303)\n", addr, data16);
alt_putstr("-------------------------------------------------------------------------------\n");
addr = LAN91C111_BASE + LAN91C111_LAN91C111_REGISTERS_OFFSET + 0xC;
data32 = 0x00030000;
IOWR_16DIRECT(addr, 0, data32);
alt_printf(" WRITE32 | 0x%x | 0x%x | selection of register bank 3 (32 bit write)\n", addr, data32);
data32 = IORD_32DIRECT(addr, 0);
alt_printf(" READ32 | 0x%x | 0x%x | check register bank selection (expected 0x3303XXXX)\n", addr, data32);
alt_putstr("-------------------------------------------------------------------------------\n");
addr = LAN91C111_BASE + LAN91C111_LAN91C111_REGISTERS_OFFSET + 0xA;
data16 = IORD_16DIRECT(addr, 0);
alt_printf(" READ16 | 0x%x | 0x%x | read the revision register (expected 0x3391)\n", addr, data16);
alt_putstr("-------------------------------------------------------------------------------\n"); change the alt_functions for normal C versions the result of the last read may be different, since it depends on the chip revision IzI