Table of Contents

Nexys 4 DDR Music Looper

Overview

Description

This project demonstrates the usage of the Nexys 4 DDR's XADC port, DDR2 memory, and PWM audio output. The behavior is as follows:

Button Function
BTNL Back one bank
BTNR Forward one bank
BTNC Play/Record
BTND Stop/Erase
BTNU Swap Track
Bank State Description
E Bank is empty
r Bank is recording
P Bank is playing
S Bank is stopped

Features Used

Not Used Used
16 user switches X
16 user LEDs X
Two tri-color LEDs X
5 User Push Buttons X
Two 4-digit 7-segment displays X
4 Pmod ports X
Pmod for XADC signals X
12-bit VGA output X
USB-UART Bridge X
Serial Flash for Application Data X
USB HID Host With Mouse X
USB HID Host With Keyboard X
Micro SD card connector X
PWM audio output X
PDM microphone X
3-axis accelerometer X
Temperature sensor X
10/100 Ethernet PHY X

Prerequisites

Skills

Hardware

Software


Downloads

Nexys 4 DDR Support Repository – ZIP GIT Repo


Set up Hardware

1) Start by cutting off one end of your auxiliary input cord (that plugs into your instrument) and split up the wires.

2) The XADC port requires an input wave biased at .5V, so take the 1.0V rail found on J14 and create a voltage divider to get .5V. This is where the ground wire from your aux input will be connected. Connect the positive wire(s) of your aux input to AD3P on the JXADC connector. Put the 100pf capacitor from the aux input to GND to reduce noise. Connect AD3N to GND.

3) Plug in your headphones/speakers to the MONO AUDIO OUT port found on J8 of the Nexys 4 DDR.

Download and Launch the Nexys 4 DDR Music Looper Demo

Follow the Using Digilent Github Demo Projects Tutorial. This is an HDL design project, and as such does not support Vivado SDK, select the tutorial options appropriate for a Vivado-only design. As you have already set up the required hardware, you do not need to return to this guide when prompted to check for extra hardware requirements and setup.

Using the Nexys 4 DDR Music Looper Demo

1. Initial State

In the looper's initial state, you should see bA0E on the left 7-segment display, and four 0's on the right display. bA0E means that you are on 'bA'nk '0' and it is 'E'mpty. The right display is the timer used when recording or playing. The onboard LEDs 0 through 7 should be off, showing that no banks are active.

2. Switching Banks

Press BTNL and BTNR to change the bank to edit. There are 8 banks numbered 0 through 7. Each bank should initially be 'E' for empty.

3. Recording to a Bank

Press the play/record button (BTNC) to start recording to whichever bank you are on. The red LED will turn on LD16, and the 7-segment display will display an 'r' next to the bank. The timer will start to run to let you know how long you have recorded for.

4. Saving the Loop

When you have finished recording, press the play/record button again. The Nexys 4 DDR will start looping the recorded audio data. The 7-segment display will now display a 'P' next to the bank number and LD17 will shine green to let you know a track is playing. The onboard LED corresponding to the bank you recorded to (LED[0] in the picture) will turn on, showing that there is data on that bank.

5, Stoppng the Loop

Press the stop button on a bank that is currently playing, to stop playback on that bank. The 7-segment display will display an “S” which means the bank is stopped but not empty. The onboard “active” LED will stay on, since there is still data in the bank.

6. Recording to Another Bank

Press play again on the previous bank to resume playback, then press BTNL or BTNR to change to another bank that is not recorded on and press the play/record button to start recording to the new bank. The green LED will stay on and the red LED will turn on.

When finished, press play/record again and the bank will be saved. The state will change to to 'P' and the onboard LED corresponding to the bank (LED[1] in the picture) will turn on showing that the bank is active.

7. Canceling a Recording

If, while recording, you want to cancel the recording, you can press the stop button and it will erase the bank.

8. Erasing an Already Recorded Bank

Hold down the stop button for 1.5 seconds to erase the data on the corresponding bank. You will see an 'E' on the 7 segment display showing that the bank is empty, and the onboard LED corresponding to that bank will turn off. Erasing all of the banks will allow you to record a new loop of a different length.

9. Using the Change Track Feature

Flipping SW0 to the on position allows you to edit which banks are playing on the other track. While your loop is playing, press BTNU to swap to the other track at the end of the loop. At the end of the loop, the Nexys 4 DDR will switch to the selection of banks on the other track and will play those back.

10. Resetting the Looper

Press the CPU_RESET button on the Nexys 4 DDR to reset all of the banks to 'E' for empty.