Reputation: 817
Consider a design where the PS (Zynq ARM A9) is connected to multiple peripherals where the addressing is depicted below.
As highlighted in the purple below, why is the minimum accessible of each endpoint module (even if the module is my own IP) always at a range of four kilobytes? Is it related to something ARM processor specific?
I have tried to modify the address range of my own IP as shown below to a smaller number but it never has any effect.
Upvotes: 1
Views: 2937
Reputation: 817
In addition to the answer posted by TWang, I want to also note that a user's ability to assign address range depends on the starting address such that the end address will not cross over (or in another words, no carry over) to the next bit.
As can be seen, if you assign the offset address as 0x40020000, you can set the range to be 128K, which mean 0x40020000 to 0x4003FFFF.
I suppose this is a way to manage the memory so that no crazy behaviors can occur.
I am not sure if this is a design intention of Xilinx or a specification of ARM processor architecture.
Upvotes: 0
Reputation: 66
According to notes under Table 3-9: AXI Crossbar Master Interface-Related Parameters in PG059 AXI Interconnect Product Guide, the size of all address range must be a power of 2, determined by 2 ** Mmm_Aaa_ADDR_WIDTH
.
Since the master of AXI-Interconnect in your design is probably connected to the AXI4 GP Slave interface of PS system, the Mmm_Aaa_BASE_ADDR
is greater than or equal to 12, i.e. the minimum address range that can be assigned to each IP core is at least 4KBytes (4096) as shown in your pictures.
From a design perspective, if you do not run out of memory space to allocate for your IP cores, a bigger range may be better as it reduces the bits needed for comparison in the AXI interconnect, resulting in lower hardware resource consumption, and possibly improved speed (faster achievable AXI clock) and easier placement and routing with timing constraints.
Upvotes: 2