2013-01-07 25 views
6

I var bir kayıt şekilde ilan mantıksal kayması gibi davranır: Ben diziye 2'nin iltifat numarasını yerleştirmek ve aritmetik olarak sayı vardiyaAritmetik vardiya bakılmaksızın imzalanmış değişken

logic signed [15:0][2:0][15:0] registers; 

, onu yerine mantıksal kaymalar: sayı imzalanmadığı takdirde

registers[0][0] = 16'b1000000000000000; 
registers[0][0] = registers[0][0]>>>2; 

Görünüşe göre, sistem yerine aritmetik olarak mantıksal vardiya değişecek. Ancak açıkça görebildiğiniz gibi, 'kayıtlar' kesinlikle imzalanır.

Burada ne eksik olduğumu bilen var mı?

Teşekkürler!

cevap

10

Verilog ile, bir parça seçtikten sonra, sonuç unsigned olur. İmzalatmak için parça seçimindeki $signed sistem görevini kullanın.

res = $signed(registers[0][0]) >>> 2; 
+0

Inanılmaz. Teşekkür ederim! – user1567095

İlgili konular