VHDL schnipsel count slice
Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Größer, Kleiner oder Gleich
Ein Vergleich ob eine Binärzahl größer oder kleiner als eine andere ist, benötigt in der Regel mehr Logikgatter, als der Vergleich zweier Binärzahlen auf Gleichheit. Sogar bis zum Dreifachen der Slices, wie ein Blick in das Kapitel "Slice Count" in dem Xilinx Library Guide beweist! Ist eine der beiden Zahlen ein Zähler, lassen sich die Operatoren (Magnitude comperator) "größer" und "kleiner" leicht zu einen Gleichheitsoperator umschreiben:
PROCESS(clk)
--snip
count_rst_del_q <= count_rst;
IF count_rst = '1' THEN
count <= "00000000000";
ELSE
count <= count + 1;
END IF;
IF (count > 10) AND (count < 20) THEN
somesignal <= '0';
ELSE
somesignal <= '1';
END IF;
--snip
END PROCESS;
Die ">" und "<" werden zu "=" durch folgenden Code:
IF count = 20 OR count_rst_del_q = '1' THEN
somesignal <= '1';
ELSIF count = 11 THEN
somesignal <= '0';
END IF;
Je nach Optimierungsgüte der Tools wird der Code mehr oder weniger schneller und dadurch meist deutlich kleiner.