主要内容

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

QPSK诚信机およびおよび信机

この例では、MATLAB® での QPSK の送信機と受信機の実装について示します。特にこの例では、搬送周波数と位相オフセット、タイミング再生とフレーム同期など、実際のワイヤレス通信の問題への対処について説明します。同じシステムの Simulink® 実装については、Simulink での QPSK 送信機および受信機の例を参照してください。

はじめに

送信されqpskデータは,加法性ホワイトノイズ(awgn)の付加,搬送周周ずれなど,无こので被っ影响をし减损をて影响ますし减损はてい。の损失に対处するためのリファレンスは示しますのの设计はますます。诚信机に示します。诚信机にはます。受补补は补补の细かな补正,pllベースのタイミング补校正,位相不确定性解决含まれれ。

この例は、以下の 2 つの目的にかないます。

  • シミュレーションされたさまざまなチャネル障害によって破損したメッセージを復元できる、一般的な無線通信システムのモデル化

  • 搬送周波数の大まかな補正および精密補正、ビット スタッフィング/ストリッピングによる閉ループ タイミング再生、フレーム同期および搬送波位相不確定性の解決などを含む、主要な Communications Toolbox™ 同期コンポーネントの使用についての説明

寿命化

commqpsktxrx_init.mスクリプトはシミュレーション パラメーターを初期化し、構造体 prmQPSKTxRx を生成します。

prmQPSKTxRx = commqpsktxrx_init%#ok<*NOPTS> % QPSK system parametersuseScopes = true;如果要使用范围,则为trueprintreceiveddata = false;如果要打印收到的数据,则为truecompileIt = false;如果要编译代码,则为trueUSECODEGEN = FALSE;%true以运行生成的mex文件
prmqpsktxrx =带字段的结构:调制顺序:4插值:2抽取:1 rsym:50000 tsym:2.0000-05 fs:100000 totalframe:1000 barkercode:[1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1] BarkerLength:13号标题:26消息:'Hello World'Messagleght:16 NumberOfMessage:20 PayoRoveLength:2240框架:1133 FRAMETIME:0.0227滚动福音:0.0227滚动缩合器:0.5000 ScramblerBase:2爬行剪辑:[11 1 0 1] ScramblerInitialCitialItitions:[0 0 0 0] RaiedcosineFiltersPan:10阶段Offset:47 EBNO:13频率:5000 DelightType:'三角形'所需的功率:2 AsverageLength:50 MaxPowerGain:6000 PhaserecofofofopBandWidth:0.0100 PhaserecoveryDampingFactor:1 TimingRecoveryLoopBandWidth:0.0100 TimingRecoveryDampingFactor:1 TimingErrordettorningFactor:5.4000 PreambleDetorthreshold:20 MessageBits:[11200x1双] Bermask:[1540x1双]

テストテスト対象システムのコードアーキテクチャ

この例では、QPSK 変調を使用しているデジタル通信システムをモデル化します。関数runQPSKSystemUnderTest.mはこの通信環境をモデル化します。このスクリプトでの QPSK トランシーバー モデルは、以下の 4 つの主要コンポーネントから構成されています。

1)qpsktransmitter.m.: ビット ストリームを生成し、それを符号化、変調およびフィルター処理します。

2)QPSKChannel.m: 搬送波オフセット、タイミング オフセットおよび AWGN のあるチャネルをモデル化します。

3)QPSKReceiver.m.: 位相再生、タイミング再生、復号化、復調などのコンポーネントを含む受信機をモデル化します。

4)QPSKSCOPES.M.: 時間スコープ、周波数スコープおよびコンスタレーション ダイアグラムを使用している信号を可視化します (オプション)。

各各は,系统对象をを用ししててさます.System对象の4runQPSKSystemUnderTest.mを参照してください。

各コンポーネントの说明

送信機

このコンポーネントは、ASCII 文字を使用してメッセージを生成し、文字をビットに変換し、その先頭に受信機のフレーム同期用のバーカー符号を付加します。このデータはその後、QPSK を使用して変調され、ルート レイズド コサイン フィルターでフィルター処理されます。

チャネル

このコンポーネントは、無線伝送の様々な影響をシミュレートします。これにより、位相と周波数の両方のオフセット、送信機と受信機との間のクロック スキュー再現用時変遅延および AWGN をもつ送信信号が劣化させられます。

受信机

このコンポーネントは、元の送信メッセージを再生成します。これは 7 つのサブコンポーネントに分割されます。

1) 自動ゲイン コントロール: 位相とタイミングの誤差検出器の等価なゲインが常に一定になるレベルに出力パワーを設定します。AGC はレイズドコサイン受信フィルターのオーバーサンプリング置かれるため,2のオーバーサンプリングサンプリングで信号振幅を测定できるようなりますます。

2) 大まかな周波数補正: 相関ベースのアルゴリズムを使用して周波数オフセットを大まかに推定し、それを補正します。推定された大まかな周波数オフセットは、きめ細かい周波数補正のロック/収束が可能になるように平均化されます。そのため、大まかな周波数オフセットの推定はcomm.carefrequencycompensatorSystem object と平均化式を、補正はcomm.PhaseFrequencyOffsetSystem对象をを用しし行れれれ。

3) タイミング再生:comm.symbolsynchronizerSystem object を使用して、閉ループのスカラー処理によるタイミング再生を実行し、チャネルによる遅延の影響を解決します。オブジェクトは、受信した信号のシンボル タイミング誤差の補正用に PLL を実装します。この例のオブジェクト用にはガードナー法による回転不変タイミング誤差検出器が選択されます。そのため、タイミング再生はきめ細かい周波数補正よりも先に行うことができます。オブジェクトへの入力は、固定長のサンプル フレームです。オブジェクトの出力は、ビット スタッフィングとストリッピングによって長さが変わるシンボル フレームで、実際のチャネル遅延に依存します。

4) 細かな周波数補正:comm.CarrierSynchronizerSystem Object obersをを使て,闭闭ループのスカラーを実,周波数オフセットを正确に正,位位回路ます。。

5)プリアンブルプリアンブル:Comm.Preambledetector.System object を使用して、入力の既知のバーカー符号の位置を検出します。オブジェクトは、相互相関ベースのアルゴリズムを実装し、入力のシンボルの既知のシーケンスを検出します。

6)フレームフレーム期:FrameSynchronizerSystem object を使用して、フレーム同期を実行し、さらに同時に可変長シンボル入力を固定長出力に変換します。このオブジェクトには boolean スカラーである 2 番目の出力があり、これによって 1 番目のフレーム出力が有効かどうかを示します。

7)データ编号化器:位相不宜性の解决および复调を実ししはまたまたますは再ををさされたものとしてててててててててててててててててててててててててててててててて

スコープ

このコンポーネントでは、以下をプロットするための可視化オプションが提供されています。

  • ルート レイズド コサイン フィルターの処理前後の受信信号を示すスペクトル スコープ

  • 诚信机侧ののの定理后,タイミングタイミング生后,さらにきめ细かい周波数码补后の函数信号

システムコンポーネントの详细については,Simulink での QPSK 送信機および受信機の Simulink 例を参照してください。

テスト対象システム

テストテスト対象ループで,データデータがフレームごとににれれをますますますれれれますますますれれメイン対象ループシステムでスクリプトれれますますますますますますますメインメインループループループますますますますメインcompileItを true に設定します。これは、MATLAB Coder™ 製品によって提供されるcodegenコマンドを使用して設定できます。codegenコマンドは,matlab®关节梅克斯ファイルに変换してコード生成し,実行を高度化。生成さたcコードコードの実のの実は,元のmatlabコードより数码高度です。このこのでは,useCodegenを true に設定し、MATLAB コードの代わりにcodegenで生成されたコードを使用します。

runQPSKSystemUnderTest.mののループは,前述の4つの系统对象を使にます。

for count = 1:prmQPSKTxRx.FrameCount transmittedSignal = qpskTx(); rcvdSignal = qpskChan(transmittedSignal, count); [RCRxSignal, timingRecSignal, freqRecSignal, BER] = qpskRx(rcvdSignal); % Receiver if useScopes runQPSKScopes(qpskScopes, rcvdSignal, RCRxSignal, timingRecSignal, freqRecSignal); % Plots all the scopes end end

実行と結果

テスト対象システムのスクリプトを実行して、シミュレートされた QPSK 通信の BER 値を取得するため、以下のコードが実行されます。シミュレーションを実行すると、ビット誤り率のデータといくつかの結果のグラフが表示されます。表示されるスコープはRaised Cosine Receive Filter出力,符号同步器出力,および细频补偿出力のコンスタレーション ダイアグラム、およびRaised Cosine Receive Filter出力のパワー スペクトルです。

ifcompileIt codegen-报告runQPSKSystemUnderTest.m-args{coder.Constant(prmQPSKTxRx),coder.Constant(useScopes),coder.Constant(printReceivedData)}%#okendifUSECODEGEN BER = runqpsksystemunderTest_mex(Prmqpsktxrx,Usescopes,printreceiveddata);elseber = runqpsksystemundertest(prmqpsktxrx,useescopes,printreceiveddata);endFPRINTF('错误率=%f。\ n',BER(1)); fprintf('Number of detected errors = %d.\n',BER(2));FPRINTF('比较样本的总数=%d。\ n',BER(3));
Error rate = 0.000238. Number of detected errors = 366. Total number of compared samples = 1536920.

代替の実行オプション

テスト対象システムの節で既に説明したように、この例のはじめに変数を使用することによって、コードを操作して System object と符号化オプションについてさまざまな調査ができます。

既定では、変数useScopesは true に、変数printReceivedDataは false にそれぞれ設定されています。変数useScopesによって,この例の実行时にmatlabのスコープを开放ことができます。このスコープを使使と,シミュレートされたコンポーネントがどのよう动词しいるかことができことができ,また,また,システムがシミュレーションにどのように机能しいるかをより深く深くできます。printReceivedDataTrueにに设定する,复号化済みの信パケットパケットをコマンドウィンドウにできでき他确认することことできでき他确认确认こともできできます他のつのつの.useCodegenは、速度パフォーマンスに関連があり、設計トレードオフの解析に使用できます。

Compileitを真实に设定すると,このこの例で,matlab编码器™の机能が使使れ,高度传单スクリプトrunqpssystemunertextがコンパイルされます。このこのコマンド,mexファイルます。に保存します.mexファイルを実行するusecodegenを真实ににするとととと,この例ではmatlabでで実システムできより高速には,リアルリアルの実装に欠くない,重要シミュレーションツールです。シミュレーションの速度を最大大にするは,useScopesを假に设定し,useCodegenを真实に设定してmexファイルを実行。

他の探索オプションについては、Simulink での QPSK 送信機および受信機の例を参照してください。

まとめ

この例では、AWGN チャネル上のデジタル通信をシミュレートしています。変調、周波数および位相の再生、タイミング再生、フレーム同期など、QPSK システムの各部分をモデル化する方法が示されています。BER を計算することによって、システム パフォーマンスを測定します。生成された C コードが、元の MATLAB コードよりも数倍高速で実行されることも示しています。

付录

この例では以下のスクリプトと補助関数が使用されています。

参考文献

1.迈克尔。Digital Communications - A Discrete-Time Approach.1。纽约,纽约:2008年Prentice Hall。