FIRフィルターチャンネルデバイダの作成【13】4Way化
マルチアンプシステム向け、FIRフィルター搭載チャンネルデバイダー(チャンデバ)自作に関連する記事の一覧はこちら!
前回は2Wayまで進んだので、4Way化していきます。
ハードの4Way化
ハード部分を、4Way化しましょう。
前回記事の延長でDACを4セット接続するということですね。
なんか、凄くぐちゃぐちゃしてきています。
ブレッドボードレベルでの実験なので、ご勘弁。
ADAU1467としての4Way化
こちらも前回記事同様で、Serial Output Port 2、3、について設定しましょう。Sampling Rate = 2*Fs です。
回路の4Way化
DSP回路を拡張していきましょう。
こちらも、前回同様でコピペで増やしていきます。
出力については、これも前回記載の通り、以下
CH 0 | L | 0 |
R | 1 | |
CH 1 | L | 16 |
R | 17 | |
CH 2 | L | 32 |
R | 33 | |
CH 3 | L | 40 |
R | 41 |
としましょう。
FIR係数の設定
4Way全体として、以下としました。(このあたりはお好みで)
LOW | 〜 | 800 Hz |
MID | 800 Hz | 4000 Hz |
HIGH | 4000 Hz | 10000 Hz |
SUPERHIGH | 10000 Hz | 〜 |
これにあったFIR係数を作成、それぞれのFIRフィルターにロードします。
FIR係数の作り方はコチラを参考にしてください。
さて、これで準備整ったのでコンパイル!!!!!
した結果がこちら。
あ〜135%!処理が間に合いません。
しょうがないので、FIRのタップ数を調整しましょう。
ということで、とりあえずこんな感じで。
まず、高域は500タップに設定、FIR係数も500タップで作成しなおして再ロード。
これで、コンパイル。
無事、86%に収まりました。
とりあえず、この状態で動作確認をしてみましょう。
キレイに帯域分割されていますね。
しかし!実は、問題が残っています。
タップ数の違いによる、遅延の発生です。
低域チャネルは、2000タップ
高域チャネルは、500タップ
FIRはFIRで設定したタップ数の半分のサンプリングのデータを一旦蓄え計算に利用しているため(2000タップの場合は1000サンプリング)低域の処理時間と、高域の処理時間が違ってしまいます。
よって、低域チャネルのデータは、(2000 - 500) / 2 サンプリング分、遅れて音がでている事となります。

にほんブログ村

にほんブログ村