> hast Du noch den kleinen Codeausschitt für mich?
Folgenden Code hatte ich mal geschrieben:
1 | -- Beschreibung
|
2 | -- Generiert einen verjitterten Clock für Testbenches
|
3 |
|
4 | library ieee;
|
5 | use ieee.std_logic_1164.all;
|
6 | use ieee.math_real.all;
|
7 |
|
8 | entity jittered_clk_tbmod is
|
9 | generic
|
10 | (
|
11 | random_initial : positive -- Jede Zahl an dieser Stelle erzeugt eine andere Random-Folge für den Jitter
|
12 | );
|
13 | port
|
14 | (
|
15 | clk_rate : in natural; -- Taktrate in Hz
|
16 | clk_dutycycle : in real; -- Typischer Weise 0.5
|
17 | clk_jitter : in real; -- max. "clk_dutycycle / 2" oder "(1-clk_dutycycle) / 2"
|
18 | -- Ausgang
|
19 | clk_out : out std_logic := '0'
|
20 | );
|
21 | end jittered_clk_tbmod;
|
22 |
|
23 |
|
24 | architecture behavior of jittered_clk_tbmod is
|
25 |
|
26 | signal nom_clock : std_logic; -- Nominaler Grundtakt
|
27 | signal random_seed1 : positive := random_initial; -- Hilfssignale für Zufalssignalgenerierung
|
28 | signal random_seed2 : positive := random_initial+1;
|
29 | signal random_jitter : real := 0.1;
|
30 |
|
31 | begin
|
32 |
|
33 | nom_clock_proc: process
|
34 | begin
|
35 | nom_clock <= '0';
|
36 | wait for 1 ns;
|
37 | nom_clock <= '1' after (0.5 sec / clk_rate) - 1 ns;
|
38 | wait for (1.0 sec / clk_rate) - 1 ns;
|
39 | end process;
|
40 |
|
41 | master_clk_proc: process
|
42 | variable vseed1, vseed2 : positive;
|
43 | variable vjitter : real;
|
44 | begin
|
45 | wait until rising_edge(nom_clock);
|
46 | vseed1 := random_seed1;
|
47 | vseed2 := random_seed2;
|
48 | vjitter := random_jitter;
|
49 | uniform(vseed1, vseed2, vjitter);
|
50 | clk_out <= '0';
|
51 | clk_out <= '1' after (vjitter * clk_jitter + 0.25) * 1.0 sec / clk_rate;
|
52 | wait until falling_edge(nom_clock);
|
53 | uniform(vseed1, vseed2, vjitter);
|
54 | clk_out <= '0' after (vjitter * clk_jitter + clk_dutycycle - 0.25) * 1.0 sec / clk_rate;
|
55 | random_seed1 <= vseed1;
|
56 | random_seed2 <= vseed2;
|
57 | random_jitter <= vjitter;
|
58 | end process;
|
59 |
|
60 | end behavior;
|
Vielleicht ist ja was für Dich dabei! Kleine Anpassungen sind bei Deinen
Taktraten sicherlich nötig. Bei mir ging es damals um vergleichsweise
langsamere Takte.