[LTE/NR] 타이밍 어드밴스 (Timing Advance)

Timing Advance는 Subframe이 도착하는 시간을 조절하기 위해서 사용된다. 만약 기지국(eNodeB)에서 떨어져 있는 거리가 다른 여러 단말(UE)에서 신호를 보내면 서로 다른 시간에 도착하게 된다. 이러한 경우 Signal Interference가 발생해서 신호를 제대로 파악하기 어려워진다. Timing 문제를 해결하기 위해서 PUSCH/PUCCH/SRS와 같이 Uplink 신호를 사용해서 Timing을 지속해서 측정한다. 간단히 설명하면 PUSCH 신호의 도착 시각이 다소 빠르다고 판단되면 해당 단말(UE)에 … Read more

[C/C++/AVX] 이동 평균 (Moving Average) 성능 비교

이동 평균(Moving Average: MA)을 계산하기 위해서는 주어진 기준점에서 정해진 MA Window 크기(개수)만큼 수를 더해서 Window 크기로 나누기를 해주면 된다. 그림 1은 MA 계산을 하기 위한 식이다. C/C++을 사용해서 특정 Array의 첫 번째 Index의 Moving Average를 구한다면 MA Window 크기(개수)만큼 숫자를 더해서 MA 값을 구한다 (편의상 나누기 연산을 수행하지 않았다). 다음 Index의 MA 값을 구할 때는 … Read more

[C/C++] 가변 인자 사용 방법 (Variable Length Argument)

실험 환경 OS: Ubuntu 18.04 g++: 7.5.0 C/C++에서 함수를 만들 때 인자의 개수가 정해져 있지 않은 경우 가변 인자를 사용해서 편리하게 함수를 제작할 수 있다. 저의 경우 Debug를 위한 나만의 Printf를 제작하는 과정에서 사용하였다. 가변 인자 사용방법에 대해서 간단히 정리해보았다. 사용 방법 함수 인자 부분에 “…” 을 추가함 예: mkFindMin(int numArg, …) {} va_list( )를 … Read more