
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
PSoC Analog Coprocessor の Smart I/O を使用して 8-bit ディレイライン (シリアルインーシリアルアウトシフトレジスタ) を実装する - KBA219861- Community Translated (JA)
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 に設定します。
2. Smart IO を有効します。デフォルトでは、Smart IO は設定されていません:ブロックの入力、出力は表示されていません。Smart IO のコンフィグレータ画面が開くと、デフォルトでGeneralタブが表示されます。このタブで、すべての結線とパラメータは空白になっています。DU の入力フィールドのどれかを変更して設定を有効にしてください。
これで DU はハイライトされて使用中であることが示されます、そして Data Unit タブが有効になります。
3. Data Unit タブへ移動します。デフォルトのロジックブロックのスケマティックが右下に表示されます。
4. Opecode のドロップダウンアローをクリックして、ドロップダウンリストから Shift Right を選択、そして Apply をクリックしてください。右下の方に Shift Right ブロックが表示されます。
5. シフトレジスタの長さ (size) をセットして Apply をクリックしてください。
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 を選択します。
入力が未指定であるというエラーコードが表示されます。
LUT0 への入力は任意のデータラインか GPIO の内半数が使用可能です。この例では、 LUT0 の入力に gpio2 を選択してください。そして、LUT0 の 3本の入力全てを gpio2 に接続するために、接続点をクリックしてください。ここで GPIO2 を選択したのは、GPIO0 と GPIO1 はプログラミングとデバッグに使用されるために Smart IO の接続には使用できないからです。
GPIO が未設定なのでエラーが表示されています。
9. GPIO2 を Input(Async) に設定してください。
これでシフトレジスタの入力接続が設定されました。
10. この例では、LUT0 はフォロワーかバッファに設定しなくてはなりません。LUT0 タブへ移動してください。 Mode ドロップダウンリストから Combinatorial を選択してください。
入力 0, 1, 2 は全て同じソース, GPIO2 に接続されています、そのため出力のエンコードはどの入力を選択可能ですが - 1、1、1 が便利です。
11. DU の出力を GPIO に接続します。DU の出力は GPIO に直結することはできません、その為他の LUT のどれかを経由させる必要がります。各 LUT は GPIO のどれか一つに接続されています。GPIO0 と GPIO1 はデバッグとプログラミングに使用されていて、GPIO2 も既に入力として使用されていますので、次に使えるピンは GPIO3 となります。GPIO3 のドロップダウンリストから Output を選択してください。
GPIO3 がまだ未接続のためにエラーが表示されます。
12. LUT3 を選択します、これが GPIO3 に出力接続可能な唯一の LUT です。DU の出力は各 LUT の入力 0 にしか接続できません。LUT3 の入力 0 を DUに接続してください。LUT3 の入力 1 と入力 2 も接続する必要があります。ちょうど GPIO2 が既に使用されているので、接続に使用できます。
13. LUT3 を LUT0 とは異なる以下のようにプログラムしてください。DU はすべて LUT に対して入力 0 のみに接続されているので、組み合わせ論理は入力 0 に従う必要があります。
OK をクリックしてください。General タブが表示されます。これで Smart IO の結線は終了です。
14. Smart IO の結線を完了してください。再度 OK をクリックします。スケマティックの表示に戻ります。外部ピンの位置を使用されている GPIO に合わせてください。クロックは PWM に使用されているものを共有します。この例では PWM の周期 (period) は 49 でコンペア (compare) は 24 になっています。
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
オシロスコープのカーソルは波形の遅延が 8μ秒であることを示しています。
- Tags:
- psoc4