基本上我在我的模塊中有下面的代碼。我想將數字更改爲2的補碼負數。行爲邏輯順序,代碼無法正常工作?
例如, 100變成-100,-200變成200.
我找到的一個快捷方式是從LSB讀取,直到達到'1',然後翻轉它後面的所有位。我試圖用最少的性能折衷一個實現32位轉換器(聽說NUM < =不(NUM)+ 1是相當沉重的資源)
flipBit <= '0'; -- reset the flip bit
FOR i IN 0 TO 31 LOOP
IF flipBit = '1' THEN
tempSubtract(i) <= not Operand2(i);
ELSE
tempSubtract(i) <= Operand2(i);
END IF;
IF Operand2(i) = '1' THEN
flipBit <= '1';
END IF;
END LOOP;
然而,這一切它對不是整個事情。另外,當我做num < =不是(num)+1時,它的速度很慢,它也給我亂碼。
誰能告訴我什麼是錯的?謝謝。
您應該使flipBit成爲變量而不是信號,因此它在for循環中得到更新,而不是在過程結束時更新。 – hamon
它的工作原理。這對我來說很粗心。謝謝! – charpi