Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
learn:programmable-logic:tutorials:nexys-4-ddr-looper-demo:start [2017/04/28 20:26] – [2. Generate the Project] Andrew Holzerlearn:programmable-logic:tutorials:nexys-4-ddr-looper-demo:start [2022/10/04 11:38] (current) – external edit 127.0.0.1
Line 4: Line 4:
  
 ===== Overview ===== ===== Overview =====
-==== 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  |    | 
  
 ==== Description ==== ==== Description ====
Line 55: Line 34:
 ^  S  |  Bank is stopped  | ^  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=== +===== Prerequisites ===== 
-  * **Basic wire splicing**+ 
 +=== Skills === 
 +  * **Basic Wire Splicing**
     * //We will be cutting an auxiliary cable//     * //We will be cutting an auxiliary cable//
   * **Basic Breadboarding**   * **Basic Breadboarding**
     * //There is a small circuit we must construct on a breadboard//     * //There is a small circuit we must construct on a breadboard//
- +  
-===Hardware=== +=== Hardware === 
-  * **Nexys 4 DDR board** +  * **Nexys 4 DDR Board** 
-  * **Micro-USB cable** +  * **Micro-USB Cable** 
-  * **Headphones or speaker**+  * **Headphones or Speaker**
   * **Breadboard**   * **Breadboard**
-  * **2 identical resistors** +  * **2 Identical Resistors** 
-  * **100pF capacitor**+  * **100pF Capacitor**
   * **Wires**   * **Wires**
-  * **Electrical instrument (Auxiliary input)**+  * **Electric Musical Instrument (Auxiliary Input)**
  
-===Software===+=== Software ===
   * **Vivado Design Suite 2016.4**    * **Vivado Design Suite 2016.4** 
     * //Newer versions can be used, but the procedure may vary slightly//     * //Newer versions can be used, but the procedure may vary slightly//
   * **Nexys 4 DDR Support Files**    * **Nexys 4 DDR Support Files** 
     * These files will describe GPIO interfaces on your board and make it easier to select your FPGA board and add GPIO IP blocks.      * These files will describe GPIO interfaces on your board and make it easier to select your FPGA board and add GPIO IP blocks. 
-    * Follow the Wiki guide: [[vivado:boardfiles|Vivado Board Files for Digilent 7-Series FPGA Boards]] on how to install Board Support Files for +    * Follow the Wiki guide on how to install [[vivado:boardfiles|Vivado Board Files for Digilent 7-Series FPGA Boards]]. 
 ----- -----
  
 ===== Downloads ===== ===== Downloads =====
-Nexys 4 DDR Support Repository -- [[https://github.com/Digilent/Nexys-4-DDR-Music-Looper/archive/master.zip|ZIP]] [[https://github.com/Digilent/Nexys-4-DDR-Music-Looper|GIT Repo]]+ 
 +Nexys 4 DDR Support Repository -- [[https://github.com/Digilent/Nexys-4-DDR-Music-Looper/releases/download/v2016.4-1/Nexys-4-DDR-Music-Looper-2016.4-1.zip|ZIP]] [[https://github.com/Digilent/Nexys-4-DDR-Music-Looper|GIT Repo]]
  
 ------- -------
-===== How to... ===== 
  
-==== 1. Setup ====+===== Set up Hardware =====
  
->1.1) Start by cutting off one end of your auxiliary input cord (that plugs into your instrument) and split up the wires.+>1) Start by cutting off one end of your auxiliary input cord (that plugs into your instrument) and split up the wires.
 > >
 > {{:nexys4-ddr:img_20150622_161606.jpg?300|}}  {{:nexys4-ddr:img_20150622_161619.jpg?300|}}   > {{:nexys4-ddr:img_20150622_161606.jpg?300|}}  {{:nexys4-ddr:img_20150622_161619.jpg?300|}}  
  
->1.2) The XADC 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.+>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.
 > >
 >{{:nexys4-ddr:voltage_divider.jpg?500|}} >{{:nexys4-ddr:voltage_divider.jpg?500|}}
  
->1.3) Plug in your headphones/speakers to the MONO AUDIO OUT port found on J8 of the Nexys 4 DDR.+>3) Plug in your headphones/speakers to the MONO AUDIO OUT port found on J8 of the Nexys 4 DDR.
  
-==== 2. Generate the Project ====+===== Download and Launch the Nexys 4 DDR Music Looper Demo =====
  
->2.1) Download the repository linked in the download section and unzip it in the location of your choosing. +>Follow the [[:learn:programmable-logic:tutorials:github-demos:start|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.
  
->2.2) Generate the **Looper** project by following this guide before continuing: [[vivado:github|How to Generate a Project from Digilent's Github]]+===== Using the Nexys 4 DDR Music Looper Demo =====
  
-==== 3. Build the Project ====+==== 1. Initial State ====
  
->3.1) Click **Generate Bitstream** on the left hand menu towards the bottom. Vivado will run through both Run Synthesis and Run Implementation before it generates the bitstream automatically. +>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.
 > >
->Note: If you want, you can click each step by itself in the order of **Run Synthesis**, **Run Implementation** and then **Generate Bitstream**. +>{{:nexys4-ddr:base.jpg?1000|}}
-> +
->{{:basys3:buildflow.png?600|}}+
  
-==== 4. Program the Board ====+==== 2. Switching Banks ====
  
->4.1) Once you have generated your bit file, Click on the hardware manager and connect to your board by choosing the local server option. 
-> 
->{{:nexys4-ddr:deviceconnected.jpg?600|}} 
- 
->4.2) Click program to load the project onto your Nexys 4 DDR. 
- 
-==== 5. Run the Project ==== 
- 
-This portion will help you run the demo and observe all its features. 
- 
->5.1) Initial State 
-> 
->In its initial state, you should see bA0E 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. 
-> 
->{{:nexys4-ddr:base.jpg?1000|}} 
- 
->5.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. >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.
 > >
 >{{:nexys4-ddr:img_20150622_180727.jpg?600|}} >{{:nexys4-ddr:img_20150622_180727.jpg?600|}}
  
->5.3) Recording to a bank +==== 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. >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.
 > >
 >{{:nexys4-ddr:rec1.jpg?600|}} >{{:nexys4-ddr:rec1.jpg?600|}}
  
->5.3) Saving the loop +==== 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. >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.
 > >
 >{{:nexys4-ddr:play1.jpg?600|}} >{{:nexys4-ddr:play1.jpg?600|}}
  
->5.4) Stopping the loop +==== 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. >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.
 > >
 >{{:nexys4-ddr:stop1.jpg?600|}} >{{:nexys4-ddr:stop1.jpg?600|}}
  
->5.5) Recording to another 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. >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.
 > >
 >{{:nexys4-ddr:playrec.jpg?600|}} >{{:nexys4-ddr:playrec.jpg?600|}}
->+
 >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. >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.
 > >
 >{{:nexys4-ddr:play2.jpg?600|}} >{{:nexys4-ddr:play2.jpg?600|}}
  
->5.6) Canceling a recording +==== 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. >If, while recording, you want to cancel the recording, you can press the stop button and it will erase the bank.
  
->5.7) Erasing an already recorded 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. >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.
  
->5.8) Using the Change Track Feature +==== 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. >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.
  
->5.9) Resetting the looper +==== 10. Resetting the Looper ==== 
->+
 >Press the CPU_RESET button on the Nexys 4 DDR to reset all of the banks to 'E' for empty. >Press the CPU_RESET button on the Nexys 4 DDR to reset all of the banks to 'E' for empty.
 > >
 >{{:nexys4-ddr:reset.jpg?600|}} >{{:nexys4-ddr:reset.jpg?600|}}
  
-{{tag>learn programmable-logic tutorial nexys-4-ddr}}+ 
 + 
 +{{tag>learn programmable-logic nexys-4-ddr}}