gndless_nco
Unsigned modular phase and clock-enable NCO primitives for Veryl.
| Version | 0.2.0 |
|---|---|
| Repository | https://github.com/AkiyukiOkayasu/gndless-nco-veryl |
| License | MIT OR Apache-2.0 |
Modules
| EocDetector | 位相の1周期完了 (End Of Cycle) 検出器 |
|---|---|
| FractionalPhaseAccumulator | ASRC用の分数位相アキュムレータ |
| Phasor | 位相発生器 |
Packages
| Phase | 位相発生器 (Phasor / Phase Accumulator) |
|---|
Modules
| EocDetector | 位相の1周期完了 (End Of Cycle) 検出器 |
|---|---|
| FractionalPhaseAccumulator | ASRC用の分数位相アキュムレータ |
| Phasor | 位相発生器 |
EocDetector
位相の1周期完了 (End Of Cycle) 検出器
Phasorのphaseとphase_stepから、位相がラップアラウンドしたサイクルを1クロックだけHighにするeocを生成する。
内部にprev_phase(32bit)を持つため、Phasorと同じclkとphase_rstを与えることでPhasor.eoc(旧実装)と
同一のcycleでeocを出力する。
正のstepでは位相出力が減少したとき(オーバーフロー)、負のstepでは増加したとき(アンダーフロー)を検出する。
EocDetectorはphase_stepの符号を参照するため、phaseの履歴だけでは判定できない大振幅stepも正しく扱える。
Ports
| clk | input | clock | システムクロック |
|---|---|---|---|
| phase_rst | input | bbool | 位相ゼロリセット (同期) |
| phase_step | input | Phase step_t | 位相ステップ量 (`Phasor`へ与える値と同一) |
| phase | input | Phase phase_t | `Phasor`の位相出力 |
| eoc | output | logic | 1周期完了パルス: 位相がラップアラウンドしたサイクルで1クロックだけHigh |
FractionalPhaseAccumulator
ASRC用の分数位相アキュムレータ
phaseはQ0.WIDTHの小数位相を表す。毎クロックphase_incrementを加算し、2^WIDTHを跨ぐときだけadvanceを1にする。advanceは実クロックを生成するためではなく、入力サンプル窓を1サンプル進めるための制御信号として使用
初期仕様ではphase_incrementを0以上1未満に限定する。したがって、1クロックで発生するwrapは最大1回である
advanceは現在のphase + phase_incrementが次の立ち上がりでwrapすることを組み合わせで予告する。wrapする立ち上がりの後、phaseには剰余が現れ、advanceは次回の加算がwrapしない限りLowへ戻る
Parameters
| WIDTH | u32 | 位相の小数部ビット幅 |
|---|
Ports
| clk | input | clock | システムクロック | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| rst | input | reset | リセット | ||||||||
| enable | input | bbool | 位相更新イネーブル | ||||||||
| phase_increment | input | logic| 1クロックあたりの位相増分
|
phase |
output |
logic | 現在の小数位相
|
advance |
output |
bbool |
次の加算でwrapすることを示すパルス
|
|
Phasor
位相発生器
全ての波形オシレーターの基礎となるモジュール
負の周波数(位相の逆回転)にも対応
1周期完了の検出が必要な場合はEocDetectorを併設する
Ports
| clk | input | clock | システムクロック |
|---|---|---|---|
| phase_rst | input | bbool | 位相ゼロリセット (同期) |
| phase_step | input | Phase step_t | 1クロックあたりの位相ステップ量: step = (ターゲット周波数 * 2^48) / システムクロック周波数 |
| phase | output | Phase phase_t | 位相出力 (0 ~ 2^32-1) |
Module Prototypes
Interfaces
Packages
| Phase | 位相発生器 (Phasor / Phase Accumulator) |
|---|
Phase
位相発生器 (Phasor / Phase Accumulator) 全ての波形オシレーターの基礎となるモジュール