Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

空間多重化

この例は空間多重化方式を示します。ここでは、データ ストリームがそれぞれ独立なサブストリームに分割され、それぞれが各送信アンテナに利用されます。結果として、これらのスキームでは多重化ゲインを提供しますが、空間時間ブロック符号化に必要な明示的な直交化は不要です。

空間多重化では、受信側で高度な復号化技術が必要になります。多数の推奨技術のうち [1]、この例では、2 つの逐次干渉キャンセラ (SIC) 検出スキームに注目します。これらのスキームは [2]、[3] における元のベル研究所の層別空間時間 (BLAST) 技術と似ています。

説明するうえで便利なため、この例では 2 本の送信アンテナと 2 本の受信アンテナを採用している基本的な 2x2 MIMO システムを使用します。符号化されていない QPSK 変調システムでは、個々の送受信リンクではなく、フラットなレイリー フェージングを使用します。受信側では、開ループ空間多重化システムなど、送信側へのフィードバックのない、チャネルの完全な把握がなされているものと仮定します。

この例では、シンボルのキャンセルをもつ 2 つの非線形干渉キャンセラ メソッドであるゼロフォーシング (ZF) と最小平均二乗誤差 (MMSE) を示し、それらの性能を最尤 (ML) 最適受信側と比較します。

シミュレーション

一般のシミュレーションのパラメーターを定義することから始めます。

N = 2;% Number of transmit antennasM = 2;% Number of receive antennasEbNoVec = 2:3:8;% Eb/No in dBmodOrd = 2;% constellation size = 2^modOrd

次にシミュレーションをセットアップします。

% Create a local random stream to be used by random number generators for% repeatability.stream = RandStream('mt19937ar');% Create PSK modulator and demodulator System objectspskModulator = comm.PSKModulator(...'ModulationOrder', 2^modOrd,...'PhaseOffset', 0,...'BitInput', true); pskDemodulator = comm.PSKDemodulator(...'ModulationOrder', 2^modOrd,...'PhaseOffset', 0,...'BitOutput', true);% Create error rate calculation System objects for 3 different receiverszfBERCalc = comm.ErrorRate; mmseBERCalc = comm.ErrorRate; mlBERCalc = comm.ErrorRate;% Get all bit and symbol combinations for ML receiverallBits = int2bit(0:2^(modOrd*N)-1, modOrd*N); allTxSig = reshape(pskModulator(allBits(:)), N, 2^(modOrd*N));% Pre-allocate variables to store BER results for speed[BER_ZF, BER_MMSE, BER_ML] = deal(zeros(length(EbNoVec), 3));

下のシミュレーション ループは、同じデータとチャネルを使用して、それぞれの Eb/No 値の 3 つの受信スキームの BER 性能を評価します。シミュレーションのため、Eb/No を狭いレンジで評価します。同じコードを使用した、広レンジ シミュレーションの結果は後述します。

% Set up a figure for visualizing BER resultsfig = figure; gridon; holdon; ax = fig.CurrentAxes; ax.YScale ='log'; xlim([EbNoVec(1)-0.01 EbNoVec(end)]); ylim([1e-3 1]); xlabel('Eb/No (dB)'); ylabel('BER'); fig.NumberTitle ='off'; fig.Renderer =“zbuffer”; fig.Name ='Spatial Multiplexing'; title('2x2 Uncoded QPSK System'); set(fig,“DefaultLegendAutoUpdate”,'off');% Loop over selected EbNo pointsforidx = 1:length(EbNoVec)% Reset error rate calculation System objectsreset(zfBERCalc); reset(mmseBERCalc); reset(mlBERCalc);% Calculate SNR from EbNo for each independent transmission linksnrIndB = EbNoVec(idx) + 10*log10(modOrd); snrLinear = 10^(0.1*snrIndB);while(BER_ZF(idx, 3) < 1e5) && ((BER_MMSE(idx, 2) < 100) ||...(BER_ZF(idx, 2) < 100) || (BER_ML(idx, 2) < 100))% Create random bit vector to modulatemsg = randi(stream, [0 1], [N*modOrd, 1]);% Modulate datatxSig = pskModulator(msg);% Flat Rayleigh fading channel with independent linksrayleighChan = (randn(stream, M, N) + 1i*randn(stream, M, N))/sqrt(2);% Add noise to faded datarxSig = awgn(rayleighChan*txSig, snrIndB, 0, stream);% ZF-SIC receiverr = rxSig; H = rayleighChan;% Assume perfect channel estimation% InitializationestZF = zeros(N*modOrd, 1); orderVec = 1:N; k = N+1;% Start ZF nulling loopforn = 1:N% Shrink H to remove the effect of the last decoded symbolH = H(:, [1:k-1,k+1:end]);% Shrink order vector correspondinglyorderVec = orderVec(1, [1:k-1,k+1:end]);% Select the next symbol to be decodedG = (H'*H) \ eye(N-n+1);% Same as inv(H'*H), but faster[~, k] = min(diag(G)); symNum = orderVec(k);% Hard decode the selected symboldecBits = pskDemodulator(G(k,:) * H' * r); estZF(modOrd * (symNum-1) + (1:modOrd)) = decBits;% Subtract the effect of the last decoded symbol from rifn < N r = r - H(:, k) * pskModulator(decBits);endend% MMSE-SIC receiverr = rxSig; H = rayleighChan;% InitializationestMMSE = zeros(N*modOrd, 1); orderVec = 1:N; k = N+1;% Start MMSE nulling loopforn = 1:N H = H(:, [1:k-1,k+1:end]); orderVec = orderVec(1, [1:k-1,k+1:end]);% Order algorithm (matrix G calculation) is the only difference% with the ZF-SIC receiverG = (H'*H + ((N-n+1)/snrLinear)*eye(N-n+1)) \ eye(N-n+1); [~, k] = min(diag(G)); symNum = orderVec(k); decBits = pskDemodulator(G(k,:) * H' * r); estMMSE(modOrd * (symNum-1) + (1:modOrd)) = decBits;ifn < N r = r - H(:, k) * pskModulator(decBits);endend% ML receiverr = rxSig; H = rayleighChan; [~, k] = min(sum(abs(repmat(r,[1,2^(modOrd*N)]) - H*allTxSig).^2)); estML = allBits(:,k);% Update BERBER_ZF( idx, :) = zfBERCalc(msg, estZF); BER_MMSE(idx, :) = mmseBERCalc(msg, estMMSE); BER_ML( idx, :) = mlBERCalc(msg, estML);end% Plot resultssemilogy(EbNoVec(1:idx), BER_ZF( 1:idx, 1),'r*',...EbNoVec(1:idx), BER_MMSE(1:idx, 1),'bo',...EbNoVec(1:idx), BER_ML( 1:idx, 1),'gs'); legend('ZF-SIC','MMSE-SIC','ML'); drawnow;end% Draw the linessemilogy(EbNoVec, BER_ZF( :, 1),'r-',...EbNoVec, BER_MMSE(:, 1),'b-',...EbNoVec, BER_ML( :, 1),'g-'); holdoff;

[4] でわかるように、性能が最も優れているのは ML 受信機、次は MMSE-SIC および ZF-SIC 受信機です。受信機の複雑度に関しては、ML は、送信アンテナの数と共に指数的に大きくなります。一方、ZF-SIC および MMSE-SIC は、逐次干渉キャンセラと組み合わされた線形受信機です。複雑さを減らすために最適化された ZF-SIC および MMSE-SIC アルゴリズムは、[5] に記載されています。

Eb/No 値がもっと広い範囲の 3 つのスキームを比較したシミュレーション結果を、以下に示します。これらの曲線により、BER 曲線の勾配から得られるダイバーシティ次数を測定することができます。

openfig('spatMuxResults.fig');

その他の評価例としては、チャネル推定がある場合とない場合でアンテナ数を増加してこれらの手法を試すことが挙げられます。

参考文献

  1. George Tsoulos, Ed., "MIMO System Technology for Wireless Communications", CRC Press, Boca Raton, FL, 2006.

  2. G. J. Foschini, "Layered space-time architecture for wireless communication in a fading environment when using multiple antennas," The Bell Sys.Tech. Journal, 1996, No. 1, pp. 41-59.

  3. P. W. Wolniansky, G. J. Foschini, G. D. Golden, R. A. Valenzuela, "V-BLAST: An Architecture for realizing very high data rates over the rich scattering wireless channel," 1998 URSI International Symposium on Signals, Systems, and Electronics, 29 Sep.-2 Oct. 1998, pp. 295-300.

  4. X. Li, H. C. Huang, A. Lozano, G. J. Foschini, "Reduced-complexity detection algorithms for systems using multi-element arrays", IEEE® Global Telecommunications Conference, 2000. Volume 2, 27 Nov.-1 Dec. 2000, pp. 1072-76.

  5. Y. Shang and X.-G. Xia, "On fast recursive algorithms for V-BLAST with optimal ordered SIC detection," IEEE Trans. Wireless Communications, vol. 8, no. 6, pp. 2860-2865, Jun. 2009.