HDB3

High-Density Bipolar 3 (HDB3), eller Modified AMI Code , er et PRI- krets- og E-carrier kretskodesystem som brukes i Sør-Amerika, Afrika, Europa og Australia.

PRI- tilgang i Nord-Amerika er basert på en T1- krets .

To metoder brukes:

Eksempel på C- koding  :

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; } } }