Visible to Intel only — GUID: kqf1490746663225
Ixiasoft
Visible to Intel only — GUID: kqf1490746663225
Ixiasoft
4.5.3.1.1. Input/Output Avalon® -MM Master Address Mapping Windows
Address mapping or translation windows are used to map windows of 34-bit RapidIO addresses into windows of 32-bit Avalon® -MM addresses.
Registers | Location |
---|---|
Input/Output master base address | 0x10300, 0x10310, 0x10320, 0x10330, 0x10340,0x10350, 0x10360, 0x10370, 0x10380, 0x10390, 0x103A0, 0x103B0, 0x103C0, 0x103D0, 0x103E0, 0x103F0 |
Input/Output master address mask | 0x10304, 0x10314, 0x10324, 0x10334, 0x10344,0x10354, 0x10364, 0x10374, 0x10384, 0x10394, 0x103A4, 0x103B4, 0x103C4, 0x103D4, 0x103E4, 0x103F4 |
Input/Output master address offset | 0x10308, 0x10318, 0x10328, 0x10338, 0x103480x10358, 0x10368, 0x10378, 0x10388, 0x10398, 0x103A8, 0x103B8, 0x103C8, 0x103D8, 0x103E8, 0x103F8 |
Your variation must have at least one translation window. Intel® Arria® 10 and Intel® Cyclone® 10 GX variations have 16 address translation windows. You can change the values of the window defining registers at any time. You should disable a window before changing its window defining registers.
A window is enabled if the window enable (WEN) bit of the I/O Master Mapping Window n Mask register is set.
The number of mapping windows is defined by the Number of receive address translation windows parameter, which supports up to 16 sets of registers. Each set of registers supports one address mapping window.
For each window that is defined and enabled, the least significant bits of the incoming RapidIO address are masked out by the window mask and the resulting address is compared to the window base. If the addresses match, the Avalon® -MM address is made of the least significant bits of the RapidIO address and the window offset using the following equation:
Let rio_addr[33:0] be the 34-bit RapidIO address, and address[31:0] the local Avalon® -MM address.
Let base[31:0], mask[31:0] and offset[31:0] be the three window-defining registers. The least significant three bits of these registers are always 3’b000.
Starting from window 0, for the first window in which ((rio_addr & {xamm, mask}) == ({xamb, base} & {xamm, mask}), where xamm and xamb are the Extended Address MSB fields of the I/O Master Mapping Window n Mask and the I/O Master Mapping Window n Base registers, respectively, let address[31:3] = (offset[31:3] & mask[31:3]) | (rio_addr[31:3] & ~mask[31:3])
The value of address[2] is zero for variations with 64-bit wide datapath Avalon® -MM interfaces.
The value of address[2] is determined by the values of wdptr and rdsize or wrsize for variations with 32-bit wide datapath Avalon® -MM interfaces.
The value of address[1:0] is always zero.
For each received NREAD or NWRITE_R request packet that does not match any enabled window, an ERROR response packet is returned.
RapidIO Packet Data wdptr and Data Size Encoding in Avalon® -MM Transactions
The RapidIO IP core converts RapidIO packets to Avalon® -MM transactions. The RapidIO packets’ read size, write size, and word pointer fields are translated to the Avalon® -MM burst count and byteenable values.
RapidIO Values | Avalon® -MM Burstcount Value | ||
---|---|---|---|
rdsize (4'bxxxx) |
wdptr (1'bx) |
in 32-Bit Datapath | In 64-Bit Datapath |
0000 | 0 | 1 | 1 |
1 | 1 | 1 | |
0001 | 0 | 1 | 1 |
1 | 1 | 1 | |
0010 | 0 | 1 | 1 |
1 | 1 | 1 | |
0011 | 0 | 1 | 1 |
1 | 1 | 1 | |
0100 | 0 | 1 | 1 |
1 | 1 | 1 | |
0101 | 0 | 1 | 1 |
1 | 1 | 1 | |
0110 | 0 | 1 | 1 |
1 | 1 | 1 | |
0111 | 0 | 2 | 1 |
1 | 2 | 1 | |
1000 | 0 | 1 | 1 |
1 | 1 | 1 | |
1001 | 0 | 2 | 1 |
1 | 2 | 1 | |
1010 | 0 | 2 | 1 |
1 | 2 | 1 | |
1011 | 0 | 2 | 1 |
1 | 4 | 2 | |
1100 | 0 | 8 | 4 |
1 | 16 | 8 | |
1101 | 0 | 24 | 12 |
1 | 32 | 16 | |
1110 | 0 | 40 | 20 |
1 | 48 | 24 | |
1111 | 0 | 56 | 28 |
1 | 64 | 32 |
RapidIO Values | Avalon® -MM Values | |||
---|---|---|---|---|
wrsize (4'bxxxx) |
wdptr (1'bx) |
Maximum Burstcount | Byteenable (8’b0000xxxx) | |
First Cycle or All Cycles | Second Cycle (If Different) | |||
0000 | 0 | 1 | 1000 | — |
1 | 1 | 1000 | — | |
0001 | 0 | 1 | 0100 | — |
1 | 1 | 0100 | — | |
0010 | 0 | 1 | 0010 | — |
1 | 1 | 0010 | — | |
0011 | 0 | 1 | 0001 | — |
1 | 1 | 0001 | — | |
0100 | 0 | 1 | 1100 | — |
1 | 1 | 1100 | — | |
0101 | 0 22 | 1 | 1110 | — |
122 | 1 | 0111 | — | |
0110 | 0 | 1 | 0011 | — |
1 | 1 | 0011 | — | |
0111 | 0 | 2 | 1000 | 1111 |
1 | 2 | 1111 | 0001 | |
1000 | 0 | 1 | 1111 | — |
1 | 1 | 1111 | — | |
1001 | 0 | 2 | 1100 | 1111 |
1 | 2 | 1111 | 0011 | |
1010 | 022 | 2 | 1110 | 1111 |
122 | 2 | 1111 | 0111 | |
1011 | 0 | 2 | 1111 | 1111 |
1 | 4 | 1111 | — | |
1100 | 0 | 8 | 1111 | — |
1 | 16 | 1111 | — | |
1101 | 0 23 | — | — | — |
1 | 32 | 1111 | — | |
1110 | 023 | — | — | — |
123 | — | — | — | |
1111 | 023 | — | — | — |
1 | 64 | 1111 | — |
RapidIO Values | Avalon® -MM Values | ||
---|---|---|---|
wrsize (4'bxxxx) |
wdptr (1'bx) |
Maximum Burstcount | Byteenable (8’bxxxxxxxx) |
0000 | 0 | 1 | 1000_0000 |
1 | 1 | 0000_1000 | |
0001 | 0 | 1 | 0100_0000 |
1 | 1 | 0000_0100 | |
0010 | 0 | 1 | 0010_0000 |
1 | 1 | 0000_0010 | |
0011 | 0 | 1 | 0001_0000 |
1 | 1 | 0000_0001 | |
0100 | 0 | 1 | 1100_0000 |
1 | 1 | 0000_1100 | |
0101 | 022 | 1 | 1110_0000 |
122 | 1 | 0000_0111 | |
0110 | 0 | 1 | 0011_0000 |
1 | 1 | 0000_0011 | |
0111 | 022 | 1 | 1111_1000 |
122 | 1 | 0001_1111 | |
1000 | 0 | 1 | 1111_0000 |
1 | 1 | 0000_1111 | |
1001 | 022 | 1 | 1111_1100 |
122 | 1 | 0011_1111 | |
1010 | 022 | 1 | 1111_1110 |
122 | 1 | 0111_1111 | |
1011 | 0 | 1 | 1111_1111 |
1 | 2 | 1111_1111 | |
1100 | 0 | 4 | 1111_1111 |
1 | 8 | 1111_1111 | |
1101 | 023 | — | — |
1 | 16 | 1111_1111 | |
1110 | 023 | — | — |
123 | — | — | |
1111 | 023 | — | — |
1 | 32 | 1111_1111 |
This combination of wdptr and wrsize values should be avoided, because the resulting byteenable value is not allowed by the Avalon® -MM specification.