I admire your tenacity. A thought about the DDR2 interface: since you own both sides of it, you can cheat. Write identical data to addresses n and n+1, and use the standard rising edge on the FPGA. When reading data back to the SoC, throw away every other word.