VHDL einfache Frage zu if-elsif statement

OP #388154
Lesenswert?
• ▲
▼
Hallo,
mal ne eigendlich einfache Frage zum If-Elsif Statement. Wird in diesem
nachstehenden Code alles ausgeführt, oder wird die If Anweisung
verlassen, sobald eine Bedingung erfült wurde? Es soll bei jedem Clock
ein State ausgeführt werden (State-Machine). Ist es hier so, das z.B
state = 0 ist, und somit der erste block ausgeführt wird, der dann
state auf 1 setzt und somit der elsif zweig auch aktiv wird und das
ganze in einer Schleife endet?

process(clk_in)
begin
  if rising_edge(clk_in) then
    if state = 0 then
      adc_clock <= '1';
      state <= 1;
    elsif state = 1 then
      adc1_en <= '1';
      adc_clock <= '0';
      state <= 2;
    elsif state = 2 then
      ram_wr <= '0';
      state <= 3;
    elsif state = 3 then
      ram_wr <= '1';
      adc1_en <= '0';
      state <= 4;
    elsif state = 4 then
      adc2_en <= '1';
      state <= 5;
    elsif state = 5 then
      ram_wr <= '0';
      state <= 6;
    elsif state = 6 then
      ram_wr <= '1';
      adc2_en <= '0';
      state <= 0;
    end if;
end if;
end process;

mfg
Stefan
Gast #388157
Lesenswert?
• ▲
▼
es gibt sogar zwei Gründe wieso immer nurein Zustand verwendet wird:
1. Es wird immer nur ein Zweig der if anwendung ausgewertet, und zwar
der erste, dessen bedingung erfüllt ist.
2. Der neue State ist wie schon gesagt erst zu Beginn des nächsten
Taktes gültig, da state ja ein signal und keine variable ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren