beautypg.com

Equation 9. inbound translation, Figure 25. inbound translation example, 25 inbound translation example – Intel CONTROLLERS 413808 User Manual

Page 239

background image

Intel

®

413808 and 413812 I/O Controllers in TPER Mode

October 2007

Developer’s Manual

Order Number: 317805-001US

239

Address Translation Unit (PCI Express)—Intel

®

413808 and 413812

Once the transaction is claimed, the upper 32-bits of the address is discarded and the

lower 32-bits of the address must be translated from a PCI address to a 36-bit internal

bus address. The algorithm is:

The lower 32-bits of the incoming PCI address are first bitwise ANDed with the bitwise

inverse of the limit register. This result is bitwise ORed with the ATU Translate Value,

which is then ORed with the 4-bit ATU Upper Translate Value left shifted by 32; the

result is the 36-bit internal bus address. This translation mechanism is used for all

inbound memory read and write commands excluding inbound configuration read and

writes. Inbound configuration cycle translation is described in

Section 3.3.1.5,

“Inbound Configuration Cycle Translation (ID Routed)” on page 242

.

Figure 25

shows an inbound translation example for 32-bit addressing. This example

would hold true for an inbound transaction from PCI Express Link.

Equation 9. Inbound Translation

4138xx Internal Bus Address = ((PCI_Address[31:0] & ~Limit_Register[31:0]) |

ATU_Translate_Value_Register[31:0]) | (ATU_Upper_Translate Value_Register[3:0] << 32).

Figure 25. Inbound Translation Example

0000 0000H

FFFF FFFFH

0 0000 0000H

F FFFF FFFFH

Base_Register = 3A00 0000H

Limit_Register = FF80 0000H (8 Mbyte limit value)

Inbound

Window

Inbound Translation Window ranges from 3A00 0000H to 3A7F FFFFH (8 Mbytes)

PCI_Address

Value_Register = B100 0000H

Internal_Bus

Address

PCI Address

Space

I/O Processor Local

Memory Address Space

Address Detection (32-bit address)

PCI_Address and Limit_Register == Base_Register

3A45 012CH and FF80 0000H == 3A00 0000H

3A45 012CH

PCI_Address is in the Inbound Translation Window

Address Translation

IB_Address = (PCI_Address and ~Limit_Register) | Value_Register

IB_Address = ((3A45 012CH and 007F FFFFH) | B100 0000H) | (1H << 32)

1 B145 012CH

Register Values

IB_Address = 1 B145 012CH

Upper_Value_Register = 1H

Translation

B6323-01