목차
1) 실험 목적
2) OFDM 이론
3) OFDM C-code 분석
4) 결과 분석
2) OFDM 이론
3) OFDM C-code 분석
4) 결과 분석
본문내용
///////////////////////////////////////////////
for(k=0;k<20;k++){
XRC[k]=XR[size-19+k];
XIC[k]=XI[size-19+k];
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// CP는 OFDM심볼의 뒷단을 복사해서 앞단으로 붙여서 ICI를 극복하기 위한 목적이다.
// CP를 포함한 OFDM 신호 XRC[k], XIC[k]에 IDFT를 수행한 신호 XR[k], XI[k]에서
// 뒷단의 20bit를 복사해서 XRC[k], XIC[k]에 복사
//////////////////////////////////////////////////////////////////////////////////////////////////////
for(k=0;k
XRC[k+20]=XR[k];
XIC[k+20]=XI[k];
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// 맨뒷단의 신호를 CP를 포함한 OFDM 신호의 앞단 20bit에 복사를 했기 때문에
// CP를 포함한 OFDM신호 21번째 부터는 IDFT를 수행한 신호와 동일해야한다.
// CP를 포함한 OFDM신호 앞부분 20bit를 제외한 21bit부터 XR[k], XI[k]와 동일
//////////////////////////////////////////////////////////////////////////////////////////////////////
for(k=0;k
XA1[k]=sqrt(pow(XR[k],2)+pow(XI[k],2));
// real값과 image값을 따로 계산을 하였기 때문에 크기를 위해선 합성
//
for(k=0;k
XA[k]=sqrt(pow(XRC[k],2)+pow(XIC[k],2));
// real값과 image값을 따로 계산을 하였기 때문에 크기를 위해선 합성
//
}
void main() //main문
{
//extern long npt;
extern int inv;
inv=1; // IDFT를 수행하기 위해 1로 해줌
read_data(); // 데이타를 입력받는 함수 호출
dft(); // IDFT를 수행하기 위한 함수
exit();
}
3) 결과 분석
① Cyclic Prefix
CP는 ISI와 ICI를 제거하기위해서 신호의 뒷단의 일정 부분을 복사해서 신호의 앞단에 붙여주는 것으로 써 C코드 작성시 아래와 같은 방법으로 수행하였다.
for(k=0;k
XRC[k]=0;
XIC[k]=0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// 20bit의 CP를 추가하기 위해서 IDFT를 수행한 OFDM 신호를 20bit 더 크게 정의
// real 부분과 imag부분을 따로 정의
// 정의 후에 256+20 bit의 신호를 모두 0으로 초기화
//////////////////////////////////////////////////////////////////////////////////////////////////////
for(k=0;k<20;k++){
XRC[k]=XR[size-19+k];
XIC[k]=XI[size-19+k];
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// CP는 OFDM심볼의 뒷단을 복사해서 앞단으로 붙여서 ICI를 극복하기 위한 목적이다.
// CP를 포함한 OFDM 신호 XRC[k], XIC[k]에 IDFT를 수행한 신호 XR[k], XI[k]에서
// 뒷단의 20bit를 복사해서 XRC[k], XIC[k]에 복사
//////////////////////////////////////////////////////////////////////////////////////////////////////
for(k=0;k
XRC[k+20]=XR[k];
XIC[k+20]=XI[k];
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// 맨뒷단의 신호를 CP를 포함한 OFDM 신호의 앞단 20bit에 복사를 했기 때문에
// CP를 포함한 OFDM신호 21번째 부터는 IDFT를 수행한 신호와 동일해야한다.
// CP를 포함한 OFDM신호 앞부분 20bit를 제외한 21bit부터 XR[k], XI[k]와 동일
//////////////////////////////////////////////////////////////////////////////////////////////////////
② 256 - I축 OFDM 신호
③ 256 - Q축 OFDM 신호
④ 256 - OFDM 신호
우선 실제 시스템에서는 정보를 I축과 Q축으로 나누어서 전송하기 때문에 입력한 정보를 기준으로 그래프를 보았을 때 I축과 Q 축은 위와 같고 I, 와 Q를 합성하면 4번의 그림과 같은 OFDM 신호가 발생하였다.
⑤ 512 - I축 OFDM 신호
⑥ 512 - Q축 OFDM 신호
⑦ 512 - OFDM 신호
위의 256사이즈의 실험과 동일하게 512 사이즈의 서브캐리어를 사용하는 OFDM 신호 역시 위와 같이 실수축과 허수축으로 분할하여 분석한 후 신호를 합성하였을때 위와 같은 결과를 얻을 수 있었다.
for(k=0;k<20;k++){
XRC[k]=XR[size-19+k];
XIC[k]=XI[size-19+k];
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// CP는 OFDM심볼의 뒷단을 복사해서 앞단으로 붙여서 ICI를 극복하기 위한 목적이다.
// CP를 포함한 OFDM 신호 XRC[k], XIC[k]에 IDFT를 수행한 신호 XR[k], XI[k]에서
// 뒷단의 20bit를 복사해서 XRC[k], XIC[k]에 복사
//////////////////////////////////////////////////////////////////////////////////////////////////////
for(k=0;k
XIC[k+20]=XI[k];
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// 맨뒷단의 신호를 CP를 포함한 OFDM 신호의 앞단 20bit에 복사를 했기 때문에
// CP를 포함한 OFDM신호 21번째 부터는 IDFT를 수행한 신호와 동일해야한다.
// CP를 포함한 OFDM신호 앞부분 20bit를 제외한 21bit부터 XR[k], XI[k]와 동일
//////////////////////////////////////////////////////////////////////////////////////////////////////
for(k=0;k
// real값과 image값을 따로 계산을 하였기 때문에 크기를 위해선 합성
//
for(k=0;k
// real값과 image값을 따로 계산을 하였기 때문에 크기를 위해선 합성
//
}
void main() //main문
{
//extern long npt;
extern int inv;
inv=1; // IDFT를 수행하기 위해 1로 해줌
read_data(); // 데이타를 입력받는 함수 호출
dft(); // IDFT를 수행하기 위한 함수
exit();
}
3) 결과 분석
① Cyclic Prefix
CP는 ISI와 ICI를 제거하기위해서 신호의 뒷단의 일정 부분을 복사해서 신호의 앞단에 붙여주는 것으로 써 C코드 작성시 아래와 같은 방법으로 수행하였다.
for(k=0;k
XIC[k]=0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// 20bit의 CP를 추가하기 위해서 IDFT를 수행한 OFDM 신호를 20bit 더 크게 정의
// real 부분과 imag부분을 따로 정의
// 정의 후에 256+20 bit의 신호를 모두 0으로 초기화
//////////////////////////////////////////////////////////////////////////////////////////////////////
for(k=0;k<20;k++){
XRC[k]=XR[size-19+k];
XIC[k]=XI[size-19+k];
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// CP는 OFDM심볼의 뒷단을 복사해서 앞단으로 붙여서 ICI를 극복하기 위한 목적이다.
// CP를 포함한 OFDM 신호 XRC[k], XIC[k]에 IDFT를 수행한 신호 XR[k], XI[k]에서
// 뒷단의 20bit를 복사해서 XRC[k], XIC[k]에 복사
//////////////////////////////////////////////////////////////////////////////////////////////////////
for(k=0;k
XIC[k+20]=XI[k];
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// 맨뒷단의 신호를 CP를 포함한 OFDM 신호의 앞단 20bit에 복사를 했기 때문에
// CP를 포함한 OFDM신호 21번째 부터는 IDFT를 수행한 신호와 동일해야한다.
// CP를 포함한 OFDM신호 앞부분 20bit를 제외한 21bit부터 XR[k], XI[k]와 동일
//////////////////////////////////////////////////////////////////////////////////////////////////////
② 256 - I축 OFDM 신호
③ 256 - Q축 OFDM 신호
④ 256 - OFDM 신호
우선 실제 시스템에서는 정보를 I축과 Q축으로 나누어서 전송하기 때문에 입력한 정보를 기준으로 그래프를 보았을 때 I축과 Q 축은 위와 같고 I, 와 Q를 합성하면 4번의 그림과 같은 OFDM 신호가 발생하였다.
⑤ 512 - I축 OFDM 신호
⑥ 512 - Q축 OFDM 신호
⑦ 512 - OFDM 신호
위의 256사이즈의 실험과 동일하게 512 사이즈의 서브캐리어를 사용하는 OFDM 신호 역시 위와 같이 실수축과 허수축으로 분할하여 분석한 후 신호를 합성하였을때 위와 같은 결과를 얻을 수 있었다.
추천자료
c로배우는알고리즘에서 ROBOT프로그램을 C언어로 바꾸자.
C언어 야구 게임
C언어를 이용해 하노이탑 구현 프로그램
C언어를 이용한 분수의 덧셈과 곱셈을 하는 프로그램
C언어를 이용해 문자열을 추출하는 프로그램
C언어를 이용한 야구게임(숫자맞추기) 프로그램
C언어를 이용한 성적처리(성적관리) 프로그램
C언어를 이용한 [3][3]행렬(3*3행렬), 행렬의 덧셈과 행렬의 곱셈
C언어 처음공부하는 사람들에게 도움이 되는 코딩들(기초부터 포인터까지)
C언어 학생성적의 총점과 평균 구하는 프로그램
c언어로 만든 typedef 구조체 개념 프로그램
c언어 계산기
c언어로 애니메이션을 만들어 주세요
소개글