Veryl registryAkiyukiOkayasu/gndless-sample-rate-conversion-veryl · gndless_sample_rate_conversionSource ↗

Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

SampleRateTracker

入力サンプルの到着周期測定と低域通過周期推定値の出力

このモジュールはASRC全体ではない。sample_validの時刻列から、生の周期と平滑化した周期を作るだけに責務を限定する。 位相累積、補間、FIFOレベル制御は後段のモジュールで行う。

FILTER_SHIFTが大きいほど追従は遅くなるが、valid時刻の量子化やサンプル間ジッターを位相増分へ伝えにくくなる。 STEP_THRESHOLD_SHIFTを有効にすると、平滑化周期との差がその2のべき乗分の1以上となった周期変更は即時に取り込む。 TIMEOUT_PERIODを有効にすると、入力停止時にlockを解除して次の入力から測定をやり直す。 filtered_periodはPERIOD_WIDTH.FRACTION_WIDTHの固定小数点値である。

最初のsample_validは基準時刻を記録するだけで、次の到着からmeasured_periodを更新してperiod_validを1クロックだけHighにする。 有効な測定がLOCK_COUNT回に達するとlockedを保持する。

Parameters


PERIOD_WIDTH u32 整数周期のビット幅
FRACTION_WIDTH u32 平滑化周期の小数部ビット幅
FILTER_SHIFT u32 周期平滑化の右シフト量
LOCK_COUNT u32 lock判定に必要な有効測定回数
STEP_THRESHOLD_SHIFT u32 即時追従する周期差の比率を表す右シフト量、0で無効
TIMEOUT_PERIOD u32 入力停止とみなすクロック数、0で無効

Ports


clk input clock システムクロック
rst input reset リセット
sample_valid input bbool 入力サンプル到着パルス
measured_period output logic 測定した整数周期
period_valid output bbool 周期更新パルス
filtered_period output logic 平滑化した固定小数点周期
locked output bbool lock状態
timed_out output bbool 入力停止によるlock解除パルス