Source: https://opticsedu.files.wordpress.com/2017/10/6-memory-and-io-interfacing.pdf