Periodic waveform and noise oscillators for Veryl.
Modules
Packages
マルチ波形生成コアモジュール
位相入力から4種類の波形(Sine, Triangle, Saw, Pwm)を生成し、選択出力
Sineは線形補間付きLUT、他は組み合わせ回路
レイテンシ整合のため、全波形を1クロック遅延させて出力
レイテンシー: 1クロック
| clk |
input |
clock |
クロック
|
| phase |
input |
gndless_nco Phase phase_t |
位相入力 (0 ~ 2^32-1)
|
| wave_type |
input |
WaveType |
波形タイプ選択
|
| duty_cycle |
input |
gndless_nco Phase phase_t |
PWMデューティ比 (Pwm以外では無視)
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q8_24 output_port |
出力波形 (Q8.24形式)
|
波形選択式オシレーター
4種類の波形(Sine, Triangle, Saw, Pwm)を切り替え可能
Sineは線形補間付きLUT、他は組み合わせ回路
波形切り替え時のレイテンシ整合のため、全波形を1クロック遅延させて出力
レイテンシー: 1クロック
| clk |
input |
clock |
クロック
|
| phase_rst |
input |
bbool |
位相ゼロリセット (同期)
|
| phase_step |
input |
gndless_nco Phase step_t |
1クロックあたりの位相ステップ量
|
| wave_type |
input |
WaveType |
波形タイプ選択
|
| duty_cycle |
input |
gndless_nco Phase phase_t |
PWMデューティ比 (Pwm以外では無視)
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q8_24 output_port |
出力波形 (Q8.24形式)
|
ピンクノイズジェネレーター (Voss-McCartney Algorithm + Xorshift32)
1/f特性を持つピンクノイズを生成する。
単一のXorshift32 RNGがフリーランし、サンプルカウンタの各ビット立ち上がりでラッチされることで1/fスペクトルを形成する。
24段構成:
行kは2^kサンプルごとに更新される
最低更新レート = sample_rate / 2^24
50MHz/200分周(250kHz)前提で約0.015Hz = サブオーディオ帯域まで余裕を持ってカバー
出力スケーリング:
24行のQ1.31和 → ÷8(>>3) → Q8.24変換(>>>7) = 合計>>>10
RMS ≈ √(24/3)/8 ≈ 0.35 (WhiteNoise比 -4.2dB)
| clk |
input |
clock |
クロック
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q8_24 output_port |
出力波形 (Q8.24形式)
|
PWM変調可能な矩形波オシレーター
全て組み合わせ回路で実装しているため遅延ゼロ
| clk |
input |
clock |
クロック
|
| phase_rst |
input |
bbool |
位相ゼロリセット (同期)
|
| phase_step |
input |
gndless_nco Phase step_t |
1クロックあたりの位相ステップ量: step = (ターゲット周波数 * 2^48) / システムクロック周波数
|
| duty_cycle |
input |
gndless_nco Phase phase_t |
デューティ比 位相のどこまで High にするか (0 ~ 2^32-1)
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q8_24 output_port |
波形出力 (Q8.24形式)
|
ノコギリ波オシレーター
全て組み合わせ回路で実装しているため遅延ゼロ
| clk |
input |
clock |
クロック
|
| phase_rst |
input |
bbool |
位相ゼロリセット (同期)
|
| phase_step |
input |
gndless_nco Phase step_t |
1クロックあたりの位相ステップ量: step = (ターゲット周波数 * 2^48) / システムクロック周波数
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q8_24 output_port |
出力波形 (Q8.24形式)
|
ノコギリ波生成コアモジュール
位相入力から波形を生成する純粋な変換モジュール
全て組み合わせ回路で実装しているため遅延ゼロ
| phase |
input |
gndless_nco Phase phase_t |
位相入力
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q8_24 output_port |
出力波形 (Q8.24形式)
|
サイン波オシレーター (LUTのみ)
テーブル引きのサイン波
第一象限(0~90度)の波形データ10bit分をROMに持っているので、実質的な分解能は12bit相当
レイテンシー: 1クロック (BRAM読み出し分)
| clk |
input |
clock |
クロック
|
| phase_rst |
input |
bbool |
位相ゼロリセット (同期)
|
| phase_step |
input |
gndless_nco Phase step_t |
1クロックあたりの位相ステップ量: step = (ターゲット周波数 * 2^48) / システムクロック周波数
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q8_24 output_port |
出力波形 (Q8.24形式)
|
サイン波オシレーター (LUT + 線形補間)
実質12bit相当のテーブル引きに線形補間を追加することで、高精細なサイン波を生成
レイテンシー: 1クロック (BRAM読み出し分)
| clk |
input |
clock |
クロック
|
| phase_rst |
input |
bbool |
位相ゼロリセット (同期)
|
| phase_step |
input |
gndless_nco Phase step_t |
1クロックあたりの位相ステップ量: step = (ターゲット周波数 * 2^48) / システムクロック周波数
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q8_24 output_port |
出力波形 (Q8.24形式)
|
サイン波生成コアモジュール (LUTのみ)
位相入力から波形を生成する純粋な変換モジュール
第一象限(0~90度)の波形データ10bit分をROMに持っているので、実質的な分解能は12bit相当
レイテンシー: 1クロック (BRAM読み出し分)
| clk |
input |
clock |
クロック
|
| phase |
input |
gndless_nco Phase phase_t |
位相入力 (0 ~ 2^32-1)
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q8_24 output_port |
出力波形 (Q8.24形式)
|
サイン波生成コアモジュール (LUT + 線形補間)
位相入力から波形を生成する純粋な変換モジュール
実質12bit相当のテーブル引きに線形補間を追加することで、高精細なサイン波を生成
レイテンシー: 1クロック (BRAM読み出し分)
| clk |
input |
clock |
クロック
|
| phase |
input |
gndless_nco Phase phase_t |
位相入力 (0 ~ 2^32-1)
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q8_24 output_port |
出力波形 (Q8.24形式)
|
矩形波生成コアモジュール
位相入力から波形を生成する純粋な変換モジュール
全て組み合わせ回路で実装しているため遅延ゼロ
| phase |
input |
gndless_nco Phase phase_t |
位相入力 (0 ~ 2^32-1)
|
| duty_cycle |
input |
gndless_nco Phase phase_t |
デューティ比 位相のどこまで High にするか (0 ~ 2^32-1)
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q8_24 output_port |
出力波形 (Q8.24形式)
|
三角波オシレーター
全て組み合わせ回路で実装しているため遅延ゼロ
| clk |
input |
clock |
クロック
|
| phase_rst |
input |
bbool |
位相ゼロリセット (同期)
|
| phase_step |
input |
gndless_nco Phase step_t |
1クロックあたりの位相ステップ量: step = (ターゲット周波数 * 2^48) / システムクロック周波数
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q8_24 output_port |
出力波形 (Q8.24形式)
|
三角波生成コアモジュール
位相入力から波形を生成する純粋な変換モジュール
全て組み合わせ回路で実装しているため遅延ゼロ
| phase |
input |
gndless_nco Phase phase_t |
位相入力 (0 ~ 2^32-1)
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q8_24 output_port |
出力波形 (Q8.24形式)
|
White Noise Generator (Xorshift32 Algorithm)
Generates high-quality pseudo-random numbers suitable for audio noise.
No reset signal required. Initializes with a non-zero seed on power-up.
| clk |
input |
clock |
クロック
|
| audio |
modport |
gndless_fixedpoint __FixedPointValue__gndless_fixedpoint_Q8_24 output_port |
出力波形 (Q8.24形式)
|
波形タイプを定義するパッケージ