A student creates a Bluetooth controlled synthesizer with Digilent Nexys Video Digilent Nexys Video and Pmod BT2Pmod BT2. You can control the frequency and amplitude of 10 sine waves from the mobile apps.
Signal Processing for the Synthesizer
The synthesizer is designed in additive synthesis. This involves the summation of multiple sinusoidal signals to form a more complex signal. The additive synthesis parameters in a discrete-time implementation can be determined using the Fast Fourier Transform (FFT) that computes the Discrete Fourier Transform (DFT) of a sequence.
System Design
The system consists of
- Microblaze Processor - soft processor controls the data flow (FFT, DMA channel to codec, memory, Bluetooh, additive generator ceofficients)
- DDR3 Memory
- Audio Codec driven by custom IP (with central DMA channel and 512 samples FIFOs [L and R audio channels])
- Xilinx FFT IP with FIFO
- Bluetooth UART
- Additive Generator - Run the additive synthesis
Additive Synthesis Implementation
The student built a few IPs in Xilinx Vivado to run the additive synthesis. You can see the building blocks in the below block diagram.
- AXI Memory-Mapped - block provided by Xilinx, allows Microblaze processor to access IP memory, which stores data about the sound pitch, amplitude(k), phase shift(k), where k is an index of the sine wave.
- Phase generator - computes phase value based on sound pitch, phase shift, and previous phase value.
- Data generator - provides signal flow to DDS Compiler
- DDS Compiler - Xilinx IP, stores sine wavetable in Block RAM. Input : 16 bit phase value, output : 16 bit sine wave value.
- Amplitude Multiplier - perform equation A * sin[n], where A is (0 ; 1) (16 bit fraction value).
- Mixer - adds all of the sine waves.
- Normalize - multiply output by a factor based on the count of the sine waves (provides full-scale output)
Putting everything together
After you complete the block design and generate the wrapper. You can run the synthesis, implementation and export the hardware to Xilinx SDK. Then, you can write the application in C programming language. Then, you can program the design in the FPGA.
After that, you can plug in Pmod BT2 and headphone on the Nexys Video.
You also need to download the mobile apps and pair that with the Pmod BT2. Then, you can create different sounds
You can follow the steps in the project page and replicate the project.