Silencer

Silencerモジュール
NameIn/OutWidthDescription
CLKIn1メインクロック
SETTINGSIn-
├─ FLAGIn8フラグ
├─ UPDATE_RATE_INTENSITYIn16固定更新幅 (強度)
├─ UPDATE_RATE_PHASEIn16固定更新幅 (位相)
├─ COMPLETION_STEPS_INTENSITYIn16固定完了ステップ (強度)
└─ COMPLETION_STEPS_PHASEIn16固定完了ステップ (位相)
DIN_VALIDIn1強度/位相データ有効フラグ
INTENSITY_INIn8強度
PHASE_INIn8位相
INTENSITY_OUTOut8強度
PHASE_OUTOut8位相
DOUT_VALIDOut1強度/位相データ有効フラグ

このモジュールは, 強度/位相データの急激な変化を抑え, 静音化するためのモジュールである.

強度データに対しては, 現在の値と, 目標値に対して, 以下のように更新する. 出力はとなる. また, 位相データに対しては, 現在の値と, 目標値に対して, 以下のように更新する. 出力はとなる. ここで, はそれぞれ強度, 位相に対する1ステップ当たりの更新量, は超音波周期 (=) である. なお, 更新はの周波数で行われる.

NOTE: 強度, 位相データを256倍しているのは, より細かい更新を可能にするためである.

NOTE: 位相データの場合分けは, 位相の周期性によるものである. 位相変化が半周期より大きい場合は, 逆方向に変化したほうが早く変化が完了する.

の決定方法に2つのモードがある.

  1. 固定更新幅モード: すべての振動子に対して, 強度, 位相それぞれ固定のUPDATE_RATE_INTENSITY, UPDATE_RATE_PHASEを用いる.
  2. 固定完了ステップモード: すべての振動子に対して同一のステップで変化が完了するようにを決定する. すなわち, 強度, 位相のステップ数COMPLETION_STEPS_INTENSITY, COMPLETION_STEPS_PHASEに対して, を, 目標値が変化したタイミングでここの振動子に対して設定する.

これらのモードはFLAGにて切り替える.

このモジュールの処理もパイプライン的に行われる. 入力として, DIN_VALIDは249クロックの間1であり, その間INTENSITY_IN, PHASE_INから強度/位相データが順番に流れてくることを想定している. 処理が終わったら, DOUT_VALIDを1とし, 順次INTENSITY_OUT, PHASE_OUTから強度/位相データを流す.

Step Calculator

このサブモジュールは, 式(1)によりを計算する.

ただし, 整数を用いるため, 余りの処理が問題になる. これに関しては, 例えば強度の場合, ステップの内, 最初のステップにおいては, それ以降ではとして使用することで対処している. 位相も同様である.

なお, 固定更新幅モードの場合は, このサブモジュールの出力は使用されない.

Interpolator

このサブモジュールは, 現在の強度/位相データに対して, 更新量を加算しているだけである. ただし, 位相に関しては前述の通り, 目標値 (の256倍) と現在値との差の大きさに応じて加算するか減算するかを決定している.