FixedPointValue::<FORMAT>
固定小数点数フォーマットの接続を型として表現するinterface
FixedPointValueはFORMAT::Rawを1本だけ持つ薄いinterfaceである。
Format::Rawとの違い
算術演算や値の表現能力はFormat::Rawなどと同じ。
たとえばQ8_24::Rawはsigned logic<32>のaliasであり、Q1_31::Rawもsigned logic<32>のaliasであるため、ビット幅が同じである。したがって、Q8_24::Rawの出力をQ1_31::Rawの入力へ直接接続することは、コンパイルエラーにならない。
FixedPointValue::
明示的なフォーマット変換はFormatConverterを使う。
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 processed_sample: FixedPointValue::<Q2_23>;
inst source: SampleSource::<Q1_23> (
output_sample: source_sample,
);
// Q1_23からQ2_23へのフォーマット変換
inst input_converter: FormatConverter::<Q1_23, Q2_23> (
source_sample ,
internal_sample,
);
inst processor: SampleProcessor::<Q2_23> (
input_sample : internal_sample ,
output_sample: processed_sample,
);
inst sink: SampleSink::<Q2_23> (
input_sample: processed_sample,
);
}