목차
1. DS-CDMA란?
2.flow chart
3. Source Code
4. Result (bit X는 Silent를 의미함)
2.flow chart
3. Source Code
4. Result (bit X는 Silent를 의미함)
본문내용
ce Code
#include
int main(void)
{
int i, j, n=0,k=0;
char a[80]={NULL};
int b[80],c[16]={0},d[16]={0},e[16]={0};
int w[16][16] ={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1},
{1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1},
{1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1},
{1,1,1,1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1},
{1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,1},
{1,1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,1},
{1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,1,1,-1},
{1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1},
{1,-1,1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,-1,1},
{1,1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,-1,1,1},
{1,-1,-1,1,1,-1,-1,1,-1,1,1,-1,-1,1,1,-1},
{1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1},
{1,-1,1,-1,-1,1,-1,1,-1,1,-1,1,1,-1,1,-1},
{1,1,-1,-1,-1,-1,1,1,-1,-1,1,1,1,1,-1,-1},
{1,-1,-1,1,-1,1,1,-1,-1,1,1,-1,1,-1,-1,1}};
//최대 16*16 Walsh Table 생성
printf(\"Multiplexer Input : \");
scanf(\"%s\",&a);//데이타 입력
for(i=0;i<=16;i++)
{
if((a[i]==\'1\') || (a[i]==\'0\') || (a[i]==\'X\'))
//입력된 데이타의 갯수를 파악함.
n++;
}
if(n <= 2)//입력된 데이타의 갯수에 따라 Walsh Table의 크기 결정
k=2;
else if (n <= 4)
k=4;
else if (n <= 8)
k=8;
else if (n <= 16)
k=16;
else
printf(\"Disavailable Input\\n\");
printf(\"Walsh Table :\\n\");//생성된 Walsh Table을 화면에 출력
for(i = 0 ; i < k ; i++) {
for(j = 0 ; j < k ; j++) {
printf(\"%d \", w[i][j]);
}
printf(\"\\n\\n\");
}
for(i = 0 ; i < k ; i++) {//입력된 Data bit들을 Signal로 변환
if(a[i]==NULL)
a[i]=\'X\';//Silent값을 X로 표현
printf(\"staion %d : bit %c --> \",i,a[i]);
if(a[i]==\'1\')//Data bit가 1일경우 Signal 1
a[i]=1;
else if(a[i]==\'0\')//Data bit가 0일경우 Signal -1
a[i]=-1;
else//Data bit가 X(Silent)일경우 Signal 0
a[i]=0;
printf(\"%d ==> \",a[i]);
//변환된 Signal이 Multiplexer의 입력으로 들어감.
for(j = 0 ; j < k ; j++){
//각각의 Signal을 Walsh Table의 한 개의 행과 곱을 하여 변환
b[i]=a[i]*w[i][j];
printf(\"%d \",b[i]);
}
printf(\"\\n W[%d] : \",i);
//각각의 Signal과의 곱을 수행하는 Walsh Table을 한행씩 표현
for(j = 0 ; j < k ; j++){
printf(\"%d \",w[i][j]);
}
printf(\"\\n\");
}
printf(\"Multiplexer Output : \");
//Walsh Table에 의해 변환된 행들을 각 열마다 덧셈
for(i = 0 ; i < k ; i++) {
for(j = 0 ; j < k ; j++){
b[i]=a[j]*w[i][j];
c[i]=c[i]+b[i];
}
printf(\"%d \",c[i]);//Multiplexer Output에 덧셈의 결과 출력
}
printf(\"\\n\\n\");
printf(\"Demultiplexer Input : \");
//Demultiplexer Input에 Multiplexer Output을 입력
for(i = 0 ; i < k ; i++)
printf(\"%d \",c[i]);
printf(\"\\n\");
for(j = 0 ; j
for(i = 0 ; i
b[i]=c[i]*w[i][j]; //각각의 행에서 곱을 한 후
d[j]=d[j]+b[i]; //그 행에 속에 있는 원소들을 모두 더함.
e[j]=d[j]/k;//더한 값들을 Walsh의 크기 k로 나눔.
printf(\"%d \",b[i]);
}
printf(\" ==> %d ==> %d ==> \",d[j],e[j]);
if(e[j]==1) //Signal이 1이면 Data bit 1로 출력
printf(\"bit 1\");
else if(e[j]==-1) //Signal이 -1이면 Data bit 0로 출력
printf(\"bit 0\");
else
printf(\"bit X\"); //Signal이 0이면 Data bit X(Silent)로 출력
printf(\"\\nW[%d] : \",j);
for(i = 0 ; i < k ; i++){ //Walsh Table을 한행씩 표현
printf(\"%d \",w[i][j]);
}
printf(\"\\n\");
}
return 0;
}
4. Result (bit X는 Silent를 의미함)
(1) data bit의 개수가 1개일 경우
(2) data bit의 개수가 2개일 경우
(3) data bit의 개수가 4개일 경우
(4) data bit의 개수가 5~8일 경우
(4) data bit의 개수가 9~16일 경우
#include
int main(void)
{
int i, j, n=0,k=0;
char a[80]={NULL};
int b[80],c[16]={0},d[16]={0},e[16]={0};
int w[16][16] ={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1},
{1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1},
{1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1},
{1,1,1,1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1},
{1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,1},
{1,1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,1},
{1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,1,1,-1},
{1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1},
{1,-1,1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,-1,1},
{1,1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,-1,1,1},
{1,-1,-1,1,1,-1,-1,1,-1,1,1,-1,-1,1,1,-1},
{1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1},
{1,-1,1,-1,-1,1,-1,1,-1,1,-1,1,1,-1,1,-1},
{1,1,-1,-1,-1,-1,1,1,-1,-1,1,1,1,1,-1,-1},
{1,-1,-1,1,-1,1,1,-1,-1,1,1,-1,1,-1,-1,1}};
//최대 16*16 Walsh Table 생성
printf(\"Multiplexer Input : \");
scanf(\"%s\",&a);//데이타 입력
for(i=0;i<=16;i++)
{
if((a[i]==\'1\') || (a[i]==\'0\') || (a[i]==\'X\'))
//입력된 데이타의 갯수를 파악함.
n++;
}
if(n <= 2)//입력된 데이타의 갯수에 따라 Walsh Table의 크기 결정
k=2;
else if (n <= 4)
k=4;
else if (n <= 8)
k=8;
else if (n <= 16)
k=16;
else
printf(\"Disavailable Input\\n\");
printf(\"Walsh Table :\\n\");//생성된 Walsh Table을 화면에 출력
for(i = 0 ; i < k ; i++) {
for(j = 0 ; j < k ; j++) {
printf(\"%d \", w[i][j]);
}
printf(\"\\n\\n\");
}
for(i = 0 ; i < k ; i++) {//입력된 Data bit들을 Signal로 변환
if(a[i]==NULL)
a[i]=\'X\';//Silent값을 X로 표현
printf(\"staion %d : bit %c --> \",i,a[i]);
if(a[i]==\'1\')//Data bit가 1일경우 Signal 1
a[i]=1;
else if(a[i]==\'0\')//Data bit가 0일경우 Signal -1
a[i]=-1;
else//Data bit가 X(Silent)일경우 Signal 0
a[i]=0;
printf(\"%d ==> \",a[i]);
//변환된 Signal이 Multiplexer의 입력으로 들어감.
for(j = 0 ; j < k ; j++){
//각각의 Signal을 Walsh Table의 한 개의 행과 곱을 하여 변환
b[i]=a[i]*w[i][j];
printf(\"%d \",b[i]);
}
printf(\"\\n W[%d] : \",i);
//각각의 Signal과의 곱을 수행하는 Walsh Table을 한행씩 표현
for(j = 0 ; j < k ; j++){
printf(\"%d \",w[i][j]);
}
printf(\"\\n\");
}
printf(\"Multiplexer Output : \");
//Walsh Table에 의해 변환된 행들을 각 열마다 덧셈
for(i = 0 ; i < k ; i++) {
for(j = 0 ; j < k ; j++){
b[i]=a[j]*w[i][j];
c[i]=c[i]+b[i];
}
printf(\"%d \",c[i]);//Multiplexer Output에 덧셈의 결과 출력
}
printf(\"\\n\\n\");
printf(\"Demultiplexer Input : \");
//Demultiplexer Input에 Multiplexer Output을 입력
for(i = 0 ; i < k ; i++)
printf(\"%d \",c[i]);
printf(\"\\n\");
for(j = 0 ; j
d[j]=d[j]+b[i]; //그 행에 속에 있는 원소들을 모두 더함.
e[j]=d[j]/k;//더한 값들을 Walsh의 크기 k로 나눔.
printf(\"%d \",b[i]);
}
printf(\" ==> %d ==> %d ==> \",d[j],e[j]);
if(e[j]==1) //Signal이 1이면 Data bit 1로 출력
printf(\"bit 1\");
else if(e[j]==-1) //Signal이 -1이면 Data bit 0로 출력
printf(\"bit 0\");
else
printf(\"bit X\"); //Signal이 0이면 Data bit X(Silent)로 출력
printf(\"\\nW[%d] : \",j);
for(i = 0 ; i < k ; i++){ //Walsh Table을 한행씩 표현
printf(\"%d \",w[i][j]);
}
printf(\"\\n\");
}
return 0;
}
4. Result (bit X는 Silent를 의미함)
(1) data bit의 개수가 1개일 경우
(2) data bit의 개수가 2개일 경우
(3) data bit의 개수가 4개일 경우
(4) data bit의 개수가 5~8일 경우
(4) data bit의 개수가 9~16일 경우
소개글