2013-10-16 229 views
0

我讀了UInt(1)指的是一個1位的十進制文字。我很困惑什麼UInt(0)可能意味着什麼。這是在去如下計數器代碼中使用: -UInt(0)是什麼意思?

package TutorialSolutions 

    import Chisel._ 

    object Counter {` 

    `def wrapAround(n: UInt, max: UInt) = `  

     Mux(n > max, **UInt(0)**, n) 

     // ---------------------------------------- \\ 
     // Modify this function to increment by the 
     // amt only when en is asserted 
     // ---------------------------------------- \\ 
     def counter(max: UInt, en: Bool, amt: UInt) = {  
     val x = Reg(init=**UInt(0, max.getWidth)**) 
     when (en) { x := wrapAround(x + amt, max) } 


     x 
    } 

有人能解釋一下這兩個突出顯示的工作陳述(由星號爲界)?

回答

3

UInt定義了一個無符號整數。 UInt(value)定義了一個1位十進制文字,所以UInt(0)UInt(1)是分別保存0和1的1位寬整數的文字。 UInt(value, width)允許定義文字不是1位值越大,所以從你的例子UInt(0, max.getWidth)max.getWidth位保持值0

參考創建一個無符號的整數:https://chisel.eecs.berkeley.edu/2.0.0/manual.html

0

UINT(1)指的是1價值1的位字面值

Mux (n > max, UInt(0), n) 

Mux()實質上執行「lhs = cond?UInt(0):n」。所以如果「n」大於最大值,我們環繞並返回值爲0(類型爲UInt)。