學了chisel有一段時間了,最近發現一些基礎的概念還是不行不清楚,絕了。。。。碼一下供參考
在chisel裡,所有物件都應該由val型別的變數來引用,因為硬體電路的不可變性。因此,乙個變數一旦初始化時繫結了乙個物件,就不能再發生更改。但是,引用的物件很可能需要被重新賦值。例如,輸出埠在定義時使用了「=」與埠變數名進行了繫結,那等到驅動該埠時,就需要通過變數名來進行賦值操作,更新資料。很顯然,此時「=」已經不可用了,因為變數在宣告的時候不是var型別。即使是var型別,這也只是讓變數引用新的物件,而不是直接更新原來的可變物件。
為了解決這個問題,幾乎所有的chisel類都定義了方法「:=」,作為等號賦值的代替。所以首次建立變數時用等號初始化,如果變數引用的物件不能立即確定狀態或本身就是可變物件,則在後續更新狀態時應該用「:=」。從前面講的操作符優先順序來判斷,該操作符以等號結尾,而且不是四種邏輯比較符號之一,所以優先順序與等號一致,是最低的。例如:
val x = wire(uint(4.w))
val y = wire(uint(4.w))
x := "b1010".u // 向4bit的線網x賦予了無符號數10
y := ~x // 把x按位取反,傳遞給y
你學廢了嗎?? Java中 和 的區別
第十一,short s1 1 s1 s1 1 有什麼錯?short s1 1 s1 1 有什麼錯?引出一下討論。賦值運算子,在編譯器將右邊的表示式結果計算出來後,和左邊的變數型別比較精度,如果左邊的變數精度低於右邊的結果的精度,編譯器會顯式的報錯,告訴程式設計師去強制轉型。所以s1 s1 1出錯 最...
Linux shell中 和 的區別
shell中和的區別 結構比結構更加通用。這是乙個擴充套件的test命令,支援萬用字元。在 和 之間所有的字元都不會發生檔名擴充套件或者單詞分割,但是會發生引數擴充套件和命令替換。使用 條件判斷結構,而不是 能夠防止指令碼中的許多邏輯錯誤,比如,和 這些操作符能夠正常存在於這個條件判斷中,但是如果出...
ibatis中 和 的區別
在ibatis中我們使用sqlmap進行sql查詢時需要引用引數,在引數引用中遇到的符號 和 之間的區分為,可以進行與編譯,進行型別匹配,而 不進行資料型別匹配,例如 select from table where id id 其中如果欄位id為字元型,那麼 id 表示的就是 id 型別,如果id為...