2024年3月14日 星期四

*******SystemC--使用者自訂類型

 #define MAX_LENGTH 1504

struct packet
{
     sc_uint<16> length;
     char[MAX_LENGTH] info;
     sc_int<32> fcs;
   
     inline bool operator == (const packet& rhs) const
     {
         return rhs.info == info
             && rhs.length == length
             && rhs.fcs == fcs;
     }
};

定點資料型別

四種基本定點資料類型:
  • sc_fixed
  • sc_ufixed
  • sc_fix
  • sc_ufix
sc_fixed 和 sc_ufixed 的參數是靜態的,在程式中設定後不能再修改,而 sc_fix 和 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 option);
  • sc_ufix y(list of option);
wl:字長,總位元數,必須大於 0
iwl:整數部分字長,可以是正數、負數,也可以大於總字長
q_mode:量化模式。 超出精度時根據量化模式對尾數進行取捨
o_mode:溢位模式。 超出範圍時根據溢出模式對資料進行處理
n_bits:飽和位元的尾數。 僅用於具有飽和行為的溢出模式下飽和位元的位數

量化模式:


定點資料類型的量化範例:
  • sc_fixed<4, 2> x;
  • sc_fixed<3, 2, SC_RND_ZERO, SC_SAT> y;
  • x = 1.25;
  • y = x; // 這裡發生了量化
x 的值:二進位為 01.01,十進位為 1.25
y 的值:二進位為 01.0,十進位為 1.0,q=0.5,x=2.5q

飽和模式:


定點資料型別飽和範例:
  • sc_fixed<4, 4> x;
  • sc_fixed<3, 3, SC_TRN, SC_SAT> y;
  • x = 5;
  • y = x; // 這裡發生飽和,因為 y 的範圍是 -4~3,而 x 為 5
x 的值:二進位為 0101,十進位為 5
y 的值:二進位為 011,十進位為 3,q=1


沒有留言:

張貼留言

*******【WSL教學】在Windows上執行Linux + VSCode

安裝WSL: 以管理員身份運行PowerShell來開啟此功能。要做到這一點,您可以在Windows搜索欄中輸入“PowerShell”,然後右鍵單擊Windows PowerShell,選擇“以管理員身份運行”。 在PowerShell中,輸入以下指令以安裝WSL。 wsl -...