Silencer
Name | In/Out | Width | Description |
---|---|---|---|
CLK | In | 1 | メインクロック |
SETTINGS | In | - | |
├─ FLAG | In | 8 | フラグ |
├─ UPDATE_RATE_INTENSITY | In | 16 | 固定更新幅 (強度) |
├─ UPDATE_RATE_PHASE | In | 16 | 固定更新幅 (位相) |
├─ COMPLETION_STEPS_INTENSITY | In | 16 | 固定完了ステップ (強度) |
└─ COMPLETION_STEPS_PHASE | In | 16 | 固定完了ステップ (位相) |
DIN_VALID | In | 1 | 強度/位相データ有効フラグ |
INTENSITY_IN | In | 8 | 強度 |
PHASE_IN | In | 8 | 位相 |
INTENSITY_OUT | Out | 8 | 強度 |
PHASE_OUT | Out | 8 | 位相 |
DOUT_VALID | Out | 1 | 強度/位相データ有効フラグ |
このモジュールは, 強度/位相データの急激な変化を抑え, 静音化するためのモジュールである.
強度データに対しては, 現在の値と, 目標値に対して, 以下のように更新する. 出力はとなる. また, 位相データに対しては, 現在の値と, 目標値に対して, 以下のように更新する. 出力はとなる. ここで, はそれぞれ強度, 位相に対する1ステップ当たりの更新量, は超音波周期 (=) である. なお, 更新はの周波数で行われる.
NOTE: 強度, 位相データを256倍しているのは, より細かい更新を可能にするためである.
NOTE: 位相データの場合分けは, 位相の周期性によるものである. 位相変化が半周期より大きい場合は, 逆方向に変化したほうが早く変化が完了する.
の決定方法に2つのモードがある.
- 固定更新幅モード: すべての振動子に対して, 強度, 位相それぞれ固定の
UPDATE_RATE_INTENSITY
,UPDATE_RATE_PHASE
を用いる. - 固定完了ステップモード: すべての振動子に対して同一のステップで変化が完了するようにを決定する. すなわち, 強度, 位相のステップ数
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倍) と現在値との差の大きさに応じて加算するか減算するかを決定している.