Forum: FPGA, VHDL & Co. Signal auf Port


von Thomas (Gast)


Lesenswert?

Hallo zusammen,

kann mir bitte jemand sagen wo hier der Fehler in dem ganzen ist?

Der Simulator von Xilinx braucht unheimlich lange(er wird einfach nicht 
fertig)
1
entity dff_main is
2
  port( mainCLK    :   in   std_logic;
3
      DATA      :  out  std_logic_vector(15 downto 0)
4
  );
5
end dff_main;
6
...
7
signal  WriteCounter2  : std_logic_vector(0 to 15);
8
...  
9
WriteData: process(mainCLK)
10
  begin
11
    case zustand is
12
      when Z0=>      WriteCounter2<="0000000000000000";
13
      when Z1=>      WriteCounter2<="0000000000000000";
14
      when Z2=>      WriteCounter2<="0000000000000000";
15
      when Z3=>      DATA      <= WriteCounter2;
16
                  WriteCounter2<=WriteCounter2+1;
17
                  
18
    end case;
19
  end process WriteData;

Danke

Gruß

Thomas

von Jan M. (mueschel)


Lesenswert?

Thomas schrieb:
> WriteData: process(mainCLK)

mainCLK wird im gesamten Prozess nicht benutzt?

>   begin
>     case zustand is
>       when Z0=>      WriteCounter2<="0000000000000000";
>       when Z1=>      WriteCounter2<="0000000000000000";
>       when Z2=>      WriteCounter2<="0000000000000000";
>       when Z3=>      DATA      <= WriteCounter2;

Da es sich hier um einen kombinatorischen Prozess handelt, muss jedes 
Signal in jedem moeglichen Fall zugewiesen werden. Du weisst DATA jedoch 
nur einen Wert zu, wenn er gerade im Zustand Z3 ist - was soll in den 
andern Faellen passieren?

>                   WriteCounter2<=WriteCounter2+1;
Ein Counter in einem kombinatorischen Prozess kann nicht funktionieren. 
Wann genau soll er denn weiterzaehlen?

Ich nehme mal an, du hast einfach ein
if rising_edge(mainCLK) then ... end if;
vergessen in diesem Prozess?

von Thomas (Gast)


Lesenswert?

Da hat der Jan, wollkommen recht gehabt . :)

Danke

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.