2013-10-16 5 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 
    } 

은 누군가가 문 (별표에 의해 제한) 강조 두 가지의 작업을 설명 할 수 있습니까?

답변

0

UINT (1) (1)을 의미한다 : UInt(value, width)은 예로부터 UInt(0, max.getWidth)max.getWidth 비트 0

참조하는 값을 들고 부호없는 정수를 생성 있도록, 1 비트보다 큰 값 리터럴을 정의 할 수 있도록 -bit 리터럴 값 1입니다.

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

Mux()는 본질적으로 "lhs = cond? UInt (0) : n"을 수행합니다. 따라서 "n"이 max보다 큰 경우 랩 어라운드하고 값 0 (UInt 유형)을 반환합니다.