1. 程式人生 > >Chisel3 - 複合資料型別

Chisel3 - 複合資料型別

https://mp.weixin.qq.com/s/rXYqiZKuBpAYL8R94zxgRA

  Chisel允許使用者根據需要,把基本資料型別組合成為複合資料型別使用。如C語言裡面的結構體,這樣可以極大的簡化Verilog中輸入輸出介面的宣告和使用。   複合資料型別相關的類如下: 其中: 1. 實線箭頭為繼承父類(extends); 2. 虛線箭頭為實現介面(with); 3. 傾斜字型的類為抽象類(abstract); 4. 標註為葉子(leaf)的為最終類(final);  
  1. Aggregate   An abstract class for data types that solely consist of (are an aggregate of) other Data objects. 所有複合資料型別的父類。   2. VecLike   A trait for Vecs containing common hardware generators for collection operations.  
3. Vec   用於建立一個數據型別為T的陣列,T為Data的子類。   4. Record   用於存放組成複合型別的基本資料型別變數的<名稱,型別>鍵值對。實際使用中用不到。   5. Bundle   Base class for data types defined as a bundle of other data types. 抽象類,作為複合資料型別的基類,用於自定義複合資料型別(匿名類或命名類)。
  如:
class MyModule extends Module {
  val io = IO(new Bundle {
    val in = Input(UInt(64.W))
    val out = Output(SInt(128.W))
  })
}
  再如:
class MyFloat extends Bundle {
val sign = Bool()
val exponent = UInt(8.W)
val significand = UInt(23.W)
}
val x = new MyFloat()
val xs = x.sign