VHDL schnipsel count slice

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

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.