コンテンツにスキップ
これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.6.x を参照.

Emission

Emission モジュール
Name In/Out Width Description
CLK In 1 メインクロック
PATTERN_SETTINGS In -
├─ UPDATE In 1 設定更新フラグ
├─ REQ_RD_BANK In 1 要求読み込みバンク
├─ MODE[n] In 1 第 n バンクの出力タイプ
├─ CYCLE[n] In 16 第 n バンクの周期 - 1
├─ FREQ_DIV[n] In 16 第 n バンクの周波数分周比
├─ REP[n] In 16 第 n バンクの繰り返し回数 - 1
├─ SOUND_SPEED[n] In 16 第 n バンクの音速
├─ NUM_FOCI[n] In 8 第 n バンクの焦点数
├─ TRANSITION_MODE In 8 遷移モード
└─ TRANSITION_VALUE In 64 遷移値
SYS_TIME In 57 システム時刻
UPDATE In 1 超音波周期トリガ
GPIO_IN In 4 GPIO 入力
INTENSITY Out 8 強度
PHASE Out 8 位相
DOUT_VALID Out 1 強度/位相データ有効フラグ
EMISSION_BUS In - Emission データメモリバス
OUTPUT_MASK_BUS In - Output Mask データメモリバス

本モジュールは, 振動子毎の強度/位相データを出力する.

出力タイプ (MODE) はバンク毎に 2 種類ある.

  • EMISSION_TYPE_RAW: 振動子毎の強度/位相をそのまま BRAM から読み出す
  • EMISSION_TYPE_FOCI: 焦点の位置データから位相を計算する

UPDATE (超音波周期トリガ) を起点に, Swapchain が決めたバンクとインデックスのデータを 1 周期分読み出し, 249 振動子分の強度/位相を順次出力する.

このサブモジュールは, システム時刻, 周期 , 周波数分周比 から, 現在読み込むべきデータのインデックスを計算する. インデックス

として計算される. SYS_TIME でカウントアップされるため, データのサンプリング周波数

となり, はこの周波数で から まで周期的にカウントアップされる.

SYS_TIME がすべてのデバイスで同期しているため, このインデックスも必然的にすべてのデバイスで同期する.

このサブモジュールはバンクの切り替えを制御する. 挙動は ModulationSwapchain と同一である.

STOP がアサートされている間, Emission はバンク及びインデックスを更新せず, 最後にサンプルしたデータを出力し続ける.

このサブモジュールは, 指定されたインデックスのデータを順次出力するだけである.

なお, Emission BRAM は後述のFocusサブモジュールのために読み出し側が 幅となっている点に注意.

このサブモジュールは BRAM に書き込まれた焦点の位置データ列から適切な位相を計算して出力する.

焦点の位置データはデバイスにローカルな座標系で表現される. また, 位置データは 符号あり固定小数点数で表現される. この単位は である.

このサブモジュールでは, 焦点位置データ と, 振動子の位置データ , 及び, 音速 (SOUND_SPEED, ) から, 振動子の位相を計算する. ここで, 音速の単位は である. また, 振動子のローカル座標における位置データはあらかじめ計算しておくことができるため, これを専用の分散 RAM に格納しておく.

まず, の間の距離を計算する.

また, 音速 から波長 を計算すると,

となる. よって, 位相

と計算できる.

Focus サブモジュールは上記の計算を同時 8 焦点分行い, 各焦点の位相 から, 以下の計算により, 最終的な位相データ を求める.

ここで, は焦点の数 (NUM_FOCI) である.

の計算に関しては の有限値であるため, あらかじめ計算済みの テーブルを用いる. また, の計算も, 計算済みのテーブルを用いる. のテーブルはデータ量を削減するため, の平均値 , の平均値 に対して, をキーとしている.

出力する強度は第 0 焦点のデータに含まれる強度フィールドである. 第 1 焦点以降の同フィールドは強度ではなく, その焦点に加算する位相オフセットとして扱われる.

Output Mask サブモジュールは Raw, または, Focus サブモジュールからの出力を, マスクデータに基づいて, 超音波を出力するか否か (強度を 0 にするか否か) を制御する. マスクデータはバンク毎に (振動子毎に 1 bit) である.

Raw は振動子毎に強度を設定できるため, 基本的に Focus サブモジュールからの出力を制御する目的で使用される.