Search This Blog

Saturday 27 February 2016

CRC error detection (4 bit only)!

Cyclic redundancy Check


Note : This is for only 4 bit !!!

Example : dataword : 1 0 0 1
                  divisor : 1 0 1 1
                  crc : 1 1 0

now if you add 1 1 0 in below example instead of array of zero's then the final ans should be 0 0 0 it means no error otherwise there is error!


CODE:

#include<stdio.h>

int main()
{
    int i,j,a[15],b[10],c[10],k,z,zero[4];
    zero[0]=0;
    zero[1]=0;
    zero[2]=0;
    printf("\nEnter dataword");
    for(i=0;i<4;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("\nEnter divisor");
    for(j=0;j<4;j++)
    {
        scanf("%d",&b[j]);
    }
   
    if(a[0] == 1)
    {
        for(k=0;k<4;k++)
        {
            if(a[k]==b[k])   
            {
                c[k]=0;
            }
            else
            {
                c[k]=1;
            }
        }
        c[k]=0;   
        for(z=0;z<4;z++)
        {
        c[z]=c[z+1];
        }
    }else

    {
        for(k=0;k<4;k++)
        {
            if(a[k] == zero[k])   
            {
                c[k]=0;
            }
            else
            {
                c[k]=1;
            }
        }
   
        c[k]=0;
        for(z=0;z<4;z++)
        {
        c[z]=c[z+1];
   
        }
    }
   
    if(c[0]==1)
    {
            for(k=0;k<4;k++)
            {
            if(c[k]==b[k])   
            {
                c[k]=0;
            }
            else
            {
                c[k]=1;
            }
        }
        c[k]=0;
   
    for(z=0;z<4;z++)
    {
        c[z]=c[z+1];
   
    }
       
    }else{
            for(k=0;k<4;k++)
        {
            if(c[k] == zero[k])   
            {
                c[k]=0;
            }
            else
            {
                c[k]=1;
            }
        }
   
    c[k]=0;
    for(z=0;z<4;z++)
    {
        c[z]=c[z+1];
   
    }

    }
   
    if(c[0]==1)
    {
            for(k=0;k<4;k++)
            {
            if(c[k]==b[k])   
            {
                c[k]=0;
            }
            else
            {
                c[k]=1;
            }
        }
        c[k]=0;
   
    for(z=0;z<4;z++)
    {
        c[z]=c[z+1];
   
    }
       
    }else{
            for(k=0;k<4;k++)
        {
            if(c[k] == zero[k])   
            {
                c[k]=0;
            }
            else
            {
                c[k]=1;
            }
        }
   
    c[k]=0;
    for(z=0;z<4;z++)
    {
        c[z]=c[z+1];
   
    }
        }
   
    for(z=0;z<4;z++)
    {
        c[z]=c[z+1];
   
    }
   
    for(z=0;z<3;z++)
    {
        printf("%d",c[z]);
    }   
   
    return 0;
}


enter dataword:
1 0 0 1

enter divisor :
1 0 1 1

crc is : 1 1 0

No comments:

Post a Comment