1
我有一個名爲sin_hall2的9位有符號線。爲什麼這個verilog關係語句返回true?
該聲明返回true。 sin_hall2 [8:0]> 9'd1。
當我看着我的模擬,sin_hall2 = -169。我認爲這是Verilog處理比較負數的方式,但是我做錯了什麼。當我做sin_hall2 [8:0]> 9'sh001時,我會收到相同的結果。
我有一個名爲sin_hall2的9位有符號線。爲什麼這個verilog關係語句返回true?
該聲明返回true。 sin_hall2 [8:0]> 9'd1。
當我看着我的模擬,sin_hall2 = -169。我認爲這是Verilog處理比較負數的方式,但是我做錯了什麼。當我做sin_hall2 [8:0]> 9'sh001時,我會收到相同的結果。
帶符號的數字使用二進制補碼格式。即如果解釋爲無符號,它們將顯示爲大數字,即無符號數字範圍的後半部分。
如果比較的任何部分都是無符號的,那麼比較結果是無符號的。 選擇位寬,即使整個範圍,是無符號
reg signed [8:0] sin_hall2;
initial begin
sin_hall2 = -9'd169 ;
$display("Comparison unsigned : %b ", sin_hall2 > 9'd1);
$display("Comparison cast : %b ", sin_hall2 > $signed(9'd1));
$display("Comparison signed : %b ", sin_hall2 > 9'sd1);
$display("Comparison signed [8:0]: %b ", sin_hall2[8:0] > 9'sd1);
end
返回:
# Comparison unsigned : 1
# Comparison cast : 0
# Comparison signed : 0
# Comparison signed [8:0]: 1
請顯示所有相關代碼,包括'sin_hall2'的定義 – Morgan