1. Field of the Invention
Generally, the invention relates to detecting data inversions between electronic devices in communication with one another. More specifically, the invention relates to detecting a data inversion based on the determination of a received invalid sequence of data and automatically correcting the data inversion by logically changing the polarity of the received data.
2. Discussion of the Related Art
Differential Signaling, such as Low voltage differential signaling (LVDS), is generally a type of serial data communications where a voltage difference between two wires is used to convey information. In LVDS, a transmitter simultaneously applies a voltage to a wire and the inverse of the voltage to a paired wire. When summed together, the voltage equals zero and any electromagnetic radiation (EMR) generated by one wire is canceled out by the other. A receiver subtracts the voltage on the two wires to recover the signal sent by the transmitter. Subtracting the signals on the two wires generally allows the same signal to be transmitted with half the voltage on each wire, thereby using less power. LVDS also improves signal to noise ratio (SNR) because any noise added to the wires is roughly uniform between the wires and removed by the receiver. Decreased transmit power, decreased EMR, and increased SNR make LVDS very useful in high speed data communications.
Accordingly, LVDS is often employed in computer devices requiring relatively fast data transfer rates, such as computer disk drives. The high speed of LVDS and its use of in-channel synchronization generally allows more data to be sent using fewer wires than can be done with a normal parallel bus. Some examples of LVDS used in computer communications include HyperTransport, SCSI, RS-422, RS-485, Ethernet, Universal Serial Bus (USB), Serial Advanced Technology Attachment (SATA), Serial Attached Small Computer System Interface (SAS), and FireWire.
Many computer devices further enhance the reliability of the transmitted data by formatting the data with a communications protocol. A communications protocol is a set of standard rules for data representation, signaling, authentication, and error detection and correction used in transmitting information. One example of such a protocol includes the PCI express (PCIe) protocol. PCIe is a “point-to-point” bus protocol that removes the need for arbitrating with a computer bus such that a transmitter need not wait until the bus is free to transmit data. One feature of PCIe is its ability to negotiate communications between the transmitter and receiver. For example, when a transmitting computer device (e.g., a host processor on a motherboard) wishes to transmit data to a receiving computer device (e.g., a PCIe card coupled to the motherboard), the transmitting computer device may negotiate communications through a “handshaking” sequence that the receiving computer device acknowledges. In this regard, the transmitting computer device may transfer a sequence of data that is used by the receiving computer device to determine the polarity of the data being transmitted. If the receiving computer device determines that the polarity of the data is inverted, the receiving computer device may inform the transmitting computer device of the data inversion such that one of the computer devices reverses polarity.
While this polarity negotiation between computer devices ensures that the devices will be communicating in the correct polarity, it generally requires implementation within both transmitting computer devices and receiving computer devices. However, some communication protocols are not configured with such a polarity negotiation. Accordingly, devices operating with these polarity correction lacking protocols require design assurance that the devices are properly connected. For example, the SAS protocol does not include a specific polarity checking sequence in which a receiving device may determine a polarity inversion and notify the transmitting device of that inversion. Accordingly, designers must assure that a SAS interface to a SAS device, such as a computer disk drive, has its serial data connections coupled to the device in the correct polarity during assembly. Otherwise, literally half of the SAS devices may require reconfiguration after assembly.
It is evident from the above discussions that there is a need for automatically correcting data inversions for computer devices using communication protocols that lack specific polarity checking sequences.