fpga liefert ClockSignal für delta-Sigma-AD-Wandler

Gast #2499673
Lesenswert?

hallo zusammen,

ich will gerade ein Sigma-Delta AD-Wandler mit Spartan 3a FPGA 
(Starterkit) ansteuern. Der AD-Baustein ist AD7401A, der einen 
Modulation-Clock braucht. Ich möchte ihn mit clock = 10MHz(eventuell 
bisschen mehr) (sein max. zulässige ist 20MHz) ausprobieren.

Die Frage ist: Wie kann ich das ClockSignal nach draußen führen? Gehts 
einfach mit DCM, 50MHz-Input auf 10MHz, dann auf ein IO-Output zuweisen? 
Oder eventuell mit einem Counter,Clk-Divider (InputClk = 50Mhz)?

Vielen Dank im Voraus!^^

schönes WE für alle noch!

Gruß Tomy
#2499730
Lesenswert?

Kannst du alles machen, wobei die DCM-Variante aber sicher ein 
saubereres Signal liefert. Allerdings sollte man bedenken, dass auch die 
DCM keine PLL ist und damit der Ausgangstakt einen relativ grossen 
Jitter hat (AFAIR so 40-50ps). Jitter führt bei Wandlern zu einem 
zusätzlichen Rauschen, da es im Prinzip eine Frequenzmodulation des 
Signals mit dem Jitter erzeugt. Ob das tolerierbar ist, musst du 
entscheiden/messen. Ich würde aber sagen, dass man den DCM-Jitter bei 
weniger als 15-16Bit ignorieren kann...
Gast #2499786
Lesenswert?

danke für Deine schnelle Antwort!:-)

Georg A. schrieb:
> Ich würde aber sagen, dass man den DCM-Jitter bei
> weniger als 15-16Bit ignorieren kann...

Meinst Du 15-16Bit ADC? (durch Decimation?). Ich will das Standard sinc3 
+ 10Mhz + Decimation M = 256 (-->> Bits = 3*log(2)(256) = 24-Bits für 
Berechnung, für DataOutput nehmen ich 16- MSB von 24-Bits).

Ist das Primitive ODDR2 für solche Fälle (clockOuput) zuständig?
zb.
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.STD_LOGIC_ARITH.ALL;
4
use IEEE.STD_LOGIC_UNSIGNED.ALL;
5

6
entity toplevel is
7
    Port ( CLK_50MHZ         : in  STD_LOGIC;
8
           SigmaDeltaAD_Mclk  : out  STD_LOGIC);
9
end toplevel;
10

11
architecture Behavioral of toplevel is
12

13
  -- Clock
14
  COMPONENT dcm1
15
  PORT(
16
    CLKIN_IN : IN std_logic;
17
    RST_IN : IN std_logic;          
18
    CLKDV_OUT : OUT std_logic;
19
    CLKIN_IBUFG_OUT : OUT std_logic;
20
    CLK0_OUT : OUT std_logic
21
    );
22
  END COMPONENT;
23
        
24
        signal Clk10Mhz, nClk10Mhz : std_logic;
25

26
begin
27
  -- clock
28
  Inst_dcm1: dcm1 
29
  PORT MAP(
30
      CLKIN_IN => CLK_50MHZ,
31
      RST_IN => '0',
32
      CLKDV_OUT => Clk10Mhz,
33
      CLKIN_IBUFG_OUT => open,
34
      CLK0_OUT => open
35
    );
36
  nClk10Mhz <= not Clk10Mhz;
37

38
  AD_Mclk :  ODDR2  Port map(Q   => SigmaDeltaAD_Mclk, C0 => Clk10Mhz, C1 => nClk10Mhz, CE => '1', D0 => '1', D1 => '0', R => '0', S => '0');
39

40
end Behavioral
Gast #2503319
Lesenswert?

tomy schrieb:
> use IEEE.STD_LOGIC_ARITH.ALL;
> use IEEE.STD_LOGIC_UNSIGNED.ALL;
Nimm die raus. Die sind hier unnötig.

tomy schrieb:
> Die Frage ist: Wie kann ich das ClockSignal nach draußen führen? Gehts
> einfach mit DCM, 50MHz-Input auf 10MHz, dann auf ein IO-Output zuweisen?
> Oder eventuell mit einem Counter,Clk-Divider (InputClk = 50Mhz)?
Wenn Du die Chance hast, es richtig zu machen, dann mach es richtig:
ADC-Takte sollte man nie im FPGA generieren. Schon gar nicht aus der 
DCM. Da hast Du Jitter ohne Ende. Bau einen extra Quarzoszillator dran 
und nimm dessen Ausgang als ADC-Takt und als Taktquelle für den FPGA 
(Clock-Input) und gut.

Duke
Gast #2503906
Lesenswert?

Duke Scarring schrieb:
> Nimm die raus. Die sind hier unnötig.

erledigt! ^^

Duke Scarring schrieb:
> Wenn Du die Chance hast, es richtig zu machen, dann mach es richtig:
> ADC-Takte sollte man nie im FPGA generieren. Schon gar nicht aus der
> DCM. Da hast Du Jitter ohne Ende. Bau einen extra Quarzoszillator dran
> und nimm dessen Ausgang als ADC-Takt und als Taktquelle für den FPGA
> (Clock-Input) und gut.

Ich versuche grad mit dem starter-kit spartan 3a den delta-sigma-ADC 
anzusteuern. Deswegen hab noch keine Gelegentheit mit einem extern 
Quarzoszillator.

Danke dir für die Empfehlung!^^

Lg Tomy

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren