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