NI USRP를 사용하는 2×2 MIMO

업데이트 됨 Nov 22, 2023

환경

하드웨어

  • USRP Software Defined Radio Reconfigurable Device

소프트웨어

  • LabVIEW

드라이버

  • NI-USRP

이 문서는 NI LabVIEW 소프트웨어와 NI USRP(Universal Software Radio Peripheral) 하드웨어를 사용하여 2×2 다중 입력, 다중 출력(MIMO) 시스템을 설정하는 방법을 설명합니다. MIMO에 대한 간략한 논의 후,이 백서는 Alamouti 시공간 블록 코딩 및 최대 비율 결합(MRC)을 사용하는 2×2 시스템 용 LabVIEW 기반 하드웨어 및 소프트웨어를 조사합니다.

MIMO란?

MIMO를 사용하면 전력 소비량을 늘리지 않고도 무선 시스템 성능을 높일 수 있습니다. 여러 안테나를 사용하는 경우 전송된 신호는 다른 무선 채널 (송신기 안테나에서 수신기 안테나로)을 통해 진행되며 채널 다이버시티(diversity)를 활용하여 용량 이득(capacity gain)을 생성합니다.

2×2 MIMO 시스템 구현

여기에 설명된 MIMO 시스템은 송신기 측에서 Alamouti 시공간 블록 코딩을 사용하고 수신기 측에서 MRC를 사용합니다. 두 기술의 조합은 2×2 MIMO 시스템에서 사용할 수 있는 완전한 다양성을 활용합니다.

송신기에서 심볼은 Alamouti 체계로 인코딩됩니다. 처음 두 기호 (s1 및 s2)는 2×2 행렬로 변환됩니다.



행은 서로 다른 전송 안테나를 나타내고 열은 연속된 시간 슬롯을 나타냅니다. 이 매트릭스는 연속적인 전송 심볼 쌍마다 반복됩니다. Alamouti 체계에 대한 자세한 내용은 외부 링크: Alamouti 코드를 참조하십시오.

2×2 MIMO 시스템: 하드웨어 구성

NI는 다음 구성을 권장합니다.

  • 무료 기가비트 이더넷 포트가 있는 PC 1대.
  • PC에 연결된 기가비트 이더넷 스위치 1개.
  • 송신기로 구성된 두 개의 트랜시버. 이더넷을 사용하여 첫 번째 트랜시버를 스위치에 직접 연결하고 MIMO 케이블을 사용하여 두 번째 트랜시버를 첫 번째 트랜시버에 연결합니다.
  • 수신기로 구성된 두 개의 트랜시버. 이더넷을 사용하여 세 번째 트랜시버를 스위치에 직접 연결하고 MIMO 케이블을 사용하여 네 번째 트랜시버를 세 번째 트랜시버에 연결합니다.


그림 1. 2 × 2 MIMO 하드웨어 설정 다이어그램


그림 1은 두 송신기 사이의 레퍼런스 클록 소스와 두 수신기 사이의 레퍼런스 클록 소스를 동기화하는 데 사용할 수 있는 구성을 보여줍니다. 각 트랜시버에는 하나의 안테나가 포트에 연결되어 있습니다 (NI는 단순성을 위해 RX1/TX1을 권장합니다). MIMO 시스템이 개별 채널의 다양성을 완전히 활용할 수 있도록 하려면 사용되는 반송파 주파수의 절반 이상 파장만큼 송신기를 간격을 두십시오. 같은 이유로 수신기를 같은 방식으로 간격을 두십시오.

2×2 MIMO 시스템: 소프트웨어 구성

이 2×2 MIMO 예제는 다음 소프트웨어 구성 요소가 필요한 LabVIEW 어플리케이션입니다.

  • NI LabVIEW 버전 2011 (또는 이후) 시스템 디자인 소프트웨어 —Full, Professional 또는 Student Edition
  • NI-USRP 버전 1.1 (또는 그 이상)
  • NI LabVIEW Modulation Toolkit 버전 4.3.1 (또는 그 이상)
  • 2×2 MIMO 예제 VI

 

예제 작업

연관된 .zip 파일을 새 폴더에 압축 해제하고 LabVIEW에서 BER.vi로 2x2QAMAlamouti를 엽니다.

그림 2. 2x2 QAM Alamouti VI의 프런트 패널에 있는 시스템 매개 변수 탭


예제의 프런트 패널 (그림 2)에서 시스템 매개 변수 탭을 클릭합니다. Tx 설정 및 Rx 설정 섹션에는 각각 NI USRP 송수신기의 Tx 및 Rx 쌍에 대한 매개 변수가 포함되어 있습니다. 다음 지침을 염두에 두고 이 섹션과 링크 매개 변수 섹션에 있는 컨트롤을 설정합니다.

  • USRP IP 주소
    각 Tx 및 Rx 쌍에 NI USRP 트랜시버와 관련된 두 개의 IP 주소를 입력합니다. 세미콜론을 사용하여 항목을 구분합니다 - 예: 192.168.10.6; 192.168.10.5.

  • I/Q 샘플링 속도, 심볼 속도, Tx 오버 샘플링 인자 및 Rx 오버 샘플링 인자
    I/Q 샘플링 속도의 경우 Tx 및 Rx 쌍 모두에 대한 기저 대역 I/Q 신호 샘플의 샘플링 속도 (초당 샘플 수)를 입력합니다. I/Q 샘플링 속도가 원하는 기호 속도의 짝수 배수가 되도록 기호 속도, Tx 오버 샘플링 계수 및 Rx 오버 샘플링 계수에 대한 값을 입력합니다. 배수에 해당하는 짝수 값의 과표 본 인자를 입력합니다. 즉, I/Q 샘플링 속도, 심볼 속도 및 오버 샘플링 인자 매개 변수 간의 관계가 다음과 같은 지 확인하십시오.

I/Q 샘플링 속도 = 심볼 속도 × 오버 샘플링 계수
(I/Q Sampling Rate = Symbol Rate × Oversample Factor)

  • 캐리어 주파수
    Tx 및 Rx 쌍 모두에 대해 공통 반송파 주파수(Hz)를 입력합니다. 현지 규정에 맞는 주파수를 선택하는 것은 귀하의 책임입니다.

  • 시작 트리거 시간
    송신기가 전송을 시작하기 직전에 수신기가 수신을 시작할 수 있도록 시작 트리거 시간을 전체 초 및 분수 초 단위로 지정하십시오.

  • 디바이스 당
    디바이스 당 배열의 각 요소는 Tx 또는 Rx 쌍의 NI USRP 트랜시버 중 하나에 해당합니다. 요소 0은 USRP IP 주소의 첫 번째 NI USRP 트랜시버에 해당하고 요소 1은 USRP IP 주소의 두 번째 NI USRP 트랜시버에 해당합니다. 기준 주파수 및 타임베이스 클록에 대한 공통 소스를 공유하도록 NI USRP 트랜시버의 Tx 및 Rx 쌍을 구성합니다. MIMO 케이블 연결을 통해 다른 트랜시버 ("보조")를 공급하도록 각 쌍의 NI USRP 송수신기 ( "기본") 하나를 설정할 수 있습니다. 이 구성의 경우 다음과 같이 장치 단위 배열의 요소를 지정하십시오.

Element 0:

Ref Frequency Source: Internal
Timebase Clock Source: Internal

Element 1:

Ref Frequency Source: MIMO
Timebase Clock Source: MIMO


매개 변수를 적절하게 설정하면 VI를 실행할 수 있습니다. VI를 실행할 때 Tx 쌍은 Rx 쌍이 수신 한 버스트를 전송합니다. 그림 3은 성공적인 재구성을 보여주는 결과 파형을 보여줍니다.

그림 3. 4QAM의 성공적인 재구성


2×2 시스템에서 4QAM을 성공적으로 재구성한 큰 상단 플롯은 두 수신 안테나의 I/Q 구성 요소에 대해 수신된 시간 도메인 신호 샘플을 보여줍니다 (4개의 신호 모두). 왼쪽 하단의 성좌도는 두 개의 Rx NI USRP 트랜시버가 수신한 신호를 보여줍니다. 오른쪽 아래 Constellation(콘스탈레이션) 플롯은 재구성된 Constellation을 보여줍니다.

LabVIEW에서 2×2 MIMO 시스템 구축

그림 4는 이 예제를 구현하는 블록 다이어그램 (LabVIEW 그래픽 프로그램)을 보여줍니다. 블록 다이어그램 주석은 애플리케이션의 핵심 영역 중 일부를 설명합니다.

그림 4. 2x2QAMAlamouti VI에 대한 LabVIEW 블록 다이어그램


2x2 QAM Alamouti VI의 LabVIEW 블록 다이어그램은 세 부분으로 구성됩니다. 코드의 왼쪽 상단 부분은 전송을 위한 신호를 합성합니다. 다이어그램의 중간 하단에 있는 코드는 NI USRP 하드웨어에서 Tx/Rx 작업을 시작합니다. 코드의 오른쪽 상단 섹션은 수신된 신호를 처리하고 수신된 파형을 표시합니다.

전송을 위한 신호 준비

전송을 위해 신호를 준비하는 처음 몇 단계는 LabVIEW Modulation Toolkit에서 subVI (서브 루틴)에 대한 호출로 구성됩니다. MT Generate Bits VI를 호출하면 메시지 비트 역할을 하는 PN 시퀀스가 생성됩니다. 이러한 비트는 MT Map Bits to Symbols VI에 대한 후속 호출에 의해 심볼에 매핑됩니다.

다음으로 이전 단계에서 생성된 심볼에 Alamouti 인코딩 체계를 적용합니다. 결과는 각 송신기에 대해 하나씩, 두 개의 스트림이있는 심볼의 2D 배열입니다. 그림 5는 블록 다이어그램의 예를 보여줍니다.

그림 5. subApplyAlamoutiCode VI에 대한 블록 다이어그램


Alamouti 코딩을 적용하는 subVI인 subApplyAlamoutiCode.vi의 블록 다이어그램은 원하는 2D 심볼 배열을 생성하기 위해 몇 가지 배열 조작이 필요하다는 점에서 작업이 간단하다는 것을 보여줍니다.

심볼을 인코딩 한 후 애플리케이션은 각 스트림에 트레이닝 심볼 시퀀스를 추가합니다. 수신기는 동기화를 위해 트레이닝 시퀀스를 사용하고 채널을 추정합니다.

트레이닝 시퀀스 추가 작업은 각 스트림에 동일한 시퀀스를 추가하고 데이터를 정렬하여 시퀀스가 두 개의 Tx NI USRP 트랜시버 중 하나에 의해 전송된 다음 다른 하나에 의해 전송되도록 합니다. 예를 들어, 두 개의 Tx NI USRP 트랜시버 중 하나는 시퀀스를 전송하고 다른 하나는 침묵합니다. 그런 다음 다른 트랜시버는 동일한 시퀀스를 전송하고 다른 트랜시버는 침묵합니다.

전송/수신 작업 전 신호 합성의 마지막 단계는 수신 심볼 간격 샘플을 Tx 오버 샘플 컨트롤에 지정된 속도로 업 샘플링한 다음 업 샘플링 된 신호에 펄스 성형 필터를 적용하는 것입니다.

신호 복구

수신기 측에서 USRP Fetch Rx Data VI는 수신 신호의 2D 배열을 반환하며 각 행은 안테나로부터 수신된 신호 샘플의 스트림을 나타냅니다.

첫 번째 신호 복구 단계에서는 수신된 데이터 프레임에서 수신 된 패킷을 추출합니다. 에너지 감지 알고리즘을 사용하여 패킷의 시작을 확인하고 프레임의 나머지 비 패킷 부분을 버립니다.

다음으로, 각 스트림에 매칭 필터를 적용하고 2D 수신 어레이의 두 행 사이의 에너지를 비교하여 신호가 더 강한 스트림을 결정합니다. 그런 다음 신호가 더 강한 행에 기호 동기화를 적용하고 계산된 오프셋을 두 행에 적용합니다.

그림 6. 수신된 파형


그래프는 4개의 수신된 파형, 즉 두 개의 Rx 안테나 각각에서 I 및 Q 파형을 보여줍니다. 수신된 패킷의 초기 부분을 확대하면 두 개의 Tx 안테나 각각에서 훈련 시퀀스를 볼 수 있습니다.

프레임 동기화는 더 까다 롭고 송신기 측의 두 훈련 시퀀스 구조에 따라 다릅니다. 이 경우 두 송신기는 동일한 트레이닝 시퀀스를 사용하지만 시간상 서로 오프셋됩니다. 겹치면 길이가 두 배인 하나의 연속 훈련 시퀀스로 나타납니다. 애플리케이션은 두 개의 연속적인 T 심볼 세트 (각 트레이닝 시퀀스의 길이가 T 인 경우)가 가장 높은 상관 관계가 있는 수신 신호의 부분을 검색하여 프레임 동기화를 위해 이러한 중첩을 이용합니다. 계산된 프레임 오프셋을 수신 된 2D 배열의 두 행에 적용합니다.

채널 추정을 위해 4 개의 다른 채널을 고려하십시오. 2D 배열의 각 행에는 두 개의 훈련 시퀀스 (각 송신기에서 하나씩)가 포함됩니다. 따라서 각 행의 각 훈련 시퀀스에 대해 채널 추정을 수행한 다음 4 개의 채널 추정을 결정합니다.

이러한 추정치는 Alamouti 코딩 체계를 디코딩 한 다음 MRC를 수행하여 2D 심볼 배열을 적절한 1D 심볼 배열로 변환하는 다음 단계에서 중요합니다. 두 개의 개별 연산을 사용하거나 이 응용 프로그램과 마찬가지로 단일 행렬 곱셈을 사용하여 이를 구현할 수 있습니다. 단일 행렬 곱셈 기술은 더 큰 MIMO 시스템으로 더 쉽게 확장됩니다. 이러한 마지막 디코딩 단계를 수행하는 방법에 대한 자세한 내용은 여러 온라인 참조 중 하나를 참조하십시오.

결과

그림 3은 4 개의 NI USRP 트랜시버에서 실행되는 2 × 2 MIMO 시스템의 테스트 실행에서 얻은 2 개의 Rx 신호 성상도를 보여줍니다. 맨 오른쪽에는 Alamouti 디코딩, MRC 및 채널 이퀄라이제이션을 수행한 후의 최종 신호 배열 플롯이 있습니다. 이 이미지는 MIMO 시스템이 제대로 작동함을 보여줍니다.