PSoCアナログコプロセッサでスマートIOを使用する16ビット遅延ライン(シリアルイン–シリアルアウトシフトレジスタ)- KBA219862 - Community Translated (JA)

Version 1

    Community Translated by  NoTa_4591161 Expert           Version: **

     

    Translation - English: 16-bit Delay Line (Serial-In – Serial Out Shift Register) Using Smart IO in PSoC Analog Coprocessor – KBA219862

     

    質問:

    UDBを使用せず16ビットシフトレジスタを作成するにはどうすればよいでしょうか?

     

    回答:
    このナレッジベース記事(KBA)は、8ビットシフトレジスタ用のKBA219861の拡張になります。

     

    多くのPSoC® 4およびPSoC 6つのデバイスは、Smart IOブロックを実装します。Smart IOブロックには、8つのLUTとデータユニット(DU)が含まれています。各LUTは、組み合わせ回路またはレジスタロジックとして構成できます。DUは、カウンター、データマッチング、シフトレジスタなど、多くの機能を実装できます。DUPSoC Creatorバージョン4.1以降で表示されます。以前のバージョンでは使用できません。

     

    以下は外部から供給される 20-kHz の矩形波を秒遅延させる例です

    次の手順は、外部から供給される20 kHzの矩形波を16 µsec遅延させる例を示しています。

     

    1. PSoC Creatorで新しいプロジェクトを作成しsourceSmart IOコンポーネント、およびクロックを配置します。クロックを1.0 MHzに設定します。

    1.png

     

    2. Smart IOを有効にします。デフォルトでは、Smart IOは構成されていません。ブロックの入力と出力は表示されません。Smart IOコンフィグレーション画面が開くと、デフォルトで[ General ]タブが表示されます。このタブでは、すべての結線とパラメータは空白になっています。DUの入力フィールドのいずれかを変更して、構成を有効にします。

    2.png

     

    これで、DUが強調表示され、使用中であり、[ Data Unit ]タブが有効になります。

    3.png

    3. [ Data Unit ]タブに移動します。デフォルトの論理ブロックが右下に表示されます。

    4.png

     

    4. [ Opcode ]ドロップダウン矢印をクリックし、[ Shift Right ]を選択して、[ Apply ]をクリックします。右下にShift Rightブロックが表示されます。

    5.png

    5.シフトレジスタの長さ(Size)を設定し、[ Apply ]をクリックします。

    6.png

     

    6. [ General ]タブに移動します。[ Clock ]ドロップダウン矢印をクリックし、ドロップダウンリストから[ Divided clock (Active) ]を選択します。

    7. Shift Right機能への入力を選択します。

     

    TR0

    これは非同期ロード機能であり、0に設定する必要があります。ドロップダウンリストから[ Constant 0 ]を選択して、TR0を設定します。

    TR1

    これはEnable機能であり、1に設定する必要があります。ドロップダウンリストからConstan1を選択してTR1を設定します。

    TR2

    シフトレジスタへの入力データです。TR2への入力は、LUT1つからの出力である必要があります。TR2をデータ入力またはGPIOに直接接続することはできません。

     

    8. 適切なLUTを選択します。この例では、LUT0を選択します。

     

    7.png

     

    エラーコードは、入力が未定義であることを示します。

     

    8.png

     

    LUT0への入力は、任意のデータラインまたはGPIOの半数内が使用可能です。この例では、各LUT0入力に対してgpio2を選択します。次に、線上の接続バブルをクリックして、3つのLUT0入力gpio2をすべて設定します。ここでは、GPIO0GPIO1がプログラミングとデバッグに使用され、スマートIO接続には使用できないため、GPIO2を選択します。

    9.png

    GPIOが未設定なので、エラーが表示されます。

     

    9. GPIO2Input(Async) に設定します。

    10.png

     

    これでシフトレジスタの入力接続が設定されました。

    11.png

     

    10. この例では、LUT0をフォロワーまたはバッファとして設定する必要があります。[ LUT0 ]タブに移動します。[Mode]ドロップダウンリストから[ Combinatorial ]を選択します。

      12.png

    Input012は同じソースGPIO0に接続されているため、出力のエンコーディングは入力のいずれか1つを選択可能ですが、111が便利です。

     

    11. DU出力をGPIOに接続します。DU出力はGPIOに直接接続されないため、別のLUTを介して接続する必要があります。各LUT出力は、単一のGPIOに接続されています。GPIO0GPIO1はデバッグとプログラミングで使用され、GPIO2は既に入力として使用されているため、次に使用可能なピンはGPIO3です。GPIO3ドロップダウンリストから[ output ]を選択します。

    13.png

     

    12. LUT3を選択します。これは、GPIO3に接続される唯一のLUTです。DU出力は、各LUTInput0にしか接続できません。LUT3Input0DUに接続します。LUT3Input1Input2を接続する必要があります。GPIO2はすでに使用されているので、接続に使用できます。

    14.png

     

    13. LUT3をフォロワーとしてプログラムしますが、LUT0とは異なります。DUはいずれかのLUTInput0にのみ接続するため、組み合わせ回路はInput0に従う必要があります。

    15.png

     

    OKクリックします。[ General ]タブが表示されます。Smart IOの結線が完了していることに注意してください。

    16.png

     

    14. smart IO結線を完了します。再度[ OK]クリックします。スケマティックビューに戻ります。使用するGPIOに合わせて外部ピンの位置を調整します。PWMと同じソースを利用するようにクロック接続を調整します。このテスト例では、PWM の周期 (period) 49 でコンペア (compare) 24 になっています。

    17.png

    15. コードを生成します。ソースコードはシンプルです:

    SmartIO_1_Start();

    PWM_1_Start();

        while (1);

     

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

     

    16. 入力信号を提供して出力を測定することでシフトレジスタをテストしてください。

    P1.0Source_OutP0.2SR_Inに接続します(これは、開発キットのジャンパー線を使用してここで行われます)。

     

    トレース1Source_Out-SR_In
    トレース2SR_Out

    18.png

    オシロスコープのカーソルは波形の遅延が秒であることを示しています。

     

    上記は16ビットシフトレジスタの前半を実装し、残りの実装はLUTで実装されます。LUTは、2つの異なる登録済みフォームに構成できます。

    19.jfif

    入力が登録された形式では、入力2が登録されていても、出力は入力0と入力1に従うことができます。入力0と入力1を固定値に保持する簡単な方法がないため、出力登録フォームを使用する方がより直接的です。入力01、および2は、8ビットシフトレジスタの例と同様に、フォロワーを形成するように設定されます。

    20.png

    17. LUT0を構成します。GPIOからの入力はLUT0にあります。LUT0の場合、[ Mode ]ドロップダウンリストから[ Registered output ]を選択します。組み合わせデコードは同じままです。[ General ]タブの外観と接続は変更されません。

     

    18.ビルドしてプログラムします。スコープは9μ秒の遅延を示し、DUからは8μ秒、LUT0からは1μ秒です。トレース参照は、8ビットシフトレジスタの例と同じです。

    21.png

    19. LUTを順番に接続します。

    22.png

    (そのトレースクロスの全てを有する)信号チェーンは、次のとおり

    GPIO2 to

       LUT0 to

         DU to

           LUT1 to

              LUT2 to

                LUT4 to

                  LUT5 to

                    LUT6 to

                      LUT7 then back to

                        LUT3

                           and out on GPIO3.

    LUT1を除くすべてのLUTは同じ方法で設定されます。input01、および2がすべてlogic1の場合、レジスタ付き出力および出力Highになります。DUに接続できるのは、LUT1input 0のみです。したがって、ロジックはinput 0に従う必要があります。

    23.png

    多くの接続が可能です。このルーティングは、8ビットシフトレジスタの例で行ったように、GPIO2GPIO3の入力と出力をそれぞれ保持するように選択されています。

     

    20. [ Hide routing matrix ] をクリックして、簡略化されたルーティングを表示します。

    24.png

    21. 同じ2行のコードセグメントを使用してビルドおよびプログラミングします。

     

    22. 結果を測定します。スコープは16 µsecの遅延を示しています。トレース参照は、8ビットおよび10ビットのシフトレジスタの例と同じです。

    25.png