Veryl registryAkiyukiOkayasu/gndless-nco-veryl · gndless_ncoSource ↗

Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

gndless_nco

Unsigned modular phase and clock-enable NCO primitives for Veryl.

Version 0.1.0
Repository https://github.com/AkiyukiOkayasu/gndless-nco-veryl
License MIT OR Apache-2.0

Modules

ClockEnableNco 固定クロック比のclock-enable NCO
FractionalPhaseAccumulator ASRC用の分数位相アキュムレータ
NcoTick 分数比から1クロック幅のtickを生成するNCO
Phasor 位相発生器

Packages

Phase 位相発生器 (Phasor / Phase Accumulator)

Modules


ClockEnableNco 固定クロック比のclock-enable NCO
FractionalPhaseAccumulator ASRC用の分数位相アキュムレータ
NcoTick 分数比から1クロック幅のtickを生成するNCO
Phasor 位相発生器

ClockEnableNco

固定クロック比のclock-enable NCO

固定値はreset解除後に自動でNcoTickへ設定される

Parameters


WIDTH u32 位相・増分・modulusのビット幅
CLOCK_FREQ u32 システムクロック周波数 [Hz]
TARGET_FREQ u32 生成するtick周波数 [Hz]

Ports


clk input clock システムクロック
rst input reset リセット
enable input bbool tick生成イネーブル
tick output logic 周期完了パルス
configured output bbool 固定比設定が有効

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することを示すパルス

NcoTick

分数比から1クロック幅のtickを生成するNCO

phaseはDDSの位相ではなく、modulus未満の剰余を保持 そのため、tickの平均周波数はincrement / modulus * clkになる。

同じクロックで複数の制御がHighの場合、優先順位はupdate > restart > !enable > 通常の位相加算。updaterestartはphaseを0へ戻してtickを抑止し、disable中もphaseを保持してtickだけをLow化

Parameters


WIDTH u32 位相・増分・modulusのビット幅

Ports


clk input clock システムクロック
rst input reset リセット
enable input bbool tick生成イネーブル
update input logic incrementとmodulusの更新要求
restart input logic 位相を0へ戻す要求
increment input logic 1クロックあたりの位相増分
modulus input logic tick周期の法
tick output logic 周期完了パルス
configured output bbool 有効な設定が適用済み
config_error output bbool modulusが不正であることを示すフラグ

Phasor

位相発生器 全ての波形オシレーターの基礎となるモジュール 負の周波数(位相の逆回転)にも対応

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)
eoc output logic 1周期完了パルス (End Of Cycle): 位相がラップアラウンドしたサイクルで1クロックだけHigh

Module Prototypes


Interfaces


Packages


Phase 位相発生器 (Phasor / Phase Accumulator)

Phase

位相発生器 (Phasor / Phase Accumulator) 全ての波形オシレーターの基礎となるモジュール