FrontPage

2013/02/24からのアクセス回数 2434

今週も大野さんの本に8章を勉強します。 簡単だと高をくくっていたのですが、アナログブロックとカウンターの接続にはまりました。

AM変調に挑戦

8章のレッスン2には、以下の図*1のブザーの音をAM変調を使って再現する例が紹介されています。

fig8_10.png

本文には記載されていませんが、このブザーのsin波の様な外形が50Hzのようです。

最初はよく分からなかったのですが、元の信号に変調信号を反転増幅するとAM変調した波形が、 出力されるのことが以下の図をみて理解できました。

fig8_11.png

AM変調を意識してなのか、SCブロック(タイプC)の内部構造*2 は以下の様になっています。

fig7_2b.png

串団子の波形

AM変調を使った串団子のような波形は、元の信号として50Hzのsin波、変調信号として1kHzを使用します。

オリジナルは、BPF2を2個使ったBPF4を使ってsin波を生成していますが、 ここでは練習としてBPF2を1個だけでsin波を出力してみます。

PSoCのFilter DesignフォルダーのBPF2 Design.xlsを起動して

L8_2_filter.png

ユーザモジュールの「BPF2_V5R5_2 ポール バンドパス フィルタのデータシート.pdf」によるとクロック周波数は、サンプルレートの4倍と記載されているので、フィルター設計で求められた2000Hzの4倍の8000Hzがフィルターの入力クロックの周波数となります。*3

例題のブロック図

fig8_13.png

でBPF4_1をBPF2_1に変更してプロジェクトを作成します。

PSoCの設定

最初にグローバルセッティングを以下の様にセットします。

L8_2_global_setting.png

グローバルセッティングについては、桑野さんの ユーザモジュールの配置とグローバルリソースの設定 に説明があって助かりました。

大野さんのプロジェクトの設定では、

  • Op-Amp Bias: Hight
  • A_Buf_Power: Hight

となっていましたが、デフォルトのままでも動作しました。しかし、レッスン3のスピーカーへの出力ではこの設定が必要になるのかも知れません。

次にユーザブロックを配置します。

Counter8を3個デジタルブロックを以下の様に配置します。

L8_2_DBlock.png

同様にアナログブロックに、PGAを3個、BPF2、SCBlockを以下の様に配置します。

L8_2_ABlock.png

Counter8のパラメータは、以下の様にします。

L8_2_Counter8_1.png L8_2_Counter8_2.png L8_2_Counter8_3.png

PGAのパラメータも以下の様にします。

L8_2_PGA_1.png L8_2_PGA_2.png L8_2_PGA_3.png

BPF2は、先のフィルター設計の値を以下の様にセットします。

L8_2_BPF2_1.png

SCBLOCKは、大野さんの設定の通りとしました。

L8_2_SCBlock_1.png

アナログの配線では、BPF2_1のクロックをDBB00から取ります。

main関数

main関数は、以下の様にセットします。

void main(void)
{
	// M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts
	Counter8_1_Start();
	Counter8_2_Start();
	Counter8_3_Start();
	PGA_1_Start(PGA_1_HIGHPOWER);
	PGA_2_Start(PGA_2_HIGHPOWER);
	PGA_3_Start(PGA_3_HIGHPOWER);
	BPF2_1_Start(BPF2_1_HIGHPOWER);
	SCBLOCK_1_Start(SCBLOCK_1_HIGHPOWER);
	AMD_CR0 |= 0x20;	// データシート13.2.11参照
}

8章のレッスン2の最大のポイントは、SCBLOCKの入力に1kHzのクロックと重ね合わせる部分ですが、 この部分はプログラムで制御しなくてなりません。

データシートの13.2.11にAMD-CR0のアナログ変調制御の設定方法が記載されています。 これからGOE0を選択するには、AMD_CR0の6-4bitを、010にセットします。 それで、AMD_CR0の設定が、

	AMD_CR0 |= 0x20;	

となります。

実行結果

私のオシロスコープは、2CHしかないので、P0[5]の50HzのSin波とP0[0]の1kHzクロックを表示します。

L8_2_Signal1.png

次にP0[5]の50HzのSin波とP0[4]の出力波形を表示します。

L8_2_Signal2.png

はまったところ

教訓その1

デジタル回路のカウンターの接続を間違えて、正しいクロックを供給できていませんでした。

クロックはピンに出力しておけば、テスターで簡単に確認できるので次回からはチェックしながら進めたいと思います。

P0[1]の50HzとP0[0]の1kHzのクロックを確認したところ。

L8_2_P0_1.png L8_2_P0_0.png

教訓その2

PGAのパラメータ設定で「未設定」項目があったのに気づかず、アナログ回路から出力がでなくて悩みました。

教訓その3

ユーザブロックのStartコマンドをmain関数に入れ忘れてどうして、動かないのか悩みました。

コメント

選択肢 投票
おもしろかった 5  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。


(Input image string)


*1 原著図8-10
*2 原著図7-2 bから引用
*3 スイッチト・キャパシタを使ったフィルターでは、信号のスルーレートの4倍のオペアンプスルーレートが必要となるとの記載もある

添付ファイル: fileL8_2_Signal2.png 422件 [詳細] fileL8_2_Signal1.png 403件 [詳細] fileL8_2_P0_1.png 402件 [詳細] fileL8_2_P0_0.png 402件 [詳細] fileL8_2_SCBlock_1.png 424件 [詳細] fileL8_2_PGA_3.png 401件 [詳細] fileL8_2_PGA_2.png 413件 [詳細] fileL8_2_PGA_1.png 392件 [詳細] fileL8_2_global_setting.png 380件 [詳細] fileL8_2_filter.png 402件 [詳細] fileL8_2_DBlock.png 439件 [詳細] fileL8_2_Counter8_3.png 412件 [詳細] fileL8_2_Counter8_2.png 418件 [詳細] fileL8_2_Counter8_1.png 432件 [詳細] fileL8_2_BPF2_1.png 388件 [詳細] fileL8_2_ABlock.png 425件 [詳細] filefig8_13.png 441件 [詳細] filefig8_11.png 391件 [詳細] filefig8_10.png 379件 [詳細] filefig7_2b.png 426件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-02-07 (日) 17:20:49 (409d)
SmartDoc