-- Bestimmung von Takt und L<E4>nge des Phasenz<E4>hlers:
--
-- Taktfrequenz: f_takt
-- Phasenz<E4>hler: phase
-- Bitbreite des Phasenz<E4>hlers : w_phase bit
-- L<E4>nge des Phasenz<E4>hlers: l_phase = 2^w_phase
-- Bei jedem Takt zum Phasenz<E4>hler addierter Wert: d_phase
-- => Kleinste einzustellende Frequenz: f_min = f_takt / l_phase
-- => Generierte Frequenz: f_gen = f_min * d_phase
-- => oder d_phase = f_gen / f_min
-- wobei f_takt und l_phase und damit f_min beim Design
festzulegende Konstanten sind.
-- Gibt man f_min und f_takt vor, so ergibt sich die L<E4>nge des
Phasenz<E4>hlers zu
-- => l_phase = f_min / f_takt
-- Der Maximalwert d_phase_max von d_phase ergibt sich aus der
maximal zu generierenden
-- Frequenz f_gen_max zu
-- => d_phase_max = f_gen_max / f_min
--
-- Ganz einfaches Beispiel:
-- w_phase = 8 bit
-- => l_phase = 2^8 = 256
-- => phase = 0..255
-- f_takt = 128 Hz
-- => f_min = 128 Hz / 256 = 0.5 Hz
-- f_gen = 1 Hz soll eingestellt werden
-- => d_phase = 1 Hz / 0.5 Hz = 2
--
-- Konkretes Beispiel:
-- Forderungen:
-- f_min = 0.01 Hz
-- f_max = 10 MHz
-- etwa 2-fach Oversampling bei 10 MHz, damit analoge
Filterung einfacher wird
-- => f_takt ca. 40 MHz
--
-- => l_phase ca. 4e7 / 0.01 = 4e9 => w_phase = 32 bit => l_phase =
2^32 = 4294967296
-- => f_takt = l_phase * f_min = 42949672.96 Hz = 4194304 Hz *
32/10 * 32/10
-- => Quarz mit 2^22 Hz = 4194304 Hz und zwei nachgeschaltete DCM
mit jeweils
-- CLKFX_MULTIPLY = 32 und CLKFX_DIVIDE = 10
-- Achtung: Wird der DCM mit solch niedriger Eingangs-Frequenz
betrieben, d<FC>rfen die
-- PLL-Ausg<E4>nge nicht genutzt werden!
-- Alternativ: 50 MHz Quarz 17 24 19 25 = 42947368 Hz
-- => d_phase_max = 1e7 / 0.01 = 1e9 => w_d_phase = 30 bit
-- => f_gen_max = 2^30 * 0.01 = 10737418.23 Hz (einstellbar)
-- Ausgabe erfolgt mit x8000 Offset f<FC>r DAC
-- Pegeleinstellung ebenfalls mit x8000 Offset, x8000= Null, xFFFF =
Max., x0000 = Max. invertiert