參考 http://www.fpgastudy.com/a/course/SystemC/710.html
SystemC专门定义了有符号和无符号的定点数据类型,而且还允许设定定点数据类型的量化和溢出行为。
SystemC的4种基本定点数据类型为:
sc_fixed
sc_ufixed
sc_fix
sc_ufix
sc_fixed和sc_ufixed的参数是静态的,在程序中设定后不能再修改,而sc_fix和sc_ufix的参数是非静态的,其字长和整数部分长 度可以是变量。sc_fixed和sc_fix是有符号整数,而sc_ufixed和sc_ufix是无符号整数。
定点数据类型的定义方法如下:
sc_fixed x;
sc_ufixed y;
sc_fix x(list of options); //可选项较多,读者可以参考SystemC 库中的sc_fix.h文件
sc_ufix y(list of options); //可选项较多,读者可以参考SystemC 库中的sc_ufix.h文件
sc_fixed和sc_ufixed的参数的含义如下:
(1)wl——总字长,即用于表示一个定点数的总的比特数。
(2)iwl——整数部分字长,即小数点左边的比特数。
(3)q_mode——量化模式。当一个运算的结果的精度大于定点数所能表示的精度时就要根据量化模式将尾数进行取舍。
(4)o_mode——溢出模式。当一个运算的结果大于定点数所能够表示的最大值时,就要根据溢出模式将数据进行处理。
(5)n_bits——饱和比特的位数。该参数仅用于溢出模式,它定义了在特定的具有饱和行为的溢出模式下饱和比特的位数。
x、y是所定义的定点对象。定点数据类型在加法器、乘法器和FFT运算、滤波器等需要算术逻辑的设计中特别有用。定点数据类型声明的一个例子如下:
sc_fixed<16,8,SC_RND_ZERO,SC_SAT> fx_val;
字长和整数部分字长是定点数据的两个重要参数。字长wl是用于表示一个定点数的总的比特数,它必须是大于0的。整数部分长度iwl也称为整数字长,可以是 正数、负数,也可以大于总字长。下面列出了几种典型的情况,图中X代表任意值,S是符号扩展位,根据符号的情况,可以是0或者1。
沒有留言:
張貼留言