Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AMBA_v30_AXI_v10.pdf
Скачиваний:
41
Добавлен:
21.05.2015
Размер:
757.85 Кб
Скачать
Use these equations to determine addresses of transfers within a burst:
Start_Address = ADDR
Number_Bytes = 2SIZE
Burst_Length = LEN + 1
Aligned_Address = (INT(Start_Address / Number_Bytes) ) x Number_Bytes.
Use this equation to determine the address of the first transfer in a burst:
Address_1 = Start_Address.
Use this equation to determine the address of any transfer after the first transfer in a burst:
Address_N = Aligned_Address + (N – 1) x Number_Bytes.
For wrapping bursts, the Wrap_Boundary variable is extended to account for the wrapping boundary:
Wrap_Boundary = (INT(Start_Address / (Number_Bytes x Burst_Length)))
x (Number_Bytes x Burst_Length).
If Address_N = Wrap_Boundary + (Number_Bytes x Burst_Length), use this equation:
Address_N = Wrap_Boundary.

Addressing Options

4.5Burst address

This section provides some simple formulas for determining the address and byte lanes of transfers within a burst. The formulas use the following variables:

Start_Address

The start address issued by the master.

Number_Bytes

The maximum number of bytes in each data transfer.

Data_Bus_Bytes

The number of byte lanes in the data bus.

Aligned_Address

The aligned version of the start address.

Burst_Length

The total number of data transfers within a burst.

Address_N

The address of transfer N within a burst. N is an integer from 2-16.

Wrap_Boundary

The lowest address within a wrapping burst.

Lower_Byte_Lane

The byte lane of the lowest addressed byte of a transfer.

Upper_Byte_Lane

The byte lane of the highest addressed byte of a transfer.

INT(x)

The rounded-down integer value of x.

ARM IHI 0022B

Copyright © 2003, 2004 ARM Limited. All rights reserved.

4-7

Addressing Options

Use these equations to determine which byte lanes to use for the first transfer in a burst:

Lower_Byte_Lane = Start_Address - (INT(Start_Address / Data_Bus_Bytes)) x Data_Bus_Bytes

Upper_Byte_Lane = Aligned_Address + (Number_Bytes - 1) - (INT(Start_Address / Data_Bus_Bytes)) x Data_Bus_Bytes.

Use these equations to determine which byte lanes to use for all transfers after the first transfer in a burst:

Lower_Byte_Lane = Address_N – (INT(Address_N / Data_Bus_Bytes)) x Data_Bus_Bytes

Upper_Byte_Lane = Lower_Byte_Lane + Number_Bytes – 1.

Data is transferred on:

DATA[(8 x Upper_Byte_Lane) + 7 : (8 x Lower_Byte_Lane)].

4-8

Copyright © 2003, 2004 ARM Limited. All rights reserved.

ARM IHI 0022B

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]