UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Visitor workingonit
Visitor
207 Views
Registered: ‎04-16-2019

Vivado : what is addresses and address ranges of IPs in vivado

Jump to solution

In vivado, when you look into the address editor, you find addresses of IPs of the block design and the ranges, but what does this mean? Here is what I undertood from xilinx UGs, please correct me if I'm wrong : 

      1) For the addresses : each IP in the block design which works as a slave will have his slave interface referenced by an address, with which the processor ( Zynq 7 processing system for example) accesses that interface to control the IP in question. So If the processor wants to send a signal to that IP, he must designate its slave interface address to select that IP, and communicate directly with him. (it's like chip select in memory blocks)

 

   2) For the ranges : I don't have any idea !!

 

     Thank you !!! 

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Voyager
Voyager
141 Views
Registered: ‎05-21-2015

Re: Vivado : what is addresses and address ranges of IPs in vivado

Jump to solution

@workingonit,

Perhaps this might help.  I'm working on my own AXI crossbar/interconnect.  One of the challenges of the interconnect is to determine which incoming requests go to which outgoing port.  You can see my address decoder here.  It basically tries to match address against a slave's address across all of those bits for which the  associated mask bit is set, and if those bits match the slave's address then the request is determined to be for that slave.  The algorithm within Xilinx's interconnect is similar, although they take an extra step to calculate the mask bits from the high and low addresses for a given slave.  Once the arbiter knows which slave to map a given request to, it then grants the master requesting access to the requested slave.

This matches your understanding in 1) above.

The Address range that you ask about above is the range from the minimum to the maximum address associated with the given peripheral.  For example, if I have a peripheral that response to addresses 0x40000 through 0x5ffff, the address would be 0x40000 and the range would be the range of addresses from 0x40000 through 0x50000.  In my own example code, the "mask" would have all zeros over this valid address range, and ones above it--such as 0x60000 or even 0xff0000.  It is to the advantage of the interconnect to make this selection as fast as possible, 'cause every clock taken in this process will slow down *EVERY* bus transaction.  For this reason, it makes sense to use as few bits as possible.  This also often leads to slaves that match multiple address ranges across the entire address space.

For example, the minimum mapping allowed by the AXI spec is 4kB.  If you have a slave with only 32 registers, you will often find those same 32-register mappedc multiple times across that 4kB address space--it's just simpler and cheaper to do that then to check whether or not all of the slave's address bits match properly.

Hope that helps,

Dan

4 Replies
Moderator
Moderator
193 Views
Registered: ‎09-12-2007

Re: Vivaod : what is address and address ranges of IPs

Jump to solution

This is used by the address decoders inside the axi interconnect. 

 

0 Kudos
Highlighted
Voyager
Voyager
142 Views
Registered: ‎05-21-2015

Re: Vivado : what is addresses and address ranges of IPs in vivado

Jump to solution

@workingonit,

Perhaps this might help.  I'm working on my own AXI crossbar/interconnect.  One of the challenges of the interconnect is to determine which incoming requests go to which outgoing port.  You can see my address decoder here.  It basically tries to match address against a slave's address across all of those bits for which the  associated mask bit is set, and if those bits match the slave's address then the request is determined to be for that slave.  The algorithm within Xilinx's interconnect is similar, although they take an extra step to calculate the mask bits from the high and low addresses for a given slave.  Once the arbiter knows which slave to map a given request to, it then grants the master requesting access to the requested slave.

This matches your understanding in 1) above.

The Address range that you ask about above is the range from the minimum to the maximum address associated with the given peripheral.  For example, if I have a peripheral that response to addresses 0x40000 through 0x5ffff, the address would be 0x40000 and the range would be the range of addresses from 0x40000 through 0x50000.  In my own example code, the "mask" would have all zeros over this valid address range, and ones above it--such as 0x60000 or even 0xff0000.  It is to the advantage of the interconnect to make this selection as fast as possible, 'cause every clock taken in this process will slow down *EVERY* bus transaction.  For this reason, it makes sense to use as few bits as possible.  This also often leads to slaves that match multiple address ranges across the entire address space.

For example, the minimum mapping allowed by the AXI spec is 4kB.  If you have a slave with only 32 registers, you will often find those same 32-register mappedc multiple times across that 4kB address space--it's just simpler and cheaper to do that then to check whether or not all of the slave's address bits match properly.

Hope that helps,

Dan

Visitor workingonit
Visitor
107 Views
Registered: ‎04-16-2019

Re: Vivado : what is addresses and address ranges of IPs in vivado

Jump to solution

Thank you a lot, that was a huge clarification, 


@dgisselq wrote:

@workingonit,

 For example, if I have a peripheral that response to addresses 0x40000 through 0x5ffff, the address would be 0x40000 and the range would be the range of addresses from 0x40000 through 0x50000. 


I think you mean the range would be the range of addresses from 0x40000 through 0x5ffff ?

I understood the first part, So now I have to check my understanding of the second part: we use ranges to address peripherals because instead of checking the intended address bit-to-bit, we use ranges to check only the MSBs, like your example above we only check the Most Significant bytes if they are equal to 4 or 5, if yes it will accept the request, if not it will not. It's better than checking all the addresses because it'll take more time.

0 Kudos
Voyager
Voyager
101 Views
Registered: ‎05-21-2015

Re: Vivado : what is addresses and address ranges of IPs in vivado

Jump to solution

Yes, I think you understand completely.

The interconnect uses both address and address range to route the read/write request to the proper slave, and then the slave decodes the address bits within that range only.

Dan

0 Kudos