First- and second-order Q1.31 delta-sigma modulators for Veryl.
Modules
Components
1次デルタシグマ変調器
キャリー・アキュムレータ形式で実装し、入力のDC値に比例したPDM密度を得る。
pdmはclkごとに1bit更新される。
| clk |
input |
clock |
システムクロック
|
| rst |
input |
reset |
リセット
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q1_31 input_port |
Q1.31入力サンプル
|
| pdm |
output |
logic |
1bit PDM出力
|
2次デルタシグマ変調器
2段の積分器を持つ簡易構成で、1次変調器より高い帯域外ノイズシェーピングを得る。
内部演算は36bit signedとする。入力±2^29、帰還±2^30に対し積分器の実振幅は
最大~2^32程度であり、±2^35の範囲に4倍以上のヘッドルームを持たせている
(旧実装の40bitはこの2倍を超える過剰幅だった)。
無音時の決定論的なアイドルトーンを防ぐため、変調器入力へ±1 LSBのハイパスTPDFディザを加える。
| DITHER_SEED |
u32 |
ハイパスTPDFディザ用LFSRの非ゼロ初期値
|
| clk |
input |
clock |
システムクロック
|
| rst |
input |
reset |
リセット
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q1_31 input_port |
Q1.31入力サンプル
|
| pdm |
output |
logic |
1bit PDM出力
|
clocked component
無音PDMを3段CICで間引き、可聴帯域の狭帯域トーンを検出する。
CICは50MHz入力、1/1024間引き、3段、64bit wraparoundで実行する。リセット後1秒を
除外して16384点Hann窓FFTを50% overlapで実行し、20Hzから20kHzの最大ピークが
-100dBFS以上なら失敗とする。
| clk |
input |
clock |
CICと同じサンプリングクロック。 |
| rst |
input |
reset |
テスト初期化をコンポーネントの状態にも反映するリセット。 |
| pdm |
input |
|
DeltaSigma変調器の1bit PDM出力。 |
inst u0: $comp::idle_tone_checker (clk, rst, pdm);