if-else Frage in VHDL?

Gast #872677
Lesenswert?

Hallo Leute,

kann mir jemand helfen und erklären wo der Unterschied in einem Prozess 
zwischen ein "if" allein und "if else" ist? wird das signal 
"start_show_disp_data" im ersten Fall nicht gespeichert und im 2ter Fall 
doch schon, oder werden die signale shDD_ready,show_ram davon betroffen?

**************************  1 Fall: nur if  *********
      ...
      if start_show_disp_data = '1' then
        ShDD_ready <= '1';
        show_ram <= '1';
        ShDD_state <= ShDD_ST2 ;
      end if;
      ...
*************************** 2 Fall: if+else *********

      ...
      if start_show_disp_data = '1' then
        ShDD_ready <= '1';
        show_ram <= '1';
        ShDD_state <= ShDD_ST2 ;
      else
        ShDD_ready <= '0';
        show_ram <= '0';
        ShDD_state <= ShDD_ST1 ;
      end if;
      ...






*****************************************************

  SHOWDISPDATA_FSM: process (clock_fpga, reset)
  begin
  if reset='1'  then
     ShDD_state <= ShDD_ST1;
     ShDD_ready <= '0';
     show_ram <= '0';

  elsif rising_edge(clock_fpga) then

    case ShDD_state is
    when ShDD_ST1 => -- warten auf start gegenfalls ready signal setzen
      if start_show_disp_data = '1' then
        ShDD_ready <= '1';
        show_ram <= '1';
        ShDD_state <= ShDD_ST2 ;
      else
        ShDD_ready <= '0';
        show_ram <= '0';
        ShDD_state <= ShDD_ST1 ;
      end if;

    when ShDD_ST2 => -- unmittelbar show_ram = 0;

        ShDD_ready <= '1';
        show_ram <= '0';
        ShDD_state <= ShDD_ST3 ;


    when ShDD_ST3 => -- warten auf Datensignal
      if  cmd_ndata = '0' then
        ShDD_ready <= '0';
        show_ram <= '0';
        ShDD_state <= ShDD_ST1 ;
      elsif  adv_in_ud = '0' or new_command_occured = '1' then
        ShDD_state <= ShDD_ST1 ;
        ShDD_ready <= '0';
        show_ram <= '0';
      end if;

    end case;
  end if;
  end process;

MFG
Gast #872690
Lesenswert?

"IF ELSE" verzeigt in einen Konstrukt, der vollständig alternativ zum 
IF-Pfad abläuft, also nur dann abgefragt wird, wenn der erste IF nicht 
greift, während ein zweites IF parallel zum ersten ausgeführt wird, also 
auch dann gfs abgearbeitet wird, wenn auch der erste schon gegriffen 
hat.
Gast #872702
Lesenswert?

Danke. Ja Du hast recht.Bei der successiven "if"s ist ein 
paralleliesierung da, aber ich meine was passiert auf der RTL-Ebene? 
welche signale werden gespeichert (FFs) und welche nicht, bei beiden 
Fälle?

MFG

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