FrontPage

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

今週も大野さんの本に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

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

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

となっていましたが、デフォルトのままでも動作しました。しかし、レッスン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;	

となります。

はまったところ

教訓その1

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

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

教訓その2

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

教訓その3

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

コメント

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

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


(Input image string)

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

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
SmartDoc