wire [31:0] depth;
wire mode_u2 = 1'h0;
assign depth = 'h80 + (~mode_u2);
Ben derinliğine bir ekran yapmak ve VCS (2014.12-1)
$display("depth is 0x%2x", depth);
ile simüle ederseniz
0x7f
yerine 0x81
bekleniyor. ~ mode_u2, eksi 1 olarak kabul edildi gibi görünür.
~mode_u2
değerini !mode_u2
olarak değiştirirsem. 0x81 beklendiği gibi olsun. i wire mode = ~mode_u2
yapmak ve daha sonra assign depth = 'h80 + (~mode)
yerine 0x80
arasında, ben
0x7e
Burada bir şey eksik alırsanız daha ilginç olan şey
mı?
Birisi neden ~
+
işleminde bu şekilde davrandığını açıklayabilir mi? Yoksa bu simülasyon ve sentez farklı bir durum mu?
Çok teşekkürler!
Willie
Sanırım doğru yoldasınız, ancak 32 bitlik uzantı 32 32h0000_0000'dür ve bit-bit negatifliği '32'hffff_ffff' dır. – toolic
@toolic: Teşekkürler. Sabit. – Ari
@Ari: Ben de aynı şeyi düşünüyordum, bu sadece olası bir açıklama olmalı. Ancak, bahsetmeye değer bir şey, eğer 0x80 + tüm fs yapıyorsa, o zaman sonuç derinliğinin 33 bitini yazdığım zaman, MSB 1 DEĞİLDİR? ve ayrıca, + (~ modu) yaptığınızda, mod ~ mode_u2 olduğundan, neden ~ 32'h0000_0001, değil ~ 32'hffff_ffff ekliyor? – shakimura