# AMI, ones density, and zero code suppression

To reduce crosstalk on T1 and E1 trunks, and to eliminate DC bias, each 1 bit on the trunk is sent with the opposite electrical polarity of the preceding 1 bit. This transmission method is called alternate mark inversion (AMI).

Zero bits are sent as intervals of zero voltage. Multiple zeros in a row appear at the receiving end as one long interval of no voltage. If these gaps are too long, it is difficult for the receiving end to maintain framing synchronization with the transmitting end. There are various algorithms used in E1 transmissions to get around this problem, by ensuring that there are sufficient ones (enough ones density) to keep the transmitting and receiving ends synchronized. These algorithms are called zero code suppression algorithms.

CG 6060 boards configured as T1 boards support the following zero code suppression algorithms:

Algorithm | Description
--- | ---
B8ZS - binary 8-zero suppression | This is the algorithm used with ISDN protocols. To send an interval of successive zeroes, the sending end replaces the zeroes with a pattern of ones and zeroes in which bipolar violations occur; that is, one or more successive ones are sent with the same polarity, disrupting the AMI pattern. The pattern of bipolar violations is recognized at the receiving end and turned back into zeroes.
HDB3 | High density bipolar 3 code uses patterns of bipolar violations to replace sequences of 4 zero data bits in order to maintain ones density on clear channel transmission.
Jammed bit 7 zero code suppression | In an interval of zeroes, the sending end jams every bit 7 high so the receiving end can recognize it. This method sacrifices data integrity, but quality is sufficient for voice transmissions.

CG 6060 boards configured as E1 boards can be set up to transmit without zero code suppression, or to use the high density bipolar 3 code (HDB3) algorithm. In HDB3, sequences of 4 zero data bits are replaced by patterns of bipolar violations.

When configuring the CG 6060 board, use the NetworkInterface.T1E1[x].LineCode keyword to specify which algorithm to use.