PWM
Name | In/Out | Width | Description |
---|---|---|---|
CLK | In | 1 | 20.48MHzクロック |
TIME_CNT | In | 8 | 超音波周期カウンタ |
UPDATE | In | 1 | 超音波周期トリガ |
DIN_VALID | In | 1 | パルス幅/位相データ有効フラグ |
PULSE_WIDTH | In | 9 | パルス幅 |
PHASE | In | 8 | 位相 |
PWM_OUT | Out | 1x249 | PWM信号 |
DOUT_VALID | Out | 1 | 立ち上がり/立ち下がりデータ有効フラグ (デバッグ用) |
Preconditioner
このサブモジュールでは, 後の処理を楽にするために, パルス幅/位相を信号の立ち上がり時刻と立ち下がり時刻に変換する.
ここで, は周期である.
NOTE: を計算しているのは, が奇数の場合を考慮するためである.
なお, Preconditionerの計算はパイプライン的に行われる.
入力として, DIN_VALID
は249クロックの間1であり, その間PULSE_WIDTH
, PHASE
からパルス幅/位相データが順番に流れてくることを想定している.
出力に関して, 中間データを出力しないようにするために, 一旦バッファに格納している.
Buffer
Bufferは, TIME_CNT
の値がになるまでの更新を遅らせる.
すなわち, 超音波周期の途中でが更新されることを防ぐためにある.
Generator
GeneratorはTIME_CNT
の値とBufferから出力されたを用いて, PWMの出力を計算する.