I saw some inexpensive Dual Port RAMs on eBay (IDT7006) and came up with the idea for this project. It provides a 16K bank of RAM which sits in two 8K banks on the System Computer which can be written to and read from a PC via USB. An Arduino Nano provides the PC-USB interface.
SW1 selects the two 8K banks, they do not need to be adjacent but one must be odd and the other even. SW2 write protects the RAM.
No special software is required on the PC, communication is simply using a terminal program e.g. RealTerm (baud rate set to 115200)
The format of commands is as follows:
Command | Format | Description |
Intel Write | 10<address>00<data> | writes <data> to <address> in RAM, in Intel Hex format, usually from a file |
Echo | e<0 or 1> | toggles the echo state |
Intel Read | i<address><nbytes> | reads the specified number of bytes from RAM, outputs in Intel Hex format |
Debug | m<0 or 1> | toggles messages state |
Offset | o<address> | adds an offset to write addresses |
Read | r<address><nbytes> | reads the specified number of bytes from RAM |
Write | w<address><data> | writes <data> to <address> in RAM |
XON/XOFF | x<0 or 1> | toggles XON/XOFF handshaking state |
Reset | z | resets target |
the command 'letter' can be in upper or lower case
<0 or 1> '0' disables, '1' enables feature - if no parameter is specified
feature is toggled
<address> up to 4-digits long, upper or lower case hex value
<nbytes> is the number of bytes to read, defaults to 1 (r) or 0x10 (i) if not
specified
<data> 1 or 2-digits, upper or lower case hex values
values can be separated by spaces and/or commas
commands can be terminated in CR, LF or CRLF
When sending and receiving files XON/XOFF needs to be enabled both in the terminal program and Dual Port RAM to prevent overrun.
Schematic
Bill Of Materials
Front Panel Drilling
Blank PCB
Arduino Code