学海荡舟手机网
导航

主页 > 电子设备技术 > 电器电路基础 > > 详细内容

SystemC-定点数据类型

 

  采用浮点数据类型不仅能够很容易的进行算术运算,而且精度高。但是浮点运算在硬件上实现起来特别复杂,因此为了节省硬件资源很多硬件只支持定点运算,另外多数软件也是定点的。为了能够精确的建模和描述定点硬件,必须使用定点数据类型。

      Syst专门定义了有符号和无符号的定点数据类型,而且还允许设定定点数据类型的量化和溢出行为。

      Syst的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<wl, iwl, q_mode, o_mode, n_bits> x;
        sc_ufixed<wl, iwl, q_mode, o_mode, n_bits> 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。


相关文章