super I/O

Let's talk about anything related to the 6502 microprocessor.
Post Reply
bound
Posts: 59
Joined: 24 May 2004

super I/O

Post by bound »

Hi Guys .

I have some idea to make super I/O speed independent device .
After all the problems I had trying to use i2c , spi , rs232 and some sound subsystems (in my case swinsid)
I've got this idea . Why not to use double ported ram connected to 65xxx on port A and some micro on side B ? .
For example Using atmega128, we will get access to all features of that micro plus some extra things
like lcd controller , sd fat 16/32 file system controller and much more .

what do you think about this ?
faybs
Posts: 106
Joined: 16 Oct 2006

Post by faybs »

Something like this?
http://www.parallax.com/tabid/708/Default.aspx

The Parallax Propeller was designed to provide this sort of functionality.
User avatar
GARTHWILSON
Forum Moderator
Posts: 8773
Joined: 30 Aug 2002
Location: Southern California
Contact:

Post by GARTHWILSON »

Quote:
After all the problems I had trying to use i2c , spi ,
Those two are quite straightforward and very easy to bit-bang. You shouldn't have any problems. The other part however has been the subject of a few conversations here relating to using secondary processors or microcontrollers to relieve the main processor of the job of babysitting various interfaces. What can be a disadvantage sometimes is that having these interfaces another level removed from the main processor, you may incur unwanted delays in getting the data back and forth.
Nightmaretony
In Memoriam
Posts: 618
Joined: 27 Jun 2003
Location: Meadowbrook
Contact:

Post by Nightmaretony »

True but you also have delay if you do direct software calculate to prepare data or for dedicated IO chips if they are designed for other platforms.

My own thinking on pinball mind is an AVR to babysit the ethernet and USB ports....
"My biggest dream in life? Building black plywood Habitrails"
User avatar
BigEd
Posts: 11463
Joined: 11 Dec 2008
Location: England
Contact:

Post by BigEd »

Might be worth considering cjb's parallel-port comms system too.

My guess is that posting data through a dual-ported RAM will be a win provided you have a block-oriented protocol - for each data transfer, you need some handshaking to say that the write is done, and the reader has to signal that it's finished with the data. This is less overhead if you're moving many bytes at a time.

Maybe a simple FIFO is a solution if you have a unidirectional peripheral, like an audio out.
bound
Posts: 59
Joined: 24 May 2004

Post by bound »

Quote:
you need some handshaking to say that the write is done
Just one (wait/start) register for each protocol . We can write 1 to it , that will be a signal for mpu to start transmission , after that the mpu will set it back to 0. For incoming data Irq can by use . currently I'm working on small prototype using this solution .
Last edited by bound on Tue Jan 04, 2011 5:37 pm, edited 1 time in total.
User avatar
BitWise
In Memoriam
Posts: 996
Joined: 02 Mar 2004
Location: Berkshire, UK
Contact:

Post by BitWise »

I was looking at some 40MIPS 3V3 PIC 33FJ128GP802 devices that have an enhanced parallel master port as possible I/O devices.

http://ww1.microchip.com/downloads/en/D ... 70292D.pdf
http://ww1.microchip.com/downloads/en/D ... 70299C.pdf

They can be programmed to appear as a 4 byte memory area in the hosts address map. Reads and writes to the chip trigger interrupts so you can update the contents.

The device supports software pin configuration so you can map a selection of the built in peripherals (USART/I2C/SPI/ECAN etc.) to the free pins. Ten pins should be free (8 if you want an external oscillator for the full 40MIPS instead of the internal 7.37 Mhz).
Andrew Jacobs
6502 & PIC Stuff - http://www.obelisk.me.uk/
Cross-Platform 6502/65C02/65816 Macro Assembler - http://www.obelisk.me.uk/dev65/
Open Source Projects - https://github.com/andrew-jacobs
User avatar
BigEd
Posts: 11463
Joined: 11 Dec 2008
Location: England
Contact:

Post by BigEd »

That's extremely interesting - a 40MIPS micro controller which can sit on a 6502 bus as a 4-address peripheral. Have you done this, or still in the research phase?
User avatar
BitWise
In Memoriam
Posts: 996
Joined: 02 Mar 2004
Location: Berkshire, UK
Contact:

Post by BitWise »

BigEd wrote:
That's extremely interesting - a 40MIPS micro controller which can sit on a 6502 bus as a 4-address peripheral. Have you done this, or still in the research phase?
Its still a cunning plan. I bought some for another project but noticed that they looked like they could be useful as I/O processors for a 65xx system.
Andrew Jacobs
6502 & PIC Stuff - http://www.obelisk.me.uk/
Cross-Platform 6502/65C02/65816 Macro Assembler - http://www.obelisk.me.uk/dev65/
Open Source Projects - https://github.com/andrew-jacobs
User avatar
Dr Jefyll
Posts: 3525
Joined: 11 Dec 2009
Location: Ontario, Canada
Contact:

Post by Dr Jefyll »

BitWise wrote:
I was looking at some 40MIPS 3V3 PIC 33FJ128GP802 devices [...] They can be programmed to appear as a 4 byte memory area in the hosts address map. Reads and writes to the chip trigger interrupts so you can update the contents.
It's an appealing setup. A similar scheme was used in the 8741, a member of the 1970s Intel MCS-48 family (famous for the ubiquitous 8048 keyboard controller). The 8741 variant was aptly billed as a "Universal Peripheral Interface."

The 8741's host/slave shared memory region was only two bytes in size: a data register, and a command/status register. Despite the seemingly limited interface, a great deal becomes possible if you're willing to explore the envelope. For example, as Big Ed notes, "for each data transfer, you need some handshaking to say that the write is done, and the reader has to signal that it's finished with the data." But I think he'd agree that the "finished" signal from the reader can be eliminated -- turbocharging the transfer -- if reader timing can be guaranteed. That guarantee might not be difficult to achieve, given that you have an entire dedicated cpu at your disposal. (I'm envisioning a block transfer, with simplified handshaking on the innermost loop only.)
Garth Wilson wrote:
What can be a disadvantage sometimes is that having these interfaces another level removed from the main processor, you may incur unwanted delays in getting the data back and forth.
Yes. Another consideration is access to the code. Presumably your host system has some way to load new application software, but changes to the code in the slave cpu are likely to be comparatively inconvenient (and hopefully infrequent).

-- Jeff
User avatar
BigEd
Posts: 11463
Joined: 11 Dec 2008
Location: England
Contact:

Post by BigEd »

I'm reminded of the C64 (and VIC-20) disk drives which have a 6502 in them, and the efforts to write faster load routines than the standard ones - and as it happens, Michael Steil recently posted about this - and indeed, one has to tackle code loading and use timing knowledge to minimise overhead. Recommended reading - includes sources!

Cheers
Ed
Post Reply