Forum: FPGA, VHDL & Co. VHDL Frequenzteiler undefinierte Variable


von Holzbert (Gast)


Lesenswert?

Ich habe ein Beispielprogramm vor mir, welches ich nicht ganz verstehe, 
da die Variable cnt_max_g zwar deklariert, aber nicht definiert ist. Das 
Programm lässt sich ohne Fehler kompilieren.
Meine Frage ist, ob es so stimmt, oder ob man cnt_max_g doch einen Wert 
zuweisen muss damit das Programm korrekt funktioniert.
1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.std_logic_unsigned.all;
4
use ieee.std_logic_arith.all;
5
use ieee.numeric_std.all;
6
use ieee.math_real.all;
7
--========================================
8
entity CLK_ENA is 
9
  generic (cnt_max_g : natural);
10
  port
11
  (
12
    RESET_n : in  std_logic;
13
    CLK     : in  std_logic;
14
    ENA     : out std_logic
15
  );
16
end CLK_ENA;
17
  
18
architecture rtl of CLK_ENA is
19
  constant cbw : natural := natural(log2(real(cnt_max_g))+1.0);
20
  signal counter : natural range 0 to 2**cbw-1;
21
  
22
begin
23
  process (CLK, RESET_n)
24
    begin
25
      if(RESET_n = '0') then
26
        counter <= 0;
27
        ENA <= '0';
28
      else if (CLK' event and CLK = '1') then
29
        if (counter < cnt_max_g) then
30
          ENA <= '1';
31
          counter <= counter +1;
32
        else
33
          ENA <= '1';
34
          counter <= 0;
35
        end if;
36
      end if;
37
      end if;
38
  end process;
39
end rtl;

mfG
Holzbert

: Bearbeitet durch Moderator
von foobär (Gast)


Lesenswert?

cnt_max_g is ein "generic" und keine Variable (-> siehe Literatur). Im 
vorliegendem Fall muss dieser Parameter beim instanziieren angeben 
werde, da kein Standardwert angeben.

BTW: Programm? Kompilieren? ENA immer '1' außer beim Reset?

von Marius S. (lupin) Benutzerseite


Lesenswert?

Holzbert schrieb:
> Ich habe ein Beispielprogramm vor mir

Wo hast denn das ausgegraben? Sieht jetzt nicht unbedingt gut aus...
Ein paar zu viele Libraries (vor allem std_unsigned sollte man meiden) 
eingebunden und ENA ist immer 1 außer bei Reset.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Marius S. schrieb:
> Ein paar zu viele Libraries
Siehe den Beitrag "IEEE.STD_LOGIC_ARITH.ALL obsolete"
und den Beitrag "std_logic_vector auf integer umwandeln"
und noch einige andere...

> ENA ist immer 1 außer bei Reset.
Zum Glück gibts Simulatoren, da sieht man sowas sofort... ;-)

Und nimm besser die Token [vhdl] statt [code]...

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.