STM
Name | In/Out | Width | Description |
---|---|---|---|
CLK | In | 1 | メインクロック |
SETTINGS | In | - | |
├─ REQ_RD_SEGMENT | In | 1 | 要求読み込みセグメント |
├─ CYCLE[] | In | 16 | 第セグメントの周期 |
├─ FREQ_DIV[] | In | 16 | 第セグメントの周波数分周比 |
├─ REP[] | In | 16 | 第セグメントの繰り返し回数 |
├─ SOUND_SPEED[] | In | 16 | 第セグメントの音速 |
├─ TRANSITION_MODE | In | 8 | 遷移モード |
└─ TRANSITION_VALUE | In | 64 | 遷移値 |
SYS_TIME | In | 57 | システム時刻 |
INTENSITY | Out | 8 | 強度 |
PHASE | Out | 8 | 位相 |
DOUT_VALID | Out | 1 | 強度/位相データ有効フラグ |
STM_BUS | In | - | 位相フィルタ用メモリバス |
本モジュールは, 強度/位相データを出力する.
Timer
このサブモジュールは, システム時刻, 周期, 周波数分周比から, 現在読み込むべきデータのインデックスを計算する.
変調データのインデックスは
として計算される.
SYS_TIME
はでカウントアップされため, データのサンプリング周波数は
となり, はこの周波数でからまで周期的にカウントアップされる.
SYS_TIME
がすべてのデバイスで同期しているため, このインデックスも必然的にすべてのデバイスで同期する.
NOTE:
SETTINGS
で指定するCYCLE
はであることに注意する.
Swapchain
このサブモジュールはセグメントの切り替えを制御する.
セグメント切替時の挙動は以下の通りである.
- 要求されたセグメントが1の場合
- 第1セグメントの繰り返し回数が0xFFFFの場合, 直ちにセグメントを1に切り替え, 無限ループする.
- 遷移モードが
EXT
の場合, セグメントないのデータを一周するたび, セグメントを自動的に切り替える.
- 遷移モードが
- 第1セグメントの繰り返し回数が0xFFFF以外の場合, 遷移モードに従って, セグメントの切り替えを待機する. セグメント切り替え後, 指定回数の繰り返しが終わった後,
STOP
をアサートする.- 遷移モードが
SYNC_IDX
の場合, 第1セグメントのインデックスが0になったら, セグメントを1に切り替える. - 遷移モードが
SYS_TIME
の場合, システム時間が遷移値で指定された値になったらセグメントを1に切り替え, インデックスを0に初期化. - 遷移モードが
GPIO
の場合, 遷移値で指定されたGPIO Inピンがアサートされたらセグメントを1に切り替え, インデックスを0に初期化
- 遷移モードが
- 第1セグメントの繰り返し回数が0xFFFFの場合, 直ちにセグメントを1に切り替え, 無限ループする.
- 要求されたセグメントが0の場合も同様
NOTE:
SETTINGS
で指定するREP
は繰り返し回数であることに注意する.
Gain
このモジュールは, 指定されたインデックスのデータを順次出力するだけである.
Focus
このモジュールはBRAMに書き込まれた焦点の位置データ列から適切な位相を計算して出力する.
焦点の位置データはデバイスにローカルな座標系で表現される. また, 位置データは符号あり固定小数点数で表現される. この単位はである.
このモジュールでは, 焦点位置データと, 振動子の位置データ, 及び, 音速 (SOUND_SPEED
, ) から, 振動子の位相を計算する.
ここで, 音速の単位は, である.
また, 振動子のローカル座標における位置データはあらかじめ計算しておくことができるため, これを専用のBRAMに格納しておく.
NOTE: 振動子の位置データは
tr.coe
に格納されている.
まず, との間の距離を計算する. また, 音速から波長を計算すると, となる. よって, 位相は と計算できる.
NOTE: がに対応することに注意.
NOTE: 音速の単位が複雑なのは以下の理由による. まず, 振動子-焦点間距離の計算において, 各座標の入力値が符号あり固定小数点数なので, その値の二乗値のビット幅はとなる. したがって, 距離の値のビット幅になる. 音速の単位を上記のようにしておくと, 位相の計算の際, 分母の計算が楽になり, その値をの範囲に収められる.
多焦点
Focus
モジュールは上記の計算を同時8焦点分行い, 各焦点の位相から, 以下の計算により, 最終的な位相データを求める.
ここで, は焦点の数である.
の計算に関してはがの有限値であるため, あらかじめ計算済みのテーブルを用いる. また, の計算も, 計算済みのテーブルを用いる. のテーブルはデータ量を削減するため, のの平均値, の平均値に対して, をキーとしている.