VHDL Frequenzteiler undefinierte Variable

Gast #3501551
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
Gast #3501598
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?
Moderator (Firma: Titel) Persönliche Seite #3501932
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]...

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