Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| nexys4_ddr:getting_started_with_vivado_ip_integrator [2014/12/22 21:28] – Varun Kondagunturi | nexys4_ddr:getting_started_with_vivado_ip_integrator [2014/12/22 23:32] (current) – removed sbobrowicz | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | When you first run Vivado this will be the main start window where you can create a new project or open a recent one. | ||
| - | 1. Click on Create New Project. Choose the Project Name and Location such that there are no blank spaces. It is important to practice this rule when working with all Xilinx Tools. Project names, File names and Location Paths must not contain empty spaces. Using underscore in place of an empty space is recommended. | ||
| - | |||
| - | It is also good practice to have a dedicated folder for Vivado Projects, preferably with the smallest possible path length. Example: C:/ | ||
| - | |||
| - | Name your Project and select the Project location and click next. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | |||
| - | 2. Choose Project Type as RTL Project. Leave the - do not specify sources box unchecked and click next. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 3. If you have followed the instructions for saving Board Support Files in the Xilinx Installation directory ... | ||
| - | |||
| - | Click on Boards and choose from the filter options below, make the selections for Vendor, Display Name and Board Revision. Nexys4 DDR should be displayed in the selection list. Make sure this is the Board you have with you and click next. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 4. A summary of the new project design sources and target device is displayed. Click Finish. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 5. This is the main project window where you can add design or create design sources, perform simulation and generate a bit file. You can also program the board directly from Vivado with the generated bit file for an RTL project using the Hardware Manager. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 6. On the left you should see the Flow Navigator. Select Create Block Design under the IP Integrator. Give a name to your design without any blank spaces. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 7. An empty design space is created where you can add IP blocks. You can click on the "Add IP" message prompt on the top or click on the yellow rectangular box with a green " | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 8. This is the Xilinx Microblaze IP block. When a new IP block is added the user can customize the block properties by either clicking on the "Run Block Automation" | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 9. Block automation window will open up. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 10. Select block options as shown below and click ok. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 10. Running the block automation will auto-generate a set of additional IP blocks as part of your design based on the options selected in the previous step. Do not click on Run Connection Automation yet. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 11. Double click on the Clock Wizard (clk_wiz_1) IP block. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 12. Choose sys clock for CLK_IN1. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 13. Select the output Clocks tab. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 14. Select clk_out2 output frequency as 200.000 (Mhz) and set Reset type as Active Low. Now the reset pin should be displayed as " | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 15. Moving to the Port Renaming view will give you a summary of the inputs and outputs to the Clock Wizard block.Click ok to finish block automation of Clock Wizard. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 16. Do not run connection automation yet. Select the Add IP as shown and search for UART. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 17. Select the "AXI Uartlite" | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 18. This will add a UART block to the existing design. We need a UART controller to display the "Hello World" message in the terminal. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 19. Now select the "Run Connection Automation" | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 20. Select all available connections. Completing this step will connect all the IP blocks that have been added and customized up to this point. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 21. Manually connect main " | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 22. Do not select Run Connection Automation at this point. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 23. Memory Interface Generator will be the final IP block to add in the design. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 24. After adding the MIG IP block, double click on the block to Run Block Automation. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 25. Board part interface will be displayed as DDR2_SDRAM. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 26. When the MIG block automation is run, you will see this specific error message [BD 41-1273]. You can ignore this for now. It will not affect your design in any way. The MIG block will be configured as per the board support files that have been downloaded for Nexys4 DDR. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 27. Now click on Run Connection Automation. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 28. Select only the mig_7series_0 in the connection automation list. Do not select Microblaze in this step. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 29. New connections will be displayed. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 30. Manually connect clk_out2 output port signal on the clk_wiz_1 to the sys_clk_i input port on the mig_7series_ block. clk_out2 is the 200 Mhz clock signal we have added during the Clock Wizard block automation step. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 31 Select the button shown below. This is the " | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 32. The right most top block is the MIG. Right click on the DDR2 port and select "Make External" | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 33. This will create a new output port connection labeled as DDR2. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 34. Regenerate the layout one more time. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 35. Select Validate Design. This will check for any design and connection errors. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 36. After the design validation step has been successful we will now proceed with creating a HDL System Wrapper. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 37. As highlighted in this step, right click on " | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 38. A system wrapper file will be generated and a message will be displayed in the tcl console informing you regarding this. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 39. In the FLow Navigator panel on the left, under Program and Debug -> there is the Generate Bitstream option. Select this to create Bitstream. If you haven' | ||
| - | |||
| - | {{: | ||
| - | |||
| - | The bit file generation will begin. The tool will run Synthesis and Implementation. After both synthesis and implementation have been successfully completed, the actual bit file will be created. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | |||
| - | 40. After the bitstream has been generated, a message prompt will pop-up on the screen. You don't have to open the Implemented Design for this demo. Just hit Cancel. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 41. On the top left from the tool bar, click on File and select Export Hardware.This will export the hardware design with system wrapper for the Software Development Tool - Vivado SDK. Make sure the generated bitstream is included by checking the box. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 42. A new file directory will be created under Hello_World.SDK similar to the Vivado hardware design project name. | ||
| - | Two other files, .sysdef and .hdf are also created. This essentially creates a new SDK workspace. If you browse to the location on the drive where the Vivado project has been created, you will see new folders have been created under SDK. See TCL Console message in the screen capture below. Now that the design has been exported to Software Development Tool (SDK), the next step will be to launch the SDK tool. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | |||
| - | 43. Go to File and select Launch SDK and click ok. The SDK file created local to the Vivado design project location will be launched. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 44. A new window for SDK will open. The HW design specifications and included IP blocks are displayed in the system.hdf file. SDK tool is independent of Vivado, i.e. from this point, you can create your SW project in C/C++ on top of the exported HW design. | ||
| - | |||
| - | Now, if you need to go back to Vivado and make changes to the HW design, then it is recommended to close the SDK window and make the required HW design edits. After which you must follow the sequence of creating a new HDL wrapper, save design and bit file generation. This new bit file and system wrapper must then be exported to SDK. | ||
| - | |||
| - | Since we do not have any HW design edits at this point, we will proceed with creating a software application to display Hello World. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | 45. On the left of the main SDK window, you will find the project explorer panel. | ||
| - | |||
| - | Notice the name " | ||
| - | |||
| - | If at this point, you close SDK, make edits to your existing hardware design, and export your design to SDK. After launching the SDK tool, you will find a new hardware platform called, " | ||
| - | |||
| - | |||
| - | |||
| - | {{: | ||
| - | |||
| - | |||
| - | Go to File on the main tool bar and select New Application Project. A new project window will pop up. | ||
| - | Give your SDK project a name that has no blank spaces as shown below. Make sure the Target Hardware is the desired hardware design. In our case, it will be " | ||
| - | |||
| - | If for example, you also have another hardware design in the Project Explorer window, then you will see that design name in the Target Hardware drop down selection list. | ||
| - | |||
| - | Also select, Create New under Board Support Package. The tool will automatically populate the Board Support Package name to match with the give project name. | ||
| - | |||
| - | Click Next. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | |||
| - | Select Hello World under Available Templates on the left and click Finish. | ||
| - | |||
| - | |||
| - | {{: | ||
| - | |||
| - | After completing the previous step, you will see two new folders in the Project Explorer panel. | ||
| - | One is the " | ||
| - | |||
| - | Also make note of another important file shown here which is the " | ||
| - | |||
| - | |||
| - | {{: | ||
| - | |||
| - | |||
| - | In the linker script, take a look at the " | ||
| - | |||
| - | {{: | ||
| - | |||
| - | Back in the Project Explorer, double click and open " | ||
| - | |||
| - | This is the main .C file which will print "hello world" in the console when executed. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | Under the " | ||
| - | |||
| - | Make sure that the Hardware Platform is targeted at " | ||
| - | |||
| - | In the software configuration box, under ELF File to Initialize in Block RAM, the option must read " | ||
| - | |||
| - | Now click on Program. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | After the FPGA has been successfully programmed with the .bit file we have generated in Vivado, right click on the " | ||
| - | |||
| - | At the bottom of the list, select Run Configurations. The RUn Configuration window will open. This window is divided into two main sections. In the left panel, under Xilinx C/C++ application(GDB), | ||
| - | |||
| - | On the right side of this window, you will see five main tabs. Select the STDIO Connection tab. | ||
| - | |||
| - | |||
| - | |||
| - | {{: | ||
| - | |||
| - | {{: | ||

