How to Write a Verilog Peripheral