Author: Scott Gravenhorst
For Spartan-3E SK
This Verilog and PicoBlaze design uses FPGA logic UARTs to receive MIDI data on IO12 and transmit a 115.2Kbaud serial stream via the DCE serial port. I hook the DCE port to my PC's serial port and use Hyperterminal to monitor the hexadecimal data stream. 0xFE bytes are discarded by the PicoBlaze program, this behavior can be changed by editing and reassembling midihex.psm.
I used a 6N138 for my MIDI input interface. This IC does not require inverting the MIDI data stream. In the main project file, MIDItoHexTTY.v, there is a place near the top to add inversion if it's required. Also note that you may be using an FPGA pin other than IO12, you can change this in the user constraints file. In the zip file, you will find a GIF schematic of the 6N138 MIDI receiver I used.
UARTs courtesy of Jim Patchell