Forum: FPGA, VHDL & Co. Vergleichsoperation


von VHDL-Beginner (Gast)


Lesenswert?

Tag zusammen,

ich habe ein Problem und brauche dringend eure Hilfe. Ich möchte ein
Modul in VHDL schreiben, welches von aussen zwei mal 24-Bit
Daten(stellen Zahlen dar.) bekommt.
Input: feste Zahl, sich ändernde Zahl, Reset
Output: Zahl_grösser_gleich
Die einen 24-Bit sind fest vorgegeben, die anderen ändern sich ständig.
Die Daten liegen parallel an. D.h. an 48 Pins liegen die Eingangsdaten.
Nun möchte ich einen Vergleich dieser Daten untereinander machen. Wenn
die sich nun ändernde Zahl grösser als die fest vorgegebene Zahl ist,
soll das Modul den Vergleich stoppen und ein Ausgangssignal auf High
legen.
Erst durch ein Reset soll ein neuer Vergleich beginnen, wobei das
Ausgangssignal wieder auf Low heruntergesetzt wird.

Würde mich freuen, wenn Ihr mir helfen könnt.

von Daniel R. (daniel_r)


Lesenswert?

process(clk)
if rising_edge(clk) then


if variable_input > fester_input then output <= '1';
fertig.

von Daniel R. (daniel_r)


Lesenswert?

Sorry, bin ums Versehen vorzeitig auf Absenden gekommen.
Hier nochmal richtig:

process(clk)
if rising_edge(clk) then
    if reset = '1' then
       output <= '0';
    else
    if variable_input > fester_input then output <= '1';
    end if;
    end if;
end if;
end process;

von VHDL-Beginner (Gast)


Lesenswert?

wow super schnelle Antwort :)

Danke!

Eine andere Frage: Muss man in VHDL nicht jedes Bit einzeln
vergleichen?

von TheMason (Gast)


Lesenswert?

@beginner

nein muß man nicht. auch addition/subtraktion und multiplikation müssen
nicht bit-weise durchgeführt werden (wäre auch etwas schwierig :-))

gruß
rene

von Daniel R. (Gast)


Lesenswert?

Hier nal den kompletten Quellcode:

entity vergleich is
port(
  clk,reset  : in std_logic;
  festwert  : in std_logic_vector(23 downto 0);
  variabler_wert  : in std_logic_vector(23 downto 0);
  q    : out std_logic
    );
end vergleich;


architecture behavioral of vergleich is


process(clk)
if rising_edge(clk) then
  if reset = '1' then
    q <= '0';
  else
    if variabler_wert > festwert then q <= '1';
    end if;
  end if;
end if;
end process;
end behavioral;

Bit und Bytebruch

Daniel

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.