Samer Afach schrieb:
> Und das DAC (LTC2624), das ich verwenden will, braucht mindestens
> eine Zeit von 9 ns für jedes High und Low state. Also ich muss die
> Taktfrequenz verringern durch einen Frequency divider.
Das ist kein Takt, sondern ein stinknormales Ausgangssignal und darf
durchaus auch als solches behaldelt werden.
Christian R. schrieb:
> Einen ADC oder
> DAC speist man immer direkt aus dem jitterarmen Quarzoszillator.
Das ist hier unnötig, weil es sich nur um den Übertragungstakt der
SPI-Schnitte handelt...
Samer Afach schrieb:
1 | architecture Behavioral of FreqDivider is
|
2 | signal counter1, counter2 : integer:= 0;
|
3 | signal clkState1, clkState2 : STD_LOGIC := '0';
|
4 | begin
|
5 | Process(clk)
|
6 | begin
|
7 | if(clk'EVENT AND clk = '1') then -- **** erste Abfrage *****
|
8 | :
|
9 | end if;
|
10 | end if;
|
11 | if(clk'EVENT AND clk = '0')then -- **** zweite Abfrage *****
|
12 | :
|
13 | end if;
|
14 | end process;
|
15 | end Behavioral;
|
Das ist ja mal eine kuriose und unerwartete Schreibweise... :-o
Ich erwarte in 1 Prozess genau 1 Taktabfrage. Sicher nicht 2 und ganz
sicher nicht solche, die auf verschiedene Flanken reagieren...
1 | outClk <= clkState1 XOR clkState2;
|
Aua, ein Takt aus einer kombinatorische Verknüpfung. Das kann gern mal
Glitches geben!
Du solltst einen Takt für (externe) Komponenten nicht aus Kombinatorik
ohne nachgeschaltetes FF erzeugen. Damit kannst du lustige Sachen
erleben (im speziellen Fall hier könntest du sogar noch Glück haben)...
Besser wäre hier allemal die Verwendung des angesprochenen DDR-Flipflops
in der IO-Zelle.
Samer Afach schrieb:
> macht das sinn?
Nein. Schick deinen Tak in eine DCM und mach einen sauberen 50/50 Takt
draus. Oder gleich 100MHz, oder, oder...