Forum: FPGA, VHDL & Co. spartan 3 - global clock buffer inputs


von Ramon F. (tronixx)


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

von Ramon F. (tronixx)


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

von P. K. (pek)


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...

von Ramon F. (tronixx)


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.....

von P. K. (pek)


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...

von Ramon F. (tronixx)


Lesenswert?

ne ne, was ich meine ist das die led 2 sec. an, 2 sec aus ist. Und das 
kann doch iwie nicht sein.

Das mit dem scope ist ne gute idee :) thx

MfG

von Ramon F. (tronixx)


Lesenswert?

Hallo zusammen. Mein generelles CLK Problem hab ich soweit hinbekommen.
Nun hab ich folgendes Problem:

Spartan 3 Board:

Wie kann ich meinen 8,8 MHz input clk verdoppeln. Für DLL/DCM Geschichte 
ist dieser ja zu klein?
Gibts da ne simple LSG?

MfG

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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?

von Ramon F. (tronixx)


Lesenswert?

nein, der 8,8 Mhz Takt kommt von außen, sowie meine parallel 
vorliegenden Daten.
Um meine (dem takt entsprechenden ändernden Daten) aber im SRam ablegen 
zu können, brauche ich ja den doppelten Takt.

MfG

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Bezug auf den Beitrag "SRAM - IS61LV25616AL Ansteuerung"

Dann nimm die 25MHz mal 4 und lass dein FPGA intern mit diesem 100MHz 
Takt laufen. Dann ist das Abtasten und Einsynchronisieren des 8,8MHz 
Busses kein Problem.

von Duke Scarring (Gast)


Lesenswert?

Lothar Miller schrieb:
> Dann nimm die 25MHz mal 4 und lass dein FPGA intern mit diesem 100MHz
> Takt laufen.
Bei 100 MHz dürfte es beim Spartan 3 mit dem Timing knapp werden. Aber 
versuchen kannst Du es erstmal.

Duke

von Christian R. (supachris)


Lesenswert?

Naja, halb volle S3E 1200 laufen hier auch sehr gut bei 100Mhz...muss 
man sich halt bissl Gedanken machen beim Design.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.