Addressing of External memory
El Paisa
Posts: 375
There is a provision to add External memory (EEPROM or SRAM)· except I2C ?
If there is, Will be in Hardare or software?
I hate to see a Cog dedicated to this task.
If there is, Will be in Hardare or software?
I hate to see a Cog dedicated to this task.
Comments
Still 32K of RAM is quite a lot, especially considering the efficiency of Spin -- do you think you're going to run out of space? Am I missing the question?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Jon Williams
Applications Engineer, Parallax
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Jon Williams
Applications Engineer, Parallax
Perhaps 2 other pins could be used as a separate i2c "channel" ?
Brian
I would very much like to hear more about this. Any chance of getting a look at how they are doing it? I see on Andre's site a photo of a Propeller-based board (http://www.xgamestation.com/view_media.php?id=160) which does not seem to have anything more than the single 256K I2C chip for memory. But there is that expansion connector in the center of the board. Perhaps there we will see some paging RAM?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
1+1=10
1. As I understand, you can use a larger EEPROM than the 32KB one, and store your data in the area above 32KB, or...
2. Those EEPROMs have address pins (A0, A1, and sometimes A2?)
I assume that the default EEPROM is addressed as '00'? That leaves several addresses free to connect other EEPROMs, or even the FRAMs discussed in this forum earlier, on the SAME pins as the first EEPROM.
If you want something that isn't I2C, though...
That would mean dedicating several pins for it, and probably a separate COG.
If you plan to use it as a high-speed logger, I would use some sort of battery-backed RAM, with 8 I/O-pins for Data, and stick a counter on another I/O-Pin. In addition you need to deal with Read/Write signals, and a reset for the counter.
The sequence for saving data would then be:
1. Reset Counter to start at beginning of RAM.
2. Output Data
3. Wiggle whatever Write signal is used.
4. Pulse Counter pin
5. If more data, Jump to 2.
Done in Assembler, this can be quite fast...
If you don't need the write-speed, you could use serial-in-parallell-out shift-registers for Address and Data. This is slower for sequential access, but much faster for Random access. (Also, you don't have to keep track of where in RAM you're working)
Also, don't worry too much about dedicating COGs for tasks. If a task isn't used constantly, just make certain that it stops and frees the COG. Having 8, 10 or even 20 tasks doesn't matter if they're not all running at the same time.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Don't visit my new website...
Paul, the 24lc256 is 256k bits, so the entire thing is needed to fill the 32k byte propeller ram. Perhaps one could use a larger eeprom and use the higher addresses for additional storage
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
1+1=10
Ok, maybe that is a 24lc1025 which looks like two 64kbyte eeproms. Cool.
http://ww1.microchip.com/downloads/en/DeviceDoc/21941B.pdf
but don't forget that writing a EEPROM needs 5ms/page (128Bytes 24LC1024)
So if you need fast writes (datalogger) then you should use a external SRAM or DRAM
I believe the 24lc1025 will work. There was a thread about 3 months or so ago that discussed this particular EEPROM.
http://forums.parallax.com/showthread.php?p=604607
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Beau Schwabe
IC Layout Engineer
Parallax, Inc.
http://www.nanoamp.com/datasheets/N256S08xxHDA.pdf
Now if I could just find where to buy some.
-Dan
EEPROMs are slow (400kHz/1MHz), first you have to send adress, wait for acknowledge then send memory-adress...
(and writing needs 5ms)
I've thought about using I2C Portexpanders (Philips,Microchip,TexasInstruments...) but thats the same prob with the I2C speed.
A 82C55 (3x8bit) Portexpander was a possible solution (but it is outdated and not very cheap)
www.csee.umbc.edu/~plusquel/310/slides/8086_IO2.html
www.diamondsystems.com/files/binaries/har82c55.pdf
Cheapest solution:
The adress is shifted via two 74HC164 (very very cheap),
CAS, RAS, WR (for read,write and refresh) are directly connected.
-> 14pins needed, thats the bad thing.
With a 82C55 you need 16 I/O-pins (if you tie /CS to GND) but its much faster than the shift register solution
I've drawn a schematic for the shift register solution, if anybody has got an idea how to shift the bidirectional datalines,
please let me know
If you want to use the 24xx1025:
Don't forget that the A2 pin has to be tied to Vcc (3.3Volt) [noparse];)[/noparse]
But you can cascade up to 4 devices (512kByte)
If you Search the projects forum area for "simm", you'll see how I connected a 30 pin simm to an SX52 using basically this same scheme, except for using 8 bit latches instead of shift registers.
Do modern versions of the 8255s still have that property of setting all their outputs to zero anytime you write to the control register to change direction of any ports? I've used them in the past, but that always a tricky behavior; it sometimes took extra circuitry to make sure that outputs going to zero wouldn't trigger anything.
David
Yeah, it usually seems that to get speed, you need lots of pins.
But it's funny - a few years ago, I used to work on an IBM minicomputer with an external rack of hard disks; not all that large by today's standards but it seemed big at the time, like 100 gig or so. But the odd thing was that the entire data access to the rack went through a single serial cable. I don't know how they did it, but its performance was fine.
My intention was to save pins - 16 is to much in my opinion, a SPI like DRAM control would be fine,
(my english is a little worse, so my phrasing could be a little obscure)
I have searched for Bidirectional shift registers and found the 74HC598, but I only have a confusing datasheet which I do not understand completely...
Thanks for your advise, after looking your post in the sx-forum, a cap (10uF) is needed for the SIMM supply,
I forgot that in my design. Since the power consumtion of the SIMM is high it's a good choice to have one there.
8255 problem:
do simple pulldowns at the port not work that out?
I've used the 82C55 only for one project (for a simple control via 8keys,8leds and a lcd display)
and it works fine without any extra circuitry.
- Eric
I've modified the DRAM interface a bit...
only 6 I/O pins are needed now (if you only use 1bit of the DRAM-SIMM-Module=2MByte)
The 5-pin Control(Ctrl).-Connector controls serial adress write(Adr-data,Adr-clk) and DRAM read/write(RAS/CAS/WR)
With a jumper you can put the Data0 line on the Control-connector (6th pin).
Also you can use the whole 8bit but this will need 13 I/O pins but better performance/speed.
Schematic and PCB-Board (single sided) is done in (freeware) "Eagle" ... (www.cadsoft.de)
gtz
Eric
Post Edited (Catweazle) : 12/24/2006 8:14:24 PM GMT