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回あたりの入力進行量
|
|