Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| programmable-logic:guides:vivado-add-microblaze [2021/05/14 23:06] – ↷ Links adapted because of a move operation Arthur Brown | programmable-logic:guides:vivado-add-microblaze [2022/10/04 11:38] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 6: | Line 6: | ||
| **Note:** //This section is intended for use with boards without a Zynq chip. For Zynq boards, the Zynq7 Processing System should be used instead.// | **Note:** //This section is intended for use with boards without a Zynq chip. For Zynq boards, the Zynq7 Processing System should be used instead.// | ||
| + | **Note:** //If you aren't sure whether your board has DDR memory, check the //Memory// column of the specification table on this site's [[programmable-logic: | ||
| + | |||
| + | --> Follow the steps in this dropdown for boards without DDR memory # | ||
| + | <WRAP group> | ||
| <WRAP group> <WRAP column half> | <WRAP group> <WRAP column half> | ||
| - | First, an external clock should be added to the block design, so that it can be used to generate any other clocks required by the design. Open the **Board** tab, and find the system clock. Right click on it and select **Connect Board Component**. | + | First, an external clock should be added to the block design, so that it can be used to generate any other clocks required by the design. Open the **Board** tab, and find the system clock. Right-click on it and select **Connect Board Component**. |
| </ | </ | ||
| {{ : | {{ : | ||
| Line 37: | Line 41: | ||
| ---- | ---- | ||
| - | Two flows are available, depending on whether your board has DDR memory. If the board has DDR, a DDR interface will appear in Vivado' | + | <WRAP group> <WRAP column half> |
| + | Your design will require at least one clock from the clocking wizard. If your design requires more clocks, then they must be added through | ||
| - | --> Adding | + | Double click on the Clocking Wizard IP core to edit its settings. Navigate to the //Output Clocks// tab. Additional clocks are added to the Clocking Wizard by checking |
| - | <WRAP round todo> | + | If your design |
| - | This section is undergoing significant rework, in order to better match Xilinx | + | |
| - | </ | + | |
| + | Click **OK** to confirm your changes to the Clocking Wizard' | ||
| + | |||
| + | If you aren't sure that you have all of the clocks you need, don't worry, you can always come back and add them by reconfiguring this IP. This task can be performed whenever in the design process it becomes necessary. | ||
| + | |||
| + | </ | ||
| + | {{ : | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| <WRAP group> <WRAP column half> | <WRAP group> <WRAP column half> | ||
| - | Returning | + | Next, use the **Add IP** button ({{: |
| </ | </ | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| ---- | ---- | ||
| <WRAP group> <WRAP column half> | <WRAP group> <WRAP column half> | ||
| - | Once the MIG has been added to the design, it will have been connected to one or more additional | + | Next, block automation |
| - | The next few steps will discuss how to manually connect | + | **Note:** //The screenshot |
| </ | </ | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| ---- | ---- | ||
| <WRAP group> <WRAP column half> | <WRAP group> <WRAP column half> | ||
| - | Digilent' | + | In the //Run Block Automation// |
| + | * **Local Memory** specifies how much block RAM memory will be dedicated to the processor. DDR-less designs require more memory, and the amount of memory necessary depends heavily on the size of the software application being run. 32KB is enough | ||
| + | * **Cache Configuration** can help the speed of designs using DDR memory. It should be enabled when using DDR and disabled otherwise. | ||
| + | * **Debug Module** allows you to specify the capabilities of the debugger. The default //Debug Only// option is recommended. | ||
| + | * **Peripheral AXI Port** enables or disables the AXI master interface of the processor. It must be enabled | ||
| + | * **Interrupt Controller** specifies whether the processor can be interrupted by its peripherals. Whether or not it needs to be enabled depends on your design requirements. If any IP that you intend to connect to the processor must have interrupts to function correctly, the box must be checked. | ||
| + | * **Clock Connection** specifies the processor's clock. Designs using DDR should use the MIG's ui_clk pin, while designs without DDR should use the Clocking Wizards clk_out1 pin. | ||
| - | First, these clocks must be generated by the Clocking Wizard. Double click on the Clocking Wizard IP core to edit its settings. Navigate to the //Output Clocks// tab, and create clocks of the frequencies specified in the table below: | + | **Note:** //Settings not present in this list are out of the scope of this guide, and can safely |
| - | ^ Board ^ MIG System Clock (sys_clk_i) Frequency ^ MIG Reference Clock (ref_clk_i) Frequency ^ | + | Confirm that the settings meet your design requirements. It should be noted that while it is possible to change these settings manually later (for example, by manually adding an AXI INTC IP and connecting it to the processor), the easiest way to do so will be to clear the Microblaze processor out of your block design and restart the process of adding the processor. This is to say, the settings chosen here are important. Getting them right the first time will save you time in the long run. |
| - | | Arty A7 | 166.66667 MHz | 200 MHz | | + | |
| - | | Arty S7 | 100 MHz | 200 MHz | | + | |
| - | | Nexys A7 | 200 MHz | N/A | | + | |
| - | | USB104 A7 | 200 MHz | N/A | | + | |
| - | | Nexys Video | 200 MHz | N/A | | + | |
| - | | Genesys 2 | 200 MHz | N/A | | + | |
| - | | Sword | 200 MHz | N/A | | + | |
| - | **Important: | + | Click **OK** to continue. |
| - | + | ||
| - | Output clocks are added to the Clocking Wizard by checking a box in the //Output Clock// column, and specifying a //Requested Output Frequency// | + | |
| - | + | ||
| - | If your design requires additional clocks (such as for an ext_spi_clock pin), they should be added to the Clocking Wizard as well. | + | |
| - | + | ||
| - | **Note:** //This section can always be returned to later, as the addition of an additional clock can be performed any time before the hardware is built.// | + | |
| - | + | ||
| - | Click **OK** to confirm your changes to the Clocking Wizard' | + | |
| </ | </ | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| + | |||
| ---- | ---- | ||
| <WRAP group> <WRAP column half> | <WRAP group> <WRAP column half> | ||
| - | Next, the Clocking Wizard' | + | Next, in order for the software design to be able to print to a serial console |
| - | + | ||
| - | Connect the clocks by clicking and dragging from one pin to the other, as seen in the image to the right. | + | |
| </ | </ | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| ---- | ---- | ||
| <WRAP group> <WRAP column half> | <WRAP group> <WRAP column half> | ||
| - | Next, manually connect | + | In the dialog |
| - | + | ||
| - | **Note:** //The image to the right shows an active low MIG reset (indicated by the " | + | |
| </ | </ | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| - | + | ---- | |
| - | <-- | + | |
| - | + | ||
| - | --> Adding Additional Clocks (For Boards Without DDR) # | + | |
| <WRAP group> <WRAP column half> | <WRAP group> <WRAP column half> | ||
| - | Your design will require at least one clock from the clocking wizard. If your design requires more clocks, then they must be added through the Clocking Wizard. | + | To connect all remaining AXI cores that have not yet been connected to the processor, click the **Run Connection Automation** button in the green //Designer Assistance// bar. Check the //All Automation// box in the list on the left side of the window |
| - | + | ||
| - | Double | + | |
| - | + | ||
| - | If your design requires additional clocks (such as for an ext_spi_clock pin), they should | + | |
| - | + | ||
| - | Click **OK** to confirm your changes | + | |
| - | + | ||
| - | **Note:** //This section can always be returned to later, as the addition of an additional clock can be performed any time before the hardware is built.// | + | |
| </ | </ | ||
| - | {{ :reference: | + | {{ :learn: |
| </ | </ | ||
| + | </ | ||
| <-- | <-- | ||
| + | --> Follow the steps in this dropdown for boards with DDR memory # | ||
| + | <WRAP group> | ||
| + | {{section> | ||
| + | {{section> | ||
| + | {{section> | ||
| + | {{section> | ||
| + | {{section> | ||
| + | {{section> | ||
| ---- | ---- | ||
| <WRAP group> <WRAP column half> | <WRAP group> <WRAP column half> | ||
| Line 149: | Line 144: | ||
| **Note:** //Settings not present in this list are out of the scope of this guide, and can safely be left as their default.// | **Note:** //Settings not present in this list are out of the scope of this guide, and can safely be left as their default.// | ||
| - | Confirm that the settings meet your design requirements. | + | Confirm that the settings meet your design requirements. |
| - | </ | + | |
| - | {{ : | + | |
| - | </ | + | |
| - | ---- | + | |
| - | --> Connect | + | **Important!** When working with multiple clocks in a design (as happens to always be the case when working with the MIG) it is important |
| - | <WRAP group> <WRAP column half> | + | Click **OK** to continue. |
| - | With Block Automation complete, click **Run Connection Automation**. | + | |
| </ | </ | ||
| - | {{ :learn: | + | {{ : |
| </ | </ | ||
| ---- | ---- | ||
| - | <WRAP group> <WRAP column half> | + | Next, the MIG's AXI interface |
| - | In the dialog that pops up, select **ONLY** | + | |
| - | **Note:** //Selecting all three interfaces may result in incorrect connections. The IC and DC interfaces are specified to be connected to the S_AXI interface from within the automation options for S_AXI.// | + | {{section> |
| - | </ | + | |
| - | {{ : | + | |
| - | </WRAP> </ | + | |
| - | ---- | + | |
| - | <WRAP group> <WRAP column half> | + | |
| - | Side note, the //View// dropdown in the top right corner of Vivado' | + | |
| - | + | ||
| - | Importantly, | + | |
| - | </ | + | |
| - | {{ : | + | |
| - | </ | + | |
| - | + | ||
| - | <-- | + | |
| ---- | ---- | ||
| <WRAP group> <WRAP column half> | <WRAP group> <WRAP column half> | ||
| Line 198: | Line 174: | ||
| {{ : | {{ : | ||
| </ | </ | ||
| + | </ | ||
| + | <-- | ||
| ---- | ---- | ||

