목차
1. (1) AMI (2) B8ZS
2. flow chart
3. Source Code
4. Result
2. flow chart
3. Source Code
4. Result
본문내용
[i]='-';
}
}
printf("%s\nB8ZS Encoding: ",a);
for(i=0;i<=79;i++)
{
if(a[i]=='0')
{
for(n=1;n<=80;n++)
{
for(j=i;j {
if((a[i-1]=='+' || a[0]=='0') && a[j]=='0')
/* +signal 또는 처음data가 0 이후 0이 8의 n배수만큼 나왔을때 000+-0-+로 변환*/
{
temp2++;
/* 위와 같은 조건일때 temp2를 1씩 증가 */
if(temp2==8*n)
{
a[i+3]='+';
a[i+4]='-';
a[i+6]='-';
a[i+7]='+';
}
}
else if(a[i-1]=='-' && a[j]=='0')
/* - signal 이후 0이 8의 n배수만큼 나왔을때 000-+0+-로 변환 */
{
temp2++;/* 위와 같은 조건일때 temp2를 1씩 증가 */
if(temp2==8*n)
{
a[i+3]='-';
a[i+4]='+';
a[i+6]='+';
a[i+7]='-';
}
}
else if(a[j]!=0)
/* signal이 0이 아닐경우 temp2를 0으로 초기화 하여 다시 0의 갯수를 셈 */
temp2=0;
}
}
}
}
printf("%s\nB8ZS Decoding: ",a);
for(i=0;i<=79;i++)
{
if((a[i+1]=='-' && a[i+2]=='0' && a[i+3]=='-') || (a[i+1]=='+' && a[i+2]=='0' && a[i+3]=='+'))
{
a[i]='0'; /* violation 조건 일때 그 값들을 0으로 Decoding*/
a[i+1]='0';
a[i+3]='0';
a[i+4]='0';
}
}
printf("%s\nAMI Decoding : ",a);
for(i=0;i<=79;i++)
{
if(a[i]=='+' || a[i]=='-')
a[i]='1';
else if(a[i]=='0')
a[i]='0';
else
NULL;
}
printf("%s\n",a);
return 0;
}
4. Result
(1) data의 값이 1의 연속일 경우
(2) data의 값이 홀수개의 1이 나온 후 0의 갯수가 8의 정수배 이상 연속인 경우
(3) data의 값이 짝수개의 1이 나온 후 0의 갯수가 8의 정수배 이상 연속인 경우
(4) 처음 data값이 0이고 이후 0의 개수가 8의 정수배인 경우
}
}
printf("%s\nB8ZS Encoding: ",a);
for(i=0;i<=79;i++)
{
if(a[i]=='0')
{
for(n=1;n<=80;n++)
{
for(j=i;j {
if((a[i-1]=='+' || a[0]=='0') && a[j]=='0')
/* +signal 또는 처음data가 0 이후 0이 8의 n배수만큼 나왔을때 000+-0-+로 변환*/
{
temp2++;
/* 위와 같은 조건일때 temp2를 1씩 증가 */
if(temp2==8*n)
{
a[i+3]='+';
a[i+4]='-';
a[i+6]='-';
a[i+7]='+';
}
}
else if(a[i-1]=='-' && a[j]=='0')
/* - signal 이후 0이 8의 n배수만큼 나왔을때 000-+0+-로 변환 */
{
temp2++;/* 위와 같은 조건일때 temp2를 1씩 증가 */
if(temp2==8*n)
{
a[i+3]='-';
a[i+4]='+';
a[i+6]='+';
a[i+7]='-';
}
}
else if(a[j]!=0)
/* signal이 0이 아닐경우 temp2를 0으로 초기화 하여 다시 0의 갯수를 셈 */
temp2=0;
}
}
}
}
printf("%s\nB8ZS Decoding: ",a);
for(i=0;i<=79;i++)
{
if((a[i+1]=='-' && a[i+2]=='0' && a[i+3]=='-') || (a[i+1]=='+' && a[i+2]=='0' && a[i+3]=='+'))
{
a[i]='0'; /* violation 조건 일때 그 값들을 0으로 Decoding*/
a[i+1]='0';
a[i+3]='0';
a[i+4]='0';
}
}
printf("%s\nAMI Decoding : ",a);
for(i=0;i<=79;i++)
{
if(a[i]=='+' || a[i]=='-')
a[i]='1';
else if(a[i]=='0')
a[i]='0';
else
NULL;
}
printf("%s\n",a);
return 0;
}
4. Result
(1) data의 값이 1의 연속일 경우
(2) data의 값이 홀수개의 1이 나온 후 0의 갯수가 8의 정수배 이상 연속인 경우
(3) data의 값이 짝수개의 1이 나온 후 0의 갯수가 8의 정수배 이상 연속인 경우
(4) 처음 data값이 0이고 이후 0의 개수가 8의 정수배인 경우