MichD

 

Very old: FPGA MIDI Synth

For our final project in our EE course, my classmate and I built a simple digital synthesiser around an FPGA development board.

We had/have an interest in electronic music, so it made sense to pick a project around the theme. We chose to design a simple monophonic synthesiser around a Field Programmable Gate Array (FPGA), a technology covered in the course’s previous year.

The synthesiser consisted of a Digilent Nexys 2 development board, an external resistor ladder digital to analog converter (DAC), a little amplifier kit, and a MIDI input board with an opto-isolator.

On the FPGA, we implemented a universal asynchronous receiver-transmitter (UART) to clock in the serial MIDI data into usable bytes, a MIDI interpretation module, a wave table module, a module to set a clock frequency based on MIDI note, and a waveform selector.

We also built an external power supply board including mains transformer, to power the DAC.

In the months after we got our diplomas, I refined the project further to introduce 8-void polyphony, and to replace the DAC with a set of simple low pass filters, since I implemented audio output in the form of high-speed pulse-width modulation at that point.

A lot more detail about the project and the later additions can be read in my blog posts:

The block diagram for the FPGA design, after introducing polyphony: