Veryl registryAkiyukiOkayasu/gndless-filter-veryl · gndless_filterSource ↗

Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

gndless_filter

Shift-based first-order LPF/HPF filters (1:1 rate) for Veryl.

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

Modules

HpfShiftSigned ビットシフトによる一次ハイパスフィルタ (符号付き版)。
HpfShiftUnsigned ビットシフトによる一次ハイパスフィルタ (符号なし版)。
HpfShiftVariableSigned 可変シフト量に対応したHPF (符号付き版)。
HpfShiftVariableUnsigned 可変シフト量に対応したHPF (符号なし版)。
LpfShiftSigned ビットシフトによる一次ローパスフィルタ (指数移動平均、符号付き版)
LpfShiftUnsigned ビットシフトによる一次ローパスフィルタ (符号なし版)
LpfShiftVariableSigned 可変シフト量に対応したLPF (符号付き版)
LpfShiftVariableUnsigned 可変シフト量に対応したLPF (符号なし版)

Modules


HpfShiftSigned ビットシフトによる一次ハイパスフィルタ (符号付き版)。
HpfShiftUnsigned ビットシフトによる一次ハイパスフィルタ (符号なし版)。
HpfShiftVariableSigned 可変シフト量に対応したHPF (符号付き版)。
HpfShiftVariableUnsigned 可変シフト量に対応したHPF (符号なし版)。
LpfShiftSigned ビットシフトによる一次ローパスフィルタ (指数移動平均、符号付き版)
LpfShiftUnsigned ビットシフトによる一次ローパスフィルタ (符号なし版)
LpfShiftVariableSigned 可変シフト量に対応したLPF (符号付き版)
LpfShiftVariableUnsigned 可変シフト量に対応したLPF (符号なし版)

HpfShiftSigned

ビットシフトによる一次ハイパスフィルタ (符号付き版)。 LPFの出力を入力から減算してHPFを構成: y[n] = x[n] - lpf[n]。 内部でLpfShiftSignedをインスタンスして使用する。

カットオフ周波数の近似: fc ≈ fs / (2π * 2^SHIFT)。 例: fs=48kHz, SHIFT=8 → fc ≈ 30Hz。

SHIFT値が大きいほどカットオフ周波数が低くなり、より多くの低域を通過させる

Parameters


DATA_WIDTH u32 入出力データ幅
SHIFT u32 シフト量 (1以上)。大きいほど低いカットオフ周波数

Ports


clk input clock システムクロック
rst input reset リセット (出力を0に初期化)
enable input bbool イネーブル信号 (trueでフィルタ更新)
x input signedlogic 入力サンプル (符号付き)
y output signedlogic フィルタ出力 (符号付き)

HpfShiftUnsigned

ビットシフトによる一次ハイパスフィルタ (符号なし版)。 LPFの出力を入力から減算してHPFを構成: y[n] = x[n] - lpf[n]。 内部でLpfShiftUnsignedをインスタンスして使用する。

カットオフ周波数の近似: fc ≈ fs / (2π * 2^SHIFT)。

注意: x < lpf_outの場合、出力はラップアラウンド

Parameters


DATA_WIDTH u32 入出力データ幅
SHIFT u32 シフト量 (1以上)。大きいほど低いカットオフ周波数

Ports


clk input clock システムクロック
rst input reset リセット (出力を0に初期化)
enable input bbool イネーブル信号 (trueでフィルタ更新)
x input logic 入力サンプル (符号なし)
y output logic フィルタ出力 (符号なし)

HpfShiftVariableSigned

可変シフト量に対応したHPF (符号付き版)。 実行時にシフト量を変更できる。

伝達関数: y[n] = x[n] - lpf[n]。 ここで lpf[n] = lpf[n-1] + (x[n] - lpf[n-1]) >> shift。

Parameters


DATA_WIDTH u32 入出力データ幅
MAX_SHIFT u32 最大シフト量
SHIFT_BITS u32 シフト量を表現するビット数

Ports


clk input clock システムクロック
rst input reset リセット (出力を0に初期化)
enable input bbool イネーブル信号 (trueでフィルタ更新)
shift input logic シフト量 (1 ~ MAX_SHIFT)
x input signedlogic 入力サンプル (符号付き)
y output signedlogic フィルタ出力 (符号付き)

HpfShiftVariableUnsigned

可変シフト量に対応したHPF (符号なし版)。 実行時にシフト量を変更できる。

伝達関数: y[n] = x[n] - lpf[n]。 ここで lpf[n] = lpf[n-1] + (x[n] - lpf[n-1]) >> shift。

注意: x < lpf_outの場合、出力はラップアラウンド

Parameters


DATA_WIDTH u32 入出力データ幅
MAX_SHIFT u32 最大シフト量
SHIFT_BITS u32 シフト量を表現するビット数

Ports


clk input clock システムクロック
rst input reset リセット (出力を0に初期化)
enable input bbool イネーブル信号 (trueでフィルタ更新)
shift input logic シフト量 (1 ~ MAX_SHIFT)
x input logic 入力サンプル (符号なし)
y output logic フィルタ出力 (符号なし)

LpfShiftSigned

ビットシフトによる一次ローパスフィルタ (指数移動平均、符号付き版) 乗算器を使用せず、シフト演算のみで実装

伝達関数: y[n] = y[n-1] + (x[n] - y[n-1]) >> SHIFT

カットオフ周波数の近似: fc ≈ fs / (2π * 2^SHIFT) 例: fs=48kHz, SHIFT=8 → fc ≈ 30Hz

SHIFT値が大きいほどカットオフ周波数が低くなり、より滑らかに補間される。 SHIFTはDATA_WIDTHより大きくても問題ない。

Parameters


DATA_WIDTH u32 入出力データ幅
SHIFT u32 シフト量 (1以上)。大きいほど低いカットオフ周波数

Ports


clk input clock システムクロック
rst input reset リセット (出力を0に初期化)
enable input bbool イネーブル信号 (trueでフィルタ更新)
x input signedlogic 入力サンプル (符号付き)
y output signedlogic フィルタ出力 (符号付き)

LpfShiftUnsigned

ビットシフトによる一次ローパスフィルタ (符号なし版) 乗算器を使用せず、シフト演算のみで実装

伝達関数: y[n] = y[n-1] + (x[n] - y[n-1]) >> SHIFT

カットオフ周波数の近似: fc ≈ fs / (2π * 2^SHIFT) 例: fs=48kHz, SHIFT=8 → fc ≈ 30Hz

SHIFT値が大きいほどカットオフ周波数が低くなり、より滑らかに補間される。 SHIFTはDATA_WIDTHより大きくても問題ない。

Parameters


DATA_WIDTH u32 入出力データ幅
SHIFT u32 シフト量 (1以上)。大きいほど低いカットオフ周波数

Ports


clk input clock システムクロック
rst input reset リセット (出力を0に初期化)
enable input bbool イネーブル信号 (trueでフィルタ更新)
x input logic 入力サンプル (符号なし)
y output logic フィルタ出力 (符号なし)

LpfShiftVariableSigned

可変シフト量に対応したLPF (符号付き版) 実行時にシフト量を変更可能

伝達関数: y[n] = y[n-1] + (x[n] - y[n-1]) >> shift

MAX_SHIFTはDATA_WIDTHより大きくても問題ない。

Parameters


DATA_WIDTH u32 入出力データ幅
MAX_SHIFT u32 最大シフト量
SHIFT_BITS u32 シフト量を表現するビット数

Ports


clk input clock システムクロック
rst input reset リセット (出力を0に初期化)
enable input bbool イネーブル信号 (trueでフィルタ更新)
shift input logic シフト量 (1 ~ MAX_SHIFT)
x input signedlogic 入力サンプル (符号付き)
y output signedlogic フィルタ出力 (符号付き)

LpfShiftVariableUnsigned

可変シフト量に対応したLPF (符号なし版) 実行時にシフト量を変更可能

伝達関数: y[n] = y[n-1] + (x[n] - y[n-1]) >> shift

MAX_SHIFTはDATA_WIDTHより大きくても問題ない。

Parameters


DATA_WIDTH u32 入出力データ幅
MAX_SHIFT u32 最大シフト量
SHIFT_BITS u32 シフト量を表現するビット数

Ports


clk input clock システムクロック
rst input reset リセット (出力を0に初期化)
enable input bbool イネーブル信号 (trueでフィルタ更新)
shift input logic シフト量 (1 ~ MAX_SHIFT)
x input logic 入力サンプル (符号なし)
y output logic フィルタ出力 (符号なし)

Module Prototypes


Interfaces


Packages