Differences

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

Link to this comparison view

vivado:getting_started:start [2017/09/14 22:26] – Arthur Brownvivado:getting_started:start [2022/10/04 11:38] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Getting Started with Vivado ====== ====== Getting Started with Vivado ======
 ----- -----
- 
-===== Prerequisites ===== 
-Prior to starting this guide make sure to install Vivado. For more information see our [[learn:software:tutorials:vivado-install-guide:|Installing Vivado]] guide. 
- 
-Make sure to install [[reference:software:vivado:board-files#installation|Digilent's board files]] to make selection of a target board easier. 
  
 ===== Introduction ===== ===== Introduction =====
Line 13: 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.4. +**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 Vivado ====+ 
 +---- 
 +===== Prerequisites ===== 
 +Prior to starting this guide make sure to install Vivado: 
 +  * For versions 2019.2 and later, see [[vivado:installing-vivado:v2019.2]]. 
 +  * For versions prior to 2019.2, see [[vivado:installing-vivado:start]]. 
 + 
 +---- 
 +===== Guide ===== 
 +==== 1. Launching Vivado ====
 <WRAP group> <WRAP group>
 <WRAP column half> <WRAP column half>
Line 28: Line 32:
 <WRAP column half> <WRAP column half>
 **Linux**\\ **Linux**\\
-Open a Terminal and run+Open a terminal, cd into a working directory that can be cluttered with temporary Vivado files and logs, then run the following:
 <code>source <install_path>/Vivado/<version>/settings64.sh && vivado</code> <code>source <install_path>/Vivado/<version>/settings64.sh && vivado</code>
 </WRAP> </WRAP>
Line 39: 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.
  
-{{ :vivado:getting_started:v2016.4:vivado-home-outline.jpg?direct&500 |}}+{{ :vivado:getting_started:v2016.4:vivado-home-outline.jpg?direct&800 |}}
  
 == 1. Create New Project == == 1. Create New Project ==
Line 55: 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 97: Line 101:
 <WRAP column half> <WRAP column half>
 === 3.4 === === 3.4 ===
-Now that the project has a name and a place to save its files we need to select the type of project we will be creating. Select //RTL Project// and make sure to check //Do not specify sources at this time//. We will add and create source files after the project has been created. Advanced users may use the other options on this screen, but we will not be covering them in this guide.+Now that the project has a name and a place to save its files we need to select the type of project we will be creating. Select //RTL Project// and make sure to check //Do not specify sources at this time//. Source files will be added and created after the project has been created. Advanced users may use the other options on this screen, but they will not be covered in this guide.
  
 Click //Next// to continue. Click //Next// to continue.
Line 144: Line 148:
     * Tools for creating Block Designs     * Tools for creating Block Designs
   * //Simulation//   * //Simulation//
-    * Allows a developer to verify the output of their deisgn prior to programming their device+    * Allows a developer to verify the output of their design prior to programming their device
   * //RTL Analysis//   * //RTL Analysis//
     * lets the developer see how the tools are interpreting their code     * lets the developer see how the tools are interpreting their code
Line 255: Line 259:
 ==== 6. Adding a Constraint File ==== ==== 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 the [[https://github.com/Digilent/digilent-xdc/archive/master.zip|ZIP Archive]] containing each of these master XDC files, then extract it in a location you will remember.+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://github.com/Digilent/digilent-xdc/archive/master.zip|digilent-xdc-master.zip]], the ZIP Archive containing each of these master XDC files, then extract it in a location you will remember.
  
 <WRAP group> <WRAP group>
Line 292: Line 296:
 <WRAP column half> <WRAP column half>
 === 6.4 === === 6.4 ===
-Make sure that the selected XDC file has been added into the list of sources, then click //Finish//.+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> </WRAP>
 <WRAP column half> <WRAP column half>
Line 366: Line 372:
 </WRAP> </WRAP>
  
-<WRAP group> 
-<WRAP column half> 
-</WRAP> 
 === 7.5 === === 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's clock and led ports need to be defined. Clicking the //Add// ({{:vivado:getting_started:v2016.4:sources:add-port.png?direct|}}) button will add an empty slot for a port to the //I/O Port Definitions// list. 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's clock and led ports need to be defined. Clicking the //Add// ({{:vivado:getting_started:v2016.4:sources:add-port.png?direct|}}) button will add an empty slot for a port to the //I/O Port Definitions// list.
 +
 +{{ :vivado:getting_started:v2016.4:sources:define-module-clk.png?direct&500 |}}
  
 There are five fields to define for each of the module's I/O ports: There are five fields to define for each of the module's I/O ports:
-  * //Port Name// +  * **Port Name:** This field defines the name of the port and needs to match one of the names you used in your XDC file. 
-    * This field defines the name of the port and needs to match one of the names you used in your XDC file. +  * **Direction:** This drop-down menu can be set to //input//, //output//, or //inout//, defining the direction that signals propagate through this port, with respect to your module. Outputs are the signals that your module will be controlling. 
-  * //Direction// +  * **Bus:** This can be checked or not, when checked, this port consists of multiple single bit signals, grouped into a single bus. 
-    * This drop-down menu can be set to //input//, //output//, or //inout//, defining the direction that signals propagate through this port, with respect to your module. Outputs are the signals that your module will be controlling. +  * **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. 
-  * //Bus// +  * **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.
-    * 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> <WRAP round center tip>
Line 394: Line 394:
  
 Once these two or three ports have been added, click //OK// to continue. Once these two or three ports have been added, click //OK// to continue.
-<WRAP column half> 
-{{ :vivado:getting_started:v2016.4:sources:define-module-clk.png?direct&500 |}} 
-</WRAP> 
-</WRAP> 
  
-<WRAP group> 
-<WRAP column half> 
-</WRAP> 
 === 7.6 === === 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. 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. Next, some Verilog code needs to be written to define how the design will actually behave.
-<WRAP column half> + 
-{{ :vivado:getting_started:v2016.4:sources:edit-source.png?direct&500 |}} +{{ :vivado:getting_started:v2016.4:sources:edit-source.png?direct&800 |}}
-</WRAP> +
-</WRAP>+
  
 Between the ');' that comes after the module's port list and the 'endmodule' statement, add the following code: Between the ');' that comes after the module's port list and the 'endmodule' statement, add the following code:
Line 470: 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 //Next// to continue. Click //Next// to continue.
 </WRAP> </WRAP>
 <WRAP column half> <WRAP column half>
-FIXME 
 {{ :vivado:getting_started:open_target_hw_srvr_settings.png?direct&500 |}} {{ :vivado:getting_started:open_target_hw_srvr_settings.png?direct&500 |}}
 </WRAP> </WRAP>
Line 520: Line 510:
 You should now see one of the LEDs on your board blinking! You should now see one of the LEDs on your board blinking!
  
-Be sure to visit your board's resource center for more tutorials and demo projects. A link to each resource center can be found [[https://reference.digilentinc.com/reference/programmable-logic/start|here]].+Be sure to visit your board's resource center for more tutorials and demo projects. A link to each resource center can be found [[/programmable-logic/start|here]].
  
-{{tag>learn programmable-logic software tutorial vivado arty-s7}}+{{tag>learn programmable-logic software tutorial vivado arty arty-a7 arty-s7 arty-z7 basys-3 cmod-a7 cmod-s7 cora-z7 genesys-2 nexys-4-ddr nexys-a7 nexys-video zybo-z7 zybo zedboard sword legacy}}