Differences

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

Link to this comparison view

Next revision
Previous revision
learn:programmable-logic:tutorials:nexys-4-ddr-keyboard-demo:start [2016/07/08 21:27] – created Sam Klearn:programmable-logic:tutorials:nexys-4-ddr-keyboard-demo:start [2022/10/04 11:38] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====== Nexys4-DDR Keyboard Demo ======+====== Nexys 4 DDR Keyboard Demo ======
  
 {{:nexys4-ddr:n4k.png?nolink&600|}} {{:nexys4-ddr:n4k.png?nolink&600|}}
  
 ===== Overview ===== ===== Overview =====
-===== Features Used =====+ 
 +==== Description ==== 
 + 
 +The Keyboard Demo project demonstrates a simple usage of the Nexys 4 DDR's  
 +USB-HID port and 7 segment display. The behavior is as follows: 
 +  
 + * The user presses a key on the keyboard, which sends a keyboard scan code to the Nexys 4 DDR. This scan code is read and output onto the 7 segment display. When a new scan code is read, it is shifted onto the 7 segment display from the right. A scan code of F0xx indicates that key xx has been released. 
 + 
 +==== Features Used ====
  
 | ^ Not Used ^ Used ^ | ^ Not Used ^ Used ^
-^ 16 user switches                   |  X  |    | +^ 16 user switches                   |  X  |     | 
-^ 16 user LEDs                       |  X  |    | +^ 16 user LEDs                       |  X  |     | 
-^ Two tri-color LEDs                 |  X  |    | +^ Two tri-color LEDs                 |  X  |     | 
-^ 5 User Push Buttons                |  X  |    |+^ 5 User Push Buttons                |  X  |     |
 ^ Two 4-digit 7-segment displays     |     |  X  | ^ Two 4-digit 7-segment displays     |     |  X  |
 ^ 4 Pmod ports                       |  X  |     | ^ 4 Pmod ports                       |  X  |     |
 ^ Pmod for XADC signals              |  X  |     | ^ Pmod for XADC signals              |  X  |     |
 ^ 16-bit VGA output                  |  X  |     | ^ 16-bit VGA output                  |  X  |     |
-^ USB-UART Bridge                    |  X  |    |+^ USB-UART Bridge                    |  X  |     |
 ^ Serial Flash for Application Data  |  X  |     | ^ Serial Flash for Application Data  |  X  |     |
 ^ USB HID Host With Mouse            |  X  |     | ^ USB HID Host With Mouse            |  X  |     |
 ^ USB HID Host With Keyboard         |     |  X  | ^ USB HID Host With Keyboard         |     |  X  |
 ^ Micro SD card connector            |  X  |     | ^ Micro SD card connector            |  X  |     |
-^ PWM audio output                   |  X  |    | +^ PWM audio output                   |  X  |     | 
-^ PDM microphone                     |  X  |    |+^ PDM microphone                     |  X  |     |
 ^ 3-axis accelerometer               |  X  |     | ^ 3-axis accelerometer               |  X  |     |
-^ 128MiB DDR2                        |  X  |    |+^ 128MiB DDR2                        |  X  |     |
 ^ Temperature sensor                 |  X  |     | ^ Temperature sensor                 |  X  |     |
 ^ 10/100 Ethernet PHY                |  X  |     | ^ 10/100 Ethernet PHY                |  X  |     |
- 
-===== Description ===== 
- 
-The Keyboard Demo project demonstrates a simple usage of the Nexys4-DDR's  
-USB-HID port and 7 segment display. The behavior is as follows: 
-  
- * The user presses a key on the keyboard, this sends a keyboard scan code to the Nexys4DDR. This scan code is read and output onto the 7 segment display. When a new scan code is read, it is shifted onto the 7 segment display from the right. A scan code of F0xx indicates that key xx has been released. 
              
 ------- -------
  
 ===== Prerequisites ===== ===== Prerequisites =====
- 
-===Skills=== 
-  * **Basic familiarity with Vivado** 
-    *  //This experience can be found by walking through our "Getting Started with Vivado" guide// 
  
 ===Hardware=== ===Hardware===
-  * **Basys3 FPGA board**+  * **Nexys 4 DDR FPGA board**
   * **Micro-USB cable**   * **Micro-USB cable**
   * **USB Keyboard**    * **USB Keyboard** 
  
 ===Software=== ===Software===
-  * **Vivado Design Suite 2015.X**  +  * **Vivado Design Suite 2016.4**  
-    * //Newer/older 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**  
 +    * 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 
 ----- -----
  
 ===== Downloads ===== ===== Downloads =====
-Nexys4-DDR Support Repository -- [[https://github.com/Digilent/Nexys4DDR/archive/master.zip|ZIP]] [[https://github.com/Digilent/Nexys4DDR|GIT Repo]]+Nexys 4 DDR Keyboard Project Repository -- [[https://github.com/Digilent/Nexys-4-DDR-Keyboard/releases/download/v2016.4-1/Nexys-4-DDR-Keyboard-2016.4-1.zip|ZIP Archive]] [[https://github.com/Digilent/Nexys-4-DDR-Keyboard|GIT Repo]]
  
 ------- -------
-===== How to... ===== 
  
 +===== Download and Launch the Nexys 4 DDR Keyboard Demo =====
  
 +>1) 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. Return to this guide when prompted to check for extra hardware requirements and setup.
  
-==== 1. Generate the Project ====+>2) Plug your USB Keyboard into the USB HOST port on your Nexys 4 DDR, then return to the Github Projects Tutorial to finish programming and running the demo.
  
->1.1) Download the repository linked in the download section and place it in the location of your choosing. +===== Using the Nexys 4 DDR Keyboard Demo =====
  
->1.2) Generate the **Keyboard** project within the "Projects" folder by following this guide before continuing: [[vivado:github|How to Generate a Project from Digilent's Github]] 
  
-==== 2. Build the Project ====+==== 1. Initial State ====
  
->2.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.  
-> 
->Note: If you want, you can click each step by itself in the order of **Run Synthesis**, **Run Implementation** and then **Generate Bitstream**. 
-> 
->{{:basys3:buildflow.png?600|}} 
- 
-==== 3. Program the Board ==== 
- 
->3.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|}} 
- 
->3.2) Click program to load the project onto your Nexys4-DDR. 
- 
-==== 4. Run the Project ==== 
- 
-This portion will help you run the demo and observe all its features. 
- 
->4.1) Initial state 
-> 
 >Initially, the 7 segment display will show all 0's >Initially, the 7 segment display will show all 0's
 > >
 >{{:nexys4-ddr:img_20150310_192348.jpg?nolink&300|}} >{{:nexys4-ddr:img_20150310_192348.jpg?nolink&300|}}
  
->4.2) Key Press +==== 2. Key Press ==== 
->+
 >When a button is pressed, the value of the scan code will shift onto the 7 segment display. In the picture, 'a' is pressed, so a scan code of "1C" is displayed. >When a button is pressed, the value of the scan code will shift onto the 7 segment display. In the picture, 'a' is pressed, so a scan code of "1C" is displayed.
 > >
 >{{:nexys4-ddr:img_20150310_192449.jpg?nolink&500|}} >{{:nexys4-ddr:img_20150310_192449.jpg?nolink&500|}}
  
->4.3) Key Release +==== 3. Key Release ==== 
->  +  
 >When the 'a' key is released, a scan code of "F01C" is shifted onto the 7 segment display. The initial scan code of "1C" is shifted to the left display. >When the 'a' key is released, a scan code of "F01C" is shifted onto the 7 segment display. The initial scan code of "1C" is shifted to the left display.
 > >
 >{{:nexys4-ddr:img_20150310_192501.jpg?nolink&500|}} >{{:nexys4-ddr:img_20150310_192501.jpg?nolink&500|}}
  
->4.4) Multi key press +==== 4. Multiple Key Presses ==== 
->  +
 >When multiple keys are pressed their scan codes are shifted in order. In this case, Q ("15") was pressed, followed by W ("1D"). >When multiple keys are pressed their scan codes are shifted in order. In this case, Q ("15") was pressed, followed by W ("1D").
 > >
 >{{:nexys4-ddr:img_20150310_192533.jpg?nolink&500|}} >{{:nexys4-ddr:img_20150310_192533.jpg?nolink&500|}}
  
-{{tag>learn programmable-logic tutorial nexys-4-ddr}}+{{tag>learn programmable-logic project nexys-4-ddr}}