1 Reply Latest reply on May 5, 2020 6:30 PM by JuyoungJ_06

    Community Translation - 8-bit Delay Line (Serial-In – Serial-Out Shift Register) Using Smart IO in PSoC Analog Coprocessor – KBA219861

    MoTa_728816

      Hi,

       

      I'd like to translate KBA219861 into Japanese

       

      moto

       

      Original KBA: KBA219861

      8-bit Delay Line (Serial-In – Serial-Out Shift Register) Using Smart IO in PSoC Analog Coprocessor – KBA219861

       

      NOTE: I wonder if this title should emphasize "Analog Coprocessor", since this should apply any PSoC with Smart IO and PWM.

       

      Translated by: MoTa_728816

      ==============================

      タイトル: PSoC Analog Coprocessor の Smart I/O を使用して 8-bit ディレイライン (シリアルインーシリアルアウトシフトレジスタ) を実装する - KBA219861

       

      ヴァージョン: **

       

      質問:

      UDB を使用せずにディレイラインを作るのにはどうしたら良いですか?

       

      回答:

      PSoC® 4 と PSoC 6 デバイスの多くが Smart IO ブロックを実装しています。Smart IO ブロックは 8個の LUT と データユニット (DU) を内蔵しています。それぞれの LUT は組み合わせ回路かレジスタロジックとして設定が可能です。DU はカウンタ、データマッチング、シフトレジスタといった多くの機能を実装することが可能です。DU は PSoC Creator™ 4.1 以降でサポートされています。

       

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

       

      1. PSoC Creator でプロジェクトを作成して、source, Smart IO コンポーネント、クロックを配置してください。クロックは 1.0 MHz に設定します。

      001-img-1.png

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

      002-img-2.png

      これで DU はハイライトされて使用中であることが示されます、そして Data Unit タブが有効になります。

      003-pastedImage_28.png

      3. Data Unit タブへ移動します。デフォルトのロジックブロックのスケマティックが右下に表示されます。

       

      004-pastedImage_39.png

      4. Opecode のドロップダウンアローをクリックして、ドロップダウンリストから Shift Right を選択、そして Apply をクリックしてください。右下の方に Shift Right ブロックが表示されます。

      005-img-3.png

       

      5. シフトレジスタの長さ (size) をセットして Apply をクリックしてください。

      006-img-4.png

      6. General タブへ移動します。Clock のドロップダウンアローをクリックして、ドロップダウンリストから Divided Clock (Active) を選択してください。

       

      7. Shift Right ファンクションの入力を選択します:

       

      TR0     Asynchronous load は 0 に設定しなくてはなりません。 ドロップダウンリストから Constant 0 を選んで TR0 に設定してください。  

       

      TR1     Enable 機能は 1 に設定しなくてはなりません。ドロップダウンリストから Constant 1 を選んで TR1 に設定してください。

       

      TR2     シフトレジスタへの入力データ。TR2  への入力は LUT のどれかの出力にする必要があります。

      TR2 を直接 データ入力や GPIO に接続することはできません。

       

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

       

      007-img-5.png

      入力が未指定であるというエラーコードが表示されます。

      008-pastedImage_83.png

      LUT0 への入力は任意のデータラインか GPIO の内半数が使用可能です。この例では、 LUT0 の入力に gpio2 を選択してください。そして、LUT0 の 3本の入力全てを gpio2 に接続するために、接続点をクリックしてください。ここで GPIO2 を選択したのは、GPIO0 と GPIO1 はプログラミングとデバッグに使用されるために Smart IO の接続には使用できないからです。

      008-pastedImage_92.png

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

       

      9. GPIO2 を Input(Async) に設定してください。

      009-img-6.png

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

      012-pastedImage_119.png

       

      10. この例では、LUT0 はフォロワーかバッファに設定しなくてはなりません。LUT0 タブへ移動してください。 Mode ドロップダウンリストから Combinatorial を選択してください。

      010-img-7.png

      入力 0, 1, 2 は全て同じソース, GPIO2 に接続されています、そのため出力のエンコードはどの入力を選択可能ですが - 1、1、1 が便利です。

       

      11. DU の出力を GPIO に接続します。DU の出力は GPIO に直結することはできません、その為他の LUT のどれかを経由させる必要がります。各 LUT は GPIO のどれか一つに接続されています。GPIO0 と GPIO1 はデバッグとプログラミングに使用されていて、GPIO2 も既に入力として使用されていますので、次に使えるピンは GPIO3 となります。GPIO3 のドロップダウンリストから Output を選択してください。

      011-pastedImage_139.png

      GPIO3 がまだ未接続のためにエラーが表示されます。

       

      12. LUT3 を選択します、これが GPIO3 に出力接続可能な唯一の LUT です。DU の出力は各 LUT の入力 0 にしか接続できません。LUT3 の入力 0 を DUに接続してください。LUT3 の入力 1 と入力 2 も接続する必要があります。ちょうど GPIO2 が既に使用されているので、接続に使用できます。

      012-pastedImage_149.png

      13. LUT3 を LUT0 とは異なる以下のようにプログラムしてください。DU はすべて LUT に対して入力 0 のみに接続されているので、組み合わせ論理は入力 0 に従う必要があります。

      013-img-8.png

      OK をクリックしてください。General タブが表示されます。これで Smart IO の結線は終了です。

      014-pastedImage_168.png

      14. Smart IO の結線を完了してください。再度 OK をクリックします。スケマティックの表示に戻ります。外部ピンの位置を使用されている GPIO に合わせてください。クロックは PWM に使用されているものを共有します。この例では PWM の周期 (period) は 49 でコンペア (compare) は 24 になっています。

      015-pastedImage_178.png

      15. アプリケーションを Generate います。ソースコードは単純です:

       

      SmartIO_1_Start();

      PWM_1_Start();

      while(1);

       

      16. プロジェクトをビルドして、デバイスにプログラムしてください。

       

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

      P1.0 の Source_Out を P0.2 の SR_In に接続します。(これは評価基板上でジャンパ線を使用して接続します。)

       

      信号 1 は Source_Out -- SR_In

      信号 2 は SR_Out

      016-pastedImage_191.png

       

       

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

      ==============================

       

      21-Apr-2020

      moto