New approach to the fabled NES ethernet adapter
Moderators: B00daW, Moderators
Oh and the speed of using the Wiznet chip, even in indirect addressing mode would be much faster than the SPI Microchip part. The way the indirect addressing works is that there are four registers at the base of the MM I/O space in the Wiznet chip (thus only needed two address lines from the cart port in addition to A15 on the expansion port). When you want to read/write from/to a memory address in the Wiznet chip's memory space, you write the low byte of the address to the first base register, then you write the high byte of the address to the second base register, and then start reading/writing. If you set the "auto increment" flag in the third base register, the Wiznet chip has an internal address pointer that increments after each read/write.
So if you wanted to read 0x100 bytes from 0x0400 in the Wiznet memory, you set the auto increment flag in the third register and then write 0x00 to the first register, then write 0x04 to the second register, then do 256 reads from the Wiznet chip. The first read will return the byte at 0x0400 and cause the internal address pointer to increment. The second read will return the byte at 0x0401, and so on. Writing is the same way. You set up the address you want to write a block of data to and then you just write the data. I'd be interested to see if it would be possible to use the 2A03's DMA to move packets in and out of the Wiznet chip...that would be really cool.
Anyway, the coding wouldn't be hard at all. The Wiznet chip has tons of internal packet memory so the ISR for handling packet reception can just queue up a packet event in the global event loop and then return. Deferring the packet processing to the main game loop keeps the ISR small and allows for incremental processing to be done while the game keeps going.
So if you wanted to read 0x100 bytes from 0x0400 in the Wiznet memory, you set the auto increment flag in the third register and then write 0x00 to the first register, then write 0x04 to the second register, then do 256 reads from the Wiznet chip. The first read will return the byte at 0x0400 and cause the internal address pointer to increment. The second read will return the byte at 0x0401, and so on. Writing is the same way. You set up the address you want to write a block of data to and then you just write the data. I'd be interested to see if it would be possible to use the 2A03's DMA to move packets in and out of the Wiznet chip...that would be really cool.
Anyway, the coding wouldn't be hard at all. The Wiznet chip has tons of internal packet memory so the ISR for handling packet reception can just queue up a packet event in the global event loop and then return. Deferring the packet processing to the main game loop keeps the ISR small and allows for incremental processing to be done while the game keeps going.
Where have I heard this before?Wookie wrote:When you want to read/write from/to a memory address in the Wiznet chip's memory space, you write the low byte of the address to the first base register, then you write the high byte of the address to the second base register, and then start reading/writing. If you set the "auto increment" flag in the third base register, the Wiznet chip has an internal address pointer that increments after each read/write.
Not possible. The DMA on the NES is for updating the PPU sprite ram quickly during the vblank. It is hard wired to write to $2004. It's not targetable.Wookie wrote:I'd be interested to see if it would be possible to use the 2A03's DMA to move packets in and out of the Wiznet chip...that would be really cool.
Well, I'm getting farther with Sullins. They have an off-the-shelf part that is so close to what we need except that it is too thick to fit into expansion port. The expansion port opening only has room for a 0.375" thick card edge connector and their part is 0.470" thick. I'm working with them to see if they can adapt their existing part to be thinner. I'm also about to mail them an expansion port connector from my spare NES to get a quote from them.
They wanted quantity estimates and I asked them to give me a quote for quantities of 100, 500, and 1000. I have no idea what this will cost, but I won't be surprised if the 100 quantity order will be several thousand dollars or more, making the part a $20+/piece part. If that is the case, my plan is to contact retrousb.com and/or the sparkfun.com guys to see if they would do the initial buy and resell the parts through their site. I don't care how this thing gets made, I just want a legitimate part that I can use in my product.
They wanted quantity estimates and I asked them to give me a quote for quantities of 100, 500, and 1000. I have no idea what this will cost, but I won't be surprised if the 100 quantity order will be several thousand dollars or more, making the part a $20+/piece part. If that is the case, my plan is to contact retrousb.com and/or the sparkfun.com guys to see if they would do the initial buy and resell the parts through their site. I don't care how this thing gets made, I just want a legitimate part that I can use in my product.
So I got a quote back from Sullins. They want $5300 as a setup fee and then I assume there is a per-unit charge on top of that.
Unfortunately, I don't have that kind of cash laying around to throw at making a part for a NES expansion board.
If you guys have any ideas on how to pull together the funds, I'm all ears.
If we could put together an order for 1,000 units, then the startup fee is only $5.30 per unit and any per-unit cost on top of that gives us a total cost per unit. I'm guessing that the per-unit cost wouldn't be more than $10/unit with a 1,000 unit order, but still, that makes the total order $15K+. That makes things difficult.
Unfortunately, I don't have that kind of cash laying around to throw at making a part for a NES expansion board.
If you guys have any ideas on how to pull together the funds, I'm all ears.
If we could put together an order for 1,000 units, then the startup fee is only $5.30 per unit and any per-unit cost on top of that gives us a total cost per unit. I'm guessing that the per-unit cost wouldn't be more than $10/unit with a 1,000 unit order, but still, that makes the total order $15K+. That makes things difficult.
- Super-Hampster
- Posts: 185
- Joined: Fri May 12, 2006 4:40 pm
I don't think I can put more than $300 into it, and that barely puts a dent in it. Plus $10 - $15 per connector isn't too thrilling. I've always heard connectors were expensive, I never really looked into it though.
I while back I had an idea for a "backplane cart". Of course that absurd, but with some bus buffers and multiple edge connectors (standard ones), you could have multiple cartridges, software selectable. But anyways that's absurd, and hardware like that already exists (though rare).
I while back I had an idea for a "backplane cart". Of course that absurd, but with some bus buffers and multiple edge connectors (standard ones), you could have multiple cartridges, software selectable. But anyways that's absurd, and hardware like that already exists (though rare).
Hello.
What about using WIZnet W5300)?
A project like this could be amazing with an usb interface for HID and mass storage and a flexible ram based cart emulator plus some fpga or tiny ARM for mapper emulation. It could be quite nice for gaming and developmentp
Projects using wiznet chips:
Ethernet cartridge for MSX
Spectranet (ethernet for Sinclair ZX Spectrum)
Stuff interesting to get from Spectranet, for example.
Why not make a common network filesystem for all 8bit systems and some 16bit ones too? It could be amazing!
[/url]
What about using WIZnet W5300)?
It's the bigger bro of WIZnet W5100, featuring both 8 and 16bit bus, more speed, better TCP engine.Supports hardwired TCP/IP protocols : TCP,UDP, ICMP, IPv4, ARP, IGMPv2, PPPoE, Ethernet
- Supports 8 independent SOCKETs simultaneously
- High network performance : Max 80Mbps
- Supports hybrid TCP/IP stack(software and hardware TCP/IP stack)
- IP Fragmentation is not supported
- Internal 128Kbytes memory for data communication(Internal TX/RX memory)
- More flexible allocation internal TX/RX memory according to application throughput
- Supports memory-to-memory DMA (only 16bit Data bus width & slave mode)
- Embedded 10BaseT/100BaseTX Ethernet PHY
- Supports auto negotiation (Full-duplex and half duplex)
- Supports auto MDI/MDIX(Crossover)
- Supports network Indicator LEDs (TX, RX, Full/Half duplex, Collision, Link, Speed)
- Supports a external PHY instead of the internal PHY
- Supports 16/8 bit data bus width
- Supports 2 host interface mode(Direct address mode & Indirect address mode)
- External 25MHz operation frequency (For internal PLL logic, period=40ns)
- Internal 150MHz core operation frequency (PLL_CLK, period=about 6.67ns)
- Network operation frequency (NIC_CLK : 25MHz(100BaseTX) or 2.5MHz(10BaseT))
- 3.3V operation with 5V I/O signal tolerance
- Embedded power regulator for 1.8V core operation
- 0.18 µm CMOS technology
- 100LQFP 14X14 Lead-Free Package
A project like this could be amazing with an usb interface for HID and mass storage and a flexible ram based cart emulator plus some fpga or tiny ARM for mapper emulation. It could be quite nice for gaming and developmentp
Projects using wiznet chips:
Ethernet cartridge for MSX
Spectranet (ethernet for Sinclair ZX Spectrum)
Stuff interesting to get from Spectranet, for example.
A simple network file system (TNFS, Tiny Network Filesystem) designed for 8 bit systems.
Why not make a common network filesystem for all 8bit systems and some 16bit ones too? It could be amazing!
Well the MSX is lucky, because from what I recall it has 2 cartridge ports. Plus that system and the Spectrum being computers, already have other ways to load programs.
I think most of the interest here is about it being a separate expansion, allowing for cheaper cartridges to be made later rather than having an expensive single cartridge to be permanently stuck with.
I think most of the interest here is about it being a separate expansion, allowing for cheaper cartridges to be made later rather than having an expensive single cartridge to be permanently stuck with.
What is the difference between the free ethernet cable free with the xbox 360 and the wireless network adapter? I am just wondering what is the difference between the Wireless network adapter which is quite expensive and the free ethernet cable that comes free with the xbox 360..They do the same thing right, but why is one so expensive than the other? If I am wrong and they do not do the same thing please tell me!
______________
indian matrimonial
______________
indian matrimonial
Last edited by yackerena on Wed Dec 16, 2009 3:43 am, edited 1 time in total.