RDRAM: Difference between revisions

Jump to navigation Jump to search
Content added Content deleted
(Fix bits ordering in RDRAM registers layout.)
Line 253: Line 253:
Programming caution :
Programming caution :


* RDRAM registers are '''little-endian'''. The RI does not perform any endian-swap, so the value that is read or written by the CPU '''must be endian-swapped''' to match the register layout described in this page.
* Before reading any RDRAM register content, RDRAM current control must be calibrated
* Before reading any RDRAM register content, RDRAM current control must be calibrated
* Also, it seems that RDRAM register reads should be surrounded by MI_MODE = SET_DRAM_REG / CLR_DRAM_REG
* Also, it seems that RDRAM register reads should be surrounded by MI_MODE = SET_DRAM_REG / CLR_DRAM_REG
Line 265: Line 264:
{{#invoke:Register table|head|600px|DeviceType <code>0x00</code>}}
{{#invoke:Register table|head|600px|DeviceType <code>0x00</code>}}
{{#invoke:Register table|row|31:24}}
{{#invoke:Register table|row|31:24}}
| R-0 || R-0 || R-0 || R-? || R-0 || R-0 || R-0 || R-0
| R-? || R-? || R-? || R-? || U-0 || R-1 || U-0 || R-?
|-
|-
| colspan="4" | Version || colspan="4" | Type
| colspan="4" | ColumnBits || || Bn || — || En
{{#invoke:Register table|row|23:16}}
{{#invoke:Register table|row|23:16}}
| U-0 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0
|-
| — || — || — || — || — || — || — || —
{{#invoke:Register table|row|15:8}}
| R-? || R-? || R-? || R-? || R-? || R-? || R-? || R-?
| R-? || R-? || R-? || R-? || R-? || R-? || R-? || R-?
|-
|-
| colspan="4" | BankBits || colspan="4" | RowBits
| colspan="4" | BankBits || colspan="4" | RowBits
{{#invoke:Register table|row|15:8}}
| U-0 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0
|-
| — || — || — || — || — || — || — || —
{{#invoke:Register table|row|7:0}}
{{#invoke:Register table|row|7:0}}
| R-? || R-? || R-? || R-? || U-0 || R-1 || U-0 || R-?
| R-0 || R-0 || R-0 || R-? || R-0 || R-0 || R-0 || R-0
|-
|-
| colspan="4" | ColumnBits || || Bn || — || En
| colspan="4" | Version || colspan="4" | Type
{{#invoke:Register table|foot}}
{{#invoke:Register table|foot}}
{{#invoke:Register table|definitions
{{#invoke:Register table|definitions
| 31-28 | ColumnBits | Number of column address bits, or said differently, declares that this RDRAM device has 2^ColumnBits bytes per row.
| 31-28 | Version | RDRAM version. <br>0001 {{=}} Extended architecture (Base RDRAM protocol)
| 27-24 | Type | Device type. <br>0000 {{=}} RDRAM device
| 26 | Bn | Bonus, number of bits per byte. <br>0 {{=}} 8bit byte<br>1 {{=}} 9bit byte
| 24 | En | Enhanced speed grade. <br>0 {{=}} Normal<br> 1 {{=}} Low Latency
| 15-12 | BankBits | Number of bank address bits, or said differently, declares that this RDRAM device has 2^BankBits banks.
| 11-8 | RowBits | Number of row address bits, or said differently, declares that this RDRAM devices has 2^RowBits rows per bank.
| 23-20 | BankBits | Number of bank address bits, or said differently, declares that this RDRAM device has 2^BankBits banks.
| 7-4 | ColumnBits | Number of column address bits, or said differently, declares that this RDRAM device has 2^ColumnBits bytes per row.
| 19-16 | RowBits | Number of row address bits, or said differently, declares that this RDRAM devices has 2^RowBits rows per bank.
| 2 | Bn | Bonus, number of bits per byte. <br>0 {{=}} 8bit byte<br>1 {{=}} 9bit byte
| 7-4 | Version | RDRAM version. <br>0001 {{=}} Extended architecture (Base RDRAM protocol)
| 0 | En | Enhanced speed grade. <br>0 {{=}} Normal<br> 1 {{=}} Low Latency
| 3-0 | Type | Device type. <br>0000 {{=}} RDRAM device
}}
}}


Line 295: Line 294:
{{#invoke:Register table|head|600px|DeviceId <code>0x01</code>}}
{{#invoke:Register table|head|600px|DeviceId <code>0x01</code>}}
{{#invoke:Register table|row|31:24}}
{{#invoke:Register table|row|31:24}}
| RW-0 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0
| RW-0 || RW-0 || RW-0 || RW-0 || RW-0 || U-0 || U-0 || U-0
|-
|-
| IdField[35] || — || — || — || — || — || — || —
| colspan="5" | IdField[25:20] || — || — || —
{{#invoke:Register table|row|23:16}}
{{#invoke:Register table|row|23:16}}
| RW-0 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0
|-
| IdField[26] || || — || — || — || — || — || —
{{#invoke:Register table|row|15:8}}
| RW-0 || RW-0 || RW-0 || RW-0 || RW-0 || RW-0 || RW-0 || RW-0
| RW-0 || RW-0 || RW-0 || RW-0 || RW-0 || RW-0 || RW-0 || RW-0
|-
|-
| colspan="8" | IdField[34:27]
| colspan="8" | IdField[34:27]
{{#invoke:Register table|row|15:8}}
{{#invoke:Register table|row|7:0}}
| RW-0 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0
| RW-0 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0
|-
|-
| IdField[26] || — || — || — || — || — || — || —
| IdField[35] || — || — || — || — || — || — || —
{{#invoke:Register table|row|7:0}}
| RW-0 || RW-0 || RW-0 || RW-0 || RW-0 || U-0 || U-0 || U-0
|-
| colspan="5" | IdField[25:20] || — || — || —
{{#invoke:Register table|foot}}
{{#invoke:Register table|foot}}
{{#invoke:Register table|definitions
{{#invoke:Register table|definitions
| 31,23-16,15,7-3 | IdField[35:k] | Compared to AdrS[35:k] to select RDRAM.<br>k {{=}} 21 for 16/18Mbit RDRAM.<br>k {{=}} 20 for 8/9Mbit RDRAM.
| 7,15-8,23,31-26 | IdField[35:k] | Compared to AdrS[35:k] to select RDRAM.<br>k {{=}} 21 for 16/18Mbit RDRAM.<br>k {{=}} 20 for 8/9Mbit RDRAM.
}}
}}


Line 321: Line 320:
{{#invoke:Register table|head|600px|Mode <code>0x03</code>}}
{{#invoke:Register table|head|600px|Mode <code>0x03</code>}}
{{#invoke:Register table|row|31:24}}
{{#invoke:Register table|row|31:24}}
| RW-1 || RW-1 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0
| RW-1 || RW-1 || RW-0 || R-0 || RW-0 || RW-1 || RW-0 || RW-0
|-
|-
| C3 || C0 || || || || || ||
| CE || X2 || PL || SV || SK || AS || DE || LE
{{#invoke:Register table|row|23:16}}
{{#invoke:Register table|row|23:16}}
| RW-1 || RW-1 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0
|-
| C4 || C1 || — || — || — || — || — || —
{{#invoke:Register table|row|15:8}}
| RW-1 || RW-1 || U-0 || U-0 || RW-0 || U-0 || U-0 || U-0
| RW-1 || RW-1 || U-0 || U-0 || RW-0 || U-0 || U-0 || U-0
|-
|-
| C5 || C2 || — || — || AD || — || — || —
| C5 || C2 || — || — || AD || — || — || —
{{#invoke:Register table|row|15:8}}
| RW-1 || RW-1 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0
|-
| C4 || C1 || — || — || — || — || — || —
{{#invoke:Register table|row|7:0}}
{{#invoke:Register table|row|7:0}}
| RW-1 || RW-1 || RW-0 || R-0 || RW-0 || RW-1 || RW-0 || RW-0
| RW-1 || RW-1 || U-0 || U-0 || U-0 || U-0 || U-0 || U-0
|-
|-
| CE || X2 || PL || SV || SK || AS || DE || LE
| C3 || C0 || || || || || ||
{{#invoke:Register table|foot}}
{{#invoke:Register table|foot}}
{{#invoke:Register table|definitions
{{#invoke:Register table|definitions
| 31 | CE / CCEnable| Current Control Enable.<br>0 {{=}} manual<br>1 {{=}} auto
| 15,23,31,14,22,30 | C[5:0] / CCValue | Current Control value which controls ''in fine'' the output current I<sub>OL</sub>.<br>In manual mode (CE{{=}}0), I<sub>OL</sub> is proportional to (63-CC) with I<sub>OL</sub> ~ (0.95±0.3)×(63-CC) mA, for CC {{=}} 0..63. (These coefficients derive from Imax±△/63 and vary between models)<br>This field is inverted when read.<br>In auto mode (CE{{=}}1), I<sub>OL</sub> is proportional to (63-CC) with I<sub>OL</sub> ~ (1.25±0.1)×(63-CC) mA, for CC {{=}} 31..63. (These coefficients derive from I<sub>40</sub>±△/(63-31) and vary between models)<br>An internally generated value is returned when read.
| 30 | X2 / CCMult | Should be 1. Inverted when read. (Toshiba datasheet states that it select wether X<sub>1</sub> or X<sub>2</sub> register is used for the current control register).
| 11 | AD / AckDis | For low latency RDRAM only. Allows to supress acknowledge response when set to 1.
| 29 | PL | Select PowerDown Latency
| 7 | CE / CCEnable| Current Control Enable.<br>0 {{=}} manual<br>1 {{=}} auto
| 28 | SV / SkipValue | For tests. 0
| 6 | X2 / CCMult | Should be 1. Inverted when read. (Toshiba datasheet states that it select wether X<sub>1</sub> or X<sub>2</sub> register is used for the current control register).
| 5 | PL | Select PowerDown Latency
| 27 | SK / Skip| For tests. 0
| 4 | SV / SkipValue | For tests. 0
| 26 | AS / AutoSkip | For tests. 1
| 25 | DE / DeviceEnable | Enable RDRAM device. When disabled, only broadcast register requests can be executed.<br>0 {{=}} disabled<br>1 {{=}} enabled
| 3 | SK / Skip| For tests. 0
| 24 | LE | Enable PowerDown mode for RDRAM that supports it to reduce power consumption.
| 2 | AS / AutoSkip | For tests. 1
| 19 | AD / AckDis | For low latency RDRAM only. Allows to supress acknowledge response when set to 1.
| 1 | DE / DeviceEnable | Enable RDRAM device. When disabled, only broadcast register requests can be executed.<br>0 {{=}} disabled<br>1 {{=}} enabled
| 23,15,7,22,14,6 | C[5:0] / CCValue | Current Control value which controls ''in fine'' the output current I<sub>OL</sub>.<br>In manual mode (CE{{=}}0), I<sub>OL</sub> is proportional to (63-CC) with I<sub>OL</sub> ~ (0.95±0.3)×(63-CC) mA, for CC {{=}} 0..63. (These coefficients derive from Imax±△/63 and vary between models)<br>This field is inverted when read.<br>In auto mode (CE{{=}}1), I<sub>OL</sub> is proportional to (63-CC) with I<sub>OL</sub> ~ (1.25±0.1)×(63-CC) mA, for CC {{=}} 31..63. (These coefficients derive from I<sub>40</sub>±△/(63-31) and vary between models)<br>An internally generated value is returned when read.
| 0 | LE | Enable PowerDown mode for RDRAM that supports it to reduce power consumption.
}}
}}