Veryl registryAkiyukiOkayasu/gndless-fixedpoint-veryl · gndless_fixedpointSource ↗

Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

FormatConverter::<IN_FORMAT, OUT_FORMAT>

異なるfixed-point formatのvalue interfaceを明示的に接続する組み合わせconverter

FormatConverterconvert関数をFixedPointValue interfaceの接続へ載せるための薄いmoduleである。 実装は組み合わせ回路であり、次の代入と等価である。

output_sample.raw = convert::<IN_FORMAT, OUT_FORMAT, MODE, OVERFLOW>(input_sample.raw);

Usage

FixedPointValue::<IN_FORMAT>からFixedPointValue::<OUT_FORMAT>へ接続したいmodule境界ではFormatConverterを使う。 逆方向や小数ビットを減らす変換では、MODEOVERFLOWに従って丸め・飽和またはwrapを行う。 interfaceを使わない内部演算や一時変数では、convertを直接呼ぶ方が簡潔である。

Timing

FormatConverterはregisterを挿入しないため、変換処理はそのまま組み合わせtiming pathになる。重い丸めや飽和を高いFmaxの経路に置く場合は、利用側でpipeline registerを挟むんでconvert()やシフト演算を行う方がよい。

Examples

module ExampleTop {
    import gndless_fixedpoint::{FixedPointValue, FormatConverter, Q1_23, Q2_23};

    inst source_sample  : FixedPointValue::<Q1_23>;
    inst internal_sample: FixedPointValue::<Q2_23>;

    inst input_converter: FormatConverter::<Q1_23, Q2_23> (
        source_sample  ,
        internal_sample,
    );
}

Generic Parameters


IN_FORMAT SignedFixedPointFormat
OUT_FORMAT SignedFixedPointFormat

Parameters


MODE Types RoundingMode
OVERFLOW Types OverflowMode

Ports


input_sample modport FixedPointValue input_port 入力formatのsample
output_sample modport FixedPointValue output_port 出力formatのsample