Hallo!
Wenn sich mal jemand wundern sollte, warum in der Simulation aus dem
DCM_CLKGEN (nicht DCM_SP, nicht DCM_ADV) nix rauskommt, dann liegt es
möglicherweise daran, das der Eingang FREEZEDCM unbeschaltet ist.
Im Simulationsmodell wird er zwar intern auf 'L' gezogen, aber das geht
bei der Abfrage des Wertes schief (DCM_CLKGEN.vhd 1.23 2011/06/23, Zeile
400, ISE 13.3).
Außerdem besitzt der DCM_CLKGEN einen internen Oszillator. Wenn die
Simulation automatisch aufhören soll, muß man den Oszillator anhalten
(RST = '1').
Meine (nun simulativ funktionierende) Instanziierung sieht so aus:
1 | -- pragma translate_off
|
2 | dcm_reset <= simulation_stop;
|
3 | -- pragma translate_on
|
4 |
|
5 | ...
|
6 |
|
7 | -- use DCM_CLKGEN instead DCM_SP, because enhanced mul/div range
|
8 | dcm_clkgen_i0: dcm_clkgen
|
9 | generic map (
|
10 | clkfx_divide => 125,
|
11 | clkfx_multiply => 88,
|
12 | clkin_period => 8.0
|
13 | )
|
14 | port map (
|
15 | rst => dcm_reset,
|
16 | freezedcm => '0', -- force '0' for working simulation
|
17 | clkin => clk_125,
|
18 | clkfx => dcm_clkgen_i0_clkfx
|
19 | );
|
Duke