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

LinearAsrc

入力サンプル列を線形補間して、分数比のoutput tickへ変換するASRC

入力はinput_valid && input_readyで受け付け、内部のVeryl STD FIFOへ一時保持する。ratioは「output 1回あたりに進む入力サンプル数」をQ(整数3bit).PHASE_WIDTHで表す。 例えば96kHz入力から48kHzを作る場合は2 << PHASE_WIDTH、96kHz入力から44.1kHzを作る場合は96_000 / 44_100 << PHASE_WIDTH相当を設定する。 起動時はFIFOから2サンプル窓を作るまでoutput_readyがLowになる。 output_tick && output_readyで出力し、位相進行が入力境界を越えた場合は必要数だけFIFOから窓を補充する。補充中のoutput_tickは受理されない。

Parameters


SAMPLE_WIDTH u32 入出力サンプルの符号付きビット幅
PHASE_WIDTH u32 `ratio`の小数部ビット幅
INPUT_DEPTH u32 入力FIFOの深さ

Ports


clk input clock システムクロック
rst input reset リセット
input_valid input logic 入力サンプル有効
input_ready output logic 入力受理可能
input_sample input signedlogic 入力サンプル
output_tick input logic 出力生成要求
output_ready output logic 出力窓が準備済み
output_valid output logic 出力サンプル有効
output_sample output signedlogic 補間後の出力サンプル
ratio input logic 出力1回あたりの入力進行量