Apa perbedaan antara >>
dan >>>
di Verilog / sistem Verilog? Saya tahu ==
tes hanya untuk 1 dan 0, sedangkan ===
tes untuk 1, 0, X, Z. Jadi bagaimana itu mirip dengan operator shift?
8
Apa perbedaan antara >>
dan >>>
di Verilog / sistem Verilog? Saya tahu ==
tes hanya untuk 1 dan 0, sedangkan ===
tes untuk 1, 0, X, Z. Jadi bagaimana itu mirip dengan operator shift?
Ini tidak mirip dengan ==
/ ===
, jika operan tangan kiri ditandatangani kemudian >>>
melakukan ekstensi tanda.
reg signed [9:0] b = 10'sb11_0101_0101;
reg signed [9:0] a_signed;
reg [9:0] a_unsigned;
always_comb begin
a_signed = b >>> 2;
a_unsigned = b >> 2;
end
Hasil:
#a_signed 1111010101
#a_unsigned 0011010101
Contoh tentang EDA Playground .
>>
dan>>>
operator ... jahat.integer
) dan operator pergeseran aritmatika hanya diperkenalkan ke Verilog di Verilog-2001.>>
berarti perubahan logis pada tahun 1985 (diambil dari Pascal, yaitu dari tahun 1970). Jadi itu harus digunakan>>>
untuk perubahan aritmatika.Menurut IEEE1800-2012
>>
adalah pergeseran logis biner, sedangkan>>>
pergeseran aritmatika biner.Pada dasarnya, pergeseran aritmatika menggunakan konteks untuk menentukan bit pengisian, jadi:
>>>
) - menggeser jumlah bit yang ditentukan, isi dengan nilai bit tanda jika ekspresi ditandatangani , jika tidak, isi dengan nol,<<<
) - menggeser jumlah bit yang ditentukan ke kiri, isi dengan nol.Di sisi lain, shift logis (
<<
,>>
) selalu mengisi posisi bit yang kosong dengan nol.Sebagai contoh:
sumber
c
: jika Anda menggunakanreg [4:0] c
, Anda akan mendapatkannya5'b00101
, tidak5'b11101
. Memperbarui contoh untuk memperjelas jenisnya akan bermanfaat, saya pikir.