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

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Kenshow
Level 8
Level 8
Distributor - Marubun (Japan)
50 solutions authored 25 solutions authored 10 solutions authored

Hi,

I would like to translate KBA219862 into Japanese.

Please confirm to my work

Thanks,

Kenshow

0 Likes
2 Replies
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hello, Kenshow-san

Yes, confirm of it.

It is good to work.

Thanks,

Jenna

Jenna Jo
0 Likes
Kenshow
Level 8
Level 8
Distributor - Marubun (Japan)
50 solutions authored 25 solutions authored 10 solutions authored

Hi Jenna-san,

Japanese translation was over.
Please check below.

Thanks.

Kenshow

Original KBA:

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

Translated by Kenshow

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

タイトル: PSoCアナログコプロセッサでスマートIOを使用する16ビット遅延ライン(シリアルイン–シリアルアウトシフトレジスタ)– 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 

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

15-May-2020

Kenshow

 

0 Likes