スマートI / Oを使用してFSK信号を復調する相関器 - KBA229212 - Community Translated (JA)

Version 1

    Community Translated by  NoTa_4591161 Expert            Version: **

     

    Translation - English: Correlator to Demodulate FSK Signals using Smart I/O - KBA229212

     

    質問:

    FSK信号を復調する相関器を作成するにはどうすればよろしいでしょうか?

     

    回答:

    周波数変換式変調方式(FSK)は、低速モデムのエンコード方式として一般的に使用されています。デジタルデータは、2つの異なる周波数で表されます。この例では、高周波数(4.0 kHz)は論理「1」を表します。低周波数(2.0 kHz)は論理「0」を表します。周波数は1200ボーのレートで変調されます。

    pastedImage_0.png

    FSKデータを検出するための標準的な手段は、相関器の使用です。

    2.png

     

    相関器は、それ自体の遅延コピーを入力信号に乗算します。遅延は、1つの周波数で、遅延が一方の波形の完全なサイクルと他方の波形のサイクルの半分になるように選択されます。4.0 kHz1サイクルは250 µsecです。2.0 kHz1サイクルは500 µsecです。したがって、250 µsecの遅延により、1サイクルで4.0 kHz、半サイクルで2.0 kHzの適切な時間シフトが得られます。遅延はシフトレジスタで行えます。乗算器は、排他的ORゲート(XOR)またはexclusive_NORでできます。

    3.png

    遅延の間、相関器の時間出力は少しノイズ的です。これは、ローパスフィルターとヒステリシスコンパレーターで削減でき、復調されたデジタルデータを生成します。これは、この記事の目的とは別の作業になります。

     

    相関器のロジックは、すべてをSmart I/O内で構築できます。遅延を決定するには別のクロックが必要です。次の例では、相関器の実装についてステップごとに示しております。

     

    1. Smart I/OPWM、およびClockを配置します。

    2. PWMクロックを24 MHzに設定します。

    3. 相関器の入出力用にSmart I/Oの右側にピンを追加します。

    4.png

    Smart I/Oはシフトレジスタのチェーンとして構成され、データユニットからの8ビットとLUTからの7ビットで、合計15ビットです。チェーンの最後のLUTは使用せず、XORを使用します。

     

    5.png

    4. Smart I/Oを右クリックして設定を開始します。

    5. [ data3 ]ドロップダウンをクリックし、[ Input (async) ] を選択します。

    6. [ input ]ドロップダウンをクリックし、TCPWM5line_complを選択します。

    これで、スマートI / Oのロジックへの接続が表示されます。

    6.png

     

    7. シフトレジスタの行をステップダウンします。

      • LUT7つの入力すべてをgpio5に設定します。
      • LUT0_Input0DUに設定し、LUT0_Input1_Input2LUT1に設定します。DUにはLUT0への接続が1つしかありません。Input1Input2は「dummy」に接続する必要があります。
      • LUT1_Input2LUT0に設定し、LUT1_Input0およびLUT1_Input1LUT2に設定します。LUT1_Input0LUT1に接続されていないため、「dummy」に接続する必要があります。
      • LUT23つの入力すべてをLUT1に設定します。
      • LUT3つの入力すべてをLUT2に設定します。
      • LUT5つの入力すべてをLUT3に設定します。
      • LUT6つの入力すべてをLUT3に設定します。
      • LUT4_Input0gpio5に設定します。これはXORへの直接入力です。LUT4_input1および_Input 2LUT6に設定します。これは、XORへのシフトレジスタ遅延入力になります。
      • ドロップダウンからクロックを選択します。

     

    8.データユニットとLUTを設定します。

    LUT7LUT2LUT3LUT5、およびLUT6Dフリップフロップとして設定します。

    [ LUT7 ]タブに移動します。

    Input0Input1、およびInput2 = 1に対してOut = 1を選択し、それ以外はすべて= 0を選択します。

    [ Mode ]ドロップダウンから[ Registered output ]を選択します。

    [ Apply ]クリックします。

    7.png

    LUT2LUT3LUT5、およびLUT6について繰り返します。

     

    9. LUT0Dフリップフロップとして設定します。

      • タブに移動します。

    DUからの)Input0に従ってOutを設定します。他の入力を無視します。[ Mode ]ドロップダウンから[ Registered output ]を選択します。8.png

     

    10.データユニットを設定します:

      • Data Unitタブに移動します。
      • ドロップダウンから[Shift Right ]選択します。
      • Size8を入力します。
      • 右シフトを有効にするため、DU_TR00に設定します。
      • 右シフトを有効にするため、DU_TR11に設定します。
      • DU_TR2LUT7設定します。

    9.png

    11. LUT1Dフリップフロップとして設定します。

      • タブに移動します。
      • LUT0からの)Input2に従うようにOutを設定します。他の入力を無視します。
      • ドロップダウンからRegistered output ]を選択します。

    10.png

    12. LUT4XORとして構成します。

      • タブに移動します。
      • Input0LUT5)とInput1LUT6)の排他的論理和の組み合わせに従うようにOutを設定します。Input2LUT6)はInput1に続き、無視されます。
      • ドロップダウンからCombinatorial ]を選択します。この出力は登録されていません。

    11.png

    これで、Smart I/Oの設定が完了しました。

     

    13. [ Apply ]をクリックして、Smart I/Oの結線を表示します。

    14. [ Hide routing matrix ]をクリックして、接続の表示を簡略化します。

     

    12.png

     

    15. [ OK ] をクリックして回路図に戻ります。

     

    16. PWMを設定します。
          PWMの周期は、次のように計算されます。

    13.png

      • [PWM] を右クリックし、Configureをクリックします。
      • クリックします。
      • Period 199設定します(実際の期間はこの数+1カウントです)。
      • Compare99設定します(実際の比較はこの数+1カウントです)。
      • 残りの設定はデフォルト値のままにします。
      • をクリックして、回路ビューに戻ります。

     

    17. ピンを接続します。

      • Smart I/Oで信号をPWMからData3に結線します。
      • Smart I/Ogpio5を結線してCorr_Inをピン留めします。
      • Smart I/Ogpio4を結線して、Corr_Outをピン留めします。ピン割り当ては自動的のPSoC®によって行われます。
      • DWRピンビューをクリックします。
      • 各ピンのロック]をクリックして、回路図上の各信号のポートとピン番号を表示します。

     

    18. 波形の視認性を改善します。

      • Configure ]クリックします。
      • gpio6ドロップダウンからOutput ]を選択します。

    14.png

      • OKをクリックして回路図に戻ります。
      • デジタル出力ピンをgpio6に追加し、Delayというラベルを付けます。

     

    19. コードを生成します。

      • main.cファイルを開きます。
      • 次のコードスニペットを追加します

        TCPWM_1_Start();
    SmartIO_1_Start();
    while(1);

      • ビルドしてプログラムします。

     

    20. テスト:

      • 2.0および4.0 kHz1200ボーの外部ソースを提供します。これは、AN221886スマートI / Oを使用したデジタルFSK送信信号の生成)に記載されている方法に従って、信号発生器または別のPSoCデバイス上のプロジェクトで実行できます。

     

     

    トレース1:モデムデータ、1200ボー

     

     

    トレース2:変調されたFSK信号

     

     

    トレース3:遅延FSK信号

     

     

    トレース4:相関器の出力

     

    カーソルは約250 µsecのエッジ間遅延を示します(クロックおよびサンプリングエラー内)。

      15.png

     

    より長いシフトレジスタとより高い周波数のクロックを使用することで、遅延のより細かい分解能とより正確な相関を実現できますが、1つのSmart i/O では15ビットが限界になります。さらに精度が必要な場合は、複数のSmart I/O ポートを備えたサイプレスパーツを使用できます。