티스토리 뷰



QAM(Quadrature Amplitude Modulation) 이해 및 LabVIEW에서 사용하기


일반적으로 디지털 변조방식은 진폭편이변조, FSK, BPSK, QPSK, 8-PSK, 16-PSK, MSK, Guassian MSK, QAM으로 분류할 수 있습니다. 이렇듯 QAM은 디지털 변조 방식 중 하나로써, PSK와 ASK의 특성을 동시에 가지는 변조방식입니다. 


QAM은 0,1로 이루어진 데이터 스트림을 받아 서로 다른 진폭과 위상을 대비시켜 신호를 생성하는 것을 말합니다. QAM은 2개의 반송파인 동상 반송파(In-Phase)와 직각 위상(Quadrature) 반송파의 진폭과 위상을 변환하여 데이터를 전송합니다. QAM은 4-QAM, 16-QAM, 64-QAM, 256-QAM, 1024-QAM을 가질 수 있으며, 더 높은 대역폭을 위해서는 높은 레벨의 QAM 방식을 사용할 수 있습니다. 현재 QAM은 다양한 통신 프로토콜에 사용 중입니다. 예를 들어 802.11b WIFI, DVB(Digital Video Broadcast)등이 있습니다. 


QAM은 진폭, 위상을 대비하기 위해서 아래와 같은 공식을 사용합니다. 



이 공식에서 알 수 있듯이, QAM의 결과는 I, Q으로 만들어져 디지털 변조를 수행합니다. 


다음은 IF(Intermediate Frequency) 신호를 생성하는 데 필요한 하드웨어의 블록다이어그램입니다. “구적 변조기” 블록에서는 I 및 Q 신호가 서로 더해지기 전에 국부 발진기(LO)로 혼합되는 방식을 볼 수 있습니다. 여기서도, 이 두 국부 발진기는 정확히 90도의 위상 차이가 납니다. [참조 : http://www.rfdh.com/invite/ni/06/06.htm]




실질적으로 QAM를 통해서 신호를 생성하는 방법에 대해서 알아보도록 하겠습니다. 4-QAM은 4개의 위상과 진폭의 조합을 이용하게 됩니다. 따라서 이는 [0,0], [0,1], [1,0], [1,1]로 구분을 할 수 있습니다. 16-QAM은 [0000], ... [1111] 로 구성을 할 수 있을 겁니다. 


모든 QAM은 구적 캐리어(Quadrature Carrier) 상에서 2개의 ASK 신호을 결합한 것과 같습니다. 4-QAM에서 각 심볼의 사이즈는 k = log2(M) = log2(4) = 2 비트가 됩니다. 16-QAM에서는 k = log2(16) = 4 비트로 계산을 할 수 있습니다. 심볼의 사이즈는 Bit Stream으로 들어오는 신호를 잘라내는 길이를 의미합니다. 각 비트만큼 데이터를 잘라서 사용하는 QAM에 따라 연산하여 QAM 기호맵으로 나타낼 수 있습니다. 




전송을 위한 Bit Stream(000111000과 같은 이진수 데이터)을 사용하는 QAM의 종류에 따라 비트수에 맞게 잘라 I,Q 신호를 만들게 됩니다. 이러한 계산을 통해서 QAM 기호맵을 통해서 표현을 할 수 있습니다. QAM 기호맵은 QAM의 종류에 따라 여러 가지 방식으로 나타낼 수 있습니다. 


위의 부분을 랩뷰로 구현을 해보도록 합시다. 


QAM 기호맵을 만들기 위해서는 LabVIEW의 Modulation Toolkit을 사용할 수 있습니다. 다만 QAM이 어떻게 생성이 되는지, 알고리즘상 판단을 위해서 간략히 LabVIEW를 통해서 구현을 해보았습니다. 


코드는 아래와 같은 과정을 거쳐서 실행이 됩니다.


1. 데이터의 길이를 받아와서 Bit Stream을 생성합니다. 

2. 생성된 Bit Stream을 선택한 QAM의 종류(4-QAM, 16-QAM에 따라 Mapping 방식이 다름)에 따라 Mapping을 시작합니다.

3. Mapping 결과를 QAM 결과와 XY 그래프를 통해서 표현합니다.

4. (Optional) 4-QAM의 경우 입력된 데이터(입력배열 인디게이터)와 QAM Symbol을 다시 배열로 변환한 결과를 비교합니다. 




위의 코드를 실행하게 되면, 아래와 같은 결과를 얻을 수 있습니다. 데이터 길이를 통해서 입력 배열이 생성이 되고, 이를 Mapping하여 XY 그래프에 나타납니다. QAM의 값이 4QAM이면 입력과 변환 배열이 같은지 비교를 합니다. 






앞에서 설명을 했다싶이, Modulation Toolkit을 통해서도 QAM을 수행할 수 있습니다. 





Modulation에서 QAM과 관련된 함수를 이용하여 QAM의 결과를 생성합니다. 함수만 달라졌을 뿐 Bit Stream을 생성하고 이를 Mapping한뒤 XY 그래프에 표현하는 것은 동일합니다.


위의 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다. 현재 Msg Bit가 256으로 설정이 되어 있어 Mapping 결과 배열이 256/2 = 123개가 나오기 때문에 TX Contellation의 결과가 LabVIEW로만 구현한 결과보다 많은 값이 나오고 있습니다. 




이 글에서는 QAM의 정의와 LabVIEW를 통해서 QAM을 구현할 수 있는 방법에 대해서 알아보았습니다.


이 글이 도움이 되셨나요? 

그렇다면 아래의 그림을 클릭해주세요.


댓글