chisel是在scala的基礎上建立起來的,初學chisel可能有點摸不著頭腦,建議去菜鳥學學scala先。碼一下scala的筆記,賊適合入門。
scala是乙個物件導向的程式語言,了解這一點很重要,這也是scala和chisel的乙個很大的優勢。
變數是物件。
運用val
宣告的常量也是物件。
甚至literal也是物件(例如,1,2,3,字串等)。
函式本身也是物件。這之後會詳細說明。
物件(object)是類(class)的例項。
事實上,物件導向中的物件(object) 在scala中被稱為例項。
在定義乙個類的時候,需要指定:
類中的資料(val
,var
)
類的操作,稱為方法(method)或者函式(function)。這些方法可以通過該類的例項來呼叫。
類可以從其他類繼承。
被繼承的類叫做父類,繼承的類叫做子類。
在這種情況下,子類繼承父類的所有資料成員和方法。
子類也可以擴充套件或過載從父類繼承的這些方法。
類也可以繼承自特徵(traits)。traits可以被看作是輕量級的類,它可以允許多繼承。
(singleton)object物件在scala中是乙個特殊的類。
它們不是上面所說的物件,上面那些我們稱之為例項。
下面是乙個建立scala類的例子:
// wrapcounter從0開始計數,一直到最大值然後歸零
class wrapcounter(counterbits: int)
counter
} println(s"counter created with max value $max")
}
在上面的**中:
所以在這裡,方法inc的返回值就是counter。
println(s'counter created with max value $max')
在標準輸出stdout中列印出乙個字串。由於println直接位於定義類的**塊中,所以它會在每一次建立該類的例項時都會被執行。
這裡列印的字串是乙個被解析(interpolated)的 字串。
除非您正在除錯,否則應該避免類似這樣每次建立類的例項時都要列印的內容,以避免標準輸出顯示了太多東西。
chisel學習筆記2
第乙個chisel模組 1 直接上 chisel 定義乙個模組 class passthrough extends module io.out io.in 以上 定義了乙個名字叫做passthrough的chiselmodule,它有乙個4位元的輸入,名字叫做in,還有乙個4位元的輸出out。這個模...
Chisel 學習筆記(七)
chisel 在chisel中,我們既可以使用scala中自帶的集合,包括list,seq,arraybuffer list的使用方式在學習筆記 一 中有所體現 seq與list類似,但是在chisel中,我們更常使用seq來表述某個模組的引數 arraybuffer的特性是不用描述出長度,且通過 ...
Chisel 學習筆記(四)
chisel chisel中的所有類都要繼承module 類中必須要定義io型別,用來表示該模組的輸入輸出埠 每乙個輸入輸出埠,需要說明是有符號數還是無符號數,以及資料位寬 class myoperatorstwo extends module class myoperators val lengt...