2024年3月14日 星期四

*******SystemC-- 資料類型

基本資料類型



四值邏輯 sc_logic

數位系統中最常見的四個邏輯為:


可以對 sc_bit / sc_logic 類型進行賦值。

在進行代數操作時 sc_bit 可與 C++ 的 bool 型別混合使用,但建議的做法是多使用 bool 型。

sc_bit 只有 0 和 1 兩個值。

sc_logic 資料型別比 sc_bit 多兩個值 X 和 Z,它所支援的運算與 sc_bit 一樣,如下:

  • 位元操作
    • 與 &
    • 或 |
    • 異或 ^
    • 取反 ~ (沒有取反賦值)
  • 賦值操作
    • 與賦值 &=
    • 或賦值 |=
    • 異或賦值 ^=
    • 直接賦值 =
  • 邏輯運算
    • 等於 ==
    • 不等於 !=

任意寬度整數 sc_int

SystemC 中引入了 sc_int<W> 和 sc_uint<W> 來實現 1 到 64 位元中任意寬度的整型資料類型,W<=64。 以及 sc_bigint 和 sc_biguint 來實現任意寬度的整數運算。

sc_int<34> a; // 34 位元有符號整數型
sc_uint<60> b; // 60 位元無符號整數

除最基本操作外,還支援以下操作:


位減操作:



sc_int<4> x, y;
sc_int<8> z;
z = (x, y); // 串聯
x = z.range(7, 4); // z的高4位
bool temp = x.or_reduce(); // 所有位元異或



sc_biguint<128> b1;
sc_biguint<64> b2;
sc_biguint<152> b3;
b3 = b1 * b2; // 結果有192位,只有低152位被賦值給b3

當一個無符號整數 sc_uint<M> 被賦值給有符號整數 sc_int<N> 時,uint 先擴展為 64 位元(高位直接填入零),然後從低位開始取 N 位元賦值為 sc_int。

當 sc_int 被賦值給 sc_uint 時,系統首先將它依符號(負數高位填入 1,正數填 0)擴展為 64 位,然後從低位開始取 M 位賦值給 sc_uint。

沒有留言:

張貼留言

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

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