Endian Conversion on Intel Based Single Board Computer
The Intel Pentium based VMEbus SBCs use a different byte-ordering than the Motorola based 680x0 VMEbus modules. Endian conversion or byte swapping is necessary because of the byte ordering differences between Motorola-compatible 680x0 VMEbus modules and the PCI to VMEbus interface on the Intel Pentium based microprocessors. The VMEbus specification does not specify which byte of a Multi-byte transfer is most significant. The VMEbus Specification does require certain byte lanes be associated with certain byte addresses. Byte 0 must be transferred on D31-D24. Byte 3 must be transferred on D7-D0. The Motorola 680x0 processor writes multiple-byte data with the most significant byte at the lowest byte address. This is the reason that they are called "big-endian". The Intel Pentium 80X86 microprocessors write multiple-byte data with the most significant byte at the highest byte address. This is the reason that they are called "little-endian". The Pentium based SBCs use the Intel type processors which write data in the "little-endian" format. The Endian conversion hardware is needed to allow the data to be translated into "big-endian" format on the VMEbus.
Pentium, Tundra Universe based SBCs have external Endian Conversion hardware that allows the user to configure the Byte Ordering on 16-bit and 32-bit transfers. Two bits in the System Register control Endian Conversion hardware. The Master endian conversion bit enables the Endian conversion when the SBC is originating a Bus access to the VMEbus. The Slave endian conversion bit enables the Endian conversion when the SBC is the destination for a Bus access. Only 16 bit and 32 bit transfers can be converted. Byte transfers are not converted. Unaligned transfers are also not converted because they consist of a 3 byte transfer. The Tundra Universe II chip breaks a 3 byte transfer into a Word and Byte transfer. If this was converted, it would cause a word within the 3 bytes to be swapped. This only affects transfers from the microprocessor to the VMEbus. More information on Endian Conversion is included in Chapter 4 of the Tundra Universe II manual.