2016-03-20 3 views
4

Darf ich wissen, was ist dieses Symbol >>> in Verilog. Wann sollte ich es benutzen? Vielen Dank!Was ist >>> Symbol in Verilog?

beispiels

always @(posedge Clock) begin 
    if (Clear) begin 
    a < = c>>>8; 
    b < = d>>>16; 
    end 
end 

Antwort

4

Es ist eine arithmetic right shift operator (Seite 19-20 des Links sehen). Es ist der umgekehrte Fall von Java (Java >> ist arithmetische Rechtsverschiebung, während >>> logische Verschiebung ist).

arithmetische Rechtsverschiebung Fall zu behandeln, wenn die Zahl rechts verschoben positiv/negativ mit diesem Verhalten ist:

Umschalt rechts angegebene Anzahl von Bits mit dem Wert des Vorzeichenbits zu füllen, wenn Ausdruck signiert ist, füllen othewise mit Null

Zur Veranschaulichung, wenn Sie signed Ausdruck mit Wert haben, sagen so:

1000 1100 
--------- >>> 2 
1110 0011 //note the left most bits are 1 

Aber für unsigned:

1000 1100 
--------- >>> 2 
0010 0011 

Die Linke wird mit 0 gefüllt werden.

+0

Hallo Ian, darf ich dich fragen, wenn ich 2 Bits verschiebe, bin ich richtig zu sagen, dass ich teile 4. In ähnlicher Weise, wenn ich 8 Bit verschiebe bin ich dividiert durch 256? Vielen Dank! – user292965

+0

@ user292965 Hallo, du bist es wieder. ;) Du bist nah dran .. Es scheint * so zu sein ... denn wenn das nach rechts verschobene Bit in Zahl übersetzt wird, wird es die Hälfte des Originals. Angenommen, die arithmetische Verschiebung würde jedoch ... Es gibt einen Fall, in dem das Verschieben nicht gleich dem Dividieren ist, zum Beispiel im Falle einer "logischen Rechtsverschiebung" negativer Zahlen. – Ian

+0

Ich habe es gerade versucht :). Weißt du, ob das Endresultat nach dem Runden auf oder abrunden? Von Ihrem Beispiel sieht es aus wie es aufrunden. – user292965