Noiseで作っている波形にフィルターをかけたいのでデジタルフィルタをもう少しやってみた。デジタルフィルタなんてMatlabでもやったことがないし(あ?やったかな?覚えてない(^q^;)手探り状態ですが、PSoCのFilterコンポーネントはz変換とか行列すらも出てこないので見た目通りに試してみた。前回やったExampleでは外部入力された波形をFilterで加工しているが、リズムマシンはCPUで波形を作っているのでCPUからFilterを通さないといけいない。サンプリング間隔ごとに逐次波形を計算しているのでDMAは不要だ。Creatorのプロジェクトhttps://github.com/ryood/PSoC_5LP_DigitalFilter_TestTopDesignCPUで波形を生成して、「Filter」コンポーネントを通して「VDAC8_1」と「Opamp_1」のボルテージフォロワを通して出力する。「VDAC8_2」と「Opamp_2」はフィルターを通す前の波形の出力用。「Timer」はサンプリング周波数で割り込みをかけるものだ。「Pin_Timer_TC」はタイマーがオーバーフローした時(サンプリング間隔で)にパルスを発生、「Pin_ISR_Check」は割り込みルーチン内のタイミング計測用だ。Passに、Cutoffを8kHzに変更した。FilterをCPUから直接アクセスするにはFilter_Write**()とFilter_Read**()というAPIを使えば済むようだ。Noiseを作ってHPFを通してみた。出力波形PCのWavegeneでFFTしてみた。実行時間Filterの演算が終わるまでCPUがWaitしているのでどれぐらい時間がかかっているか見てみた。ch2:Pin_Timer_TCMaster_Clockを74.7MHzに設定。サンプリング周波数48kHz。PWはデューティーの+側の時間で2.800us。周波数にすると357kHzぐらいだ。Kitで使われているCY8C5888LTI-LP097は最大クロックが80MHzだが内蔵クロックを使うとうまく設定できない。5LPはPSoC4にくらべるとかなり強力。5LPでI2SのExampleをやってみた。DAC(MCP4922)を動かす。