2016-11-08 7 views
2

Я пытаюсь изучить Chisel3 с примером GCD, приведенным в official web page. В этом примере используется оператор с именем -%, что это значит? Это не объяснено на Wiki . И Cheatsheet говорит, что «вычитание» является нормальным символом деления «-».Что означает «&» и «%» для операторов - &, -%, + &, +% в Chisel3?

Тогда в чем разница между простой выделкой '-' и процентом '-%'?

[править]

Хорошо, я нашел определение этих функций под chisel3 code:

// TODO: refactor to share documentation with Num or add independent scaladoc 
    def unary_- : UInt = UInt(0) - this 
    def unary_-% : UInt = UInt(0) -% this 
    def +& (other: UInt): UInt = binop(UInt((this.width max other.width) + 1), AddOp, other) 
    def + (other: UInt): UInt = this +% other 
    def +% (other: UInt): UInt = (this +& other) tail 1 
    def -& (other: UInt): UInt = binop(UInt((this.width max other.width) + 1), SubOp, other) 
    def - (other: UInt): UInt = this -% other 
    def -% (other: UInt): UInt = (this -& other) tail 1 
    def * (other: UInt): UInt = binop(UInt(this.width + other.width), TimesOp, other) 
    def * (other: SInt): SInt = other * this 
    def/(other: UInt): UInt = binop(UInt(this.width), DivideOp, other) 
    def % (other: UInt): UInt = binop(UInt(this.width), RemOp, other) 

    def & (other: UInt): UInt = binop(UInt(this.width max other.width), BitAndOp, other) 
    def | (other: UInt): UInt = binop(UInt(this.width max other.width), BitOrOp, other) 
    def^(other: UInt): UInt = binop(UInt(this.width max other.width), BitXorOp, other) 

С & оператором результат вычитания или добавления будет размером Bigest операнда плюс один бит , Но с оператором% результатом операции будет размер самого большого операнда ... как с нормальным + или -. Тогда в чем разница между - и -% и между + an +%?

ответ

2

Приносим извинения за отсутствие этой информации на странице оператора Wiki, я добавлю ее в ближайшее время.

Вы попали в ноготь на голове с редактирования: +& и -& расширяют операторы в том, что ширина результата равен размеру самого широкого операнда плюс 1. +% и -% не являются операторы в что ширина результата равна самому широкому операнду.

+ только псевдонимы до +% пока - aliases до -%.