Manual Insertion in the IP Integrator
Isolation reference design gets created in the previous section, Start with the XAPP1320 Isolation Reference Design, and is
saved to the following
location:
/XmpuPL_ZUplus_v1.0a/xcu102_<version>/xmpu_example/pl_isolation_lab.xpr
Open the project in Vivado, and click
Open Block Design if you have it
closed.You will go through the following steps to add a XMPU_PL module to the block design.
- Click the Address Editor and note the
current mappings in the following pane.
-
axi_bram_ctrl_0
is mapped to0x00_A000_0000
(4K) andaxi_gpio_0
is mapped to0x00_A000_1000
(4K) in the Address Editor window. Return to the diagram.
Figure 1. Address Editor -
-
Add the
zupl_xmpu_v1_0
core to your repository.- Click Settings beneath Project Manager. This is located in the Flow Manager.
- Under Project Settings, expand > IP, and click Repository.
- Click the + symbol in the IP Repositories.
- Browse to the
zupl_xmpu_v1_0
directory and click Select. - One (1) repositiory must be added to the project. Click OK to clear the Add Repository window.
- Click OK to clear the Settings window.
- Add the
zupl_xmpu_v1_0
core to the block design.- Click the + symbol in the Block Diagram window.
-
Type
zupl
in the Search field type and double-clickzupl_xmpu_v1_0
or press enter.
- Add a SmartConnect IP core.
- Click the + symbol in the Block Diagram window.
- Type smart in the search field type.
- Double-click AXI SmartConnect or just press enter.
- Right-click the smartconnect_0 instance and select Customize Block.
- Change the Number of Master Interfaces to 2 and click OK.
-
Disconnect the AXI
Interconnect block from the Zynqzynq PS
block.
-
Select and
delete the bus signals
between
zynq_ultra_ps_e_0
andps8_0_axi_periph
. - Right-click
ps8_0_axi_periph
and Customize Block. - Reduce the Number of Slave Interfaces to 1. Click OK.
-
Select and
delete the bus signals
between
- Connect the Zynq PS M_AXI_
ports.
- Connect
zynq_ultra_ps_e_0/M_AXI_HPM0_FPD
tosmartconnect_0/S00_AXI
. - Connect
zynq_ultra_ps_e_0/M_AXI_HPM1_FPD
tosmartconnect_0/S01_AXI
.
- Connect
- Connect the XMPU AXI ports.
- Connect
zupl_xmpu_0/S_AXI_XMPU
tosmartconnect_0/M00_AXI
. - Connect
zupl_xmpu_0/S_AXI
tosmartconnect_0/M01_AXI
. - Connect
zupl_xmpu_0/M_AXI
tops8_0_axi_periph/S00_AXI
. - Regenerate Layout. Click OK.
- Connect
- Connect the AXI clock and reset ports.
- Click Run Connection Automation.
- Select All Automation. Click the
Regenerate button.
- Manually connect any unconnected
aclk
oraresetn
ports.
- Connect the IRQ signal.
- This example design demonstrates the usage of PMU and RPU to receive
interrupts from the XMPU so the
pmu_error_from_pl
port needs to be enabled. Right-clickzynq_ultra_ps_e_0
and select Customize Block. - Click PS-PL Configuration. Expand > General. Expand > Others.
- Select the check box for Errors to and from PMU. Click OK.
- Connect
zupl_xmpu_0/irq
port to bothpl_ps_irq0[0:0]
andpmu_error_from_pl[3:0]
ports onzynq_ultra_ps_e_0
. - Regenerate Layout. The diagram resembles the following.Figure 2. xmpu_pl Example Block Diagram
- This example design demonstrates the usage of PMU and RPU to receive
interrupts from the XMPU so the
- Map the Address segments.
- Click Address Editor.
- Assign addresses:
- Expand > Network 0 > zynq_ultra_ps_e_0 > Data > Unassigned (4).
- Right-click
zupl_xmpu_0: S_AXI_XMPU (S_AXI_XMPU_Config)
and select Assign.Note: If two entries are shown, select either one. - Change the range of
S_AXI_XMPU
to 4K. - Change the Master Base Address of
S_AXI_XMPU
to 0x00_A000_2000. - Select File > Save Block Design.
- Select Tools >
Validate Design.Note: If asked to assign unmapped slaves, select No.
- Ignore warnings about unmapped slaves. Click OK.
- Right-click Uassigned Slaves/zupl_xmpu_0: S_AXI (S_AXI) and select Exclude.
- The final configuration is shown in the following diagram.Figure 3. xmpu_pl Example Address Map
- Select File > Save Block Design.
Note: Thezupl_xmpu_0/S_AXI
is excluded due to the AXI Bridge in the core. Downstream slaves are mapped directly to upstream masters. - Customize the
zupl_xmpu_0
block.- Return to the block diagram and right-click
zupl_xmpu_0
and select Customize Block. - Select AXI Settings.
- The
C_S_AXI_ DATA_WIDTH
is set to the default value of 32. Leave it at default setting. The AXI infrastructure blocks adjusts for the PSM_AXI_
bus widths. - The
M_AXI_BASEADDR
andM_AXI_HIGHADDR
will not have any functional effect. However they are provided as a means to communicate to the SW Driver the address range that the XMPU monitors. These values will be exported to thexparameters.h
file and be included in the peripheral's instance configuration data. - (Optional) Set these values to correspond with the
address ranges shown in the previous figure.
-
HIGHADDR:0xA0001FFF
-
BASEADDR:0xA0000000
Tip: Use the upper 32 bits to specify a 40 bit address..
-
- Select the Regions Tab and note the value for Regions Max. The default is the absolute maximum setting at 16. If the HW designer knows exactly how many regions the SW designer needs, they could select a lower number to conserve the PL resources. The setting can be kept to default for the time being.
- Click OK.
- Return to the block diagram and right-click
- (Optional) Set Project Synthesis
Language.
- The top level synthesis language for the project may optionally be set to either VHDL or Verilog. You can choose either one of them for this demonstration.
- Click Settings in the Flow Manager under Project Settings.
- Click General under Project Settings.
- Select the Target Language: VHDL or Verilog. Click OK.
- Create the top level wrapper.
- In the Sources window, right-click Base_Zynq_MPSoC and select Create HDL Wrapper.
- Let Vivado manage wrapper. Click OK.
- Implement design.
- Click Generate Block
Design under IP Integrator.
- Select Out of context per IP and click Generate.
- If a Generate Output Products
dialogue appears when the module runs have launched:
- Click OK.
- Wait for all the block runs to complete.
- View the status in the upper right corner or monitor the Out-of-Context Module Runs on the Design Runs tab below.
- Click Generate Bitstream in the Flow Navigator, click OK or Yes and then OK.
- When the Bitstream Generation Completed window appears, click Cancel.
- Click Generate Block
Design under IP Integrator.
- Export hardware.
- Select File->Export->Export
Hardware.
- Check Include bitstream.
- Click Next.
- XSA file name: Base_Zynq_MPSoC_wrapper
- Export
to:
If prompted, click OK to Create Directory.<your_path>/XmpuPL_ZUplus_v1.0a/zcu102_<version>/xmpu_example/pl_isolation_lab.vitis/Base_Zynq_MPSoC_wrapper_hw_platform
Figure 4. Export Hardware in Vitis - Click OK or Next > then Finish.
- Select File->Export->Export
Hardware.
The hardware design is now complete. Proceed to Creating the Isolation Test SW Applications in Vitis 2021.1.