HDB3

High-Density Bipolar 3 (HDB3), ou Modified AMI Code, est un système de codage de circuit PRI et de circuit E-carrier utilisé en Amérique du Sud, en Afrique, en Europe et en Australie.

L'accès PRI en amérique du nord est basé sur un circuit T1.

Deux méthodes sont utilisées :

  • AMI (Alternate Mark Inversion) ;
  • B8ZS (Binary 8 with zero substitution).

Exemple de codage en C :

int main(void){ 	int code[T]={1,0,0,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,0,0}; 	int P[T]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 	int N[T]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 	int volt=-1; 	int viol=-1; 	int nbzero=0; 	int n=0; 	int incremente; 	 	puts("Entrez votre n (HdBn)) >=2"); 	do{ 		scanf("%i",&n); 	} 	while(n<2);  	for(incremente=0;incremente<T;incremente++){ 		if(code[incremente]==1){ 			if(volt==-1){ 				P[incremente]=1; 				volt=1; 			} 			else{ 				N[incremente]=1; 				volt=-1; 			} 			nbzero=0; 		} 		else{ 			nbzero++; 			if(nbzero==n+1){ 				hdbn(incremente,code,P,N,&volt,&viol,n); 				nbzero=0; 			} 		} 	}  	for(incremente=0;incremente<T;incremente++){ 		printf("%i ",P[incremente]-1*N[incremente]); 	}  	printf("\n");  	return 0; }  int reset(int P[T],int N[T]){ 	int volt; 	int i; 	for(i=0;i<T;i++){ 		P[i]=0; 		N[i]=0; 	} 	volt=-1; 	return volt; }  int hdbn(int incremente, int code[T], int P[T], int N[T], int* volt, int* viol, int n){ 	if(*viol==1){ 		if(*volt==1){ 			N[incremente-n]=1; 			N[incremente]=1; 			*volt=-1; 			*viol=-1; 		} 		else{ 			N[incremente]=1; 			*volt=-1; 			*viol=-1; 		} 	} 	else{ 		if(*volt==1){ 			P[incremente]=1; 			*viol=1; 			*volt=1; 		} 		else{ 			P[incremente-n]=1; 			P[incremente]=1; 			*viol=1; 			*volt=1; 		} 	} }