Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| nexys:nexysvideo:gsmbs [2015/06/02 20:18] – Thomas Kappenman | nexys:nexysvideo:gsmbs [2022/10/04 11:38] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Getting Started with Microblaze Servers ====== | ====== Getting Started with Microblaze Servers ====== | ||
| - | ----- | + | **Note: |
| + | |||
| ===== Description ===== | ===== Description ===== | ||
| Line 14: | Line 16: | ||
| * Xilinx Vivado with the SDK package. | * Xilinx Vivado with the SDK package. | ||
| * Follow this Wiki guide ([[vivado: | * Follow this Wiki guide ([[vivado: | ||
| + | * TEMAC IP license installed | ||
| + | * Follow this Wiki guide ([[vivado: | ||
| ==== Board Support Files ==== | ==== Board Support Files ==== | ||
| * Board 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. | * Board 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 this Wiki guide ([[vivado: | + | * Follow this Wiki guide ([[vivado: |
| + | **The Nexys Video {{https://github.com/ | ||
| Line 102: | Line 106: | ||
| 7. Click "Run Block Automation" | 7. Click "Run Block Automation" | ||
| - | {{:nexys4-ddr:server_3.jpg? | + | {{:nexys:nexysvideo: |
| ==== Adding the Necessary Output Clocks ==== | ==== Adding the Necessary Output Clocks ==== | ||
| - | 8. Double-click the Clocking Wizard block highlighted below, and set CLK_IN1 to use " | + | 8. Double-click the //Clocking Wizard// block highlighted below, and set CLK_IN1 to use " |
| {{: | {{: | ||
| - | 9. Select the Output Clocks tab and enable // | + | 9. Select the Output Clocks tab and enable // |
| - | {{:arty:3.jpg? | + | {{:nexys:nexysvideo: |
| - | Your block design should look something like this: | + | ==== Adding More Interrupts ==== |
| - | {{:arty: | + | 10. Find the //Concat// block and double click it. Set number of ports to 5 and press OK. |
| + | |||
| + | {{:nexys: | ||
| ==== Adding the IP Cores ==== | ==== Adding the IP Cores ==== | ||
| - | 10. We will now add all of the necessary IP blocks to our project. There are 4 cores we will add: | + | 11. We will now add all of the necessary IP blocks to our project. There are 4 cores we will add: |
| * Memory Interface Generator | * Memory Interface Generator | ||
| * AXI Uartlite | * AXI Uartlite | ||
| - | * AXI EthernetLite | + | * AXI Ethernet Subsystem |
| * AXI Timer | * AXI Timer | ||
| Add all of these to your design, one at a time, using the //"Add IP"// button. Once they are all added, you should see the four blocks shown below. | Add all of these to your design, one at a time, using the //"Add IP"// button. Once they are all added, you should see the four blocks shown below. | ||
| - | {{:arty:2.jpg? | + | {{:nexys:nexysvideo: |
| ==== Configuring and Routing the IP Cores ==== | ==== Configuring and Routing the IP Cores ==== | ||
| - | 11. Click //"Run Block Automation"// | + | 12. Click //"Run Block Automation"// |
| - | {{:nexys4-ddr:server_8.jpg? | + | {{:nexys:nexysvideo: |
| 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 Nexys Video. Click OK to dismiss this message. You will find the MIG IP block now has additional input and output pins which have to be connected to valid signals. | 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 Nexys Video. Click OK to dismiss this message. You will find the MIG IP block now has additional input and output pins which have to be connected to valid signals. | ||
| Line 140: | Line 146: | ||
| {{: | {{: | ||
| - | 12. | + | 13. Click //"Run Block Automation" |
| - | * Route **clk_out2** on your //Clocking Wizard// block to **sys_clk_i** on the //Memory Interface Generator// | + | |
| - | * Route **clk_out3** on your //Clocking Wizard// block to **clk_ref_i** on the //Memory Interface Generator// block. | + | |
| - | {{:arty:4.jpg? | + | {{:nexys:nexysvideo: |
| - | 13. Click //"Run Connection Automation"// | + | Click //"Run Connection Automation"// |
| - | {{:arty:6.jpg? | + | {{:nexys:nexysvideo: |
| - | 14. Click //Regenerate Layout// (circled in blue below), and your block design should look like this: | + | 14. Click //"Run Connection Automation" |
| - | {{:arty:7.jpg? | + | {{:nexys:nexysvideo: |
| - | 15. | + | 15. Click //Regenerate Layout// (circled in blue below), and your block design should look like this: |
| - | * Route **interrupt** on the //AXI Timer// block to **In0[0:0]** on the //Concat// block. | + | |
| - | * Route **ip2intc_irpt** on the //AXI EthernetLite// | + | |
| - | {{:nexys4-ddr:server_13.jpg? | + | {{:nexys:nexysvideo: |
| - | * Connect **resetn** on the //Clocking Wizard// block to the **reset** pin. | + | ==== Routing |
| - | {{:nexys4-ddr:server_14.jpg? | + | 16. The //Concat// block takes interrupt inputs and sends them to the Microblaze controller. |
| + | |||
| + | {{:nexys: | ||
| - | 16. Right click somewhere in the background (white space) | + | **Route the following connections to the inputs |
| + | * **interrupt** on the //AXI Timer// block. | ||
| + | * **mm2s_introut** and **s2mm_introut** on the // | ||
| + | * **mac_irq** | ||
| - | {{:nexys4-ddr:server_15.jpg? | + | {{:nexys:nexysvideo: |
| - | 17. Connect | + | 17. |
| + | * Connect **resetn** on the //Clocking Wizard// block to the **reset** pin input. | ||
| - | {{:arty:8.jpg? | + | {{:nexys4-ddr:server_14.jpg? |
| - | 18. Right click on the blue striped rectangle next to the **DDR3+** bus on the //Memory Interface Generator// block and click //"Make External" | + | 18. |
| + | | ||
| - | {{:arty:9.jpg? | + | {{:nexys:nexysvideo: |
| - | 19. Clicking | + | 19. Right click on the blue striped rectangle next to the **DDR3+** bus on the //Memory Interface Generator// block and click //" |
| - | {{:arty:10.jpg? | + | {{:arty:9.jpg? |
| - | + | ||
| - | 20. We must now connect the eth_ref_clk pin to the correct pin on the FPGA by creating an XDC file. Under the //Design// window, select the **Sources** tab. Expand the // | + | |
| - | + | ||
| - | {{: | + | |
| - | + | ||
| - | 21. Select Add or create constraints and click Next. | + | |
| - | + | ||
| - | {{: | + | |
| - | + | ||
| - | 22. Click //Create File...//, name your new contraints file and click OK and then Finish. | + | |
| - | {{: | + | 20. Clicking // |
| - | 23. Open your new constraints file and paste the following line of code in it: | + | {{:nexys: |
| - | set_property -dict { PACKAGE_PIN G18 IOSTANDARD LVCMOS33 } [get_ports | + | 21. Click the **Validate Design** |
| - | + | ||
| - | Save the xdc file when you are finished. | + | |
| - | 24. Now, right click on your design_1 block diagram and click //" | + | 22. Now, right click on your design_1 block diagram and click //" |
| {{: | {{: | ||
| - | 25. Click " | + | 23. Click " |
| {{: | {{: | ||
| Line 208: | Line 205: | ||
| ==== Exporting Hardware Design to SDK ==== | ==== Exporting Hardware Design to SDK ==== | ||
| - | 26. On the top left corner of the window, from the tool bar click on //File// and select //Export Hardware//. | + | 24. On the top left corner of the window, 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. | 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**. | **Make sure the generated bitstream is included by checking the box**. | ||
| - | |||
| - | **There is currently a bug where the // | ||
| {{: | {{: | ||
| - | |||
| - | |||
| ==== Launching SDK ==== | ==== Launching SDK ==== | ||
| - | 27. Go to //File// and select //Launch SDK// and click OK. The SDK file created local to the Vivado design project location will be launched. The hand-off to SDK from Vivado is complete. | + | 25. Go to //File// and select //Launch SDK// and click OK. The SDK file created local to the Vivado design project location will be launched. The hand-off to SDK from Vivado is complete. |
| {{: | {{: | ||
| Line 227: | Line 220: | ||
| ==== Inside SDK for Vivado ==== | ==== Inside SDK for Vivado ==== | ||
| - | 28. A new window for SDK will open. The HW design specification and included IP blocks are displayed in the // | + | 26. A new window for SDK will open. The HW design specification and included IP blocks are displayed in the // |
| 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 in Vivado. After this 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. | 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 in Vivado. After this 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. | ||
| Line 237: | Line 230: | ||
| ==== Creating New Application Project in SDK ==== | ==== Creating New Application Project in SDK ==== | ||
| - | 29. Go to //File// in the main tool bar and select **New >> Application Project**. A new project window will pop up. | + | 27. Go to //File// in 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 empty spaces as shown below. Make sure the //Target Hardware// is the correct hardware design. In our case, it will be " | Give your SDK project a name that has no empty spaces as shown below. Make sure the //Target Hardware// is the correct hardware design. In our case, it will be " | ||
| Line 253: | Line 246: | ||
| {{: | {{: | ||
| - | 30. After completing the previous step, you will see two new folders in the //Project Explorer// panel. | + | 28. After completing the previous step, you will see two new folders in the //Project Explorer// panel. |
| * **echo_server** which contains all the binaries, .C and .H (Header) files | * **echo_server** which contains all the binaries, .C and .H (Header) files | ||
| * **echo_server_bsp** which is the board support folder | * **echo_server_bsp** which is the board support folder | ||
| Line 261: | Line 254: | ||
| ==== Verify Linker Script File for Memory Region Mapping ==== | ==== Verify Linker Script File for Memory Region Mapping ==== | ||
| - | 31. In the linker script, take a look at the **Section to Memory Region Mapping** box. If you did the //Make DDR2 External// step then the target memory region **must** read **mig_7series_0**. | + | 29. In the linker script, take a look at the **Section to Memory Region Mapping** box. If you did the //Make DDR2 External// step then the target memory region **must** read **mig_7series_0**. |
| Scroll down to check if this applies to all rows. If for any region it does not say **mig_7series_0**, | Scroll down to check if this applies to all rows. If for any region it does not say **mig_7series_0**, | ||
| {{: | {{: | ||
| + | |||
| + | ==== Setting PHY Link Speed ==== | ||
| + | |||
| + | 30. Open the // | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Select // | ||
| + | |||
| + | {{: | ||
| ==== Programming FPGA with Bit File ==== | ==== Programming FPGA with Bit File ==== | ||
| - | 32. Make sure that the Nexys Video is turned on and connected to the host PC with the provided micro USB cable. | + | 31. Make sure that the Nexys Video is turned on and connected to the host PC with the provided micro USB cable plugged into the Prog port on the Nexys Video. |
| On the main toolbar, click **Xilinx Tools>> | On the main toolbar, click **Xilinx Tools>> | ||
| Line 283: | Line 286: | ||
| ==== Setting up the SDK Serial Console and Running the Server ==== | ==== Setting up the SDK Serial Console and Running the Server ==== | ||
| - | 33. Right click on the // | + | 32. Right click on the // |
| {{: | {{: | ||
| - | Go to the //STDIO Connection// | + | **Move the USB plug from the Prog port on your board to the UART port**. Now go to the //STDIO Connection// |
| {{: | {{: | ||
| Line 293: | Line 296: | ||
| ==== Running the Server ==== | ==== Running the Server ==== | ||
| - | 34. In the console window at the bottom of the screen the details of the connection will be displayed. | + | 33. In the console window at the bottom of the screen the details of the connection will be displayed. |
| {{: | {{: | ||
| Line 299: | Line 302: | ||
| ==== Testing the Server with Tera Term ==== | ==== Testing the Server with Tera Term ==== | ||
| - | 35. Connect your PC to your Nexys Video using an Ethernet cable. | + | 34. Connect your PC to your Nexys Video using an Ethernet cable. |
| - | 36. In order to connect to the echo server, you must set up your Ethernet connection with a static IP address. To do this: | + | 35. In order to connect to the echo server, you must set up your Ethernet connection with a static IP address. To do this: |
| * Right click your internet connection and click //Open Network and Sharing Center//. | * Right click your internet connection and click //Open Network and Sharing Center//. | ||
| Line 322: | Line 325: | ||
| {{: | {{: | ||
| - | 38. Open Tera Term and type in the following info and click Ok. | + | 36. Open Tera Term and type in the following info and click Ok. |
| {{: | {{: | ||
| - | 39. Type anything into the console and press Enter. The echo server will echo back your input and display it in the console. | + | 37. Type anything into the console and press Enter. The echo server will echo back your input and display it in the console. |
| //You can go to Setup> | //You can go to Setup> | ||
| {{: | {{: | ||

