8MB Ramdisk (external RAM) for Arduino..

In case you can change the EMB timing parameters on-the-fly with Due (most probable) you can speed up the setting of the Address significantly. The Address is written into the CPLD controller, thus it must not comply with the psram timings.

A 15-20ns long /WR pulse works fine while writing the Address.

// Setting of the starting Address (8MB max)
set_address(uint32 Address){
	// below sequence could be shorter when setting up only some of the nibbles
	MAKE NIBBLES OF Address SOMEHOW - ie. with union as above or with  >>
        SET WRITE PULSE TO 15-20ns WIDTH
	Parallel.write(0x01, nibb6);  // addr[23..20]
	Parallel.write(0x01, nibb5);
	Parallel.write(0x01, nibb4);
	Parallel.write(0x01, nibb3);
	Parallel.write(0x01, nibb2);
	Parallel.write(0x01, nibb1);  // addr[3..0]
	//Parallel.write(0x01, CONTROL);
        SET WRITE PULSE BACK
}