Differences
This shows you the differences between two versions of the page.
| vivado:getting_started:start [2016/09/06 19:17] – James Colvin | vivado:getting_started:start [2022/10/04 11:38] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| ----- | ----- | ||
| - | ===== Prerequisites ===== | ||
| - | Prior to starting this guide make sure to install Vivado. For more information see our [[learn: | ||
| ===== Introduction ===== | ===== Introduction ===== | ||
| Line 10: | Line 8: | ||
| The goal of this guide is to familiarize the reader with the Vivado tools through the hello world of hardware, blinking an LED. | The goal of this guide is to familiarize the reader with the Vivado tools through the hello world of hardware, blinking an LED. | ||
| - | This guide was created using Vivado 2016.2. | + | **Note:** //While this guide was created using Vivado 2016.4, the workflow described has not substantially changed, and the guide works as described through Vivado 2019.2, the latest version as of time of writing.// |
| - | ==== 1. Starting | + | |
| + | ---- | ||
| + | ===== Prerequisites ===== | ||
| + | Prior to starting this guide make sure to install Vivado: | ||
| + | * For versions 2019.2 and later, see [[vivado: | ||
| + | * For versions prior to 2019.2, see [[vivado: | ||
| + | |||
| + | ---- | ||
| + | ===== Guide ===== | ||
| + | ==== 1. Launching | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| **Windows**\\ | **Windows**\\ | ||
| - | Open the start menu and go to //All Programs-> | + | Open the start menu or desktop shortcut created during the installation process. |
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 25: | Line 32: | ||
| <WRAP column half> | <WRAP column half> | ||
| **Linux**\\ | **Linux**\\ | ||
| - | Open a Terminal | + | Open a terminal, cd into a working directory that can be cluttered with temporary Vivado files and logs, then run the following: |
| < | < | ||
| </ | </ | ||
| Line 36: | Line 43: | ||
| This is the screen that displays after Vivado starts up. The buttons are described below using the image as a guide. | This is the screen that displays after Vivado starts up. The buttons are described below using the image as a guide. | ||
| - | {{ : | + | {{ : |
| == 1. Create New Project == | == 1. Create New Project == | ||
| Line 44: | Line 51: | ||
| == 2. Open Project == | == 2. Open Project == | ||
| - | This button will open a file browser. Navigate to the desired | + | This button will open a file browser. Navigate to the desired |
| == 3. Open Example Project == | == 3. Open Example Project == | ||
| Line 52: | Line 59: | ||
| == 4. Open Hardware Manager == | == 4. Open Hardware Manager == | ||
| - | This will open the Hardware Manager without an associated project. If connecting to and programming a device is all that is required by the user this is the button to use. | + | This will open the Hardware Manager without an associated project. If connecting to and programming a device is all that is required by the user, then this is the button to use. |
| ==== 3. Creating a New Project ==== | ==== 3. Creating a New Project ==== | ||
| Line 61: | Line 69: | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 68: | Line 76: | ||
| <WRAP column half> | <WRAP column half> | ||
| === 3.2 === | === 3.2 === | ||
| - | The text in the dialog describes the steps that will be taken to create a project. Click //Next// to continue to the first step. | + | The text in this dialog describes the steps that will be taken to create a project. Click //Next// to continue to the first step. |
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 79: | Line 87: | ||
| === 3.3 === | === 3.3 === | ||
| The first step is to set the name of the project. Vivado will use this name when generating its folder structure. | The first step is to set the name of the project. Vivado will use this name when generating its folder structure. | ||
| - | |||
| <WRAP center round important> | <WRAP center round important> | ||
| - | Important: Do NOT use spaces in your project name or location path. This will cause problems with Vivado. Instead use an underscore, a dash, or [[wp> | + | === Important |
| + | Do NOT use spaces in your project name or location path. This will cause problems with Vivado. Instead use an underscore, a dash, or [[wp> | ||
| </ | </ | ||
| + | Click //Next// to continue. | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 92: | Line 101: | ||
| <WRAP column half> | <WRAP column half> | ||
| === 3.4 === | === 3.4 === | ||
| - | Now that the project has a name and a place to save important | + | Now that the project has a name and a place to save its files we need to select |
| + | |||
| + | Click //Next// to continue. | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 102: | Line 113: | ||
| <WRAP column half> | <WRAP column half> | ||
| === 3.5 === | === 3.5 === | ||
| - | This will open the //Create Source File// dialog, shown below. This dialog has three options for the new file. The first is the type of file. This allows for selecting between different HDL file types, Verilog, VHDL, Verilog Header, and SystemVerilog. The final type available is the Memory File option. This is used for memory device initialization, | + | <WRAP round center important> |
| - | + | === Important === | |
| - | The second box is for the file name. Enter the name for the file to create. Including the file extension is optional, Vivado | + | If your board does not appear in this list, then Digilent' |
| + | </ | ||
| + | Now it is time to choose | ||
| - | <WRAP center round important> | + | Click //Next// to continue. |
| - | Important: Do NOT use spaces in your file name. This will cause problems with Vivado. Instead use an underscore, a dash, or [[wp> | + | |
| - | </WRAP> | + | |
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 117: | Line 128: | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | === 3.6 === | + | === 3.6 == |
| - | It is also possible to import source files into the project. In the //Add Sources// dialog click the //Add Files// button and navigate to the source file to import into the project. Unless there is reason not to, make sure that the //Copy sources into project// check box is checked to make a copy of the source file local to the project. Since the file is copied, any changes made to the file inside one project do not affect the original file. | + | The next section gives a summary of the options selected throughout |
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| + | |||
| + | ==== 4. The Flow Navigator ==== | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | === 3.7 === | + | The //Flow Navigator// is the most important pane of the main Vivado window to know. It is how a user navigates between different Vivado tools. |
| - | After adding the HDL files and clicking | + | |
| + | The Navigator | ||
| + | * //Project Manager// | ||
| + | * Allows | ||
| + | * //IP Integrator// | ||
| + | * Tools for creating Block Designs | ||
| + | * // | ||
| + | * Allows a developer to verify the output | ||
| + | * //RTL Analysis// | ||
| + | * lets the developer see how the tools are interpreting their code | ||
| + | * // | ||
| + | * Gives access to Synthesis settings and post-synthesis reports | ||
| + | * // | ||
| + | * Gives access to Implementation settings and post-implementation reports | ||
| + | * //Program and Debug// | ||
| + | * Access to settings for bitstream generation and the Hardware Manager | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ :vivado: | + | {{ vivado: |
| </ | </ | ||
| </ | </ | ||
| + | |||
| + | ==== 5. The Project Manager ==== | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | === 3.8 === | + | This tool is where most development will occur and is the initial tool open after creating a new project. |
| - | The next section | + | |
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 147: | Line 176: | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | === 3.9 === | + | The //Project Manager// consists of four panes, //Sources//, // |
| - | Again the dialog presents three options. the file name and file location have the same properties as the ones in the //Create Source File// dialog. What is different is the file types that can be created. The only option available is XDC which stands for Xilinx Design Constraints. This file will define clocking, pin mapping, and timing restrictions. | + | |
| - | + | ||
| - | <WRAP center round important> | + | |
| - | Important: Do NOT use spaces in your file name. This will cause problems with Vivado. Instead use an underscore, a dash, or [[wp> | + | |
| - | </WRAP> | + | |
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| + | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | === 3.10 === | + | The //Sources// pane contains the project hierarchy and is used for opening up files. The folder structure is organized such that the HDL files are kept under the //Design Sources// folder, constraints |
| - | Now that the necessary | + | </ |
| + | <WRAP column half> | ||
| + | {{ : | ||
| + | </ | ||
| </ | </ | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | == 3.10.1 == | + | The // |
| - | To pick a target from the on board component find the part number | + | |
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 176: | Line 203: | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | == 3.10.2 == | + | The unnamed pane at the bottom of the Project Manager window consists of several different useful tools for debugging |
| - | To pick a target from the boards list, install | + | |
| + | These tools can be accessed by selecting the different tabs at the bottom of this pane. | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 186: | Line 214: | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | === 3.11 == | + | The //Tcl Console// is a tool that allows for running commands directly without the use of the main user interface. Some messages may link to the Tcl Console to provide more information |
| - | The next section gives a summary | + | |
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 196: | Line 223: | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | === 3.12 === | + | The //Reports// tool is useful for quickly jumping to any one of the many reports that Vivado generates on a design. These reports include power, timing, and utilization just to name a few. |
| - | Since new source files were created, Vivado will now show a new dialog box for defining a module for each new source file that it was told to create. Here the inputs and outputs of a module can be defined. | + | |
| - | + | ||
| - | Each section can be interpreted as follows: | + | |
| - | + | ||
| - | + | ||
| - | ^ Field ^ Description | + | |
| - | ^ Port Name | The name to give the new port | //leds// | | + | |
| - | ^ Direction | + | |
| - | ^ Bus | Is the port a bus/ | + | |
| - | ^ MSB | What is the Most Significant Bit? | //7// | | + | |
| - | ^ LSB | What is the Least Significant Bit? | //0// | | + | |
| - | + | ||
| - | Fill out the port definitions for clk and led as shown then click //OK//. | + | |
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| - | ==== 4. The Flow Navigator ==== | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | The Flow Navigator is the most important pane to know. It is how a user navigates between different Vivado tools. | + | The //Log// displays |
| - | + | ||
| - | The Navigator is broken into seven sections: | + | |
| - | * Project Manager | + | |
| - | * Allows for quick access to project settings, adding sources, language templates, and the IP catalog | + | |
| - | * IP Integrator | + | |
| - | * Tools for creating Block Designs | + | |
| - | * Simulator | + | |
| - | * Allows a developer to verify | + | |
| - | * RTL Analysis | + | |
| - | * lets the developer see how the tools are interpreting their code | + | |
| - | * Synthesis | + | |
| - | * Gives access to Synthesis settings and post-synthesis reports | + | |
| - | * Implementation | + | |
| - | * Gives access to Implementation settings | + | |
| - | * Program and Debug | + | |
| - | * Access to settings for bitstream generation | + | |
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ vivado: | + | {{ :vivado: |
| </ | </ | ||
| </ | </ | ||
| - | ==== 5. The Project Manager ==== | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | This tool is where most development will occur and is the initial | + | The last tool is the //Design Runs//. Using this tool run settings can be edited and new runs can be created. This tool is useful when targeting multiple devices with the same design. |
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 256: | Line 250: | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | The Project Manager | + | The most important pane in the Project Manager |
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| + | |||
| + | ==== 6. Adding a Constraint File ==== | ||
| + | |||
| + | In order to connect HDL code with the physical pins of the FPGA, a constraint file needs to be added or created. Digilent has produced a Xilinx Design Constraint (XDC) file for each of our boards. Download [[https:// | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | The Sources pane contains the project hierarchy and is used for opening up files. The folder structure is organized such that the HDL files are kept under the //Design Sources// folder, constraints are kept under the //Constraints// folder, and simulation files are kept under the // | + | === 6.1 === |
| + | In the //Project Manager// section of the //Flow Navigator//, click the {{: | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 274: | Line 273: | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | The Properties pane allows for viewing and editing of file properties. When a file is selected in the Sources pane its properties are shown in here. This pane can usually | + | === 6.2 === |
| + | At this stage, Vivado provides | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 283: | Line 283: | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | The Results pane consists of several different useful tools for debugging a project. The most important one to know is the Messages tool. This tool parses | + | === 6.3 === |
| + | Find the directory you extracted the // | ||
| + | |||
| + | Click //OK// to continue. | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 292: | Line 295: | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | The Tcl console is a tool that allows for running commands directly without | + | === 6.4 === |
| + | Make sure that the selected XDC file has been added into the list of sources, and that the //Copy constraint files into project// is checked, then click //Finish//. | ||
| + | |||
| + | **Note:** //Leaving the Copy... box unchecked means that any editing done to the constraint file will be reflected in the original copy. Checking the box is highly recommended// | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| + | === 6.5 === | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | The Reports tool is useful | + | In the //Sources// pane of the //Project Manager//, expand the // |
| + | |||
| + | Find and uncomment the lines that call // | ||
| + | <WRAP round center tip> | ||
| + | === Tip === | ||
| + | A board using clk_p/clk_n pins means that the input clock that uses differential logic. If you want to know more read this article on [[wp> | ||
| + | </ | ||
| + | Change the name inside of the get_ports call to ' | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| + | |||
| + | ==== 7. Creating a Verilog Source File ==== | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | The Log displays | + | === 7.1 === |
| + | In the //Project Manager// section of the //Flow Navigator//, click the {{: | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 319: | Line 335: | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | The last tool is the Design Runs. Using this tool run settings can be edited and new runs can be created. | + | === 7.2 === |
| + | As before, at this stage, we will be provided a list of all of the source files that will be added or created | ||
| + | <WRAP round center tip> | ||
| + | === Tip === | ||
| + | It is also possible to add existing source files in the same way as we added the constraint file above. | ||
| + | </ | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 328: | Line 349: | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | The most important pane in the Project Manager is the Workspace. The Workspace is where reports are opened for viewing | + | === 7.3 === |
| + | You will be prompted to select a //File type//, //File name//, | ||
| + | <WRAP center round important> | ||
| + | === Important === | ||
| + | Do NOT use spaces in your file name. This will cause problems with Vivado. Instead use an underscore, a dash, or [[wp> | ||
| + | </ | ||
| + | Click //OK// to continue. | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| - | ==== 6. Writing HDL and Constraints ==== | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | To actually get the board to blink an LED, code needs to be written in both the Verilog and the constraints files. Opening up the Verilog file (top.v in this guide) this window should open in the workspace area. | + | === 7.4 === |
| + | Make sure that the new Verilog | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| - | Between | + | === 7.5 === |
| + | Unlike when the constraint file was added, at this point a //Define Module// dialog will pop up. You can rename your Verilog module using the //Module name// field, but this is unnecessary. The Verilog module' | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | There are five fields to define for each of the module' | ||
| + | * **Port Name:** This field defines the name of the port and needs to match one of the names you used in your XDC file. | ||
| + | * **Direction: | ||
| + | * **Bus:** This can be checked or not, when checked, this port consists of multiple single bit signals, grouped into a single bus. | ||
| + | * **MSB:** The index of the most significant bit of the port, if it is a bus. This option is grayed out for single-bit ports. | ||
| + | * **LSB:** The index of the least significant bit of the port, if it is a bus. This option is grayed out for single-bit ports. | ||
| + | |||
| + | <WRAP round center tip> | ||
| + | === Tip === | ||
| + | If you are defining a module which will be instantiated in another module, which we will not go into in this guide, be aware that the port names should not be declared in the XDC, this is only done for your ' | ||
| + | </ | ||
| + | |||
| + | If your board uses differential clocking, add two single-bit input ports with the same names as the positive and negative clock ports that were uncommented in your XDC file. Otherwise, add a single single-bit input port with the same name as the clock port that was uncommented in your XDC file. | ||
| + | |||
| + | Add a single-bit output port with the same name as the LED port that was uncommented in your XDC file. | ||
| + | |||
| + | Once these two or three ports have been added, click //OK// to continue. | ||
| + | |||
| + | === 7.6 === | ||
| + | At this point, the new source file will be added to the //Design Sources// folder in the //Sources// pane of the //Project Manager//. Expand this folder and double click on the file to open it. | ||
| + | |||
| + | Next, some Verilog code needs to be written to define how the design will actually behave. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Between | ||
| <code verilog> | <code verilog> | ||
| Line 355: | Line 412: | ||
| </ | </ | ||
| - | If the Genesys 2, NetFPGA-1G-CML, | + | If your board is differentially clocked, add the following lines of code after ' |
| <code verilog> | <code verilog> | ||
| - | module top( | + | wire clk; |
| - | input clk_p, | + | |
| - | input clk_n, | + | |
| - | output led | + | |
| - | ); | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | IBUFGDS #( | + | |
| - | + | ||
| - | ) clk_inst ( | + | |
| - | .O(clk), | + | |
| - | .I(clk_p), | + | |
| - | .IB(clk_n) | + | |
| - | ); | + | |
| - | + | ||
| - | reg [25:0] count = 0; | + | |
| - | assign led = count[25]; | + | IBUFGDS clk_inst ( |
| - | + | | |
| - | | + | .I(clk_p), |
| - | + | | |
| - | endmodule | + | ); |
| </ | </ | ||
| - | This is different because those boards have a input clock that uses differential logic. If you want to know more read this article on [[wp> | + | It should be noted that the rate at which the clock will blink will differ depending on the board used. System clocks on different Digilent boards run at a number of different rates, |
| - | + | ||
| - | <WRAP group> | + | |
| - | <WRAP column half> | + | |
| - | Once added the source file will look like this: | + | |
| - | </ | + | |
| - | <WRAP column half> | + | |
| - | {{ : | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | Now open the XDC file. At the moment it is empty so paste in the code below depending on the target | + | |
| - | + | ||
| - | ^ Constraint File Source Code || | + | |
| - | ^ Board ^ Constraint Code ^ | + | |
| - | | Arty | < | + | |
| - | set_property -dict { PACKAGE_PIN E3 IOSTANDARD LVCMOS33 } [get_ports clk] | + | |
| - | create_clock -add -name sys_clk_pin -period | + | |
| - | set_property -dict { PACKAGE_PIN H5 IOSTANDARD LVCMOS33 } [get_ports led] | + | |
| - | </code> | + | |
| - | | Basys 3 | < | + | |
| - | set_property -dict { PACKAGE_PIN W5 | + | |
| - | create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports clk] | + | |
| - | set_property -dict { PACKAGE_PIN U16 IOSTANDARD LVCMOS33 } [get_ports led] | + | |
| - | </code> | + | |
| - | | CmodA7 | + | |
| - | set_property -dict { PACKAGE_PIN L17 | + | |
| - | | + | |
| - | set_property -dict { PACKAGE_PIN A17 | + | |
| - | </code> | + | |
| - | | Genesys 2 | < | + | |
| - | set_property -dict {PACKAGE_PIN AD11 IOSTANDARD LVDS} [get_ports clk_n] | + | |
| - | set_property -dict {PACKAGE_PIN AD12 IOSTANDARD LVDS} [get_ports clk_p] | + | |
| - | create_clock -period 5.000 -name sys_clk_pin -waveform {0.000 2.500} -add [get_ports clk_p] | + | |
| - | set_property -dict {PACKAGE_PIN T28 IOSTANDARD LVCMOS33} [get_ports led] | + | |
| - | </code> | + | |
| - | | Nexys 4 | < | + | |
| - | set_property -dict { PACKAGE_PIN E3 | + | |
| - | create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports clk] | + | |
| - | set_property -dict { PACKAGE_PIN T8 | + | |
| - | </ | + | |
| - | | Nexys 4 DDR | < | + | |
| - | set_property -dict { PACKAGE_PIN E3 IOSTANDARD LVCMOS33 } [get_ports clk] | + | |
| - | create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports clk] | + | |
| - | set_property -dict { PACKAGE_PIN H17 | + | |
| - | </ | + | |
| - | | Nexys Video | < | + | |
| - | set_property -dict { PACKAGE_PIN R4 IOSTANDARD LVCMOS33 } [get_ports clk] | + | |
| - | create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports clk] | + | |
| - | set_property -dict { PACKAGE_PIN T14 | + | |
| - | </ | + | |
| - | | NetFPGA-1G-CML | + | |
| - | set_property -dict { PACKAGE_PIN AA2 | + | |
| - | set_property -dict { PACKAGE_PIN AA3 | + | |
| - | create_clock -add -name sys_clk_pin -period 5.00 -waveform {0 2.5} [get_ports clk_n] | + | |
| - | set_property -dict { PACKAGE_PIN E17 | + | |
| - | </ | + | |
| - | | NetFPGA-SUME | + | |
| - | set_property -dict { PACKAGE_PIN G18 | + | |
| - | set_property -dict { PACKAGE_PIN H19 | + | |
| - | create_clock -add -name sys_clk_pin -period 5.00 -waveform {0 2.5} [get_ports clk_n] | + | |
| - | set_property -dict { PACKAGE_PIN AR22 IOSTANDARD LVCMOS15 } [get_ports led] | + | |
| - | </ | + | |
| - | | ZedBoard | + | |
| - | set_property -dict { PACKAGE_PIN Y9 IOSTANDARD LVCMOS33 } [get_ports clk] | + | |
| - | create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports clk] | + | |
| - | set_property -dict { PACKAGE_PIN T22 | + | |
| - | </ | + | |
| - | | Zybo | < | + | |
| - | set_property -dict { PACKAGE_PIN L16 | + | |
| - | create_clock -add -name sys_clk_pin -period 8.00 -waveform {0 4} [get_ports clk] | + | |
| - | set_property -dict { PACKAGE_PIN M14 | + | |
| - | </ | + | |
| - | Once that is done the code is ready to be " | + | After completing this guide, it is suggested to try changing |
| ==== 8. Synthesis, Implementation, | ==== 8. Synthesis, Implementation, | ||
| - | In order to create a file that can be used to program the target the " | + | In order to create a file that can be used to program the target |
| - | This starts with Synthesis. Synthesis turns HDL files into a transistor level description based on timing and I/O constraints. To run Synthesis click either {{: | + | This starts with //Synthesis//. Synthesis turns HDL files into a transistor level description based on timing and I/O constraints. To run Synthesis click either {{: |
| - | Implementation has several steps. The steps that are always run are Opt Design (Optimize the design to fit on the target FPGA), Place Design (Layout | + | //Implementation// has several steps. The steps that are always run are //Opt Design// (Optimize the design to fit on the target FPGA), |
| - | The Bitstream Generator generates the final outputs needed for programming the FPGA. To run Bitstream Generation click either {{: | + | The //Bitstream Generator// generates the final outputs needed for programming the FPGA. To run Bitstream Generation click either {{: |
| ==== 9. The Hardware Manager ==== | ==== 9. The Hardware Manager ==== | ||
| - | The Hardware Manager is used for programming the target device. | + | The //Hardware Manager// is used for programming the target device. |
| - | {{ : | + | {{ : |
| - | The first step to programming a device is to connect to it. There are two ways to do this. | + | The first step to programming a device is to connect |
| **1. Open New Hardware Target** | **1. Open New Hardware Target** | ||
| Line 481: | Line 450: | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | The first method is to manually open the target. This is required if the hardware is connected to another computer. To get to the Open Hardware Target wizard either open the Hardware Manager and click the {{: | + | The first method is to manually open the target. This is required if the hardware is connected to another computer. To get to the //Open Hardware Target// wizard either open the //Hardware Manager// and click the {{: |
| + | |||
| + | Once the wizard | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| Line 490: | Line 461: | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | The next screen asks if the hardware server is local or remote. If the board is connected to the host computer choose local, if it is connected to another machine choose remote and fill in the //Host Name// and //Port// fields | + | The next screen asks if the hardware server is local or remote. If the board is connected to the host computer choose local, if it is connected to another machine choose remote and fill in the //Host Name// and //Port// fields. |
| + | |||
| + | Click // | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| Line 499: | Line 472: | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | This screen gives a list of devices connected to the hardware server. If there is only one connected it should be the only device shown. If there are multiple connected determine the serial number of the device to connect to and find it in the list. Click //Next//. | + | This screen gives a list of devices connected to the hardware server. If there is only one connected it should be the only device shown. If there are multiple connected |
| + | |||
| + | Click // | ||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| </ | </ | ||
| Line 517: | Line 492: | ||
| **2. Auto-Connect** | **2. Auto-Connect** | ||
| - | The second method is to automatically open the target. To get to the {{: | + | The second method is to automatically open the target. To get to the {{: |
| ---- | ---- | ||
| Line 523: | Line 498: | ||
| **Programming** | **Programming** | ||
| - | To program the device with the BIT file generated earlier either click the {{: | + | To program the device with the bit file generated earlier, either click the {{: |
| - | {{ : | + | {{ : |
| - | The //Bitstream File// field should be filled in with the bit file generated earlier. If not, click the {{: | + | The //Bitstream File// field should be automatically |
| ----- | ----- | ||
| - | {{tag> | + | ==== 10. Finished! ==== |
| + | |||
| + | You should now see one of the LEDs on your board blinking! | ||
| + | |||
| + | Be sure to visit your board' | ||
| + | |||
| + | {{tag> | ||

