Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

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

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

ChaitanyaV_61
Employee
Employee
50 questions asked 25 likes received 25 sign-ins

Community Translated by  MoTa_728816          Version: **

質問:

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 に設定します。

pastedImage_21.png

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

pastedImage_22.png

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

pastedImage_27.png

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

pastedImage_32.png

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

pastedImage_37.png

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

pastedImage_42.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 を選択します

pastedImage_47.png

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

pastedImage_52.png

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

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

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

pastedImage_58.png

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

pastedImage_63.png

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

pastedImage_68.png

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

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

pastedImage_73.png

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

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

pastedImage_78.png

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

pastedImage_79.png

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

pastedImage_84.png

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

pastedImage_85.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

pastedImage_86.png

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

340 件の閲覧回数
寄稿者