spartan 3 - global clock buffer inputs

OP #3043170
Lesenswert?

Hallo,

ich bin noch ziemlich am Anfang der großen FPGA-Welt und bin auf ein 
Problem gestoßen, bei dem ich Eure Hilfe gebrauchen könnte.

Ich möchte gern mein Spartan 3 Board (von Digilent) mit einem externen 
Takt (3,3 V - 8,8 MHz) ansteuern.

Mein Problem ist, das ich iwie keine vernünftige Beschreibung dazu 
finde.
Ich hätte da mal ein paar Fragen dazu:

1.) Versteh ich das richtig, das ich einen externen Takt nur über die 
GCLK (Global Buffer Inputs) führen kann und darf?

2.) Wenn ja, sind diese Pins bei meinem Board überhaupt herrausgeführt?
Im Board-Manual ist nichts zu finden darüber!

3.) Muss ich den Takt danach noch durch ein selbst erzeugtes DCM jagen, 
oder sind die GCLKs schon intern damit ausgestattet.

4.) Mit dem Tool "Core Generator" kann ich mir ja ein DCM 
zusammenbasteln! kann ich den externen Takt dann auch (inkl. DCM) über 
einen normalen I/O führen?

Danke
OP #3043211
Lesenswert?

Hallo nochmal,

also nach erweiterter Suche bin ich glaub ich ein kleines Stück weiter 
gekommen. Laut Manual stellt der Sockel IC8 meines Boards eine 
"optionale Oszillatorerweiterung" zur Verfügung. Der entsprechende FPGA 
PIN D9 ist ebenfalls auf den Expansion Connector A2 (35) geführt.

Kann ich jetz nun über A2 (35) mein externen Takt einlesen oder dient 
dieser nur als Output des optionalen Takts?
Wäre nett wenn die oben genannten Fragen auch berücksichtigt werden.

THX
#3043284
Lesenswert?

Ramon F. schrieb:
> 1.) Versteh ich das richtig, das ich einen externen Takt nur über die
> GCLK (Global Buffer Inputs) führen kann und darf?

Ja das solltest Du tun, allerdings ist das kein Muss (falls Du aber kein 
GCLK nimmst, ist das Routing intern nicht ideal, und Du verlierst Speed 
und handelst Dir Jitter ein. Ist aber bei 8.8 MHz vielleicht nicht so 
ein Thema...)

> 2.) Wenn ja, sind diese Pins bei meinem Board überhaupt herrausgeführt?
> Im Board-Manual ist nichts zu finden darüber!

Das findest Du im Spartan-Manual (mapping GCLK-Pin pro Typ). Mit der 
Pin-Nummer findest Du dann heraus, was damit auf Deinem Board gemacht 
wird.

> 3.) Muss ich den Takt danach noch durch ein selbst erzeugtes DCM jagen,
> oder sind die GCLKs schon intern damit ausgestattet.

Wenn Du 1:1 mit dem Input-Clock arbeiten willst/kannst, dann reicht ein 
Clock-Buffer, ansonsten brauchst Du einen DCM.

> 4.) Mit dem Tool "Core Generator" kann ich mir ja ein DCM
> zusammenbasteln! kann ich den externen Takt dann auch (inkl. DCM) über
> einen normalen I/O führen?

Weiss ich nicht auswendig, zu bevorzugen sind sicher GCLK, ansonsten 
hilft Dir Chapter 3 "Using digital clock managers (DCMs)" sicher 
weiter...
OP #3044756
Lesenswert?

Hi,

erst mal vielen Dank für deine schnelle Antwort Peter.

also ich hab da jetz mal was versucht was iwie nicht so ganz hinhaut wie 
ich mir das vorstelle.

Habe mein 8,8 MHz Takt über den Pin 35 des A2 Expansion Connectors 
(GCK4) geführt und wollte das ganze einmal ganz primitiv mit dem 
folgenden Code testen. In meinen top-level-Design (schematic) habe ich 
vor den clcok noch einen BUFG (standard - Symbol)geschaltet.

1
---------------------------------------------------
2

3
entity Clock_tester is
4
    Port ( Clk   : in  STD_LOGIC;
5
    switch  : in  STD_Logic;
6
           led   : out  STD_LOGIC);
7
end Clock_tester;
8

9

10
architecture Behavioral of Clock_tester is
11

12
signal clk_counter : natural range 0 to 20000000  := 0;
13

14
begin
15
  clock: process (Clk)
16
  begin    
17
           if rising_edge (Clk)
18
    then
19
    clk_counter <= clk_counter + 1;
20

21
    if (clk_counter >= 10000000)
22
    then
23
      led <= '0';        
24
    else
25
      led <= '1';
26
    end if;
27
          
28
    if(clk_counter = 19999999)
29
    then
30
      clk_counter <= 0;
31
    end if;
32
  
33
           end if;        
34
  end process;    
35
end architecture Behavioral;
36
---------------------------------------------------


So bei 8,8 MHZ (+- 113ns) sollte die LED ca. alle 1,13 sec aus bzw. an 
gehen.
Problem: Dies passiert aber nur ca. alle 2 sec. !!!!!!!! Iwie hab ich 
das gefühl er triggerd nur auf jede 2. steigende Flanke.

Woran kann dies liegen? Versteh das nicht so ganz.....
#3044818
Lesenswert?

Ist doch alles OK, die Periode ist natürlich etwa 2.27s (die Hälfte 
davon "ein", die andere Hälfte "aus").

Wenn Du dem Teil nicht traust, gib ein paar interne Signale (clock, LSBs 
des Zählers) auf unbenutzte Pins und schau sie Dir auf dem Scope an, 
dann hast Du schnell die Gewissheit...
Moderator (Firma: Titel) Persönliche Seite #3087291
Lesenswert?

Ramon F. schrieb:
> Mein generelles CLK Problem hab ich soweit hinbekommen.
Falls jemand mal ein ähnliches Problem hat: Was war das Problem?

> Wie kann ich meinen 8,8 MHz input clk verdoppeln.
Woher kommt der Takt?
Kannst du nicht einfach z.B. einen 88MHz Oszillator ans FPGA 
anschliessen und daraus abgeleitete 8,8MHz an die Peripherie ausgeben?

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